summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobody <>2000-06-05 20:49:54 +0000
committernobody <>2000-06-05 20:49:54 +0000
commit37f7f684de0e53c8add5ff43d73082bf98985321 (patch)
tree233868aefe858af1cc2c3602a13bfd3d46d94e22
parente15042df387b0b9ca7a71846c77bf784432b0d03 (diff)
downloadbinutils-gdb-37f7f684de0e53c8add5ff43d73082bf98985321.tar.gz
This commit was manufactured by cvs2svn to create branch 'gdb-gdb-premipsmulti-2000-06-06-branchpoint
premipsmulti-2000-06-06-branch'. Sprout from gdb_5_0-2000-04-10-branch 2000-04-09 14:37:29 UTC nobody 'This commit was manufactured by cvs2svn to create branch' Cherrypick from master 2000-06-05 20:49:53 UTC Daniel Berlin <dberlin@dberlin.org> 'C++ improvements': ChangeLog MAINTAINERS Makefile.in bfd/ChangeLog bfd/Makefile.am bfd/Makefile.in bfd/aoutx.h bfd/archive.c bfd/archures.c bfd/bfd-in.h bfd/bfd-in2.h bfd/cache.c bfd/coff-a29k.c bfd/coff-alpha.c bfd/coff-go32.c bfd/coff-ia64.c bfd/coff-mips.c bfd/coff-pmac.c bfd/coff-rs6000.c bfd/coff-sh.c bfd/coff-stgo32.c bfd/coff-tic54x.c bfd/coff64-rs6000.c bfd/coffcode.h bfd/coffgen.c bfd/coffswap.h bfd/config.bfd bfd/configure bfd/configure.host bfd/configure.in bfd/cpu-i960.c bfd/cpu-ia64-opc.c bfd/cpu-ia64.c bfd/cpu-powerpc.c bfd/dep-in.sed bfd/doc/ChangeLog bfd/doc/bfdint.texi bfd/dwarf2.c bfd/efi-app-ia32.c bfd/efi-app-ia64.c bfd/elf-bfd.h bfd/elf-hppa.h bfd/elf.c bfd/elf32-arm.h bfd/elf32-d30v.c bfd/elf32-fr30.c bfd/elf32-hppa.c bfd/elf32-hppa.h bfd/elf32-i370.c bfd/elf32-i386.c bfd/elf32-m68k.c bfd/elf32-mcore.c bfd/elf32-mips.c bfd/elf32-ppc.c bfd/elf32-sh.c bfd/elf32-sparc.c bfd/elf64-alpha.c bfd/elf64-hppa.c bfd/elf64-hppa.h bfd/elf64-ia64.c bfd/elf64-sparc.c bfd/elfcode.h bfd/elflink.c bfd/elflink.h bfd/ieee.c bfd/libbfd-in.h bfd/libbfd.c bfd/libbfd.h bfd/libcoff.h bfd/libhppa.h bfd/libpei.h bfd/opncls.c bfd/peicode.h bfd/peigen.c bfd/po/POTFILES.in bfd/ppcboot.c bfd/reloc.c bfd/som.c bfd/sysdep.h bfd/targets.c bfd/trad-core.c bfd/versados.c bfd/vms.c bfd/xcoff-target.h bfd/xcofflink.c config.guess config.sub configure configure.in djunpack.bat gdb/ChangeLog gdb/MAINTAINERS gdb/Makefile.in gdb/NEWS gdb/README gdb/TODO gdb/abug-rom.c gdb/acconfig.h gdb/aclocal.m4 gdb/alpha-nat.c gdb/alpha-tdep.c gdb/alphabsd-nat.c gdb/annotate.c gdb/annotate.h gdb/arc-tdep.c gdb/arch-utils.c gdb/arch-utils.h gdb/arm-linux-nat.c gdb/arm-linux-tdep.c gdb/arm-tdep.c gdb/ax-gdb.c gdb/ax-gdb.h gdb/ax-general.c gdb/ax.h gdb/bcache.c gdb/bcache.h gdb/blockframe.c gdb/breakpoint.c gdb/breakpoint.h gdb/buildsym.c gdb/c-exp.y gdb/c-lang.c gdb/c-lang.h gdb/c-valprint.c gdb/call-cmds.h gdb/ch-exp.c gdb/ch-lang.c gdb/ch-lang.h gdb/cli-out.c gdb/coff-solib.h gdb/coffread.c gdb/command.c gdb/command.h gdb/complaints.c gdb/complaints.h gdb/config.in gdb/config/a29k/tm-a29k.h gdb/config/a29k/tm-vx29k.h gdb/config/alpha/alpha-osf3.mh gdb/config/alpha/fbsd.mh gdb/config/alpha/fbsd.mt gdb/config/alpha/nm-fbsd.h gdb/config/alpha/nm-linux.h gdb/config/alpha/nm-osf.h gdb/config/alpha/nm-osf2.h gdb/config/alpha/tm-alpha.h gdb/config/alpha/tm-alphalinux.h gdb/config/alpha/tm-fbsd.h gdb/config/alpha/xm-fbsd.h gdb/config/arc/tm-arc.h gdb/config/arm/linux.mh gdb/config/arm/nm-linux.h gdb/config/arm/tm-arm.h gdb/config/arm/tm-embed.h gdb/config/arm/tm-linux.h gdb/config/convex/tm-convex.h gdb/config/d10v/tm-d10v.h gdb/config/d30v/tm-d30v.h gdb/config/djgpp/README gdb/config/djgpp/config.sed gdb/config/djgpp/djconfig.sh gdb/config/djgpp/fnchange.lst gdb/config/fr30/tm-fr30.h gdb/config/h8300/tm-h8300.h gdb/config/h8500/tm-h8500.h gdb/config/i386/fbsd.mh gdb/config/i386/fbsd.mt gdb/config/i386/nbsd.mh gdb/config/i386/nbsd.mt gdb/config/i386/nbsdelf.mh gdb/config/i386/nbsdelf.mt gdb/config/i386/nm-fbsd.h gdb/config/i386/nm-i386bsd.h gdb/config/i386/nm-i386sco.h gdb/config/i386/nm-i386sol2.h gdb/config/i386/nm-i386v.h gdb/config/i386/nm-linux.h gdb/config/i386/nm-nbsd.h gdb/config/i386/nm-nbsdelf.h gdb/config/i386/nm-ptx4.h gdb/config/i386/nm-symmetry.h gdb/config/i386/tm-cygwin.h gdb/config/i386/tm-fbsd.h gdb/config/i386/tm-i386.h gdb/config/i386/tm-i386nw.h gdb/config/i386/tm-i386sol2.h gdb/config/i386/tm-i386v.h gdb/config/i386/tm-i386v4.h gdb/config/i386/tm-nbsd.h gdb/config/i386/tm-nbsdelf.h gdb/config/i386/tm-ptx.h gdb/config/i386/tm-sun386.h gdb/config/i386/xm-fbsd.h gdb/config/i960/tm-i960.h gdb/config/i960/tm-mon960.h gdb/config/i960/tm-nindy960.h gdb/config/ia64/linux.mt gdb/config/ia64/nm-linux.h gdb/config/ia64/tm-linux.h gdb/config/m32r/tm-m32r.h gdb/config/m68k/nbsd.mh gdb/config/m68k/nbsd.mt gdb/config/m68k/nm-dpx2.h gdb/config/m68k/nm-linux.h gdb/config/m68k/tm-altos.h gdb/config/m68k/tm-cisco.h gdb/config/m68k/tm-delta68.h gdb/config/m68k/tm-es1800.h gdb/config/m68k/tm-isi.h gdb/config/m68k/tm-linux.h gdb/config/m68k/tm-m68k.h gdb/config/m68k/tm-m68kv4.h gdb/config/m68k/tm-news.h gdb/config/m68k/tm-sun3.h gdb/config/m68k/tm-vx68.h gdb/config/m68k/xm-hp300bsd.h gdb/config/m88k/tm-m88k.h gdb/config/mcore/tm-mcore.h gdb/config/mips/nm-irix3.h gdb/config/mips/nm-irix4.h gdb/config/mips/nm-irix5.h gdb/config/mips/nm-mips.h gdb/config/mips/tm-embed.h gdb/config/mips/tm-irix5.h gdb/config/mips/tm-mips.h gdb/config/mips/tm-mipsv4.h gdb/config/mn10200/tm-mn10200.h gdb/config/mn10300/tm-mn10300.h gdb/config/nm-linux.h gdb/config/nm-lynx.h gdb/config/ns32k/nbsd.mh gdb/config/ns32k/nbsd.mt gdb/config/ns32k/nm-nbsd.h gdb/config/ns32k/tm-merlin.h gdb/config/ns32k/tm-umax.h gdb/config/pa/nm-hppah.h gdb/config/pa/tm-hppa.h gdb/config/pa/tm-hppa64.h gdb/config/pa/xm-hppah.h gdb/config/powerpc/nbsd.mh gdb/config/powerpc/nbsd.mt gdb/config/powerpc/nm-linux.h gdb/config/powerpc/nm-nbsd.h gdb/config/powerpc/tm-linux.h gdb/config/powerpc/tm-nbsd.h gdb/config/powerpc/tm-ppc-eabi.h gdb/config/powerpc/tm-solaris.h gdb/config/powerpc/xm-aix.h gdb/config/powerpc/xm-nbsd.h gdb/config/rs6000/nm-rs6000.h gdb/config/rs6000/tm-rs6000.h gdb/config/rs6000/xm-rs6000.h gdb/config/sh/tm-sh.h gdb/config/sh/tm-wince.h gdb/config/sparc/nm-linux.h gdb/config/sparc/nm-sun4os4.h gdb/config/sparc/nm-sun4sol2.h gdb/config/sparc/tm-sp64.h gdb/config/sparc/tm-sp64sim.h gdb/config/sparc/tm-sparc.h gdb/config/sparc/tm-sparclet.h gdb/config/sparc/tm-sparclite.h gdb/config/sparc/tm-spc-em.h gdb/config/sparc/tm-sun4os4.h gdb/config/sparc/tm-sun4sol2.h gdb/config/sparc/xm-sun4sol2.h gdb/config/tahoe/tm-tahoe.h gdb/config/tic80/tm-tic80.h gdb/config/tm-sysv4.h gdb/config/v850/tm-v850.h gdb/config/vax/tm-vax.h gdb/config/w65/tm-w65.h gdb/config/xm-aix4.h gdb/config/z8k/tm-z8k.h gdb/configure gdb/configure.host gdb/configure.in gdb/configure.tgt gdb/copying.c gdb/core-aout.c gdb/core-regset.c gdb/core-sol2.c gdb/corefile.c gdb/corelow.c gdb/cp-valprint.c gdb/cpu32bug-rom.c gdb/cxux-nat.c gdb/d10v-tdep.c gdb/d30v-tdep.c gdb/dbug-rom.c gdb/dbxread.c gdb/dcache.c gdb/dcache.h gdb/defs.h gdb/demangle.c gdb/dink32-rom.c gdb/doc/ChangeLog gdb/doc/Makefile.in gdb/doc/annotate.texi gdb/doc/configure gdb/doc/configure.in gdb/doc/gdb.texinfo gdb/doc/gdbint.texinfo gdb/doc/stabs.texinfo gdb/dsrec.c gdb/dstread.c gdb/dve3900-rom.c gdb/dwarf2read.c gdb/dwarfread.c gdb/elfread.c gdb/environ.h gdb/eval.c gdb/event-top.c gdb/exec.c gdb/expprint.c gdb/expression.h gdb/f-exp.y gdb/f-lang.c gdb/f-lang.h gdb/f-valprint.c gdb/findvar.c gdb/fork-child.c gdb/fr30-tdep.c gdb/frame.h gdb/gdb-stabs.h gdb/gdb_dirent.h gdb/gdb_string.h gdb/gdbarch.c gdb/gdbarch.h gdb/gdbarch.sh gdb/gdbcmd.h gdb/gdbcore.h gdb/gdbserver/low-nbsd.c gdb/gdbserver/remote-utils.c gdb/gdbserver/server.h gdb/gdbtypes.c gdb/gdbtypes.h gdb/gnu-regex.c gdb/go32-nat.c gdb/gregset.h gdb/h8300-tdep.c gdb/hp-psymtab-read.c gdb/hp-symtab-read.c gdb/hp300ux-nat.c gdb/hppa-tdep.c gdb/hppah-nat.c gdb/hpread.c gdb/hpread.h gdb/hpux-thread.c gdb/i386-linux-nat.c gdb/i386-tdep.c gdb/i386aix-nat.c gdb/i386bsd-nat.c gdb/i386mach-nat.c gdb/i386v-nat.c gdb/i386v4-nat.c gdb/i387-nat.c gdb/i387-nat.h gdb/i387-tdep.c gdb/i960-tdep.c gdb/ia64-linux-nat.c gdb/ia64-linux-tdep.c gdb/ia64-tdep.c gdb/infcmd.c gdb/inferior.h gdb/inflow.c gdb/infptrace.c gdb/infrun.c gdb/inftarg.c gdb/irix4-nat.c gdb/irix5-nat.c gdb/jv-exp.y gdb/jv-lang.c gdb/jv-lang.h gdb/jv-valprint.c gdb/language.c gdb/language.h gdb/lin-thread.c gdb/linux-thread.c gdb/lynx-nat.c gdb/m2-exp.y gdb/m2-lang.c gdb/m2-lang.h gdb/m32r-rom.c gdb/m68k-tdep.c gdb/m68klinux-nat.c gdb/m88k-nat.c gdb/mac-nat.c gdb/main.c gdb/maint.c gdb/mdebugread.c gdb/mem-break.c gdb/mi/ChangeLog gdb/mi/gdbmi.texinfo gdb/mi/mi-cmd-break.c gdb/mi/mi-cmd-disas.c gdb/mi/mi-cmd-stack.c gdb/mi/mi-cmd-var.c gdb/mi/mi-cmds.c gdb/mi/mi-cmds.h gdb/mi/mi-console.c gdb/mi/mi-console.h gdb/mi/mi-getopt.c gdb/mi/mi-getopt.h gdb/mi/mi-main.c gdb/mi/mi-out.c gdb/mi/mi-out.h gdb/mi/mi-parse.c gdb/mi/mi-parse.h gdb/minsyms.c gdb/mips-nat.c gdb/mips-tdep.c gdb/mipsread.c gdb/mipsv4-nat.c gdb/mn10300-tdep.c gdb/mon960-rom.c gdb/monitor.c gdb/monitor.h gdb/nlmread.c gdb/objfiles.c gdb/objfiles.h gdb/ocd.c gdb/ocd.h gdb/op50-rom.c gdb/os9kread.c gdb/osfsolib.c gdb/pa64solib.c gdb/pa64solib.h gdb/parse.c gdb/parser-defs.h gdb/partial-stab.h gdb/ppc-bdm.c gdb/ppc-linux-nat.c gdb/ppcnbsd-nat.c gdb/printcmd.c gdb/proc-api.c gdb/proc-events.c gdb/proc-utils.h gdb/procfs.c gdb/ptx4-nat.c gdb/remote-array.c gdb/remote-bug.c gdb/remote-e7000.c gdb/remote-es.c gdb/remote-est.c gdb/remote-hms.c gdb/remote-mips.c gdb/remote-nindy.c gdb/remote-nrom.c gdb/remote-os9k.c gdb/remote-rdi.c gdb/remote-rdp.c gdb/remote-sds.c gdb/remote-sim.c gdb/remote-udi.c gdb/remote-utils.c gdb/remote-utils.h gdb/remote-vx.c gdb/remote.c gdb/rom68k-rom.c gdb/rs6000-nat.c gdb/rs6000-tdep.c gdb/scm-exp.c gdb/scm-lang.c gdb/scm-lang.h gdb/ser-e7kpc.c gdb/ser-go32.c gdb/ser-mac.c gdb/ser-ocd.c gdb/serial.c gdb/sh-tdep.c gdb/sh3-rom.c gdb/sol-thread.c gdb/solib.c gdb/solib.h gdb/somread.c gdb/somsolib.c gdb/somsolib.h gdb/source.c gdb/sparc-nat.c gdb/sparc-tdep.c gdb/sparcl-tdep.c gdb/sparclet-rom.c gdb/srec.h gdb/stabsread.c gdb/stabsread.h gdb/stack.c gdb/sun3-nat.c gdb/symfile.c gdb/symfile.h gdb/symmisc.c gdb/symtab.c gdb/symtab.h gdb/target.c gdb/target.h gdb/terminal.h gdb/testsuite/ChangeLog gdb/testsuite/gdb.base/annota1.exp gdb/testsuite/gdb.base/break.exp gdb/testsuite/gdb.base/call-ar-st.exp gdb/testsuite/gdb.base/call-rt-st.exp gdb/testsuite/gdb.base/call-strs.exp gdb/testsuite/gdb.base/ending-run.exp gdb/testsuite/gdb.base/help.exp gdb/testsuite/gdb.base/interrupt.exp gdb/testsuite/gdb.base/miscexprs.exp gdb/testsuite/gdb.base/step-test.exp gdb/testsuite/gdb.base/structs2.c gdb/testsuite/gdb.c++/Makefile.in gdb/testsuite/gdb.c++/ctti.exp gdb/testsuite/gdb.c++/misc.cc gdb/testsuite/gdb.c++/namespace.exp gdb/testsuite/gdb.c++/templates.cc gdb/testsuite/gdb.c++/templates.exp gdb/testsuite/gdb.mi/ChangeLog-mi gdb/testsuite/gdb.mi/Makefile.in gdb/testsuite/lib/compiler.cc gdb/thread.c gdb/top.c gdb/top.h gdb/tracepoint.c gdb/tracepoint.h gdb/tui/ChangeLog gdb/tui/tui-file.c gdb/tui/tui.c gdb/tui/tui.h gdb/tui/tuiCommand.h gdb/tui/tuiData.c gdb/tui/tuiData.h gdb/tui/tuiDataWin.h gdb/tui/tuiDisassem.c gdb/tui/tuiDisassem.h gdb/tui/tuiGeneralWin.c gdb/tui/tuiGeneralWin.h gdb/tui/tuiIO.c gdb/tui/tuiIO.h gdb/tui/tuiLayout.c gdb/tui/tuiLayout.h gdb/tui/tuiRegs.c gdb/tui/tuiRegs.h gdb/tui/tuiSource.c gdb/tui/tuiSource.h gdb/tui/tuiSourceWin.h gdb/tui/tuiStack.c gdb/tui/tuiStack.h gdb/tui/tuiWin.c gdb/tui/tuiWin.h gdb/typeprint.c gdb/ui-file.c gdb/ui-out.c gdb/ui-out.h gdb/ultra3-nat.c gdb/utils.c gdb/uw-thread.c gdb/v850-tdep.c gdb/v850ice.c gdb/valarith.c gdb/valops.c gdb/valprint.c gdb/value.h gdb/values.c gdb/varobj.c gdb/w89k-rom.c gdb/win32-nat.c gdb/wince-stub.c gdb/wince.c gdb/wrapper.c gdb/wrapper.h gdb/xcoffread.c gdb/xcoffsolib.c gdb/xcoffsolib.h gdb/xmodem.h gdb/z8k-tdep.c include/ChangeLog include/bfdlink.h include/coff/ChangeLog include/coff/ia64.h include/coff/internal.h include/coff/pe.h include/coff/rs6k64.h include/coff/ti.h include/dis-asm.h include/elf/ChangeLog include/elf/common.h include/elf/ia64.h include/elf/mips.h include/elf/mn10300.h include/elf/reloc-macros.h include/filenames.h include/floatformat.h include/opcode/ChangeLog include/opcode/cgen.h include/opcode/d10v.h include/opcode/h8300.h include/opcode/hppa.h include/opcode/i386.h include/opcode/ia64.h include/opcode/ppc.h include/opcode/tic54x.h libiberty/ChangeLog libiberty/Makefile.in libiberty/floatformat.c libiberty/hashtab.c libiberty/objalloc.c libiberty/partition.c libiberty/pexecute.c libiberty/sort.c libiberty/strerror.c libiberty/strsignal.c libiberty/xexit.c libiberty/xmemdup.c ltmain.sh mmalloc/ChangeLog mmalloc/Makefile.in opcodes/ChangeLog opcodes/Makefile.am opcodes/Makefile.in opcodes/a29k-dis.c opcodes/alpha-dis.c opcodes/alpha-opc.c opcodes/arc-dis.c opcodes/arc-opc.c opcodes/arm-dis.c opcodes/arm-opc.h opcodes/avr-dis.c opcodes/configure opcodes/configure.in opcodes/d10v-dis.c opcodes/d10v-opc.c opcodes/d30v-dis.c opcodes/d30v-opc.c opcodes/disassemble.c opcodes/fr30-desc.c opcodes/fr30-desc.h opcodes/h8300-dis.c opcodes/h8500-dis.c opcodes/hppa-dis.c opcodes/i370-dis.c opcodes/i370-opc.c opcodes/i960-dis.c opcodes/ia64-asmtab.c opcodes/ia64-asmtab.h opcodes/ia64-dis.c opcodes/ia64-gen.c opcodes/ia64-ic.tbl opcodes/ia64-opc-a.c opcodes/ia64-opc-b.c opcodes/ia64-opc-d.c opcodes/ia64-opc-f.c opcodes/ia64-opc-i.c opcodes/ia64-opc-m.c opcodes/ia64-opc-x.c opcodes/ia64-opc.c opcodes/ia64-opc.h opcodes/ia64-raw.tbl opcodes/ia64-war.tbl opcodes/ia64-waw.tbl opcodes/m10200-dis.c opcodes/m10200-opc.c opcodes/m10300-dis.c opcodes/m10300-opc.c opcodes/m32r-desc.h opcodes/m68k-dis.c opcodes/m68k-opc.c opcodes/m88k-dis.c opcodes/mcore-dis.c opcodes/mips-dis.c opcodes/mips-opc.c opcodes/mips16-opc.c opcodes/opintl.h opcodes/pj-dis.c opcodes/pj-opc.c opcodes/po/POTFILES.in opcodes/po/opcodes.pot opcodes/ppc-dis.c opcodes/ppc-opc.c opcodes/sh-dis.c opcodes/sparc-dis.c opcodes/sparc-opc.c opcodes/sysdep.h opcodes/tic54x-dis.c opcodes/tic54x-opc.c opcodes/tic80-dis.c opcodes/tic80-opc.c opcodes/v850-dis.c opcodes/v850-opc.c opcodes/vax-dis.c opcodes/w65-dis.c opcodes/z8k-dis.c opcodes/z8kgen.c readline/doc/ChangeLog sim/arm/ChangeLog sim/arm/Makefile.in sim/arm/armcopro.c sim/arm/armdefs.h sim/arm/armemu.c sim/arm/arminit.c sim/arm/armos.c sim/arm/armsupp.c sim/arm/configure sim/arm/configure.in sim/arm/wrapper.c sim/common/ChangeLog sim/common/aclocal.m4 sim/common/configure sim/common/run.c sim/common/sim-events.c sim/d10v/ChangeLog sim/d10v/configure sim/d10v/interp.c sim/d30v/ChangeLog sim/d30v/configure sim/d30v/cpu.h sim/erc32/ChangeLog sim/erc32/configure sim/fr30/ChangeLog sim/fr30/configure sim/h8300/ChangeLog sim/h8300/configure sim/h8500/ChangeLog sim/h8500/configure sim/i960/ChangeLog sim/i960/configure sim/igen/ChangeLog sim/igen/configure sim/igen/gen-semantics.c sim/m32r/ChangeLog sim/m32r/configure sim/mcore/ChangeLog sim/mcore/configure sim/mips/ChangeLog sim/mips/configure sim/mips/interp.c sim/mips/mips.igen sim/mips/sim-main.h sim/mn10200/ChangeLog sim/mn10200/configure sim/mn10300/ChangeLog sim/mn10300/am33.igen sim/mn10300/configure sim/mn10300/mn10300.igen sim/mn10300/mn10300_sim.h sim/mn10300/op_utils.c sim/ppc/ChangeLog sim/ppc/configure sim/ppc/events.c sim/ppc/interrupts.c sim/sh/ChangeLog sim/sh/configure sim/sh/gencode.c sim/sh/interp.c sim/testsuite/ChangeLog sim/testsuite/configure sim/testsuite/d10v-elf/ChangeLog sim/testsuite/d10v-elf/Makefile.in sim/testsuite/d10v-elf/t-rie-xx.s sim/v850/ChangeLog sim/v850/configure sim/v850/v850.igen sim/w65/ChangeLog sim/w65/configure sim/z8k/ChangeLog sim/z8k/configure texinfo/texinfo.tex Delete: gdb/config/gould/np1.mh gdb/config/gould/np1.mt gdb/config/gould/pn.mh gdb/config/gould/pn.mt gdb/config/gould/tm-np1.h gdb/config/gould/tm-pn.h gdb/config/gould/xm-np1.h gdb/config/gould/xm-pn.h gdb/gould-tdep.c gdb/gould-xdep.c gdb/mi/ChangeLog-mi gdb/tui/Makefile.in readline/doc/readline.0
-rw-r--r--ChangeLog102
-rw-r--r--MAINTAINERS2
-rw-r--r--Makefile.in111
-rw-r--r--bfd/ChangeLog989
-rw-r--r--bfd/Makefile.am904
-rw-r--r--bfd/Makefile.in904
-rw-r--r--bfd/aoutx.h6
-rw-r--r--bfd/archive.c96
-rw-r--r--bfd/archures.c3
-rw-r--r--bfd/bfd-in.h12
-rw-r--r--bfd/bfd-in2.h88
-rw-r--r--bfd/cache.c10
-rw-r--r--bfd/coff-a29k.c6
-rw-r--r--bfd/coff-alpha.c2
-rw-r--r--bfd/coff-go32.c2
-rw-r--r--bfd/coff-ia64.c198
-rw-r--r--bfd/coff-mips.c6
-rw-r--r--bfd/coff-pmac.c15
-rw-r--r--bfd/coff-rs6000.c534
-rw-r--r--bfd/coff-sh.c10
-rw-r--r--bfd/coff-stgo32.c2
-rw-r--r--bfd/coff-tic54x.c108
-rw-r--r--bfd/coff64-rs6000.c360
-rw-r--r--bfd/coffcode.h79
-rw-r--r--bfd/coffgen.c41
-rw-r--r--bfd/coffswap.h95
-rw-r--r--bfd/config.bfd33
-rwxr-xr-xbfd/configure43
-rw-r--r--bfd/configure.host2
-rw-r--r--bfd/configure.in21
-rw-r--r--bfd/cpu-i960.c68
-rw-r--r--bfd/cpu-ia64-opc.c586
-rw-r--r--bfd/cpu-ia64.c42
-rw-r--r--bfd/cpu-powerpc.c14
-rw-r--r--bfd/dep-in.sed3
-rw-r--r--bfd/doc/ChangeLog13
-rw-r--r--bfd/doc/bfdint.texi8
-rw-r--r--bfd/dwarf2.c4
-rw-r--r--bfd/efi-app-ia32.c35
-rw-r--r--bfd/efi-app-ia64.c35
-rw-r--r--bfd/elf-bfd.h8
-rw-r--r--bfd/elf-hppa.h1045
-rw-r--r--bfd/elf.c120
-rw-r--r--bfd/elf32-arm.h26
-rw-r--r--bfd/elf32-d30v.c74
-rw-r--r--bfd/elf32-fr30.c4
-rw-r--r--bfd/elf32-hppa.c16
-rw-r--r--bfd/elf32-hppa.h3
-rw-r--r--bfd/elf32-i370.c3
-rw-r--r--bfd/elf32-i386.c276
-rw-r--r--bfd/elf32-m68k.c23
-rw-r--r--bfd/elf32-mcore.c17
-rw-r--r--bfd/elf32-mips.c33
-rw-r--r--bfd/elf32-ppc.c31
-rw-r--r--bfd/elf32-sh.c7
-rw-r--r--bfd/elf32-sparc.c121
-rw-r--r--bfd/elf64-alpha.c7
-rw-r--r--bfd/elf64-hppa.c2633
-rw-r--r--bfd/elf64-hppa.h47
-rw-r--r--bfd/elf64-ia64.c4097
-rw-r--r--bfd/elf64-sparc.c167
-rw-r--r--bfd/elfcode.h14
-rw-r--r--bfd/elflink.c17
-rw-r--r--bfd/elflink.h53
-rw-r--r--bfd/ieee.c13
-rw-r--r--bfd/libbfd-in.h6
-rw-r--r--bfd/libbfd.c14
-rw-r--r--bfd/libbfd.h73
-rw-r--r--bfd/libcoff.h8
-rw-r--r--bfd/libhppa.h575
-rw-r--r--bfd/libpei.h30
-rw-r--r--bfd/opncls.c2
-rw-r--r--bfd/peicode.h4
-rw-r--r--bfd/peigen.c399
-rw-r--r--bfd/po/POTFILES.in2
-rw-r--r--bfd/ppcboot.c6
-rw-r--r--bfd/reloc.c160
-rw-r--r--bfd/som.c2
-rw-r--r--bfd/sysdep.h31
-rw-r--r--bfd/targets.c19
-rw-r--r--bfd/trad-core.c16
-rw-r--r--bfd/versados.c4
-rw-r--r--bfd/vms.c4
-rw-r--r--bfd/xcoff-target.h198
-rw-r--r--bfd/xcofflink.c1
-rwxr-xr-xconfig.guess135
-rwxr-xr-xconfig.sub113
-rw-r--r--configure.in10
-rwxr-xr-xdjunpack.bat52
-rw-r--r--gdb/ChangeLog1831
-rw-r--r--gdb/MAINTAINERS38
-rw-r--r--gdb/Makefile.in160
-rw-r--r--gdb/NEWS88
-rw-r--r--gdb/README318
-rw-r--r--gdb/TODO1513
-rw-r--r--gdb/abug-rom.c2
-rw-r--r--gdb/acconfig.h24
-rw-r--r--gdb/aclocal.m433
-rw-r--r--gdb/alpha-nat.c9
-rw-r--r--gdb/alpha-tdep.c35
-rw-r--r--gdb/alphabsd-nat.c187
-rw-r--r--gdb/annotate.c16
-rw-r--r--gdb/annotate.h154
-rw-r--r--gdb/arc-tdep.c6
-rw-r--r--gdb/arch-utils.c79
-rw-r--r--gdb/arch-utils.h18
-rw-r--r--gdb/arm-linux-nat.c525
-rw-r--r--gdb/arm-linux-tdep.c212
-rw-r--r--gdb/arm-tdep.c2
-rw-r--r--gdb/ax-gdb.c178
-rw-r--r--gdb/ax-gdb.h10
-rw-r--r--gdb/ax-general.c20
-rw-r--r--gdb/ax.h26
-rw-r--r--gdb/bcache.c50
-rw-r--r--gdb/bcache.h3
-rw-r--r--gdb/blockframe.c14
-rw-r--r--gdb/breakpoint.c233
-rw-r--r--gdb/breakpoint.h154
-rw-r--r--gdb/buildsym.c26
-rw-r--r--gdb/c-exp.y34
-rw-r--r--gdb/c-lang.c2
-rw-r--r--gdb/c-lang.h14
-rw-r--r--gdb/c-valprint.c23
-rw-r--r--gdb/call-cmds.h12
-rw-r--r--gdb/ch-exp.c92
-rw-r--r--gdb/ch-lang.c17
-rw-r--r--gdb/ch-lang.h8
-rw-r--r--gdb/cli-out.c2
-rw-r--r--gdb/coff-solib.h12
-rw-r--r--gdb/coffread.c164
-rw-r--r--gdb/command.c88
-rw-r--r--gdb/command.h132
-rw-r--r--gdb/complaints.c2
-rw-r--r--gdb/complaints.h6
-rw-r--r--gdb/config.in33
-rw-r--r--gdb/config/a29k/tm-a29k.h8
-rw-r--r--gdb/config/a29k/tm-vx29k.h4
-rw-r--r--gdb/config/alpha/alpha-osf3.mh2
-rw-r--r--gdb/config/alpha/fbsd.mh6
-rw-r--r--gdb/config/alpha/fbsd.mt3
-rw-r--r--gdb/config/alpha/nm-fbsd.h44
-rw-r--r--gdb/config/alpha/nm-linux.h3
-rw-r--r--gdb/config/alpha/nm-osf.h3
-rw-r--r--gdb/config/alpha/nm-osf2.h2
-rw-r--r--gdb/config/alpha/tm-alpha.h44
-rw-r--r--gdb/config/alpha/tm-alphalinux.h2
-rw-r--r--gdb/config/alpha/tm-fbsd.h32
-rw-r--r--gdb/config/alpha/xm-fbsd.h26
-rw-r--r--gdb/config/arc/tm-arc.h8
-rw-r--r--gdb/config/arm/linux.mh5
-rw-r--r--gdb/config/arm/nm-linux.h17
-rw-r--r--gdb/config/arm/tm-arm.h2
-rw-r--r--gdb/config/arm/tm-embed.h8
-rw-r--r--gdb/config/arm/tm-linux.h4
-rw-r--r--gdb/config/convex/tm-convex.hbin29927 -> 29906 bytes
-rw-r--r--gdb/config/d10v/tm-d10v.h3
-rw-r--r--gdb/config/d30v/tm-d30v.h27
-rw-r--r--gdb/config/djgpp/README67
-rw-r--r--gdb/config/djgpp/config.sed3
-rw-r--r--gdb/config/djgpp/djconfig.sh3
-rw-r--r--gdb/config/djgpp/fnchange.lst362
-rw-r--r--gdb/config/fr30/tm-fr30.h21
-rw-r--r--gdb/config/gould/np1.mh3
-rw-r--r--gdb/config/gould/np1.mt3
-rw-r--r--gdb/config/gould/pn.mh3
-rw-r--r--gdb/config/gould/pn.mt3
-rw-r--r--gdb/config/gould/tm-np1.h490
-rw-r--r--gdb/config/gould/tm-pn.h409
-rw-r--r--gdb/config/gould/xm-np1.h94
-rw-r--r--gdb/config/gould/xm-pn.h87
-rw-r--r--gdb/config/h8300/tm-h8300.h20
-rw-r--r--gdb/config/h8500/tm-h8500.h37
-rw-r--r--gdb/config/i386/fbsd.mh5
-rw-r--r--gdb/config/i386/fbsd.mt2
-rw-r--r--gdb/config/i386/nbsd.mh3
-rw-r--r--gdb/config/i386/nbsd.mt2
-rw-r--r--gdb/config/i386/nbsdelf.mh6
-rw-r--r--gdb/config/i386/nbsdelf.mt5
-rw-r--r--gdb/config/i386/nm-fbsd.h56
-rw-r--r--gdb/config/i386/nm-i386bsd.h3
-rw-r--r--gdb/config/i386/nm-i386sco.h3
-rw-r--r--gdb/config/i386/nm-i386sol2.h14
-rw-r--r--gdb/config/i386/nm-i386v.h3
-rw-r--r--gdb/config/i386/nm-linux.h14
-rw-r--r--gdb/config/i386/nm-nbsd.h5
-rw-r--r--gdb/config/i386/nm-nbsdelf.h27
-rw-r--r--gdb/config/i386/nm-ptx4.h2
-rw-r--r--gdb/config/i386/nm-symmetry.h2
-rw-r--r--gdb/config/i386/tm-cygwin.h18
-rw-r--r--gdb/config/i386/tm-fbsd.h56
-rw-r--r--gdb/config/i386/tm-i386.h18
-rw-r--r--gdb/config/i386/tm-i386nw.h3
-rw-r--r--gdb/config/i386/tm-i386sol2.h11
-rw-r--r--gdb/config/i386/tm-i386v.h3
-rw-r--r--gdb/config/i386/tm-i386v4.h5
-rw-r--r--gdb/config/i386/tm-nbsd.h21
-rw-r--r--gdb/config/i386/tm-nbsdelf.h28
-rw-r--r--gdb/config/i386/tm-ptx.h3
-rw-r--r--gdb/config/i386/tm-sun386.h6
-rw-r--r--gdb/config/i386/xm-fbsd.h28
-rw-r--r--gdb/config/i960/tm-i960.h2
-rw-r--r--gdb/config/i960/tm-mon960.h2
-rw-r--r--gdb/config/i960/tm-nindy960.h2
-rw-r--r--gdb/config/ia64/linux.mt2
-rw-r--r--gdb/config/ia64/nm-linux.h29
-rw-r--r--gdb/config/ia64/tm-linux.h3
-rw-r--r--gdb/config/m32r/tm-m32r.h29
-rw-r--r--gdb/config/m68k/nbsd.mh3
-rw-r--r--gdb/config/m68k/nbsd.mt2
-rw-r--r--gdb/config/m68k/nm-dpx2.h3
-rw-r--r--gdb/config/m68k/nm-linux.h5
-rw-r--r--gdb/config/m68k/tm-altos.hbin2313 -> 2306 bytes
-rw-r--r--gdb/config/m68k/tm-cisco.h2
-rw-r--r--gdb/config/m68k/tm-delta68.h8
-rw-r--r--gdb/config/m68k/tm-es1800.h2
-rw-r--r--gdb/config/m68k/tm-isi.h4
-rw-r--r--gdb/config/m68k/tm-linux.h4
-rw-r--r--gdb/config/m68k/tm-m68k.h13
-rw-r--r--gdb/config/m68k/tm-m68kv4.h2
-rw-r--r--gdb/config/m68k/tm-news.h2
-rw-r--r--gdb/config/m68k/tm-sun3.h2
-rw-r--r--gdb/config/m68k/tm-vx68.h2
-rw-r--r--gdb/config/m68k/xm-hp300bsd.h2
-rw-r--r--gdb/config/m88k/tm-m88k.h10
-rw-r--r--gdb/config/mcore/tm-mcore.h8
-rw-r--r--gdb/config/mips/nm-irix3.h2
-rw-r--r--gdb/config/mips/nm-irix4.h4
-rw-r--r--gdb/config/mips/nm-irix5.h4
-rw-r--r--gdb/config/mips/nm-mips.h2
-rw-r--r--gdb/config/mips/tm-embed.h6
-rw-r--r--gdb/config/mips/tm-irix5.h35
-rw-r--r--gdb/config/mips/tm-mips.h85
-rw-r--r--gdb/config/mips/tm-mipsv4.h6
-rw-r--r--gdb/config/mn10200/tm-mn10200.h22
-rw-r--r--gdb/config/mn10300/tm-mn10300.h31
-rw-r--r--gdb/config/nm-linux.h14
-rw-r--r--gdb/config/nm-lynx.h4
-rw-r--r--gdb/config/ns32k/nbsd.mh3
-rw-r--r--gdb/config/ns32k/nbsd.mt2
-rw-r--r--gdb/config/ns32k/nm-nbsd.h3
-rw-r--r--gdb/config/ns32k/tm-merlin.h4
-rw-r--r--gdb/config/ns32k/tm-umax.h4
-rw-r--r--gdb/config/pa/nm-hppah.h20
-rw-r--r--gdb/config/pa/tm-hppa.h53
-rw-r--r--gdb/config/pa/tm-hppa64.h2
-rw-r--r--gdb/config/pa/xm-hppah.h9
-rw-r--r--gdb/config/powerpc/nbsd.mh5
-rw-r--r--gdb/config/powerpc/nbsd.mt5
-rw-r--r--gdb/config/powerpc/nm-linux.h14
-rw-r--r--gdb/config/powerpc/nm-nbsd.h29
-rw-r--r--gdb/config/powerpc/tm-linux.h3
-rw-r--r--gdb/config/powerpc/tm-nbsd.h27
-rw-r--r--gdb/config/powerpc/tm-ppc-eabi.h4
-rw-r--r--gdb/config/powerpc/tm-solaris.h5
-rw-r--r--gdb/config/powerpc/xm-aix.h2
-rw-r--r--gdb/config/powerpc/xm-nbsd.h22
-rw-r--r--gdb/config/rs6000/nm-rs6000.h6
-rw-r--r--gdb/config/rs6000/tm-rs6000.h38
-rw-r--r--gdb/config/rs6000/xm-rs6000.h6
-rw-r--r--gdb/config/sh/tm-sh.h49
-rw-r--r--gdb/config/sh/tm-wince.h2
-rw-r--r--gdb/config/sparc/nm-linux.h5
-rw-r--r--gdb/config/sparc/nm-sun4os4.h2
-rw-r--r--gdb/config/sparc/nm-sun4sol2.h11
-rw-r--r--gdb/config/sparc/tm-sp64.h225
-rw-r--r--gdb/config/sparc/tm-sp64sim.h3
-rw-r--r--gdb/config/sparc/tm-sparc.h696
-rw-r--r--gdb/config/sparc/tm-sparclet.h30
-rw-r--r--gdb/config/sparc/tm-sparclite.h29
-rw-r--r--gdb/config/sparc/tm-spc-em.h3
-rw-r--r--gdb/config/sparc/tm-sun4os4.h7
-rw-r--r--gdb/config/sparc/tm-sun4sol2.h7
-rw-r--r--gdb/config/sparc/xm-sun4sol2.h7
-rw-r--r--gdb/config/tahoe/tm-tahoe.hbin13613 -> 13599 bytes
-rw-r--r--gdb/config/tic80/tm-tic80.h25
-rw-r--r--gdb/config/tm-sysv4.h2
-rw-r--r--gdb/config/v850/tm-v850.h24
-rw-r--r--gdb/config/vax/tm-vax.h4
-rw-r--r--gdb/config/w65/tm-w65.h4
-rw-r--r--gdb/config/xm-aix4.h2
-rw-r--r--gdb/config/z8k/tm-z8k.h12
-rwxr-xr-xgdb/configure943
-rw-r--r--gdb/configure.host7
-rw-r--r--gdb/configure.in129
-rw-r--r--gdb/configure.tgt15
-rw-r--r--gdb/copying.c6
-rw-r--r--gdb/core-aout.c6
-rw-r--r--gdb/core-regset.c12
-rw-r--r--gdb/core-sol2.c5
-rw-r--r--gdb/corefile.c25
-rw-r--r--gdb/corelow.c52
-rw-r--r--gdb/cp-valprint.c4
-rw-r--r--gdb/cpu32bug-rom.c2
-rw-r--r--gdb/cxux-nat.c6
-rw-r--r--gdb/d10v-tdep.c54
-rw-r--r--gdb/d30v-tdep.c30
-rw-r--r--gdb/dbug-rom.c2
-rw-r--r--gdb/dbxread.c156
-rw-r--r--gdb/dcache.c21
-rw-r--r--gdb/dcache.h17
-rw-r--r--gdb/defs.h52
-rw-r--r--gdb/demangle.c5
-rw-r--r--gdb/dink32-rom.c2
-rw-r--r--gdb/doc/ChangeLog119
-rw-r--r--gdb/doc/Makefile.in83
-rw-r--r--gdb/doc/annotate.texi2
-rwxr-xr-xgdb/doc/configure34
-rw-r--r--gdb/doc/configure.in1
-rw-r--r--gdb/doc/gdb.texinfo229
-rw-r--r--gdb/doc/gdbint.texinfo654
-rw-r--r--gdb/doc/stabs.texinfo11
-rw-r--r--gdb/dsrec.c10
-rw-r--r--gdb/dstread.c38
-rw-r--r--gdb/dve3900-rom.c55
-rw-r--r--gdb/dwarf2read.c288
-rw-r--r--gdb/dwarfread.c121
-rw-r--r--gdb/elfread.c55
-rw-r--r--gdb/environ.h22
-rw-r--r--gdb/eval.c36
-rw-r--r--gdb/event-top.c2
-rw-r--r--gdb/exec.c67
-rw-r--r--gdb/expprint.c5
-rw-r--r--gdb/expression.h8
-rw-r--r--gdb/f-exp.y12
-rw-r--r--gdb/f-lang.c28
-rw-r--r--gdb/f-lang.h14
-rw-r--r--gdb/f-valprint.c12
-rw-r--r--gdb/findvar.c161
-rw-r--r--gdb/fork-child.c6
-rw-r--r--gdb/fr30-tdep.c2
-rw-r--r--gdb/frame.h106
-rw-r--r--gdb/gdb-stabs.h11
-rw-r--r--gdb/gdb_dirent.h40
-rw-r--r--gdb/gdb_string.h10
-rw-r--r--gdb/gdbarch.c569
-rw-r--r--gdb/gdbarch.h374
-rwxr-xr-xgdb/gdbarch.sh555
-rw-r--r--gdb/gdbcmd.h17
-rw-r--r--gdb/gdbcore.h66
-rw-r--r--gdb/gdbserver/low-nbsd.c184
-rw-r--r--gdb/gdbserver/remote-utils.c6
-rw-r--r--gdb/gdbserver/server.h50
-rw-r--r--gdb/gdbtypes.c20
-rw-r--r--gdb/gdbtypes.h150
-rw-r--r--gdb/go32-nat.c4
-rw-r--r--gdb/gould-tdep.c310
-rw-r--r--gdb/gould-xdep.c130
-rw-r--r--gdb/gregset.h50
-rw-r--r--gdb/h8300-tdep.c2
-rw-r--r--gdb/hp-psymtab-read.c50
-rw-r--r--gdb/hp-symtab-read.c72
-rw-r--r--gdb/hp300ux-nat.c9
-rw-r--r--gdb/hppa-tdep.c85
-rw-r--r--gdb/hppah-nat.c4
-rw-r--r--gdb/hpread.c86
-rw-r--r--gdb/hpread.h9
-rw-r--r--gdb/hpux-thread.c17
-rw-r--r--gdb/i386-linux-nat.c95
-rw-r--r--gdb/i386-tdep.c23
-rw-r--r--gdb/i386aix-nat.c2
-rw-r--r--gdb/i386bsd-nat.c237
-rw-r--r--gdb/i386mach-nat.c4
-rw-r--r--gdb/i386v-nat.c19
-rw-r--r--gdb/i386v4-nat.c99
-rw-r--r--gdb/i387-nat.c125
-rw-r--r--gdb/i387-nat.h37
-rw-r--r--gdb/i387-tdep.c26
-rw-r--r--gdb/i960-tdep.c5
-rw-r--r--gdb/ia64-linux-nat.c174
-rw-r--r--gdb/ia64-linux-tdep.c87
-rw-r--r--gdb/ia64-tdep.c498
-rw-r--r--gdb/infcmd.c78
-rw-r--r--gdb/inferior.h184
-rw-r--r--gdb/inflow.c16
-rw-r--r--gdb/infptrace.c12
-rw-r--r--gdb/infrun.c74
-rw-r--r--gdb/inftarg.c66
-rw-r--r--gdb/irix4-nat.c6
-rw-r--r--gdb/irix5-nat.c60
-rw-r--r--gdb/jv-exp.y22
-rw-r--r--gdb/jv-lang.c24
-rw-r--r--gdb/jv-lang.h26
-rw-r--r--gdb/jv-valprint.c1
-rw-r--r--gdb/language.c47
-rw-r--r--gdb/language.h104
-rw-r--r--gdb/lin-thread.c25
-rw-r--r--gdb/linux-thread.c2
-rw-r--r--gdb/lynx-nat.c4
-rw-r--r--gdb/m2-exp.y15
-rw-r--r--gdb/m2-lang.c4
-rw-r--r--gdb/m2-lang.h6
-rw-r--r--gdb/m32r-rom.c6
-rw-r--r--gdb/m68k-tdep.c8
-rw-r--r--gdb/m68klinux-nat.c3
-rw-r--r--gdb/m88k-nat.c3
-rw-r--r--gdb/mac-nat.c2
-rw-r--r--gdb/main.c2
-rw-r--r--gdb/maint.c23
-rw-r--r--gdb/mdebugread.c203
-rw-r--r--gdb/mem-break.c8
-rw-r--r--gdb/mi/ChangeLog (renamed from gdb/mi/ChangeLog-mi)27
-rw-r--r--gdb/mi/gdbmi.texinfo3976
-rw-r--r--gdb/mi/mi-cmd-break.c4
-rw-r--r--gdb/mi/mi-cmd-disas.c4
-rw-r--r--gdb/mi/mi-cmd-stack.c4
-rw-r--r--gdb/mi/mi-cmd-var.c10
-rw-r--r--gdb/mi/mi-cmds.c4
-rw-r--r--gdb/mi/mi-cmds.h4
-rw-r--r--gdb/mi/mi-console.c4
-rw-r--r--gdb/mi/mi-console.h4
-rw-r--r--gdb/mi/mi-getopt.c5
-rw-r--r--gdb/mi/mi-getopt.h4
-rw-r--r--gdb/mi/mi-main.c18
-rw-r--r--gdb/mi/mi-out.c6
-rw-r--r--gdb/mi/mi-out.h4
-rw-r--r--gdb/mi/mi-parse.c4
-rw-r--r--gdb/mi/mi-parse.h4
-rw-r--r--gdb/minsyms.c29
-rw-r--r--gdb/mips-nat.c2
-rw-r--r--gdb/mips-tdep.c435
-rw-r--r--gdb/mipsread.c29
-rw-r--r--gdb/mipsv4-nat.c3
-rw-r--r--gdb/mn10300-tdep.c6
-rw-r--r--gdb/mon960-rom.c2
-rw-r--r--gdb/monitor.c86
-rw-r--r--gdb/monitor.h41
-rw-r--r--gdb/nlmread.c19
-rw-r--r--gdb/objfiles.c61
-rw-r--r--gdb/objfiles.h79
-rw-r--r--gdb/ocd.c29
-rw-r--r--gdb/ocd.h57
-rw-r--r--gdb/op50-rom.c2
-rw-r--r--gdb/os9kread.c86
-rw-r--r--gdb/osfsolib.c32
-rw-r--r--gdb/pa64solib.c34
-rw-r--r--gdb/pa64solib.h39
-rw-r--r--gdb/parse.c18
-rw-r--r--gdb/parser-defs.h59
-rw-r--r--gdb/partial-stab.h26
-rw-r--r--gdb/ppc-bdm.c9
-rw-r--r--gdb/ppc-linux-nat.c3
-rw-r--r--gdb/ppcnbsd-nat.c135
-rw-r--r--gdb/printcmd.c95
-rw-r--r--gdb/proc-api.c170
-rw-r--r--gdb/proc-events.c2
-rw-r--r--gdb/proc-utils.h48
-rw-r--r--gdb/procfs.c400
-rw-r--r--gdb/ptx4-nat.c9
-rw-r--r--gdb/remote-array.c2
-rw-r--r--gdb/remote-bug.c12
-rw-r--r--gdb/remote-e7000.c30
-rw-r--r--gdb/remote-es.c125
-rw-r--r--gdb/remote-est.c2
-rw-r--r--gdb/remote-hms.c2
-rw-r--r--gdb/remote-mips.c112
-rw-r--r--gdb/remote-nindy.c6
-rw-r--r--gdb/remote-nrom.c4
-rw-r--r--gdb/remote-os9k.c4
-rw-r--r--gdb/remote-rdi.c52
-rw-r--r--gdb/remote-rdp.c9
-rw-r--r--gdb/remote-sds.c65
-rw-r--r--gdb/remote-sim.c65
-rw-r--r--gdb/remote-udi.c32
-rw-r--r--gdb/remote-utils.c6
-rw-r--r--gdb/remote-utils.h53
-rw-r--r--gdb/remote-vx.c11
-rw-r--r--gdb/remote.c323
-rw-r--r--gdb/rom68k-rom.c2
-rw-r--r--gdb/rs6000-nat.c79
-rw-r--r--gdb/rs6000-tdep.c14
-rw-r--r--gdb/scm-exp.c12
-rw-r--r--gdb/scm-lang.c10
-rw-r--r--gdb/scm-lang.h10
-rw-r--r--gdb/ser-e7kpc.c16
-rw-r--r--gdb/ser-go32.c18
-rw-r--r--gdb/ser-mac.c18
-rw-r--r--gdb/ser-ocd.c2
-rw-r--r--gdb/serial.c2
-rw-r--r--gdb/sh-tdep.c70
-rw-r--r--gdb/sh3-rom.c2
-rw-r--r--gdb/sol-thread.c193
-rw-r--r--gdb/solib.c196
-rw-r--r--gdb/solib.h15
-rw-r--r--gdb/somread.c53
-rw-r--r--gdb/somsolib.c33
-rw-r--r--gdb/somsolib.h41
-rw-r--r--gdb/source.c25
-rw-r--r--gdb/sparc-nat.c3
-rw-r--r--gdb/sparc-tdep.c2030
-rw-r--r--gdb/sparcl-tdep.c60
-rw-r--r--gdb/sparclet-rom.c31
-rw-r--r--gdb/srec.h6
-rw-r--r--gdb/stabsread.c132
-rw-r--r--gdb/stabsread.h103
-rw-r--r--gdb/stack.c61
-rw-r--r--gdb/sun3-nat.c79
-rw-r--r--gdb/symfile.c561
-rw-r--r--gdb/symfile.h147
-rw-r--r--gdb/symmisc.c13
-rw-r--r--gdb/symtab.c197
-rw-r--r--gdb/symtab.h253
-rw-r--r--gdb/target.c178
-rw-r--r--gdb/target.h312
-rw-r--r--gdb/terminal.h4
-rw-r--r--gdb/testsuite/ChangeLog77
-rw-r--r--gdb/testsuite/gdb.base/annota1.exp9
-rw-r--r--gdb/testsuite/gdb.base/break.exp29
-rw-r--r--gdb/testsuite/gdb.base/call-ar-st.exp6
-rw-r--r--gdb/testsuite/gdb.base/call-rt-st.exp5
-rw-r--r--gdb/testsuite/gdb.base/call-strs.exp6
-rw-r--r--gdb/testsuite/gdb.base/ending-run.exp29
-rw-r--r--gdb/testsuite/gdb.base/help.exp2
-rw-r--r--gdb/testsuite/gdb.base/interrupt.exp2
-rw-r--r--gdb/testsuite/gdb.base/miscexprs.exp23
-rw-r--r--gdb/testsuite/gdb.base/step-test.exp12
-rw-r--r--gdb/testsuite/gdb.base/structs2.c4
-rw-r--r--gdb/testsuite/gdb.c++/Makefile.in2
-rw-r--r--gdb/testsuite/gdb.c++/ctti.exp13
-rw-r--r--gdb/testsuite/gdb.c++/misc.cc10
-rw-r--r--gdb/testsuite/gdb.c++/namespace.exp191
-rw-r--r--gdb/testsuite/gdb.c++/templates.cc6
-rw-r--r--gdb/testsuite/gdb.c++/templates.exp75
-rw-r--r--gdb/testsuite/gdb.mi/ChangeLog-mi4
-rw-r--r--gdb/testsuite/gdb.mi/Makefile.in2
-rw-r--r--gdb/testsuite/lib/compiler.cc2
-rw-r--r--gdb/thread.c20
-rw-r--r--gdb/top.c240
-rw-r--r--gdb/top.h33
-rw-r--r--gdb/tracepoint.c106
-rw-r--r--gdb/tracepoint.h21
-rw-r--r--gdb/tui/ChangeLog21
-rw-r--r--gdb/tui/Makefile.in168
-rw-r--r--gdb/tui/tui-file.c13
-rw-r--r--gdb/tui/tui.c11
-rw-r--r--gdb/tui/tui.h66
-rw-r--r--gdb/tui/tuiCommand.h10
-rw-r--r--gdb/tui/tuiData.c4
-rw-r--r--gdb/tui/tuiData.h111
-rw-r--r--gdb/tui/tuiDataWin.h22
-rw-r--r--gdb/tui/tuiDisassem.c6
-rw-r--r--gdb/tui/tuiDisassem.h10
-rw-r--r--gdb/tui/tuiGeneralWin.c3
-rw-r--r--gdb/tui/tuiGeneralWin.h28
-rw-r--r--gdb/tui/tuiIO.c6
-rw-r--r--gdb/tui/tuiIO.h16
-rw-r--r--gdb/tui/tuiLayout.c34
-rw-r--r--gdb/tui/tuiLayout.h17
-rw-r--r--gdb/tui/tuiRegs.c44
-rw-r--r--gdb/tui/tuiRegs.h20
-rw-r--r--gdb/tui/tuiSource.c2
-rw-r--r--gdb/tui/tuiSource.h10
-rw-r--r--gdb/tui/tuiSourceWin.h61
-rw-r--r--gdb/tui/tuiStack.c6
-rw-r--r--gdb/tui/tuiStack.h25
-rw-r--r--gdb/tui/tuiWin.c30
-rw-r--r--gdb/tui/tuiWin.h22
-rw-r--r--gdb/typeprint.c22
-rw-r--r--gdb/ui-file.c4
-rw-r--r--gdb/ui-out.c4
-rw-r--r--gdb/ui-out.h79
-rw-r--r--gdb/ultra3-nat.c2
-rw-r--r--gdb/utils.c242
-rw-r--r--gdb/uw-thread.c2
-rw-r--r--gdb/v850-tdep.c3
-rw-r--r--gdb/v850ice.c77
-rw-r--r--gdb/valarith.c14
-rw-r--r--gdb/valops.c234
-rw-r--r--gdb/valprint.c156
-rw-r--r--gdb/value.h328
-rw-r--r--gdb/values.c42
-rw-r--r--gdb/varobj.c145
-rw-r--r--gdb/w89k-rom.c2
-rw-r--r--gdb/win32-nat.c542
-rw-r--r--gdb/wince-stub.c137
-rw-r--r--gdb/wince.c608
-rw-r--r--gdb/wrapper.c36
-rw-r--r--gdb/wrapper.h22
-rw-r--r--gdb/xcoffread.c170
-rw-r--r--gdb/xcoffsolib.c6
-rw-r--r--gdb/xcoffsolib.h2
-rw-r--r--gdb/xmodem.h8
-rw-r--r--gdb/z8k-tdep.c2
-rw-r--r--include/ChangeLog37
-rw-r--r--include/bfdlink.h2
-rw-r--r--include/coff/ChangeLog33
-rw-r--r--include/coff/ia64.h222
-rw-r--r--include/coff/internal.h5
-rw-r--r--include/coff/pe.h54
-rw-r--r--include/coff/rs6k64.h236
-rw-r--r--include/coff/ti.h27
-rw-r--r--include/dis-asm.h2
-rw-r--r--include/elf/ChangeLog36
-rw-r--r--include/elf/common.h11
-rw-r--r--include/elf/ia64.h172
-rw-r--r--include/elf/mips.h2
-rw-r--r--include/elf/mn10300.h2
-rw-r--r--include/elf/reloc-macros.h20
-rw-r--r--include/filenames.h51
-rw-r--r--include/floatformat.h5
-rw-r--r--include/opcode/ChangeLog61
-rw-r--r--include/opcode/cgen.h24
-rw-r--r--include/opcode/d10v.h1
-rw-r--r--include/opcode/h8300.h2
-rw-r--r--include/opcode/hppa.h61
-rw-r--r--include/opcode/i386.h1580
-rw-r--r--include/opcode/ia64.h388
-rw-r--r--include/opcode/ppc.h8
-rw-r--r--include/opcode/tic54x.h167
-rw-r--r--libiberty/ChangeLog32
-rw-r--r--libiberty/Makefile.in9
-rw-r--r--libiberty/floatformat.c41
-rw-r--r--libiberty/hashtab.c4
-rw-r--r--libiberty/objalloc.c7
-rw-r--r--libiberty/partition.c4
-rw-r--r--libiberty/pexecute.c3
-rw-r--r--libiberty/sort.c185
-rw-r--r--libiberty/strerror.c19
-rw-r--r--libiberty/strsignal.c19
-rw-r--r--libiberty/xexit.c3
-rw-r--r--libiberty/xmemdup.c3
-rw-r--r--ltmain.sh5
-rw-r--r--mmalloc/ChangeLog5
-rw-r--r--mmalloc/Makefile.in5
-rw-r--r--opcodes/ChangeLog207
-rw-r--r--opcodes/Makefile.am302
-rw-r--r--opcodes/Makefile.in303
-rw-r--r--opcodes/a29k-dis.c1
-rw-r--r--opcodes/alpha-dis.c1
-rw-r--r--opcodes/alpha-opc.c2
-rw-r--r--opcodes/arc-dis.c1
-rw-r--r--opcodes/arc-opc.c2
-rw-r--r--opcodes/arm-dis.c12
-rw-r--r--opcodes/arm-opc.h10
-rw-r--r--opcodes/avr-dis.c122
-rwxr-xr-xopcodes/configure3
-rw-r--r--opcodes/configure.in3
-rw-r--r--opcodes/d10v-dis.c2
-rw-r--r--opcodes/d10v-opc.c24
-rw-r--r--opcodes/d30v-dis.c1
-rw-r--r--opcodes/d30v-opc.c2
-rw-r--r--opcodes/disassemble.c21
-rw-r--r--opcodes/fr30-desc.c3
-rw-r--r--opcodes/fr30-desc.h8
-rw-r--r--opcodes/h8300-dis.c214
-rw-r--r--opcodes/h8500-dis.c1
-rw-r--r--opcodes/hppa-dis.c91
-rw-r--r--opcodes/i370-dis.c1
-rw-r--r--opcodes/i370-opc.c2
-rw-r--r--opcodes/i960-dis.c1
-rw-r--r--opcodes/ia64-asmtab.c7049
-rw-r--r--opcodes/ia64-asmtab.h148
-rw-r--r--opcodes/ia64-dis.c264
-rw-r--r--opcodes/ia64-gen.c2763
-rw-r--r--opcodes/ia64-ic.tbl205
-rw-r--r--opcodes/ia64-opc-a.c364
-rw-r--r--opcodes/ia64-opc-b.c489
-rw-r--r--opcodes/ia64-opc-d.c12
-rw-r--r--opcodes/ia64-opc-f.c631
-rw-r--r--opcodes/ia64-opc-i.c296
-rw-r--r--opcodes/ia64-opc-m.c1042
-rw-r--r--opcodes/ia64-opc-x.c178
-rw-r--r--opcodes/ia64-opc.c747
-rw-r--r--opcodes/ia64-opc.h129
-rw-r--r--opcodes/ia64-raw.tbl171
-rw-r--r--opcodes/ia64-war.tbl2
-rw-r--r--opcodes/ia64-waw.tbl125
-rw-r--r--opcodes/m10200-dis.c2
-rw-r--r--opcodes/m10200-opc.c2
-rw-r--r--opcodes/m10300-dis.c37
-rw-r--r--opcodes/m10300-opc.c2
-rw-r--r--opcodes/m32r-desc.h8
-rw-r--r--opcodes/m68k-dis.c12
-rw-r--r--opcodes/m68k-opc.c2
-rw-r--r--opcodes/m88k-dis.c1
-rw-r--r--opcodes/mcore-dis.c7
-rw-r--r--opcodes/mips-dis.c18
-rw-r--r--opcodes/mips-opc.c74
-rw-r--r--opcodes/mips16-opc.c2
-rw-r--r--opcodes/opintl.h24
-rw-r--r--opcodes/pj-dis.c1
-rw-r--r--opcodes/pj-opc.c2
-rw-r--r--opcodes/po/POTFILES.in21
-rw-r--r--opcodes/po/opcodes.pot54
-rw-r--r--opcodes/ppc-dis.c15
-rw-r--r--opcodes/ppc-opc.c945
-rw-r--r--opcodes/sh-dis.c1
-rw-r--r--opcodes/sparc-dis.c1
-rw-r--r--opcodes/sparc-opc.c2
-rw-r--r--opcodes/sysdep.h2
-rw-r--r--opcodes/tic54x-dis.c615
-rw-r--r--opcodes/tic54x-opc.c476
-rw-r--r--opcodes/tic80-dis.c2
-rw-r--r--opcodes/tic80-opc.c2
-rw-r--r--opcodes/v850-dis.c2
-rw-r--r--opcodes/v850-opc.c2
-rw-r--r--opcodes/vax-dis.c1
-rw-r--r--opcodes/w65-dis.c1
-rw-r--r--opcodes/z8k-dis.c1
-rw-r--r--opcodes/z8kgen.c1
-rw-r--r--readline/doc/ChangeLog5
-rw-r--r--readline/doc/readline.01188
-rw-r--r--sim/arm/ChangeLog40
-rw-r--r--sim/arm/Makefile.in8
-rw-r--r--sim/arm/armcopro.c38
-rw-r--r--sim/arm/armdefs.h21
-rw-r--r--sim/arm/armemu.c12
-rw-r--r--sim/arm/arminit.c8
-rw-r--r--sim/arm/armos.c1
-rw-r--r--sim/arm/armsupp.c93
-rwxr-xr-xsim/arm/configure307
-rw-r--r--sim/arm/configure.in3
-rw-r--r--sim/arm/wrapper.c16
-rw-r--r--sim/common/ChangeLog17
-rw-r--r--sim/common/aclocal.m42
-rwxr-xr-xsim/common/configure305
-rw-r--r--sim/common/run.c2
-rw-r--r--sim/common/sim-events.c21
-rw-r--r--sim/d10v/ChangeLog32
-rwxr-xr-xsim/d10v/configure305
-rw-r--r--sim/d10v/interp.c12
-rw-r--r--sim/d30v/ChangeLog9
-rwxr-xr-xsim/d30v/configure321
-rw-r--r--sim/d30v/cpu.h2
-rw-r--r--sim/erc32/ChangeLog4
-rwxr-xr-xsim/erc32/configure315
-rw-r--r--sim/fr30/ChangeLog4
-rw-r--r--sim/fr30/configure2
-rw-r--r--sim/h8300/ChangeLog4
-rwxr-xr-xsim/h8300/configure305
-rw-r--r--sim/h8500/ChangeLog4
-rwxr-xr-xsim/h8500/configure305
-rw-r--r--sim/i960/ChangeLog4
-rwxr-xr-xsim/i960/configure2
-rw-r--r--sim/igen/ChangeLog9
-rwxr-xr-xsim/igen/configure89
-rw-r--r--sim/igen/gen-semantics.c2
-rw-r--r--sim/m32r/ChangeLog4
-rwxr-xr-xsim/m32r/configure2
-rw-r--r--sim/mcore/ChangeLog4
-rwxr-xr-xsim/mcore/configure305
-rw-r--r--sim/mips/ChangeLog16
-rwxr-xr-xsim/mips/configure2
-rw-r--r--sim/mips/interp.c3
-rw-r--r--sim/mips/mips.igen5
-rw-r--r--sim/mips/sim-main.h7
-rw-r--r--sim/mn10200/ChangeLog4
-rwxr-xr-xsim/mn10200/configure305
-rw-r--r--sim/mn10300/ChangeLog21
-rw-r--r--sim/mn10300/am33.igen230
-rwxr-xr-xsim/mn10300/configure325
-rw-r--r--sim/mn10300/mn10300.igen112
-rw-r--r--sim/mn10300/mn10300_sim.h12
-rw-r--r--sim/mn10300/op_utils.c20
-rw-r--r--sim/ppc/ChangeLog18
-rwxr-xr-xsim/ppc/configure401
-rw-r--r--sim/ppc/events.c29
-rw-r--r--sim/ppc/interrupts.c2
-rw-r--r--sim/sh/ChangeLog154
-rwxr-xr-xsim/sh/configure305
-rw-r--r--sim/sh/gencode.c1682
-rw-r--r--sim/sh/interp.c1195
-rw-r--r--sim/testsuite/ChangeLog4
-rwxr-xr-xsim/testsuite/configure27
-rw-r--r--sim/testsuite/d10v-elf/ChangeLog5
-rw-r--r--sim/testsuite/d10v-elf/Makefile.in1
-rw-r--r--sim/testsuite/d10v-elf/t-rie-xx.s12
-rw-r--r--sim/v850/ChangeLog14
-rwxr-xr-xsim/v850/configure325
-rw-r--r--sim/v850/v850.igen16
-rw-r--r--sim/w65/ChangeLog4
-rwxr-xr-xsim/w65/configure243
-rw-r--r--sim/z8k/ChangeLog4
-rwxr-xr-xsim/z8k/configure305
-rw-r--r--texinfo/texinfo.tex2009
774 files changed, 62702 insertions, 23680 deletions
diff --git a/ChangeLog b/ChangeLog
index b88dd1b8904..0077cc93eff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,105 @@
+Mon May 29 13:50:03 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * texinfo/texinfo.tex: Update. Version from makeinfo 4.0.
+
+Tue May 30 19:01:12 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * config.sub: Import CVS version 1.167 Tue May 30 09:00:07 2000.
+ * config.guess: Import CVS version 1.148 Tue May 30 09:00:06 2000
+
+20000-05-21 H.J. Lu (hjl@gnu.org)
+
+ * configure: Revert changes made on May 18 and May 19.
+
+ * Makefile.in (CC_FOR_TARGET): Make sure as/ld in the gcc
+ directory are used if they exist. Make sure
+ $(build_tooldir)/include is searched for header files,
+ $(build_tooldir)/lib/ for library files.
+ (GCC_FOR_TARGET): Likewise.
+ (CXX_FOR_TARGET): Likewise.
+
+20000-05-19 H.J. Lu (hjl@gnu.org)
+
+ * configure: Provide --disable-target-dir-sanity-checking to
+ disable the gcc directory checking for cross compiling.
+
+20000-05-18 H.J. Lu (hjl@gnu.org)
+
+ * configure: Ask to create the gcc directory for cross
+ compiling if necessary.
+
+Thu May 18 10:58:13 2000 Jeffrey A Law (law@cygnus.com)
+
+ * configure.in (hppa*64*-*-*): Do build ld for this configuration.
+
+2000-05-18 David Edelsohn <edelsohn@gnu.org>
+
+ * configure.in: Special case powerpc*-*-aix* target_makefile_frag.
+
+Wed May 17 16:03:48 2000 Alexandre Oliva <aoliva@cygnus.com>
+
+ * Makefile.in (configure-target-libiberty): Depend on
+ configure-target-newlib.
+
+Tue May 16 10:06:21 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ Thu Apr 27 11:01:48 2000 Andrew Cagney <cagney@b1.cygnus.com>:
+ * Makefile.in (do-tar-bz2, do-md5sum): Skip CVS directories.
+
+Tue May 16 09:57:35 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ Wed Apr 26 17:03:53 2000 Andrew Cagney <cagney@b1.cygnus.com>:
+ * Makefile.in (do-djunpack): New target. Update djunpack.bat with
+ current version information. Add to proto-toplev directory.
+ (gdb-taz): Build do-djunpack.
+
+2000-05-13 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
+
+ * ltmain.sh: Preserve in relink_command any environment
+ variables that may affect the linker behavior.
+
+Fri May 12 11:23:17 2000 Jeffrey A Law (law@cygnus.com)
+
+ * config.sub (basic_machine): Recognize hppa64 as a valid cpu type.
+
+Wed May 10 21:26:51 2000 Jim Wilson <wilson@cygnus.com>
+
+ * configure.in (ia64*-*-elf*): Add gdb and friends to noconfigdirs.
+
+2000-05-08 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * djunpack.bat: Change the Sed script to replace @V@ in fnchange.lst
+ with the version name.
+
+2000-04-23 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * djunpack.bat: New file.
+
+2000-04-21 Michael Meissner <meissner@redhat.com>
+
+ * config.sub (d30v): Add d30v as a basic machine type.
+
+Wed Apr 19 12:46:26 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * Makefile.in (taz, gdb-taz, gas.tar.bz2, binutils.tar.bz2,
+ gas+binutils.tar.bz2, libg++.tar.bz2, gnats.tar.bz2, gdb.tar.bz2,
+ dejagnu.tar.bz2, gdb+dejagnu.tar.bz2, insight.tar.bz2,
+ insight+dejagnu.tar.bz2, newlib.tar.bz2): Pass MD5PROG to sub-make.
+
+Wed Apr 12 16:42:48 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * Makefile.in (gdb-taz): New target. GDB specific archive.
+ (do-md5sum): New target.
+ (MD5PROG): Define.
+ (PACKAGE): Default to TOOL.
+ (VER): Default to a shell script.
+ (taz): Rewrite target. Move real work to do-proto-toplev. Include
+ md5 checksum generation.
+ (do-proto-toplev): New target. Create $(PACKAGE)-$(VER) link.
+ (do-tar-bz2): Delete creation of $(PACKAGE)-$(VER) link.
+ (gdb.tar.bz2, dejagnu.tar.bz2, gdb+dejagnu.tar.bz2,
+ insight.tar.bz2): Use gdb-taz to create archive.
+
Fri Apr 7 18:10:29 2000 Andrew Cagney <cagney@b1.cygnus.com>
* configure (warn_cflags): Delete.
diff --git a/MAINTAINERS b/MAINTAINERS
index 47b9fc22751..477d7c8a0fb 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -6,7 +6,7 @@ COPYING, COPYING.LIB, README
Makefile.in, configure, configure.in
Please notify the following of any committed patches.
- bfd@sourceware.cygnus.com
+ binutils@sourceware.cygnus.com
gdb-patches@sourceware.cygnus.com
bfd/, binutils/, gas/, gprof/, ld/, opcodes/ & BFD's part of include/
diff --git a/Makefile.in b/Makefile.in
index 9df70cbffae..f1acbd07f5c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -111,6 +111,7 @@ NM = nm
LD = ld
BZIPPROG = bzip2
+MD5PROG = md5sum
# These values are substituted by configure.
DEFAULT_YACC = yacc
@@ -222,7 +223,7 @@ CC_FOR_TARGET = ` \
;; \
esac \
else \
- echo $$r/gcc/xgcc -B$$r/gcc/; \
+ echo $$r/gcc/xgcc -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -B$$r/gcc/ -isystem $(build_tooldir)/include; \
fi; \
else \
if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \
@@ -236,7 +237,7 @@ CC_FOR_TARGET = ` \
# variable is passed down to the gcc Makefile, where it is used to
# build libgcc2.a. We define it here so that it can itself be
# overridden on the command line.
-GCC_FOR_TARGET = $$r/gcc/xgcc -B$$r/gcc/
+GCC_FOR_TARGET = $$r/gcc/xgcc -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -B$$r/gcc/ -I$(build_tooldir)/include
CHILL_FOR_TARGET = ` \
if [ -f $$r/gcc/xgcc ] ; then \
@@ -261,7 +262,7 @@ CXX_FOR_TARGET = ` \
;; \
esac \
else \
- echo $$r/gcc/xgcc -B$$r/gcc/; \
+ echo $$r/gcc/g++ -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -B$$r/gcc/ -I$(build_tooldir)/include; \
fi; \
else \
if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \
@@ -1628,7 +1629,7 @@ all-target-winsup: all-target-newlib all-target-libiberty all-target-libtermcap
configure-target-winsup: configure-target-newlib
all-uudecode: all-libiberty
all-zip:
-configure-target-libiberty: $(ALL_GCC)
+configure-target-libiberty: $(ALL_GCC) configure-target-newlib
all-target-libiberty: configure-target-libiberty all-gcc all-ld all-target-newlib
all-target: $(ALL_TARGET_MODULES)
install-target: $(INSTALL_TARGET_MODULES)
@@ -1690,9 +1691,52 @@ ETC_SUPPORT= Makefile.in configure configure.in standards.texi \
# this macro.
SUPPORT_FILES = list-of-support-files-for-tool-in-question
-.PHONY: taz
+# NOTE: No double quotes in the below. It is used within shell script
+# as VER="$(VER)"
+VER = ` if grep AM_INIT_AUTOMAKE $(TOOL)/configure.in >/dev/null 2>&1; then \
+ sed < $(TOOL)/configure.in -n 's/AM_INIT_AUTOMAKE[^,]*, *\([^)]*\))/\1/p'; \
+ else \
+ sed < $(TOOL)/Makefile.in -n 's/^VERSION *= *//p'; \
+ fi`
+PACKAGE = $(TOOL)
+.PHONY: taz
taz: $(DEVO_SUPPORT) $(SUPPORT_FILES) texinfo/texinfo.tex
+ $(MAKE) -f Makefile.in do-proto-toplev \
+ TOOL=$(TOOL) PACKAGE="$(PACKAGE)" VER="$(VER)" \
+ MD5PROG="$(MD5PROG)" \
+ SUPPORT_FILES="$(SUPPORT_FILES)"
+ $(MAKE) -f Makefile.in do-md5sum \
+ TOOL=$(TOOL) PACKAGE="$(PACKAGE)" VER="$(VER)" \
+ MD5PROG="$(MD5PROG)" \
+ SUPPORT_FILES="$(SUPPORT_FILES)"
+ $(MAKE) -f Makefile.in do-tar-bz2 \
+ TOOL=$(TOOL) PACKAGE="$(PACKAGE)" VER="$(VER)" \
+ MD5PROG="$(MD5PROG)" \
+ SUPPORT_FILES="$(SUPPORT_FILES)"
+
+.PHONY: gdb-taz
+gdb-taz: $(DEVO_SUPPORT) $(SUPPORT_FILES) texinfo/texinfo.tex
+ $(MAKE) -f Makefile.in do-proto-toplev \
+ TOOL=$(TOOL) PACKAGE="$(PACKAGE)" VER="$(VER)" \
+ MD5PROG="$(MD5PROG)" \
+ SUPPORT_FILES="$(SUPPORT_FILES)"
+ $(MAKE) -f Makefile.in do-md5sum \
+ TOOL=$(TOOL) PACKAGE="$(PACKAGE)" VER="$(VER)" \
+ MD5PROG="$(MD5PROG)" \
+ SUPPORT_FILES="$(SUPPORT_FILES)"
+ $(MAKE) -f Makefile.in do-djunpack \
+ TOOL=$(TOOL) PACKAGE="$(PACKAGE)" VER="$(VER)" \
+ MD5PROG="$(MD5PROG)" \
+ SUPPORT_FILES="$(SUPPORT_FILES)"
+ $(MAKE) -f Makefile.in do-tar-bz2 \
+ TOOL=$(TOOL) PACKAGE="$(PACKAGE)" VER="$(VER)" \
+ MD5PROG="$(MD5PROG)" \
+ SUPPORT_FILES="$(SUPPORT_FILES)"
+
+.PHONY: do-proto-toplev
+do-proto-toplev: $(DEVO_SUPPORT) $(SUPPORT_FILES) texinfo/texinfo.tex
+ echo "==> Making $(PACKAGE)-$(VER)/"
# Take out texinfo from a few places.
sed -e '/^all\.normal: /s/\all-texinfo //' \
-e '/^ install-texinfo /d' \
@@ -1742,25 +1786,35 @@ taz: $(DEVO_SUPPORT) $(SUPPORT_FILES) texinfo/texinfo.tex
ln -s ../../../texinfo/util/tex3patch proto-toplev/texinfo/util ; \
else true; fi
chmod -R og=u . || chmod og=u `find . -print`
- if grep AM_INIT_AUTOMAKE $(TOOL)/configure.in >/dev/null 2>&1; then \
- ver=`sed < $(TOOL)/configure.in -n 's/AM_INIT_AUTOMAKE[^,]*, *\([^)]*\))/\1/p'`; \
- else \
- ver=`sed <$(TOOL)/Makefile.in -n 's/^VERSION *= *//p'`; \
- fi; \
- if test x"$(PACKAGE)" = x; then \
- package="$(TOOL)"; \
- else \
- package="$(PACKAGE)"; \
- fi; \
- $(MAKE) -f Makefile.in do-tar-bz2 TOOL=$(TOOL) VER=$$ver PACKAGE=$$package
+ #
+ -rm -f $(PACKAGE)-$(VER)
+ ln -s proto-toplev $(PACKAGE)-$(VER)
+.PHONY: do-tar-bz2
do-tar-bz2:
echo "==> Making $(PACKAGE)-$(VER).tar.bz2"
- -rm -f $(PACKAGE)-$(VER)
- ln -s proto-toplev $(PACKAGE)-$(VER)
- tar cfh $(PACKAGE)-$(VER).tar $(PACKAGE)-$(VER)
+ -rm -f $(PACKAGE)-$(VER).tar.bz2
+ find $(PACKAGE)-$(VER) -follow -name CVS -prune -o -type f -print \
+ | tar cTfh - $(PACKAGE)-$(VER).tar
$(BZIPPROG) -v -9 $(PACKAGE)-$(VER).tar
+.PHONY: do-md5sum
+do-md5sum:
+ echo "==> Adding md5 checksum to top-level directory"
+ cd proto-toplev && find * -follow -name CVS -prune -o -type f -print \
+ | xargs $(MD5PROG) > ../md5.sum
+ mv md5.sum proto-toplev
+
+.PHONY: do-djunpack
+do-djunpack:
+ echo "==> Adding updated djunpack.bat to top-level directory"
+ echo - 's /gdb-[0-9\.]*/gdb-'"$(VER)"'/'
+ sed < djunpack.bat > djunpack.new \
+ -e 's/gdb-[0-9][0-9\.]*/gdb-'"$(VER)"'/'
+ mv djunpack.new djunpack.bat
+ -rm -f proto-toplev/djunpack.bat
+ ln -s ../djunpack.bat proto-toplev/djunpack.bat
+
TEXINFO_SUPPORT= texinfo/texinfo.tex
DIST_SUPPORT= $(DEVO_SUPPORT) $(TEXINFO_SUPPORT)
@@ -1768,6 +1822,7 @@ DIST_SUPPORT= $(DEVO_SUPPORT) $(TEXINFO_SUPPORT)
GAS_SUPPORT_DIRS= bfd include libiberty opcodes intl setup.com makefile.vms mkdep
gas.tar.bz2: $(DIST_SUPPORT) $(GAS_SUPPORT_DIRS) gas
$(MAKE) -f Makefile.in taz TOOL=gas \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(GAS_SUPPORT_DIRS)"
# The FSF "binutils" release includes gprof and ld.
@@ -1775,53 +1830,62 @@ gas.tar.bz2: $(DIST_SUPPORT) $(GAS_SUPPORT_DIRS) gas
BINUTILS_SUPPORT_DIRS= bfd gas include libiberty opcodes ld gprof intl setup.com makefile.vms mkdep
binutils.tar.bz2: $(DIST_SUPPORT) $(BINUTILS_SUPPORT_DIRS) binutils
$(MAKE) -f Makefile.in taz TOOL=binutils \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(BINUTILS_SUPPORT_DIRS)"
.PHONY: gas+binutils.tar.bz2
GASB_SUPPORT_DIRS= $(GAS_SUPPORT_DIRS) binutils ld gprof
gas+binutils.tar.bz2: $(DIST_SUPPORT) $(GASB_SUPPORT_DIRS) gas
$(MAKE) -f Makefile.in taz TOOL=gas \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(GASB_SUPPORT_DIRS)"
.PHONY: libg++.tar.bz2
LIBGXX_SUPPORT_DIRS=include libstdc++ libio librx libiberty
libg++.tar.bz2: $(DIST_SUPPORT) libg++
$(MAKE) -f Makefile.in taz TOOL=libg++ \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(LIBGXX_SUPPORT_DIRS)"
GNATS_SUPPORT_DIRS=include libiberty send-pr
gnats.tar.bz2: $(DIST_SUPPORT) $(GNATS_SUPPORT_DIRS) gnats
$(MAKE) -f Makefile.in taz TOOL=gnats \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(GNATS_SUPPORT_DIRS)"
.PHONY: gdb.tar.bz2
GDB_SUPPORT_DIRS= bfd include libiberty mmalloc opcodes readline sim utils intl
gdb.tar.bz2: $(DIST_SUPPORT) $(GDB_SUPPORT_DIRS) gdb
- $(MAKE) -f Makefile.in taz TOOL=gdb \
+ $(MAKE) -f Makefile.in gdb-taz TOOL=gdb \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(GDB_SUPPORT_DIRS)"
.PHONY: dejagnu.tar.bz2
DEJAGNU_SUPPORT_DIRS= tcl expect libiberty
dejagnu.tar.bz2: $(DIST_SUPPORT) $(DEJAGNU_SUPPORT_DIRS) dejagnu
$(MAKE) -f Makefile.in taz TOOL=dejagnu \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(DEJAGNU_SUPPORT_DIRS)"
.PHONY: gdb+dejagnu.tar.bz2
GDBD_SUPPORT_DIRS= $(GDB_SUPPORT_DIRS) tcl expect dejagnu
gdb+dejagnu.tar.bz2: $(DIST_SUPPORT) $(GDBD_SUPPORT_DIRS) gdb
- $(MAKE) -f Makefile.in taz TOOL=gdb PACKAGE=gdb+dejagnu \
+ $(MAKE) -f Makefile.in gdb-taz TOOL=gdb PACKAGE=gdb+dejagnu \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(GDBD_SUPPORT_DIRS)"
.PHONY: insight.tar.bz2
INSIGHT_SUPPORT_DIRS= $(GDB_SUPPORT_DIRS) tcl tk itcl tix libgui
insight.tar.bz2: $(DIST_SUPPORT) $(GDB_SUPPORT_DIRS) gdb
- $(MAKE) -f Makefile.in taz TOOL=gdb PACKAGE=insight \
+ $(MAKE) -f Makefile.in gdb-taz TOOL=gdb PACKAGE=insight \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(INSIGHT_SUPPORT_DIRS)"
.PHONY: insight+dejagnu.tar.bz2
INSIGHTD_SUPPORT_DIRS= $(INSIGHT_SUPPORT_DIRS) expect dejagnu
insight+dejagnu.tar.bz2: $(DIST_SUPPORT) $(INSIGHTD_SUPPORT_DIRS) gdb
- $(MAKE) -f Makefile.in taz TOOL=gdb PACKAGE="insight+dejagnu" \
+ $(MAKE) -f Makefile.in gdb-taz TOOL=gdb PACKAGE="insight+dejagnu" \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(INSIGHTD_SUPPORT_DIRS)"
.PHONY: newlib.tar.bz2
@@ -1839,6 +1903,7 @@ NEWLIB_SUPPORT_DIRS=libgloss
# supports newlib (if only minimally).
newlib.tar.bz2: $(DIST_SUPPORT) $(NEWLIB_SUPPORT_DIRS) newlib
$(MAKE) -f Makefile.in taz TOOL=newlib \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(NEWLIB_SUPPORT_DIRS)" \
DEVO_SUPPORT="$(DEVO_SUPPORT) COPYING.NEWLIB" newlib
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 4b80485f6bc..ddced79196a 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,7 +1,734 @@
+2000-06-05 H.J. Lu <hjl@gnu.org>
+
+ * elflink.c (_bfd_elf_link_record_dynamic_symbol): Don't flag
+ an error when seeing an undefined symbol with hidden/internal
+ attribute. It is handled in *_relocate_section ().
+
+2000-06-05 H.J. Lu <hjl@gnu.org>
+
+ * elflink.h (elf_fix_symbol_flags): Follow the link for the
+ indirect symbol for the ELF_LINK_NON_ELF bit.
+ (elf_link_output_extsym): Don't output the indirect symbol even
+ if the ELF_LINK_NON_ELF bit is set.
+
+2000-06-01 J.T. Conklin <jtc@redback.com>
+
+ * config.bfd (i[3456]86-*-netbsdelf*): New target.
+ (i[3456]86-*-netbsdaout*): New target.
+ (i[3456]86-*-netbsd*): Add bfd_elf32_i386_vec to targ_selvecs.
+ (i[3456]86-*-openbsd*): Likewise.
+
+Tue May 30 15:39:04 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * trad-core.c: From hpux-core.c, include <dirent.h> or
+ <sys/ndir.h> when possible.
+
+2000-05-31 Nick Clifton <nickc@cygnus.com>
+
+ * opintl.h (_(String)): Explain why dgettext is used instead
+ of gettext.
+
+2000-05-31 Ulrich Drepper <drepper@redhat.com>
+
+ * elf.c (_bfd_elf_slurp_version_tables): Correct reading of version
+ definitions. We must not assume they are sorted in the file
+ according to their index numbers.
+
+2000-05-31 Alan Modra <alan@linuxcare.com.au>
+
+ * elf-hppa.h: (elf_hppa_final_link_relocate): Use e_rsel field
+ selector for R_PARISC_PCREL17R. R_PARISC_DIR17R and
+ R_PARISC_DIR17F are for absolute branches; Handle them as such.
+
+2000-05-30 Nick Clifton <nickc@cygnus.com>
+
+ * cpu-i960.c (scan_960_mach): Accept 80960KA, 80960KB,
+ 80960CA, 80960MC as valid machine names.
+
+2000-05-30 H.J. Lu <hjl@gnu.org>
+
+ * elflink.c (_bfd_elf_link_record_dynamic_symbol): Clear the
+ visibility bits if the symbol is undefined. Correctly handle
+ weak undefined symbols with hidden and internal attributes.
+
+ * elflink.h (elf_link_add_object_symbols): Always turn the
+ symbol into local if it has the hidden or internal attribute.
+
+2000-05-29 Philip Blundell <philb@gnu.org>
+
+ * ppcboot.c: Add packed attribute if compiling with GCC.
+
+2000-05-29 Anatoly Vorobey <mellon@pobox.com>
+
+ * elf.c (_bfd_elf_link_hash_table_init): Initialize dynlocal.
+
+2000-05-26 Alan Modra <alan@linuxcare.com.au>
+
+ * Makefile.am: Update dependencies with "make dep-am"
+ * Makefile.in: Regenerate.
+
+ * sysdep.h (gettext, dgettext, dcgettext, textdomain,
+ bindtextdomain): Replace defines with those from intl/libgettext.h
+ to quieten gcc warnings.
+
+2000-05-26 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * aoutx.h (find_nearest_line): Use IS_ABSOLUTE_PATH.
+
+ * archive.c (normalize, bfd_bsd_truncate_arname,
+ bfd_gnu_truncate_arname) [HAVE_DOS_BASED_FILE_SYSTEM]: Support
+ file names with backslashes.
+
+ * cache.c (bfd_open_file) [__MSDOS__]: Don't unlink the file
+ before opening it.
+
+ * sysdep.h: Include filenames.h.
+
+2000-05-26 Alan Modra <alan@linuxcare.com.au>
+
+ * opncls.c (bfd_close_all_done): Mask file perms with 0777 not 0x777.
+
+2000-05-26 Jakub Jelinek <jakub@redhat.com>
+
+ * elf64-sparc.c (sparc64_elf_relax_section): New.
+ (sparc64_elf_relocate_section): Optimize tail call into branch always
+ if possible.
+ * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
+ (elf32_sparc_relax_section): New.
+
+2000-05-26 Jakub Jelinek <jakub@redhat.com>
+
+ * elf64-sparc.c: Add ATTRIBUTE_UNUSED to unused function parameters.
+ Remove unusued variables.
+ (sparc64_elf_relocate_section): Change r_symndx type to unsigned long.
+ (sparc64_elf_merge_private_bfd_data): Fix shared library case from
+ previous fix, so that shared libs really don't influence targets
+ extension mask and memory model.
+
+2000-05-23 H.J. Lu <hjl@gnu.org>
+
+ * elf64-alpha.c (elf64_alpha_relocate_section): Check
+ h->root.other not h->other.
+ * elf32-mips.c (mips_elf_calculate_relocation): Likewise.
+
+ * elf32-ppc.c (ppc_elf_relocate_section): Fix a typo.
+
+2000-05-23 H.J. Lu <hjl@gnu.org>
+
+ * elf32-i386.c (elf_i386_relocate_section): Don't allow the
+ undefined symbol with the non-default visibility attributes.
+ * elf-hppa.h (elf_hppa_relocate_section): Likewise.
+ * elf32-arm.h (elf32_arm_relocate_section): Likewise.
+ * elf32-i370.c (i370_elf_relocate_section): Likewise.
+ * elf32-m68k.c (elf_m68k_relocate_section): Likewise.
+ * elf32-mcore.c (mcore_elf_relocate_section): Likewise.
+ * elf32-mips.c (mips_elf_calculate_relocation): Likewise.
+ * elf32-ppc.c (ppc_elf_relocate_section): Likewise.
+ * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
+ * elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
+ * elf64-ia64.c (elf64_ia64_relocate_section): Likewise.
+ * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
+
+2000-05-22 Richard Henderson <rth@cygnus.com>
+
+ * elf64-ia64.c (ia64_howto_table): Add PCREL60B, PCREL21BI,
+ PCREL22, PCREL64I. Zero size of special relocs.
+ (elf64_ia64_reloc_type_lookup): Likewise.
+ (USE_BRL, oor_brl, oor_ip): New.
+ (elf64_ia64_relax_section): New.
+ (elf64_ia64_check_relocs): Handle PCREL60B, PCREL22, PCREL64I.
+ (elf64_ia64_install_value): Likewise, plus PCREL21BI.
+ (elf64_ia64_relocate_section): Likewise.
+ (bfd_elf64_bfd_relax_section): New.
+ * reloc.c (BFD_RELOC_IA64_PCREL21BI): New.
+ (BFD_RELOC_IA64_{PCREL22,PCREL60B,PCREL64I}): New.
+ * bfd-in2.h, libbfd.h: Regenerate.
+
+2000-05-22 Nick Clifton <nickc@cygnus.com>
+
+ * configure.in : Add peigen.lo to MIPS PE targets.
+ * configure: Regenerate.
+
+2000-05-22 Momchil Velikov <velco@fadata.bg>
+
+ * libbfd.c (_bfd_generic_verify_endian_match): Compare endianess
+ only if it is known for both input and output bfds. Separate
+ error message strings as in some languages, it may be necessary
+ to change more than one place in the string to change between
+ 'big' and 'little'.
+
+ * elf32-ppc.c (ppc_elf_merge_private_bfd_data): Remove inline
+ endianess checks, call _bfd_generic_verify_endian_match() instead.
+
+ * elf32-mips.c (_bfd_mips_elf_merge_private_bfd_data): Likewise.
+
+ * elf32-mcore.c (mcore_elf_merge_private_bfd_data): Likewise.
+
+ * elf32-arm.h (elf32_arm_merge_private_bfd_data): Likewise. Verify
+ endianess before checking bfd flavours.
+
+2000-05-22 H.J. Lu <hjl@gnu.org>
+
+ * elflink.h (elf_link_output_extsym): Clear the visibility
+ field for symbols not defined locally.
+
+2000-05-18 Alan Modra <alan@linuxcare.com.au>
+
+ * libhppa.h (re_assemble_3, re_assemble_12, re_assemble_16,
+ re_assemble_17, re_assemble_21, re_assemble_22): Don't mask insn.
+ (hppa_rebuild_insn): Mask immediate bits here instead.
+ * elf-hppa.h (elf_hppa_relocate_insn): Mask here too.
+
+2000-05-18 Momchil Velikov <velco@fadata.bg>
+
+ * elflink.h (elf_bfd_final_link, elf_link_input_bfd): When emiting
+ relocs for an executable, ensure that they are virtual addresses.
+
+Thu May 18 10:55:47 2000 Jeffrey A Law (law@cygnus.com)
+
+ * config.bfd (hppa*64*-*-hpux11*): New target triplet.
+
+2000-05-17 S. Bharadwaj Yadavalli <sby@scrugs.lkg.dec.com>
+ Rick Gorton <gorton@scrugs.lkg.dec.com>
+
+ * elflink.h: Add emitrelocations support: when enabled, relocation
+ information and relocation sections are put into final output
+ executables. If the emitrelocations flag is set, do the following:
+ (elf_bfd_final_link): Emit relocation sections.
+ (elf_link_input_bfd): Compute relocation section contents.
+ (elf_gc_sections): Don't clean relocation sections.
+
+2000-05-16 Catherine Moore <clm@cygnux.com>
+
+ * som.c (som_decode_symclass): Recognize weak symbols.
+
+2000-05-16 Szabolcs Szakacsits <szaka@F-Secure.com>
+
+ * peigen.c (pe_print_idata): Undo part of 2000-05-12 change that
+ read idata section only from dataoff.
+ (pe_print_edata): Correctly check for valid eat_member.
+
+Tue May 16 00:04:11 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * elf32-sh.c (sh_elf_relax_delete_bytes): Handle R_SH_SWITCH8.
+
+2000-05-14 Philip Blundell <philb@gnu.org>
+
+ * config.bfd (armeb-*-elf, arm*b-*-linux-gnu*): New targets.
+
+2000-05-12 Alan Modra <alan@linuxcare.com.au>
+
+ * targets.c (bfd_target_vector): #ifdef BFD64 rs6000coff64_vec
+
+ * peigen.c (pe_print_idata): Look for .idata section and print
+ info even if data directory has zero entries. Read idata section
+ starting from dataoff, and adjust all data offsets to suit. Cast
+ all bfd_vma vars to unsigned long before passing to fprintf.
+ * peigen.c (pe_print_edata): Similarly, look for .edata section
+ and print info even if data directory has zero entries. Cast
+ all bfd_vma vars to unsigned long before passing to fprintf.
+
+ From Szabolcs Szakacsits <szaka@F-Secure.com>
+ * peigen.c (pe_print_idata): Use bfd_section_size rather than data
+ directory size which may be bogus.
+ * peigen.c (pe_print_edata): Similarly.
+
+2000-05-09 Alan Modra <alan@linuxcare.com.au>
+
+ * elf.c (bfd_section_from_shdr): Don't set use_rela_p if rela
+ section is empty.
+ (copy_private_bfd_data): Allow for space possibly taken up by elf
+ headers when calculating segment physical address from lma.
+
+2000-05-08 Alan Modra <alan@linuxcare.com.au>
+
+ * versados.c (versados_scan): Init stringlen and pass_2_done.
+
+ * trad-core.c (trad_unix_core_file_p): Return
+ bfd_error_wrong_format rather than bfd_error_file_truncated.
+
+ * peigen.c (_bfd_pei_swap_aouthdr_out): Pass ImageBase to
+ add_data_entry. DataDirectory virtual address is relative.
+ (pe_print_idata): Account for relative DataDirectory virtual
+ addresses. Don't trash datasize inside POWERPC_LE_PE code.
+ (pe_print_edata): Similarly.
+
+ From Szabolcs Szakacsits <szaka@F-Secure.com>
+ * peigen.c (dir_names): Add Delay Import Directory.
+ (pe_print_idata): Always search for bfd section containing
+ idata address rather than looking up section name. Print this
+ section name rather than .idata.
+ (pe_print_edata): Similarly. Also print some fields as %08lx.
+ (_bfd_pe_print_private_bfd_data_common): Print Reserved1 field as
+ Win32Version.
+
+Fri May 5 20:44:40 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * xcoff.h: Rename to xcoff-target.h
+ * Makefile.am: Change all instances of xcoff.h to xcoff-target.h
+ * coff-rs6000.c: Ditto.
+ * coff64-rs6000.c: Ditto.
+ * coff-pmac.c: Ditto.
+ * Makefile.in: Regenerate.
+
+Fri May 5 16:51:03 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * coffcode.h (coff_set_arch_mach_hook, coff_set_flags):
+ Change U802TOC64MAGIC to U803XTOCMAGIC.
+
+2000-05-04 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * elf.c (bfd_elf_get_arch_size): New function, return 32 | 64 | -1.
+ * bfd-in.h: Prototype bfd_elf_get_arch_size.
+ * bfd-in2.h: Prototype bfd_elf_get_arch_size.
+
+2000-05-04 Alan Modra <alan@linuxcare.com.au>
+
+ * libhppa.h (HPPA_R_CONSTANT): Cast argument to bfd_signed_vma.
+
+2000-05-03 Martin v. Löwis <loewis@informatik.hu-berlin.de>
+
+ * elflink.h (elf_link_add_object_symbols): Reset dynindx for
+ hidden and internal symbols.
+ (elf_fix_symbol_flags): Clear NEEDS_PLT for symbols with
+ visibility.
+ * elflink.c (_bfd_elf_link_record_dynamic_symbol): Do not
+ assign a PLT or GOT entry to symbols with hidden and
+ internal visibility.
+
+2000-05-03 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * bfd/coff-go32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Add entry for
+ the .bss section.
+ * bfd/coff-stgo32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Likewise.
+
+2000-05-02 H.J. Lu <hjl@gnu.org>
+
+ * elf.c (prep_headers): Use ELFOSABI_NONE instead of
+ ELFOSABI_SYSV.
+
+2000-05-02 Alan Modra <alan@linuxcare.com.au>
+
+ * targets.c (bfd_target_vector): Restore bfd_elf32_hppa_vec.
+ * Makefile.am (BFD32_BACKENDS): Restore elf32-hppa.lo. Regenerate
+ dependencies.
+ * Makefile.in: Regenerate.
+
+Mon May 1 16:56:47 2000 Jim Wilson <wilson@cygnus.com>
+
+ * Makefile.am (BFD32_BACKENDS): Add efi-app-ia32.lo.
+ (BFD32_BACKENDS_CFILES): Add efi-app-ia32.c.
+ (BFD64_BACKENDS): Delete coff-ia64.lo. Add efi-app-ia64.lo.
+ (BFD64_BACKENDS_CFILES): Delete coff-ia64.c. Add efi-app-ia64.c.
+ * Makefile.in: Rebuild.
+
+2000-05-02 Alan Modra <alan@linuxcare.com.au>
+
+ * config.bfd: Re-enable elf32-hppa. It now compiles, even if it
+ doesn't work very well.
+
+ * elf-hppa.h (elf_hppa_internal_shdr): Define.
+ (elf_hppa_fake_sections): hdr is elf_hppa_internal_shdr.
+ Set hdr->s_type to 1 if ARCH_SIZE == 32.
+ (_bfd_elf_hppa_gen_reloc_type): Add prototype.
+ (elf_hppa_info_to_howto): Likewise.
+ (elf_hppa_info_to_howto_rel): Likewise.
+ (elf_hppa_reloc_type_lookup): Likewise.
+ (elf_hppa_is_local_label_name): Likewise.
+ (elf_hppa_fake_sections): Likewise.
+ (elf_hppa_final_write_processing): Likewise.
+ (elf_hppa_howto_table): Fully initialise all entries.
+ (_bfd_elf_hppa_gen_reloc_type): Add ATTRIBUTE_UNUSED to args.
+ (elf_hppa_info_to_howto): Likewise.
+ (elf_hppa_info_to_howto_rel): Likewise.
+ (elf_hppa_reloc_type_lookup): Likewise.
+ (elf_hppa_final_write_processing, elf_hppa_add_symbol_hook,
+ elf_hppa_unmark_useless_dynamic_symbols,
+ elf_hppa_remark_useless_dynamic_symbols,
+ elf_hppa_record_segment_addrs, elf_hppa_final_link,
+ elf_hppa_relocate_section, elf_hppa_final_link_relocate,
+ elf_hppa_relocate_insn): Compile only if ARCH_SIZE == 64 until
+ elf32-hppa.c mess is cleaned up.
+ (elf_hppa_final_link_relocate): Make insn and r_type unsigned
+ int. Delete r_field. In case R_PARISC_PCREL21L, don't set
+ r_field then call hppa_field_adjust inline func with variable
+ r_field arg, instead call hppa_field_adjust with fixed arg.
+ In case R_PARISC_PCREL22F, don't set r_field.
+ (elf_hppa_relocate_insn): Change args and return type to unsigned
+ int. Call re_assemble_* funcs to do the work.
+
+ * elf32-hppa.c (hppa_elf_relocate_insn): Don't assume 32 bit when
+ sign extending.
+
+ * libhppa.h (HPPA_R_CONSTANT): Don't assume 32 bit when sign
+ extending.
+ (sign_extend): Mask first before sign extending.
+ (low_sign_extend): Rewrite without condition expression.
+ (ones, dis_assemble_3, dis_assemble_12, dis_assemble_16,
+ dis_assemble_17, dis_assemble_21, dis_assemble_22): Delete.
+ (assemble_3, assemble_6, assemble_12, assemble_16, assemble_16a,
+ assemble_17, assemble_21, sign_unext, low_sign_unext): Return
+ result as function return value rather than through pointer arg.
+ Accept unsigned int args, and return unsigned int.
+ (re_assemble_3): New. Combines function of dis_assemble_3 with
+ re-assembly of opcode and immediate.
+ (re_assemble_12): Likewise.
+ (re_assemble_16): Likewise.
+ (re_assemble_17): Likewise.
+ (re_assemble_21): Likewise.
+ (re_assemble_22): Likewise.
+ (hppa_field_adjust): Rewrite and document, paying attention to
+ size of types and signed/unsigned issues.
+ (get_opcode): Shift before masking.
+ (FDLW): Rename to FLDW.
+ (bfd_hppa_insn2fmt): Change arg to unsigned int. Delete fmt.
+ (hppa_rebuild_insn): Change args and return value to unsigned
+ int. Make use of re_assemble_*. Correct case 11.
+
+ * dep-in.sed: Handle ../opcodes/.
+ * Makefile.am (SOURCE_HFILES): Add elf-hppa.h, elf32-hppa.h,
+ elf64-hppa.h, hppa_stubs.h, xcoff.h.
+ (BFD32_BACKENDS_CFILES): Restore elf32-hppa.c.
+ Remove elf64-hppa.lo, cpu-ia64.lo, elf64-ia64.lo, elfarm-oabi.lo,
+ elfarm-nabi.lo dependencies outside of auto-dependency area.
+ Regenerate dependencies.
+ * Makefile.in: Regenerate.
+
+ * configure.in (TRAD_HEADER): Test non-null before
+ AC_DEFINE_UNQUOTED.
+ * configure: Regenerate.
+
+ * reloc.c: Fix mis-spelling in comment.
+
+2000-05-01 Alan Modra <alan@linuxcare.com.au>
+
+ * coff-sh.c (bfd_coff_small_swap_table): Fix Fri Apr 28 change.
+ * vms.c (vms_openr_next_archived_file): Return NULL.
+
+Fri Apr 28 21:34:44 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * coffcode.h Copy changes mistakenly done to libcoff.h in
+ 4/24/2000 patch.
+
+2000-04-29 Andreas Jaeger <aj@suse.de>
+
+ * libbfd-in.h: Correctly check GCC version.
+ * bfd-in.h: Likewise.
+ * libhppa.h: Likewise.
+ * libbfd.h: Regenerate.
+ * bfd-in2.h: Regenerate.
+
+Fri Apr 28 14:58:37 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * Makefile.am (BFD64_BACKENDS, BFD64_BACKENDS_CFILES): Add
+ coffdu-rs6000.{lo,c}.
+ (coff-pmac.lo, coff-rs6000.lo, coff64-rs6000.lo): Add dependency
+ on xcoff.h
+ * Makefile.in: Regenerate.
+ * xcoff.h: New file.
+ * coff-pmac.c: Use xcoff.h instead of coff-rs6000.c.
+ * coff-rs6000.c: Move all declarations and defines that are
+ common to the xcoff backends into xcoff.h
+ * coff64-rs6000.c: Ditto,
+
+Fri Apr 28 08:35:21 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * coff-mips.c (mips_ecoff_backend_data): Add initialization of
+ _bfd_coff_force_symnames in strings and
+ _bfd_coff_debug_string_prefix_length to their default values.
+ * coff-sh.c: (bfd_coff_small_swap_table): Ditto.
+
+Fri Apr 28 08:05:12 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * coff-alpha.c (alpha_ecoff_backend_data): Add initialization of
+ _bfd_coff_force_symnames in strings and
+ _bfd_coff_debug_string_prefix_length to their default values.
+
+2000-04-27 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-m68k.c (elf_m68k_gc_sweep_hook): Return if dynobj NULL.
+ Check local_got_refcounts before dereferencing.
+
+ * elf32-ppc.c (ppc_elf_relocate_section): Check splt != NULL
+ before deciding we don't need R_PPC_PLT32 relocation.
+ (ppc_elf_gc_sweep_hook): Check local_got_refcounts before
+ dereferencing.
+
+ * elflink.h (elf_gc_common_finalize_got_offsets): Fix comment.
+
+ * elf32-i386.c (elf_i386_check_relocs): Reference count .got and
+ .plt entries.
+ (elf_i386_gc_sweep_hook): Garbage collect .got and .plt entries.
+ (elf_i386_adjust_dynamic_symbol): Recognize unused .plt entries.
+ (elf_i386_relocate_section): Allow for .plt to go missing.
+ (elf_i386_finish_dynamic_symbol): Use same test to decide if we
+ can use a relative reloc for got as elf_i386_relocate_section.
+ (bfd_elf32_bfd_final_link): Define to use gc form of final link.
+
+Wed Apr 26 16:31:28 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * config.bfd: Remove extraneous bfd_powerpc_64_arch.
+
+Mon Apr 24 15:20:35 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * Makefile.am (coff64-rs6000.lo): New rule.
+ * Makefile.in: Regenerate.
+ * coff-rs6000.c (xcoff_mkobject, xcoff_copy_private_bfd_data,
+ xcoff_is_local_label_name, xcoff_rtype2howto,
+ xcoff_reloc_type_lookup, xcoff_slurp_armap, xcoff_archive_p,
+ xcoff_read_ar_hdr, xcoff_openr_next_archived_file, xcoff_write_armap,
+ xcoff_write_archive_contents): No longer static, and prefix with _bfd_.
+ (NO_COFF_SYMBOLS): Define.
+ (xcoff64_swap_sym_in, xcoff64_swap_sym_out, xcoff64_swap_aux_in,
+ xcoff64_swap_aux_out): New functions; handle xcoff symbol tables
+ internally.
+ (MINUS_ONE): New macro.
+ (xcoff_howto_tabl, xcoff_reloc_type_lookup): Add 64 bit POS
+ relocation.
+ (coff_SWAP_sym_in, coff_SWAP_sym_out, coff_SWAP_aux_in,
+ coff_SWAP_aux_out): Map to the new functions.
+ * coff64-rs6000.c: New file.
+ * libcoff.h (bfd_coff_backend_data): Add new fields
+ _bfd_coff_force_symnames_in_strings and
+ _bfd_coff_debug_string_prefix_length.
+ (bfd_coff_force_symnames_in_strings,
+ bfd_coff_debug_string_prefix_length): New macros for above fields.
+ * coffcode.h (coff_set_arch_mach_hook): Handle XCOFF64 magic.
+ Set machine to 620 for XCOFF64. Use bfd_coff_swap_sym_in instead
+ of using coff_swap_sym_in directly.
+ (FORCE_SYMNAMES_IN_STRINGS): New macro, defined for XCOFF64.
+ (coff_set_flags) Set magic for XCOFF64.
+ (coff_compute_section_file_positions): Add symbol name length to
+ string section length if bfd_coff_debug_string_prefix_length is
+ true.
+ (coff_write_object_contents): Don't do reloc overflow for XCOFF64.
+ (coff_slurp_line_table): Use bfd_coff_swap_lineno_in instead of
+ using coff_swap_lineno_in directly.
+ (bfd_coff_backend_data): Add _bfd_coff_force_symnames_in_strings
+ and _bfd_coff_debug_string_prefix_length fields.
+ * coffgen.c (coff_fix_symbol_name, coff_write_symbols): Force
+ symbol names into strings table when
+ bfd_coff_force_symnames_in_strings is true.
+ * coffswap.h (MAX_SCNHDR_NRELOC, MAX_SCNHDR_NLNNO, GET_RELOC_VADDR,
+ SET_RELOC_VADDR): New macros.
+ (coff_swap_reloc_in, coff_swap_reloc_out): Use above macros.
+ (coff_swap_aux_in, coff_swap_aux_out): Remove RS6000COFF_C
+ code.
+ (coff_swap_aouthdr_in, coff_swap_aouthdr_out): Handle XCOFF64
+ changes within RS6000COFF_C specific code.
+ (coff_swap_scnhdr_out): Use PUT_SCNHDR_NLNNO, PUT_SCNHDR_NRELOC,
+ MAX_SCNHDR_NRELOC, and MAX_SCNHDR_NLNNO.
+ * reloc.c (bfd_perform_relocation, bfd_install_relocation):
+ Extend existing hack on target name.
+ * xcofflink.c (XCOFF_XVECP): Extend existing hack on
+ target name.
+ * coff-tic54x.c (ticof): Keep up to date with new fields
+ in bfd_coff_backend_data.
+ * config.bfd: Add bfd_powerpc_64_arch to targ_arch and define
+ targ_selvecs to include rs6000coff64_vec for rs6000.
+ * configure.in: Add rs6000coff64_vec case.
+ * cpu-powerpc.c: New bfd_arch_info_type.
+
+Mon Apr 24 02:17:31 2000 Jeffrey A Law (law@cygnus.com)
+
+ * config.bfd: Only disable elf32-hppa vectors, not all of the
+ BSD and OSF configuration support. Provide (disabled) clauses
+ for PA64 support.
+ * configure.in: Add clause for PA64 support.
+ * configure: Rebuilt.
+
+ * targets.c (bfd_target_vector): Add bfd_elf64_hppa_vec.
+ (bfd_elf64_hppa_vec): Declare.
+
+ * Makefile.am (BFD64_BACKENDS): Add elf64-hppa.lo
+ (BFD64_BACKENDS_CFILES): Add elf64-hppa.c
+ (elf64-hppa.lo): Add dependencies.
+ * Makefile.in: Rebuilt.
+
+ * elf64-hppa.c, elf64-hppa.h: New files with PA64 support.
+
+Mon Apr 24 02:14:29 2000 Jason Eckhardt <jle@cygnus.com>
+
+ * libhppa.h (dis_assemble_16): New function.
+ (pa_arch): Added pa20w element.
+
+Mon Apr 24 01:49:03 2000 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf-bfd.h: Add prototypes for bfd_elf32_write_relocs,
+ bfd_elf32_slurp_reloc_table, bfd_elf64_write_relocs, and
+ bfd_elf64_slurp_reloc_table.
+
+ * elfcode.h (elf_write_relocs, elf_slurp_reloc_table): New
+ definitions to get external names.
+ (elf_write_relocs): Renamed from write_relocs and make global.
+ (elf_slurp_reloc_table): Make global.
+ (_bfd_elf,size_info): Use elf_write_relocs instead of write_relocs.
+
+ * archive.c (hpux_uid_gid_encode): New function.
+ (bfd_ar_hdr_from_filesystem): Use it if HPUX_LARGE_AR_IDS is
+ defined and the ID is greater than 99999.
+ (bfd_generic_stat_arch_elt): If HPUX_LARGE_AR_IDS is defined decode
+ special uid/gid fields into 32 bit values.
+
+2000-04-21 Matthew Green <mrg@cygnus.com>
+
+ * config.bfd: Add NetBSD/sparc64 support.
+
+Fri Apr 21 13:20:53 2000 Richard Henderson <rth@cygnus.com>
+ David Mosberger <davidm@hpl.hp.com>
+ Timothy Wall <twall@cygnus.com>
+ Jim Wilson <wilson@cygnus.com>
+
+ * Makefile.am (ALL_MACHINES): Add cpu-ia64.lo.
+ (ALL_MACHINES_CFILES): Add cpu-ia64.c.
+ (BFD64_BACKENDS): Add elf64-ia64.lo.
+ (BFD64_BACKENDS_CFILES): Add elf64-ia64.c.
+ (cpu-ia64.lo, elf64-ia64.lo): New rules.
+ * Makefile.in: Rebuild.
+ * archures.c (enum bfd_architecture): Add bfd_arch_ia64.
+ (bfd_ia64_arch): Declare.
+ (bfd_archures_list): Add bfd_ia64_arch.
+ * bfd-in2.h: Rebuild.
+ * config.bfd: (ia64*-*-linux-gnu*, ia64*-*-elf*): New targets.
+ * configure: Rebuild.
+ * configure.host: (ia64-*-linux*): New host.
+ * configure.in (bfd_elf64_ia64_little_vec, bfd_elf64_ia64_big_vec,
+ bfd_efi_app_ia64_vec, bfd_efi_app_ia64_vec): New vectors.
+ * elf.c (prep_headers): Add bfd_arch_ia64.
+ * libbfd.h: Rebuild.
+ * reloc.c: Add IA-64 relocations.
+ * targets.c (bfd_elf64_ia64_little_vec, bfd_elf64_ia64_big_vec):
+ Declare.
+ (bfd_target_vect): Add bfd_elf64_ia64_little_vec.
+ * cpu-ia64-opc.c, cpu-ia64.c, elf64-ia64.c: New files.
+
+2000-04-21 Richard Henderson <rth@cygnus.com>
+
+ * elf32-d30v.c (bfd_elf_d30v_reloc): Don't modify section
+ contents when performing a partial link.
+ (bfd_elf_d30v_reloc_21): Likewise.
+
+2000-04-20 H.J. Lu <hjl@gnu.org>
+
+ * elf32-i386.c (elf_i386_relocate_section): Restrict 1998-12-10
+ patch to symbols defined by a shared object.
+ * elf32-ppc.c (ppc_elf_relocate_section): Similarly.
+
+2000-04-19 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ K&R compiler fixes.
+ * dwarf2.c (concat_filename): Avoid string literal concatenation.
+ * ieee.c (ieee_get_symtab): Don't initialise union in struct.
+
+Mon Apr 17 19:14:36 2000 David Mosberger <davidm@hpl.hp.com>
+
+ * Makefile.am (BFD64_BACKENDS): Mention coff-ia64.lo.
+ (BFD64_BACKENDS_CFILES): Mention coff-ia64.c
+ (coff-ia64.lo): Add dependency.
+ * Makefile.in: Regenerate.
+ * coff-ia64.c: New file.
+ * efi-app-ia32.c: Ditto.
+ * efi-app-ia64.c: Ditto.
+ * coffcode.h (coff_set_arch_mach_hook): Handle IA64MAGIC.
+ (coff_set_flags): Ditto.
+ (coff_write_object_contents) [IA64]: Set magic number to ZMAGIC.
+ * config.bfd (i[3456]86-*-linux-gnu*): Mention bfd_efi_app_ia32_vec.
+ * configure.in (elf): Handle bfd_efi_app_ia32 and bfd_efi_app_ia64_vec.
+ * configure: Regenerate.
+ * libpei.h (GET_OPTHDR_IMAGE_BASE): New macro.
+ (PUT_OPTHDR_IMAGE_BASE): Ditto.
+ (GET_OPTHDR_SIZE_OF_STACK_RESERVE): Ditto.
+ (PUT_OPTHDR_SIZE_OF_STACK_RESERVE): Ditto.
+ (GET_OPTHDR_SIZE_OF_STACK_COMMIT): Ditto.
+ (PUT_OPTHDR_SIZE_OF_STACK_COMMIT): Ditto.
+ (GET_OPTHDR_SIZE_OF_HEAP_RESERVE): Ditto.
+ (PUT_OPTHDR_SIZE_OF_HEAP_RESERVE): Ditto.
+ (GET_OPTHDR_SIZE_OF_HEAP_COMMIT): Ditto.
+ (PUT_OPTHDR_SIZE_OF_HEAP_COMMIT): Ditto.
+ (GET_PDATA_ENTRY): Ditto.
+ * peigen.c (_bfd_pei_swap_aouthdr_in) [COFF_WITH_PEP64]: Don't read
+ data_start. Use above macros to read fields that are 64 bit wide for
+ COFF_WITH_PEP64. Don't truncate entry and text_start to 32 bits.
+ (_bfd_pei_swap_aouthdr_out) [PEI_FORCE_MINIMUM_ALIGNMENT]: Force
+ FileAlignment and SectionAlignment to minimum alignment if they
+ are zero.
+ (_bfd_pei_swap_aouthdr_out) [PEI_DEFAULT_TARGET_SUBSYSTEM]: Set
+ Subsystem to default PEI_DEFAULT_TARGET_SUBSYSTEM.
+ (_bfd_pei_swap_aouthdr_out) [COFF_WITH_PEP64]: Don't set data_start.
+ Use above macros to write fields that are 64 bit wide for
+ COFF_WITH_PEP64.
+ (pe_print_pdata): Set PDATA_ROW_SIZE to 3*8 for COFF_WITH_PEP64,
+ 5*4 otherwise. This should be right for IA-32 and IA-64, but may
+ be wrong for platforms. Use PDATA_ROW_SIZE instead of hardcoded
+ value of 20 bytes. Modify printing for COFF_WITH_PEP64 to print
+ begin address, end address, and unwind info address only. Use
+ GET_PDATA_ENTRY() to read .pdata entries. Use fprintf_vma() to
+ print addresses.
+ (tbl): Add SECTION, REL32, RESERVED1, MIPS_JMPADDR16, DIR64, and
+ HIGH3ADJ relocation names.
+ (_bfd_pe_print_private_bfd_data): Print Subsystem name in legible form.
+ * targets.c: Declare bfd_efi_app_ia32_vec and
+ bfd_efi_app_ia64_vec.
+ (bfd_target_vector): Mention bfd_efi_app_ia32_vec and
+ bfd_efi_app_ia64_vec.
+
+2000-04-17 Timothy Wall <twall@cygnus.com>
+
+ * bfd-in2.h: Add prototypes for tic54x load page access.
+ * bfd-in.h: Regenerate.
+ * coff-tic54x.c: Add load page functions; allow bfd_arch_unknown
+ in customized _set_arch_mach function.
+ * coffcode.h (coff_set_alignment_hook): Set section load page if
+ the appropriate macro is defined.
+ (write_object_contents): Read section load page.
+
+2000-04-13 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-hppa.h: Update copyright date.
+
+ * elf32-fr30.c (fr30_elf_i20_reloc): Don't use U suffix.
+ * elf32-mips.c (_bfd_mips_elf_relocate_section): And here.
+
+ * elf32-d30v.c (MAX32): Don't use LL suffix.
+ (MIN32): Define in terms of MAX32.
+ (bfd_elf_d30v_reloc): Make relocation a bfd_signed_vma.
+
+ * coff-a29k.c (SIGN_EXTEND_HWORD): Replace with more concise
+ expression.
+
+ * peicode.h (pe_ILF_build_a_bfd): Remove UL from hex constants.
+
+2000-04-12 Alan Modra <alan@linuxcare.com.au>
+
+ * dep-in.sed: Match space before file name, not after.
+ * Makefile.am: Regenerate dependencies.
+ * Makefile.in: Regenerate.
+
+ * reloc.c (_bfd_relocate_contents): In complain_overflow_bitfield
+ case, allow address wrap-around stupidly removed 2000-03-17. Sign
+ extend without an if statement.
+
+2000-04-11 Alan Modra <alan@linuxcare.com.au>
+
+ * coff-mips.c (mips_gprel_reloc): Test for 16 bit range using
+ signed quantites.
+ * elf32-mips.c (gprel16_with_gp): Likewise.
+ * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Test range
+ here using -0x40000, not (int)0xfffc0000.
+ (elf32_hppa_size_of_stub): Likewise.
+
+2000-04-11 Timothy Wall <twall@cygnus.com>
+
+ * coff-tic54x.c: Now builds with all targets.
+ * Makefile.am: Add coff/tic54x.h to coff-tic54x.o dependencies.
+ * Makefile.in: Regenerate.
+ * coffcode.h (coff_set_arch_mach_hook): Eliminate warning on
+ unitialized variable.
+
Fri Apr 7 15:56:57 2000 Andrew Cagney <cagney@b1.cygnus.com>
-
+
* configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add
- --enable-build-warnings option.
+ --enable-build-warnings option.
* Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions.
* Makefile.in, configure: Re-generate.
@@ -107,10 +834,10 @@ Wed Apr 5 22:04:20 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
2000-04-03 Kevin Buettner <kevinb@redhat.com>
- * configure.in: Added corefile support for AIX 4.3. In particular,
- AIX_CORE_DUMPX_CORE will be defined in addition to AIX_CORE when
- compiling rs6000-core.c.
- * configure: Regenerated.
+ * configure.in: Added corefile support for AIX 4.3. In particular,
+ AIX_CORE_DUMPX_CORE will be defined in addition to AIX_CORE when
+ compiling rs6000-core.c.
+ * configure: Regenerated.
2000-04-03 H.J. Lu <hjl@gnu.org>
@@ -196,9 +923,9 @@ Wed Mar 30 15:28:00 2000 Donald Lindsay <dlindsay@cygnus.com>
"boolean overflow" with "bfd_reloc_status_type flag".
2000-03-14 Doug Evans <dje@casey.transmeta.com>
-
- * elf32-m32r.c (m32r_elf_lo16_reloc): Rewrite.
-
+
+ * elf32-m32r.c (m32r_elf_lo16_reloc): Rewrite.
+
2000-03-14 Kazu Hirata <kazu@hxi.com>
* reloc16.c (bfd_coff_reloc16_relax_section): Count the total number
@@ -219,7 +946,7 @@ Wed Mar 30 15:28:00 2000 Donald Lindsay <dlindsay@cygnus.com>
* elf32-mips.c (_bfd_mips_elf_relocate_section): Do proper
sign-extension and big-endian compensation for
- R_MIPS_64 even in ld -r.
+ R_MIPS_64 even in ld -r.
2000-03-10 Geoffrey Keating <geoffk@cygnus.com>
@@ -310,7 +1037,7 @@ Wed Mar 30 15:28:00 2000 Donald Lindsay <dlindsay@cygnus.com>
* coffcode.h (styp_to_sec_flags): Initialise 'target_name'.
* elf-m10300.c (mn10300_elf_relax_section): Initialise
- 'sym_sec'.
+ 'sym_sec'.
* elf32-i370.c: Add ATTRIBUTE_UNUSED to unused function
parameters.
@@ -520,10 +1247,10 @@ Fri Feb 25 18:39:26 2000 Rodney Brown (RodneyBrown@pmsc.com)
* elflink.h (elf_link_add_object_symbols): If a version symbol is
not defined, don't add a second ELF_VER_CHR.
- * elflink.h (elf_bfd_final_link): Call output_extsym for global
+ * elflink.h (elf_bfd_final_link): Call output_extsym for global
symbols converted to local symbols even when stripping all
symbols.
- (elf_link_output_extsym): Process global symbols converted to
+ (elf_link_output_extsym): Process global symbols converted to
local symbols even if they are being stripped.
2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
@@ -718,28 +1445,28 @@ Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com)
2000-02-08 Mark Elbrecht <snowball3@bigfoot.com>
* coff-go32.c: Update comment. Update copyright.
-
+
2000-01-27 Thomas de Lellis <tdel@windriver.com>
- * syms.c (bfd_decode_symclass)
- Two new class characters were added - 'V' and 'v'. The
- meaning of 'W' is now restricted to just weak non-object
- symbols. This allows differentiation between, for example,
- weak functions vs weak objects. nm for example now dumps:
- 'W' = weak global
- 'w' = weak unresolved
- 'V' = weak global object
- 'v' = weak unresolved object
+ * syms.c (bfd_decode_symclass)
+ Two new class characters were added - 'V' and 'v'. The
+ meaning of 'W' is now restricted to just weak non-object
+ symbols. This allows differentiation between, for example,
+ weak functions vs weak objects. nm for example now dumps:
+ 'W' = weak global
+ 'w' = weak unresolved
+ 'V' = weak global object
+ 'v' = weak unresolved object
(bfd_is_undefined_symclass): New function. Return true if the
given symbol class represents and undefined/unresolved symbol.
- (bfd_symbol_info): Use bfd_is_undefined_symclass to check for
+ (bfd_symbol_info): Use bfd_is_undefined_symclass to check for
unresolved symbols.
* bfd-in2.h: Add prototype for bfd_is_undefined_symbol().
- * elf32-arm.h (elf32_arm_get_symbol_type): If a symbol has the
+ * elf32-arm.h (elf32_arm_get_symbol_type): If a symbol has the
STT_ARM_16BIT flag set, but it is not attached to a data object
return STT_ARM_16BIT so that it will be treated as code by the
disassembler.
@@ -757,7 +1484,7 @@ Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com)
2000-01-24 Robert Lipe (robertl@sco.com)
- * coffcode.h (coff_write_object_contents): Get buff via bfd_malloc
+ * coffcode.h (coff_write_object_contents): Get buff via bfd_malloc
instead of using GNU C extension.
2000-01-21 Nick Clifton <nickc@cygnus.com>
@@ -934,8 +1661,8 @@ Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com)
1999-12-09 Nick Clifton <nickc@cygnus.com>
* elflink.h (elf_link_add_archive_symbols): Add an archive
- element even if contains a symbol which is currently only
- considered to be a common.
+ element even if contains a symbol which is currently only
+ considered to be a common.
* targets.c (struct bfd_target): Add new field
_bfd_allow_commons_in_armap.
@@ -1096,7 +1823,7 @@ Tue Nov 2 01:44:41 1999 Jeffrey A Law (law@cygnus.com)
Sat Oct 23 17:36:12 1999 Andrew Cagney <cagney@b1.cygnus.com>
* archures.c: Add definitions bfd_mach_d10v, bfd_mach_d10v_ts2 and
- bfd_mach_d10v_ts3.
+ bfd_mach_d10v_ts3.
* cpu-d10v.c (d10v_ts3_info, d10v_ts2_info): Add.
* bfd-in2.h: Regenerate.
@@ -1119,8 +1846,8 @@ Fri Oct 8 13:03:45 1999 Geoffrey Keating <geoffk@cygnus.com>
* elf32-mips.c (mips_elf_calculate_relocation): R_MIPS_LITERAL
relocs also need the GP value.
(_bfd_mips_elf_relocate_section): Handle unpaired LO16 relocs
- properly. Handle sign-extension for R_MIPS_64 correctly. Correct
- the GP value for R_MIPS_LITERAL relocs too. Handle
+ properly. Handle sign-extension for R_MIPS_64 correctly. Correct
+ the GP value for R_MIPS_LITERAL relocs too. Handle
R_MIPS_64 relocs properly on big-endian MIPS.
(mips_elf_sign_extend): Behave properly with 'long long'.
(mips_elf_highest): Correct typo.
@@ -1578,7 +2305,7 @@ Tue Sep 7 17:25:12 1999 Jeffrey A Law (law@cygnus.com)
(pj-*-*, pjl-*-*): New targets.
* configure.in (bfd_elf32_pj_vec): New target vector.
(bfd_elf32_pjl_vec): New target vector.
- * archures.c (bfd_arch_pj): Define.
+ * archures.c (bfd_arch_pj): Define.
* elf.c (prep_headers): Handle bfd_arch_pj.
* reloc.c: Define BFD_RELOC_PJ_* relocations.
* targets.c (bfd_elf32_pj_vec, bfd_elf32_pjl_vec): Declare and add
@@ -2045,9 +2772,9 @@ Wed Aug 4 18:08:07 1999 Jeffrey A Law (law@cygnus.com)
Mon Jul 19 14:03:44 1999 Mark P. Mitchell <mark@codesourcery.com>
* elf32-mips.c (_bfd_mips_elf_final_link): Restore setting of GP
- removed in previous change.
+ removed in previous change.
(_bfd_mips_elf_relocate_section): Adjust GP relative relocations
- in relocateable output.
+ in relocateable output.
1999-07-19 Ian Lance Taylor <ian@zembu.com>
@@ -2075,8 +2802,8 @@ Mon Jul 19 14:03:44 1999 Mark P. Mitchell <mark@codesourcery.com>
* coffcode.h (CREATE_BIG_COFF_TARGET_VEC): New macro.
(CREATE_LITTLE_COFF_TARGET_VEC): New macro.
- * aix386-core.c: Initialise new field of bfd_target structure.
- * aout-adobe.c: Initialise new field of bfd_target structure.
+ * aix386-core.c: Initialise new field of bfd_target structure.
+ * aout-adobe.c: Initialise new field of bfd_target structure.
* aout-arm.c: Initialise new field of bfd_target structure.
* aout-target.h: Initialise new field of bfd_target structure.
* aout-tic30.c: Initialise new field of bfd_target structure.
@@ -3236,7 +3963,7 @@ Wed Jun 2 11:51:12 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
section.
(elf32_arm_final_link_relocate): New parameter h.
(elf32_arm_relocate_section): Pass symbol hash entry to above
- routine.
+ routine.
(elf32_arm_gc_sweep_hook, elf32_arm_check relocs): Correct
comments.
@@ -3255,7 +3982,7 @@ Wed Jun 2 11:51:12 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
1999-05-24 Philip Blundell <pb@nexus.co.uk>
* elf32-arm.h (elf32_arm_relocate_section): Undo change of
- 1999-03-25.
+ 1999-03-25.
Mon May 17 13:35:35 1999 Stan Cox <scox@cygnus.com>
@@ -3288,7 +4015,7 @@ Mon May 17 13:35:35 1999 Stan Cox <scox@cygnus.com>
Fri May 14 10:59:55 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* elf32-arm.h (elf32_arm_relocate_section): Fix operator
- precedence between bit-and and comparison.
+ precedence between bit-and and comparison.
Thu May 13 09:45:23 1999 Joel Sherrill (joel@OARcorp.com)
@@ -3877,8 +4604,8 @@ Fri Jan 29 00:47:21 1999 H.J. Lu <hjl@gnu.org>
Thu Jan 28 20:05:22 1999 Ian Lance Taylor <ian@cygnus.com>
* binary.c (binary_set_section_contents): Don't return early for a
- non-loadable section, in case the first section is non-loadable.
- Don't set the low lma for a SEC_NEVER_LOAD section. From Maciej
+ non-loadable section, in case the first section is non-loadable.
+ Don't set the low lma for a SEC_NEVER_LOAD section. From Maciej
W. Rozycki <macro@ds2.pg.gda.pl>.
1999-01-28 Nick Clifton <nickc@cygnus.com>
@@ -3888,8 +4615,8 @@ Thu Jan 28 20:05:22 1999 Ian Lance Taylor <ian@cygnus.com>
Thu Jan 28 11:08:16 1999 Catherine Moore <clm@cygnus.com>
- * elflink.h (elf_link_output_sym): Zero syms which are
- part of sections which have been excluded.
+ * elflink.h (elf_link_output_sym): Zero syms which are
+ part of sections which have been excluded.
Wed Jan 27 13:35:35 1999 Stan Cox <scox@cygnus.com>
@@ -4028,32 +4755,32 @@ Tue Dec 8 16:21:35 1998 Ian Lance Taylor <ian@cygnus.com>
Wed Dec 2 15:03:59 1998 David Taylor <taylor@texas.cygnus.com>
The following changes were made by David Taylor
- <taylor@texas.cygnus.com>, Edith Epstein
- <eepstein@sophia.cygnus.com>, Jim Blandy
- <jimb@zwingli.cygnus.com>, and Elena Zannoni
- <ezannoni@kwikemart.cygnus.com> as part of the project to merge in
- changes originally made by HP; HP did not create ChangeLog
- entries.
+ <taylor@texas.cygnus.com>, Edith Epstein
+ <eepstein@sophia.cygnus.com>, Jim Blandy
+ <jimb@zwingli.cygnus.com>, and Elena Zannoni
+ <ezannoni@kwikemart.cygnus.com> as part of the project to merge in
+ changes originally made by HP; HP did not create ChangeLog
+ entries.
* aclocal.m4, configure, Makefile.in: Rebuilt using latest
- automake macro library.
+ automake macro library.
* hpux-core.c (hpux_core_core_file_p): this function now
- understands HPUX 10.30 thread info. Yes, the thread stacks can be
- found in the corefile! Also, in hpux_core_core_file_p, if we
- encounter a section with an unknown type, don't punt. Instead,
- just skip it. Also, count the number of sections of known type
- that we encounter. If we encounter at least one good one, then
- we'll declare that the file is a core file. If we encounter any
- unknown ones but some known ones, then we'll issue a warning (but
- still declare it to be a core file). Also, correctly decide when a
- file is not a core.
+ understands HPUX 10.30 thread info. Yes, the thread stacks can be
+ found in the corefile! Also, in hpux_core_core_file_p, if we
+ encounter a section with an unknown type, don't punt. Instead,
+ just skip it. Also, count the number of sections of known type
+ that we encounter. If we encounter at least one good one, then
+ we'll declare that the file is a core file. If we encounter any
+ unknown ones but some known ones, then we'll issue a warning (but
+ still declare it to be a core file). Also, correctly decide when a
+ file is not a core.
(PROC_INFO_HAS_THREAD_ID): define if CORE_ANON_SHMEM defined.
(CORE_ANON_SHMEM): define if not defined.
(hpux_core_struct): add members lwpid and user_tid.
(core_kernel_thread_id, core_user_thread_id): new macros.
(make_bfd_asection): use bfd_alloc to allocate room for a copy of
- the name before storing it in the bfd.
+ the name before storing it in the bfd.
(hpux_core_core_file_p): handle threads.
* libhppa.h (GET_FIELD): protect against redefinition.
@@ -4234,15 +4961,15 @@ Tue Nov 17 15:28:31 1998 Nick Clifton <nickc@cygnus.com>
Mon Nov 16 22:19:21 1998 DJ Delorie <dj@cygnus.com>
* archive.c (bfd_ar_hdr_from_filesystem): support BFD_IN_MEMORY
- bfds; they have no "file" so we fake it.
+ bfds; they have no "file" so we fake it.
* bfd-in2.h: add bfd_make_writable and bfd_make_readable (regen)
* libbfd.c (bfd_write): Allow writing to BFD_IN_MEMORY bfds by
- resizing the memory buffer.
+ resizing the memory buffer.
* opncls.c (bfd_make_writable): New function; lets you write a
- bfd_create'd bfd to an in-memory buffer.
+ bfd_create'd bfd to an in-memory buffer.
(bfd_make_readable): New function; lets you read back that buffer
- as if it were from bfd_openr. Used to build generated archive
- members (winsup's ld's dlltool)
+ as if it were from bfd_openr. Used to build generated archive
+ members (winsup's ld's dlltool)
Mon Nov 16 19:15:19 1998 Dave Brolley <brolley@cygnus.com>
@@ -4283,8 +5010,8 @@ Tue Nov 10 15:13:59 1998 Nick Clifton <nickc@cygnus.com>
Tue Nov 10 13:37:36 1998 Felix Lee <flee@cygnus.com>
* acinclude.m4 (BFD_HAVE_SYS_PROCFS_TYPE,
- BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): didn't define macro when value
- was cached.
+ BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): didn't define macro when value
+ was cached.
* aclocal.m4, configure: regenerated.
Tue Nov 10 14:31:01 1998 Catherine Moore <clm@cygnus.com>
@@ -4395,13 +5122,13 @@ Mon Oct 19 16:57:05 1998 Felix Lee <flee@cygnus.com>
Mon Oct 19 01:47:21 1998 Felix Lee <flee@cygnus.com>
* acinclude.m4, aclocal.m4: move gettext-related fragments from
- aclocal.m4 to acinclude.m4, so they don't get lost.
+ aclocal.m4 to acinclude.m4, so they don't get lost.
* elfcore.h: rewrite for better corefile support.
* elf.c (elfcore_*): new functions.
* elf-bfd.h (elf_obj_tdata): new structure members.
* acconfig.h, acinclude.m4, configure.in: add feature-tests for
- flavor of procfs.
+ flavor of procfs.
* aclocal.m4, config.in, configure, Makefile.in: regenerated.
Fri Oct 16 14:07:45 1998 Catherine Moore <clm@cygnus.com>
@@ -4582,20 +5309,20 @@ Wed Sep 16 11:26:49 CDT 1998 Catherine Moore <clm@cygnus.com>
Tue Sep 15 12:40:05 1998 Catherine Moore <clm@cygnus.com>
- * elf-bfd.h: Add argument to elf_backend_get_symbol_type.
+ * elf-bfd.h: Add argument to elf_backend_get_symbol_type.
Tue Sep 15 08:34:40 1998 Catherine Moore <clm@cygnus.com>
- * elf.c (swap_out_syms): Pass type to elf_backend_get_symbol_type.
- * elf32-arm.c: Add HOWTO entries for R_ARM_GNU_VTINHERIT and
- R_ARM_GNU_VTENTRY.
- (elf32_arm_gc_mark_hook): New.
- (elf32_arm_gc_sweep_hook): New.
- (elf32_arm_check_relocs): New.
- (elf32_arm_final_link_relocate): Handle VTINHERIT and VTENTRY
- relocations.
- (elf32_arm_relocate_section): Handle VTINHERIT and VTENTRY
- relocations.
+ * elf.c (swap_out_syms): Pass type to elf_backend_get_symbol_type.
+ * elf32-arm.c: Add HOWTO entries for R_ARM_GNU_VTINHERIT and
+ R_ARM_GNU_VTENTRY.
+ (elf32_arm_gc_mark_hook): New.
+ (elf32_arm_gc_sweep_hook): New.
+ (elf32_arm_check_relocs): New.
+ (elf32_arm_final_link_relocate): Handle VTINHERIT and VTENTRY
+ relocations.
+ (elf32_arm_relocate_section): Handle VTINHERIT and VTENTRY
+ relocations.
1998-09-10 Geoff Keating <geoffk@ozemail.com.au>
@@ -4736,28 +5463,28 @@ Fri Aug 14 09:12:28 1998 Stan Cox <scox@cygnus.com>
Thu Aug 13 14:02:02 1998 Catherine Moore <clm@cygnus.com>
- * bfd-in.h: Add prototypes for elf32_arm_get_bfd_for_interworking,
- elf32_arm_allocate_interworking_sections and
- elf32_arm_process_before_allocation.
- * bfd-in2.h: Regenerated.
- * elf32-arm.c Define elf32_arm_link_hash_table.
- (insert_thumb_branch): New routine.
- (find_thumb_glue): New routine.
- (find_arm_glue): New routine.
- (record_arm_to_thumb_glue): New routine.
- (record_thumb_to_arm_glue): New routine.
- (elf32_arm_link_hash_table_create): New routine.
- (elf32_arm_get_bfd_for_interworking): New routine.
- (elf32_arm_allocate_interworking_sections) New routine.
- (elf32_arm_process_before_allocation) New routine.
- (elf32_thumb_to_arm_stub): New routine.
- (elf32_arm_to_thumb_stub): New routine.
- (elf32_print_private_bfd_data): Fix typo.
- (elf32_arm_final_link_relocate): Add argument sym_sec.
- Check for branches to thumb symbols in case R_ARM_PC24.
- Check for branches to arm symbols in case R_ARM_THM_PC22.
- (elf32_arm_relocate_section): Pass symbol section to
- elf32_arm_final_link_relocate.
+ * bfd-in.h: Add prototypes for elf32_arm_get_bfd_for_interworking,
+ elf32_arm_allocate_interworking_sections and
+ elf32_arm_process_before_allocation.
+ * bfd-in2.h: Regenerated.
+ * elf32-arm.c Define elf32_arm_link_hash_table.
+ (insert_thumb_branch): New routine.
+ (find_thumb_glue): New routine.
+ (find_arm_glue): New routine.
+ (record_arm_to_thumb_glue): New routine.
+ (record_thumb_to_arm_glue): New routine.
+ (elf32_arm_link_hash_table_create): New routine.
+ (elf32_arm_get_bfd_for_interworking): New routine.
+ (elf32_arm_allocate_interworking_sections) New routine.
+ (elf32_arm_process_before_allocation) New routine.
+ (elf32_thumb_to_arm_stub): New routine.
+ (elf32_arm_to_thumb_stub): New routine.
+ (elf32_print_private_bfd_data): Fix typo.
+ (elf32_arm_final_link_relocate): Add argument sym_sec.
+ Check for branches to thumb symbols in case R_ARM_PC24.
+ Check for branches to arm symbols in case R_ARM_THM_PC22.
+ (elf32_arm_relocate_section): Pass symbol section to
+ elf32_arm_final_link_relocate.
Wed Aug 12 19:00:39 1998 Geoff Keating <geoffk@ozemail.com.au>
@@ -4771,16 +5498,16 @@ Wed Aug 12 14:48:33 1998 Ian Lance Taylor <ian@cygnus.com>
Wed Aug 12 08:10:11 1998 Catherine Moore <clm@cygnus.com>
- * elf32-arm.c (elf32_arm_final_link_relocate): Rework
- R_ARM_PC24 relocation.
+ * elf32-arm.c (elf32_arm_final_link_relocate): Rework
+ R_ARM_PC24 relocation.
Tue Aug 11 14:42:26 1998 Catherine Moore <clm@cygnus.com>
- * elf32-arm.c (elf32_arm_final_link_relocate): Remove unused
- argument is_local. Add argument sym_flags. Check sym_flags
- in R_ARM_ABS32 case. Include addend for R_ARM_THM_PC22 case.
- (elf32_arm_relocate_section): Don't pass local sym and pass
- sym_flags to elf32_arm_final_link_relocate.
+ * elf32-arm.c (elf32_arm_final_link_relocate): Remove unused
+ argument is_local. Add argument sym_flags. Check sym_flags
+ in R_ARM_ABS32 case. Include addend for R_ARM_THM_PC22 case.
+ (elf32_arm_relocate_section): Don't pass local sym and pass
+ sym_flags to elf32_arm_final_link_relocate.
Mon Aug 10 20:38:39 1998 Richard Henderson <rth@cygnus.com>
@@ -5165,7 +5892,7 @@ Wed Jul 1 17:05:53 1998 Nick Clifton <nickc@cygnus.com>
Wed Jul 1 16:58:50 1998 Ian Lance Taylor <ian@cygnus.com>
* coff-sh.c (sh_relax_delete_bytes): Correct address comparisons
- when handling 32 bit immediate relocs.
+ when handling 32 bit immediate relocs.
* elf32-sh.c (sh_elf_relax_delete_bytes): Likewise.
Tue Jun 30 09:55:03 1998 Jeffrey A Law (law@cygnus.com)
@@ -5236,7 +5963,7 @@ Thu Jun 25 18:31:41 1998 Richard Henderson <rth@cygnus.com>
(ppc_elf_howto_raw): Handle them.
(ppc_elf_reloc_type_lookup): Likewise.
(ppc_elf_relocate_section): Likewise.
- (ppc_elf_check_relocs): Reference count .got and .plt entires.
+ (ppc_elf_check_relocs): Reference count .got and .plt entries.
Handle new vtable relocs.
(ppc_elf_adjust_dynamic_symbol): Recognize unused .plt entries.
(ppc_elf_gc_mark_hook, ppc_elf_gc_sweep_hook): New.
@@ -5283,8 +6010,8 @@ Fri Jun 19 17:08:18 1998 Ian Lance Taylor <ian@cygnus.com>
Tue Jun 16 11:55:55 1998 Ian Lance Taylor <ian@cygnus.com>
* elf.c (copy_private_bfd_data): Improve handling of Solaris
- native linker output. Avoid putting an empty section in more than
- one segment.
+ native linker output. Avoid putting an empty section in more than
+ one segment.
Fri Jun 12 13:30:17 1998 Tom Tromey <tromey@cygnus.com>
@@ -5346,7 +6073,7 @@ Tue Jun 2 15:29:35 1998 Ian Lance Taylor <ian@cygnus.com>
* elflink.h (elf_merge_symbol): Don't always set type_change_ok
and size_change_ok.
- (elf_link_add_object_symbols): Set type_change_ok and
+ (elf_link_add_object_symbols): Set type_change_ok and
size_change_ok before calling elf_merge_symbol.
* elf32-mips.c (mips_elf_relocate_section): If we issue an
@@ -5410,7 +6137,7 @@ Tue May 19 18:41:19 1998 Ian Lance Taylor <ian@cygnus.com>
* bfd-in.h: Move over patch to bfd-in2.h.
* reloc.c (bfd_check_overflow): Add casts before shifts which may
- not fit in 32 bits.
+ not fit in 32 bits.
(_bfd_relocate_contents): Likewise.
Mon May 18 14:44:15 1998 Nick Clifton <nickc@cygnus.com>
@@ -5690,8 +6417,8 @@ Thu Apr 16 13:49:00 1998 Richard Henderson <rth@cygnus.com>
Thu Apr 16 11:43:33 1998 Ian Lance Taylor <ian@cygnus.com>
* archive.c (bfd_generic_archive_p): If a slurp subroutine returns
- an error other than bfd_error_system_call, set the error to
- bfd_error_wrong_format.
+ an error other than bfd_error_system_call, set the error to
+ bfd_error_wrong_format.
* targets.c (bfd_target_vector) [SELECT_VECS not defined]: Add
bfd_elf32_powerpcle_vec.
@@ -6035,10 +6762,10 @@ Wed Mar 25 11:19:28 1998 Ian Lance Taylor <ian@cygnus.com>
From Yan Meroth <YAN.MEROTH@st.com>:
* ihex.c (ihex_scan): Add extbase variable so that getting an
- extended linear address record does not ignore any previous
- extended address.
+ extended linear address record does not ignore any previous
+ extended address.
(ihex_write_object_contents): When writing out an extended linear
- address record, zero out any previous extended address.
+ address record, zero out any previous extended address.
Tue Mar 24 16:09:43 1998 Manfred Hollstein <manfred@s-direktnet.de>
@@ -6097,7 +6824,7 @@ Mon Feb 23 19:31:19 1998 Ian Lance Taylor <ian@cygnus.com>
1998-02-23 15:53 Richard Henderson <rth@cygnus.com>
* elf32-i386.c (elf_i386_relocate_section): A pc-relative
- relocation against a now-local symbol should not have a dynamic
+ relocation against a non-local symbol should not have a dynamic
relocation.
Mon Feb 23 16:17:08 1998 Ian Lance Taylor <ian@cygnus.com>
@@ -6110,8 +6837,8 @@ Mon Feb 23 16:17:08 1998 Ian Lance Taylor <ian@cygnus.com>
Sun Feb 22 20:39:00 1998 Richard Henderson <rth@cygnus.com>
* elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Don't create
- a plt entry when we can determine that we authoritatively define
- the symbol.
+ a plt entry when we can determine that we authoritatively define
+ the symbol.
Sun Feb 22 20:33:05 1998 Richard Henderson <rth@cygnus.com>
@@ -6175,7 +6902,7 @@ Thu Feb 12 17:31:11 1998 Ian Lance Taylor <ian@cygnus.com>
netbsd-core.lo, set COREFLAG to -DNETBSD_CORE.
* config.bfd (alpha*-*-netbsd*): New target.
* Makefile.am: Rebuild dependencies.
- (BFD32_BACKENDS): Add vaxnetbsd.lo.
+ (BFD32_BACKENDS): Add vaxnetbsd.lo.
(BFD32_BACKENDS_CFILES): Add vaxnetbsd.c.
* configure, Makefile.in: Rebuild.
@@ -6240,8 +6967,8 @@ Thu Feb 5 11:51:05 1998 Ian Lance Taylor <ian@cygnus.com>
skip empty sections, to match coff_write_object_contents.
* elf64-mips.c (mips_elf64_swap_reloca_out): Swap out r_addend,
- rather than swapping out r_offset twice. From Luke Deller
- <luked@cse.unsw.edu.au>.
+ rather than swapping out r_offset twice. From Luke Deller
+ <luked@cse.unsw.edu.au>.
Wed Feb 4 19:11:28 1998 Ian Lance Taylor <ian@cygnus.com>
@@ -6324,7 +7051,7 @@ Fri Jan 30 19:07:07 1998 Geoff Keating <geoffk@ozemail.com.au>
* elf32-ppc.c (ppc_elf_check_relocs): Don't emit R_PPC_REL* relocs
against _GLOBAL_OFFSET_TABLE_.
- (ppc_elf_relocate_section): Don't emit R_PPC_REL32 relocs in
+ (ppc_elf_relocate_section): Don't emit R_PPC_REL32 relocs in
shared libraries which refer to local symbols. Make sure that the
test for allocating space for a reloc in a shared object is the
same as the test for emitting a reloc.
@@ -6402,10 +7129,10 @@ Thu Jan 22 21:13:39 1998 Richard Henderson <rth@cygnus.com>
Wed Jan 21 21:19:03 1998 Ian Lance Taylor <ian@cygnus.com>
* coff-i386.c (coff_i386_rtype_to_howto): If COFF_WITH_PE, don't
- adjust addend for an output common symbol (from Jimmy Blair
- <jimmyb@wrs.com>). If COFF_WITH_PE, adjust addend for PC relative
- defined symbol to counteract adjustment made in generic relocation
- code.
+ adjust addend for an output common symbol (from Jimmy Blair
+ <jimmyb@wrs.com>). If COFF_WITH_PE, adjust addend for PC relative
+ defined symbol to counteract adjustment made in generic relocation
+ code.
* dwarf2.c: Include sysdep.h, not stdio.h and stdlib.h.
diff --git a/bfd/Makefile.am b/bfd/Makefile.am
index 9c587322d32..380b993f269 100644
--- a/bfd/Makefile.am
+++ b/bfd/Makefile.am
@@ -51,6 +51,7 @@ ALL_MACHINES = \
cpu-h8300.lo \
cpu-h8500.lo \
cpu-hppa.lo \
+ cpu-ia64.lo \
cpu-i370.lo \
cpu-i386.lo \
cpu-i860.lo \
@@ -89,6 +90,7 @@ ALL_MACHINES_CFILES = \
cpu-h8300.c \
cpu-h8500.c \
cpu-hppa.c \
+ cpu-ia64.c \
cpu-i370.c \
cpu-i386.c \
cpu-i860.c \
@@ -161,6 +163,7 @@ BFD32_BACKENDS = \
dwarf2.lo \
ecoff.lo \
ecofflink.lo \
+ efi-app-ia32.lo \
elf.lo \
elf32-arc.lo \
elfarm-oabi.lo \
@@ -170,6 +173,7 @@ BFD32_BACKENDS = \
elf32-d30v.lo \
elf32-fr30.lo \
elf32-gen.lo \
+ elf32-hppa.lo \
elf32-i370.lo \
elf32-i386.lo \
elf32-i860.lo \
@@ -292,6 +296,7 @@ BFD32_BACKENDS_CFILES = \
dwarf2.c \
ecoff.c \
ecofflink.c \
+ efi-app-ia32.c \
elf.c \
elf32-arc.c \
elfarm-oabi.c \
@@ -301,6 +306,7 @@ BFD32_BACKENDS_CFILES = \
elf32-d30v.c \
elf32-fr30.c \
elf32-gen.c \
+ elf32-hppa.c \
elf32-i370.c \
elf32-i386.c \
elf32-i860.c \
@@ -385,8 +391,12 @@ BFD32_BACKENDS_CFILES = \
BFD64_BACKENDS = \
aout64.lo \
coff-alpha.lo \
+ coff64-rs6000.lo \
demo64.lo \
+ efi-app-ia64.lo \
elf64-alpha.lo \
+ elf64-hppa.lo \
+ elf64-ia64.lo \
elf64-gen.lo \
elf64-mips.lo \
elf64-sparc.lo \
@@ -397,8 +407,12 @@ BFD64_BACKENDS = \
BFD64_BACKENDS_CFILES = \
aout64.c \
coff-alpha.c \
+ coff64-rs6000.c \
demo64.c \
+ efi-app-ia64.c \
elf64-alpha.c \
+ elf64-hppa.c \
+ elf64-ia64.c \
elf64-gen.c \
elf64-mips.c \
elf64-sparc.c \
@@ -445,12 +459,12 @@ CFILES = \
## This is a list of all .h files which are in the source tree.
SOURCE_HFILES = \
- aout-target.h aoutf1.h aoutx.h coffcode.h coffswap.h \
- ecoffswap.h elf32-arm.h elfcode.h elfcore.h \
- elflink.h freebsd.h genlink.h go32stub.h libaout.h \
- libbfd.h libcoff.h libecoff.h elf-bfd.h libhppa.h libieee.h \
- libnlm.h liboasys.h libpei.h netbsd.h nlm-target.h nlmcode.h \
- nlmswap.h ns32k.h peicode.h som.h vms.h
+ aout-target.h aoutf1.h aoutx.h coffcode.h coffswap.h ecoffswap.h \
+ elf-bfd.h elf-hppa.h elf32-arm.h elf32-hppa.h elf64-hppa.h \
+ elfcode.h elfcore.h elflink.h freebsd.h genlink.h go32stub.h \
+ hppa_stubs.h libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \
+ libieee.h libnlm.h liboasys.h libpei.h netbsd.h nlm-target.h \
+ nlmcode.h nlmswap.h ns32k.h peicode.h som.h vms.h xcoff-target.h
HFILES = \
elf32-target.h elf64-target.h targmatch.h \
@@ -652,485 +666,565 @@ config.status: $(srcdir)/configure $(srcdir)/config.bfd $(srcdir)/configure.host
$(SHELL) ./config.status --recheck
-elfarm-oabi.lo: elfarm-oabi.c elf32-arm.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-
-elfarm-nabi.lo: elfarm-nabi.c elf32-arm.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-
# What appears below is generated by a hacked mkdep using gcc -MM.
# DO NOT DELETE THIS LINE -- mkdep uses it.
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
-archive.lo: archive.c $(INCDIR)/aout/ar.h $(INCDIR)/aout/ranlib.h
-archures.lo: archures.c
-bfd.lo: bfd.c $(INCDIR)/libiberty.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h libcoff.h \
- libecoff.h $(INCDIR)/coff/ecoff.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
-cache.lo: cache.c
-coffgen.lo: coffgen.c $(INCDIR)/coff/internal.h libcoff.h \
- $(INCDIR)/bfdlink.h
-corefile.lo: corefile.c
-format.lo: format.c
-init.lo: init.c
-libbfd.lo: libbfd.c
-opncls.lo: opncls.c $(INCDIR)/objalloc.h
-reloc.lo: reloc.c $(INCDIR)/bfdlink.h
-section.lo: section.c $(INCDIR)/bfdlink.h
-syms.lo: syms.c $(INCDIR)/bfdlink.h $(INCDIR)/aout/stab_gnu.h \
+archive.lo: archive.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h \
+ $(INCDIR)/aout/ranlib.h
+archures.lo: archures.c $(INCDIR)/filenames.h
+bfd.lo: bfd.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h \
+ libcoff.h libecoff.h $(INCDIR)/coff/ecoff.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
+cache.lo: cache.c $(INCDIR)/filenames.h
+coffgen.lo: coffgen.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
+ libcoff.h $(INCDIR)/bfdlink.h
+corefile.lo: corefile.c $(INCDIR)/filenames.h
+format.lo: format.c $(INCDIR)/filenames.h
+init.lo: init.c $(INCDIR)/filenames.h
+libbfd.lo: libbfd.c $(INCDIR)/filenames.h
+opncls.lo: opncls.c $(INCDIR)/filenames.h $(INCDIR)/objalloc.h
+reloc.lo: reloc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h
+section.lo: section.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h
+syms.lo: syms.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def
+targets.lo: targets.c $(INCDIR)/filenames.h $(INCDIR)/fnmatch.h \
+ targmatch.h
+hash.lo: hash.c $(INCDIR)/filenames.h $(INCDIR)/objalloc.h
+linker.lo: linker.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h
+srec.lo: srec.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+binary.lo: binary.c $(INCDIR)/filenames.h
+tekhex.lo: tekhex.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+ihex.lo: ihex.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+stabs.lo: stabs.c $(INCDIR)/filenames.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def
-targets.lo: targets.c $(INCDIR)/fnmatch.h targmatch.h
-hash.lo: hash.c $(INCDIR)/objalloc.h
-linker.lo: linker.c $(INCDIR)/bfdlink.h genlink.h
-srec.lo: srec.c $(INCDIR)/libiberty.h
-binary.lo: binary.c
-tekhex.lo: tekhex.c $(INCDIR)/libiberty.h
-ihex.lo: ihex.c $(INCDIR)/libiberty.h
-stabs.lo: stabs.c $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def
stab-syms.lo: stab-syms.c libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab.def
-cpu-a29k.lo: cpu-a29k.c
-cpu-alpha.lo: cpu-alpha.c
-cpu-arc.lo: cpu-arc.c
-cpu-arm.lo: cpu-arm.c
-cpu-avr.lo: cpu-avr.c
-cpu-d10v.lo: cpu-d10v.c
-cpu-d30v.lo: cpu-d30v.c
-cpu-fr30.lo: cpu-fr30.c
-cpu-h8300.lo: cpu-h8300.c
-cpu-h8500.lo: cpu-h8500.c
-cpu-hppa.lo: cpu-hppa.c
-cpu-i370.lo: cpu-i370.c
-cpu-i386.lo: cpu-i386.c
-cpu-i860.lo: cpu-i860.c
-cpu-i960.lo: cpu-i960.c
-cpu-m32r.lo: cpu-m32r.c
-cpu-m68k.lo: cpu-m68k.c
-cpu-m88k.lo: cpu-m88k.c
-cpu-m10200.lo: cpu-m10200.c
-cpu-m10300.lo: cpu-m10300.c
-cpu-mcore.lo: cpu-mcore.c
-cpu-mips.lo: cpu-mips.c
-cpu-ns32k.lo: cpu-ns32k.c ns32k.h
-cpu-pj.lo: cpu-pj.c
-cpu-powerpc.lo: cpu-powerpc.c
-cpu-rs6000.lo: cpu-rs6000.c
-cpu-sh.lo: cpu-sh.c
-cpu-sparc.lo: cpu-sparc.c
-cpu-tic30.lo: cpu-tic30.c
-cpu-tic80.lo: cpu-tic80.c
-cpu-tic54x.lo: cpu-tic54x.c
-cpu-v850.lo: cpu-v850.c
-cpu-vax.lo: cpu-vax.c
-cpu-we32k.lo: cpu-we32k.c
-cpu-w65.lo: cpu-w65.c
-cpu-z8k.lo: cpu-z8k.c
-aout-adobe.lo: aout-adobe.c $(INCDIR)/aout/adobe.h \
+cpu-a29k.lo: cpu-a29k.c $(INCDIR)/filenames.h
+cpu-alpha.lo: cpu-alpha.c $(INCDIR)/filenames.h
+cpu-arc.lo: cpu-arc.c $(INCDIR)/filenames.h
+cpu-arm.lo: cpu-arm.c $(INCDIR)/filenames.h
+cpu-avr.lo: cpu-avr.c $(INCDIR)/filenames.h
+cpu-d10v.lo: cpu-d10v.c $(INCDIR)/filenames.h
+cpu-d30v.lo: cpu-d30v.c $(INCDIR)/filenames.h
+cpu-fr30.lo: cpu-fr30.c $(INCDIR)/filenames.h
+cpu-h8300.lo: cpu-h8300.c $(INCDIR)/filenames.h
+cpu-h8500.lo: cpu-h8500.c $(INCDIR)/filenames.h
+cpu-hppa.lo: cpu-hppa.c $(INCDIR)/filenames.h
+cpu-ia64.lo: cpu-ia64.c $(INCDIR)/filenames.h cpu-ia64-opc.c \
+ $(srcdir)/../opcodes/ia64-opc.h $(INCDIR)/opcode/ia64.h
+cpu-i370.lo: cpu-i370.c $(INCDIR)/filenames.h
+cpu-i386.lo: cpu-i386.c $(INCDIR)/filenames.h
+cpu-i860.lo: cpu-i860.c $(INCDIR)/filenames.h
+cpu-i960.lo: cpu-i960.c $(INCDIR)/filenames.h
+cpu-m32r.lo: cpu-m32r.c $(INCDIR)/filenames.h
+cpu-m68k.lo: cpu-m68k.c $(INCDIR)/filenames.h
+cpu-m88k.lo: cpu-m88k.c $(INCDIR)/filenames.h
+cpu-m10200.lo: cpu-m10200.c $(INCDIR)/filenames.h
+cpu-m10300.lo: cpu-m10300.c $(INCDIR)/filenames.h
+cpu-mcore.lo: cpu-mcore.c $(INCDIR)/filenames.h
+cpu-mips.lo: cpu-mips.c $(INCDIR)/filenames.h
+cpu-ns32k.lo: cpu-ns32k.c $(INCDIR)/filenames.h ns32k.h
+cpu-pj.lo: cpu-pj.c $(INCDIR)/filenames.h
+cpu-powerpc.lo: cpu-powerpc.c $(INCDIR)/filenames.h
+cpu-rs6000.lo: cpu-rs6000.c $(INCDIR)/filenames.h
+cpu-sh.lo: cpu-sh.c $(INCDIR)/filenames.h
+cpu-sparc.lo: cpu-sparc.c $(INCDIR)/filenames.h
+cpu-tic30.lo: cpu-tic30.c $(INCDIR)/filenames.h
+cpu-tic54x.lo: cpu-tic54x.c $(INCDIR)/filenames.h
+cpu-tic80.lo: cpu-tic80.c $(INCDIR)/filenames.h
+cpu-v850.lo: cpu-v850.c $(INCDIR)/filenames.h
+cpu-vax.lo: cpu-vax.c $(INCDIR)/filenames.h
+cpu-we32k.lo: cpu-we32k.c $(INCDIR)/filenames.h
+cpu-w65.lo: cpu-w65.c $(INCDIR)/filenames.h
+cpu-z8k.lo: cpu-z8k.c $(INCDIR)/filenames.h
+aout-adobe.lo: aout-adobe.c $(INCDIR)/filenames.h $(INCDIR)/aout/adobe.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def libaout.h \
$(INCDIR)/bfdlink.h
-aout-arm.lo: aout-arm.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aoutx.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
+aout-arm.lo: aout-arm.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aoutx.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ aout-target.h
aout-ns32k.lo: aout-ns32k.c $(INCDIR)/aout/aout64.h \
ns32k.h libaout.h $(INCDIR)/bfdlink.h
aout-sparcle.lo: aout-sparcle.c $(INCDIR)/bfdlink.h \
- libaout.h aoutf1.h $(INCDIR)/aout/sun4.h $(INCDIR)/aout/aout64.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
- aout-target.h
-aout-tic30.lo: aout-tic30.c libaout.h $(INCDIR)/bfdlink.h \
+ libaout.h aoutf1.h $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h aoutx.h
-aout0.lo: aout0.c aoutf1.h $(INCDIR)/aout/sun4.h libaout.h \
+ $(INCDIR)/aout/ar.h aout-target.h
+aout-tic30.lo: aout-tic30.c $(INCDIR)/filenames.h libaout.h \
$(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
-aout32.lo: aout32.c aoutx.h $(INCDIR)/bfdlink.h libaout.h \
- $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h
-armnetbsd.lo: armnetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aoutx.h
+aout0.lo: aout0.c aoutf1.h $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h \
+ libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ aout-target.h
+aout32.lo: aout32.c aoutx.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ libaout.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-bout.lo: bout.c $(INCDIR)/bfdlink.h genlink.h $(INCDIR)/bout.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def libaout.h
-cf-i386lynx.lo: cf-i386lynx.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
- coffcode.h coffswap.h
-cf-m68klynx.lo: cf-m68klynx.c coff-m68k.c $(INCDIR)/coff/m68k.h \
+armnetbsd.lo: armnetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+bout.lo: bout.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h $(INCDIR)/bout.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def libaout.h
+cf-i386lynx.lo: cf-i386lynx.c $(INCDIR)/filenames.h \
+ coff-i386.c $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+cf-m68klynx.lo: cf-m68klynx.c coff-m68k.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+cf-sparclynx.lo: cf-sparclynx.c coff-sparc.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/sparc.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-a29k.lo: coff-a29k.c $(INCDIR)/filenames.h $(INCDIR)/coff/a29k.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-cf-sparclynx.lo: cf-sparclynx.c coff-sparc.c $(INCDIR)/coff/sparc.h \
+coff-apollo.lo: coff-apollo.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/apollo.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-arm.lo: coff-arm.c $(INCDIR)/filenames.h $(INCDIR)/coff/arm.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-a29k.lo: coff-a29k.c $(INCDIR)/coff/a29k.h $(INCDIR)/coff/internal.h \
+coff-aux.lo: coff-aux.c $(INCDIR)/filenames.h $(INCDIR)/coff/aux-coff.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h coff-m68k.c \
libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-apollo.lo: coff-apollo.c $(INCDIR)/coff/apollo.h \
+coff-h8300.lo: coff-h8300.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h $(INCDIR)/coff/h8300.h $(INCDIR)/coff/internal.h \
+ libcoff.h coffcode.h coffswap.h
+coff-h8500.lo: coff-h8500.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/h8500.h $(INCDIR)/coff/internal.h libcoff.h \
+ coffcode.h coffswap.h
+coff-i386.lo: coff-i386.c $(INCDIR)/filenames.h $(INCDIR)/coff/i386.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-arm.lo: coff-arm.c $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-aux.lo: coff-aux.c $(INCDIR)/coff/aux-coff.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/m68k.h coff-m68k.c libcoff.h $(INCDIR)/bfdlink.h \
+coff-i860.lo: coff-i860.c $(INCDIR)/filenames.h $(INCDIR)/coff/i860.h \
+ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-h8300.lo: coff-h8300.c $(INCDIR)/bfdlink.h genlink.h \
- $(INCDIR)/coff/h8300.h $(INCDIR)/coff/internal.h libcoff.h \
+coff-go32.lo: coff-go32.c coff-i386.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-i960.lo: coff-i960.c $(INCDIR)/filenames.h $(INCDIR)/coff/i960.h \
+ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-h8500.lo: coff-h8500.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/h8500.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-i386.lo: coff-i386.c $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-i860.lo: coff-i860.c $(INCDIR)/coff/i860.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-go32.lo: coff-go32.c coff-i386.c $(INCDIR)/coff/i386.h \
+coff-m68k.lo: coff-m68k.c $(INCDIR)/filenames.h $(INCDIR)/coff/m68k.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-i960.lo: coff-i960.c $(INCDIR)/coff/i960.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-m68k.lo: coff-m68k.c $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-m88k.lo: coff-m88k.c $(INCDIR)/coff/m88k.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-mips.lo: coff-mips.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- $(INCDIR)/coff/mips.h libcoff.h libecoff.h coffswap.h \
- ecoffswap.h
-coff-pmac.lo: coff-pmac.c coff-rs6000.c $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/rs6000.h libcoff.h $(INCDIR)/bfdlink.h \
+coff-m88k.lo: coff-m88k.c $(INCDIR)/filenames.h $(INCDIR)/coff/m88k.h \
+ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-rs6000.lo: coff-rs6000.c $(INCDIR)/coff/internal.h \
+coff-mips.lo: coff-mips.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h libcoff.h \
+ libecoff.h coffswap.h ecoffswap.h
+coff-pmac.lo: coff-pmac.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/rs6000.h libcoff.h $(INCDIR)/bfdlink.h \
+ xcoff-target.h coffcode.h coffswap.h
+coff-rs6000.lo: coff-rs6000.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h libcoff.h \
+ $(INCDIR)/bfdlink.h xcoff-target.h coffcode.h coffswap.h
+coff-sh.lo: coff-sh.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/sh.h $(INCDIR)/coff/internal.h libcoff.h \
coffcode.h coffswap.h
-coff-sh.lo: coff-sh.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-sparc.lo: coff-sparc.c $(INCDIR)/coff/sparc.h \
+coff-sparc.lo: coff-sparc.c $(INCDIR)/filenames.h $(INCDIR)/coff/sparc.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-stgo32.lo: coff-stgo32.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/go32exe.h \
+coff-stgo32.lo: coff-stgo32.c coff-i386.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/go32exe.h \
libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h \
go32stub.h
-coff-svm68k.lo: coff-svm68k.c coff-m68k.c $(INCDIR)/coff/m68k.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
+coff-svm68k.lo: coff-svm68k.c coff-m68k.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-tic30.lo: coff-tic30.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/tic30.h $(INCDIR)/coff/internal.h libcoff.h \
coffcode.h coffswap.h
-coff-tic30.lo: coff-tic30.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/tic30.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-tic80.lo: coff-tic80.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/tic80.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-tic54x.lo: coff-tic54x.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/tic54x.h \
+coff-tic54x.lo: coff-tic54x.c $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \
$(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-u68k.lo: coff-u68k.c coff-m68k.c $(INCDIR)/coff/m68k.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
+coff-tic80.lo: coff-tic80.c $(INCDIR)/bfdlink.h $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/tic80.h $(INCDIR)/coff/internal.h libcoff.h \
coffcode.h coffswap.h
-coff-we32k.lo: coff-we32k.c $(INCDIR)/coff/we32k.h \
+coff-u68k.lo: coff-u68k.c coff-m68k.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-we32k.lo: coff-we32k.c $(INCDIR)/filenames.h $(INCDIR)/coff/we32k.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-w65.lo: coff-w65.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/w65.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-z8k.lo: coff-z8k.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/z8k.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-cofflink.lo: cofflink.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- libcoff.h
-dwarf1.lo: dwarf1.c $(INCDIR)/libiberty.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf.h
-dwarf2.lo: dwarf2.c $(INCDIR)/libiberty.h elf-bfd.h \
+coff-w65.lo: coff-w65.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/w65.h $(INCDIR)/coff/internal.h libcoff.h \
+ coffcode.h coffswap.h
+coff-z8k.lo: coff-z8k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/z8k.h $(INCDIR)/coff/internal.h libcoff.h \
+ coffcode.h coffswap.h
+cofflink.lo: cofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/internal.h libcoff.h
+dwarf1.lo: dwarf1.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf.h
+dwarf2.lo: dwarf2.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h
+ecoff.lo: ecoff.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/aout/ar.h $(INCDIR)/aout/ranlib.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def libaout.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/ecoff.h libcoff.h libecoff.h
+ecofflink.lo: ecofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/objalloc.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/ecoff.h libcoff.h libecoff.h
+efi-app-ia32.lo: efi-app-ia32.c $(INCDIR)/filenames.h \
+ coff-i386.c $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+elf.lo: elf.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h
+elf32-arc.lo: elf32-arc.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h
-ecoff.lo: ecoff.c $(INCDIR)/bfdlink.h $(INCDIR)/aout/ar.h \
- $(INCDIR)/aout/ranlib.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- libaout.h $(INCDIR)/aout/aout64.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- libcoff.h libecoff.h
-ecofflink.lo: ecofflink.c $(INCDIR)/bfdlink.h $(INCDIR)/objalloc.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- libcoff.h libecoff.h
-elf.lo: elf.c $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
-elf32-arc.lo: elf32-arc.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elfarm-oabi.lo: elfarm-oabi.c $(INCDIR)/elf/arm.h \
- $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elfarm-oabi.lo: elfarm-oabi.c $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
elf32-arm.h elf32-target.h
elfarm-nabi.lo: elfarm-nabi.c $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
- elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
- $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h elf32-arm.h \
- elf32-target.h
-elf32-avr.lo: elf32-avr.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/avr.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-d10v.lo: elf32-d10v.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- elf32-target.h
-elf32-d30v.lo: elf32-d30v.c elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ elf32-arm.h elf32-target.h
+elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-fr30.lo: elf32-fr30.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/fr30.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-gen.lo: elf32-gen.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+elf32-d10v.lo: elf32-d10v.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf32-d30v.lo: elf32-d30v.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf32-fr30.lo: elf32-fr30.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/fr30.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-i370.lo: elf32-i370.c $(INCDIR)/bfdlink.h elf-bfd.h \
+elf32-gen.lo: elf32-gen.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/i370.h elf32-target.h
-elf32-i386.lo: elf32-i386.c $(INCDIR)/bfdlink.h elf-bfd.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf32-hppa.lo: elf32-hppa.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/i386.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-i860.lo: elf32-i860.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/reloc-macros.h \
+ libhppa.h elf32-hppa.h elf-hppa.h hppa_stubs.h elf32-target.h
+elf32-i370.lo: elf32-i370.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/i370.h elf32-target.h
+elf32-i386.lo: elf32-i386.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-i960.lo: elf32-i960.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/i960.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-m32r.lo: elf32-m32r.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/m32r.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-m68k.lo: elf32-m68k.c $(INCDIR)/bfdlink.h elf-bfd.h \
+elf32-i860.lo: elf32-i860.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-m88k.lo: elf32-m88k.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf32-i960.lo: elf32-i960.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/i960.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf-m10200.lo: elf-m10200.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+elf32-m32r.lo: elf32-m32r.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/m32r.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf-m10300.lo: elf-m10300.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/mn10300.h $(INCDIR)/elf/reloc-macros.h \
+elf32-m68k.lo: elf32-m68k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-mcore.lo: elf32-mcore.c $(INCDIR)/bfdlink.h elf-bfd.h \
+elf32-m88k.lo: elf32-m88k.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf-m10200.lo: elf-m10200.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf-m10300.lo: elf-m10300.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/mcore.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/mn10300.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-mips.lo: elf32-mips.c $(INCDIR)/bfdlink.h genlink.h \
- elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+elf32-mcore.lo: elf32-mcore.c $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/mcore.h \
+ $(INCDIR)/elf/reloc-macros.h elf32-target.h
+elf32-mips.lo: elf32-mips.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
$(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h ecoffswap.h \
elf32-target.h
-elf32-pj.lo: elf32-pj.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/pj.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-ppc.lo: elf32-ppc.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-sh.lo: elf32-sh.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-sparc.lo: elf32-sparc.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \
+elf32-pj.lo: elf32-pj.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/pj.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-v850.lo: elf32-v850.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32.lo: elf32.c elfcode.h $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- elfcore.h elflink.h
-elflink.lo: elflink.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
-epoc-pe-arm.lo: epoc-pe-arm.c pe-arm.c coff-arm.c $(INCDIR)/coff/arm.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-epoc-pei-arm.lo: epoc-pei-arm.c pei-arm.c coff-arm.c \
- $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
- libpei.h
-hp300bsd.lo: hp300bsd.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+elf32-ppc.lo: elf32-ppc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32-sh.lo: elf32-sh.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32-sparc.lo: elf32-sparc.c $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sparc.h \
+ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/sparc.h \
+ elf32-target.h
+elf32-v850.lo: elf32-v850.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32.lo: elf32.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h elfcore.h elflink.h
+elflink.lo: elflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h
+epoc-pe-arm.lo: epoc-pe-arm.c pe-arm.c $(INCDIR)/filenames.h \
+ coff-arm.c $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+epoc-pei-arm.lo: epoc-pei-arm.c pei-arm.c $(INCDIR)/filenames.h \
+ coff-arm.c $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+hp300bsd.lo: hp300bsd.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
hp300hpux.lo: hp300hpux.c $(INCDIR)/aout/hp300hpux.h \
- aoutx.h $(INCDIR)/bfdlink.h libaout.h $(INCDIR)/aout/aout64.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
- aout-target.h
-som.lo: som.c
-i386aout.lo: i386aout.c $(INCDIR)/aout/aout64.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386bsd.lo: i386bsd.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
+ aoutx.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h libaout.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ar.h aout-target.h
+som.lo: som.c $(INCDIR)/filenames.h
+i386aout.lo: i386aout.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386bsd.lo: i386bsd.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
i386dynix.lo: i386dynix.c $(INCDIR)/aout/dynix3.h aoutx.h \
- $(INCDIR)/bfdlink.h libaout.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h libaout.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ar.h aout-target.h
+i386freebsd.lo: i386freebsd.c freebsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386linux.lo: i386linux.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
- aout-target.h
-i386freebsd.lo: i386freebsd.c freebsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386linux.lo: i386linux.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-i386lynx.lo: i386lynx.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386msdos.lo: i386msdos.c libaout.h $(INCDIR)/bfdlink.h
-i386netbsd.lo: i386netbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386mach3.lo: i386mach3.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-i386os9k.lo: i386os9k.c $(INCDIR)/bfdlink.h libaout.h \
- $(INCDIR)/os9k.h
-ieee.lo: ieee.c $(INCDIR)/ieee.h libieee.h
-m68k4knetbsd.lo: m68k4knetbsd.c netbsd.h libaout.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+i386lynx.lo: i386lynx.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386msdos.lo: i386msdos.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h
+i386netbsd.lo: i386netbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386mach3.lo: i386mach3.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+i386os9k.lo: i386os9k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ libaout.h $(INCDIR)/os9k.h
+ieee.lo: ieee.c $(INCDIR)/filenames.h $(INCDIR)/ieee.h \
+ libieee.h
+m68k4knetbsd.lo: m68k4knetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+m68klinux.lo: m68klinux.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+m68klynx.lo: m68klynx.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+m68knetbsd.lo: m68knetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+m88kmach3.lo: m88kmach3.c $(INCDIR)/filenames.h libaout.h \
$(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-m68klinux.lo: m68klinux.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-m68klynx.lo: m68klynx.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-m68knetbsd.lo: m68knetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-m88kmach3.lo: m88kmach3.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-mipsbsd.lo: mipsbsd.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-newsos3.lo: newsos3.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-nlm.lo: nlm.c libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
- $(INCDIR)/nlm/external.h
-nlm32-i386.lo: nlm32-i386.c $(INCDIR)/nlm/i386-ext.h \
+mipsbsd.lo: mipsbsd.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+newsos3.lo: newsos3.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+nlm.lo: nlm.c $(INCDIR)/filenames.h libnlm.h $(INCDIR)/nlm/common.h \
+ $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
+nlm32-i386.lo: nlm32-i386.c $(INCDIR)/filenames.h $(INCDIR)/nlm/i386-ext.h \
libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
$(INCDIR)/nlm/external.h nlmswap.h nlm-target.h
-nlm32-sparc.lo: nlm32-sparc.c $(INCDIR)/nlm/sparc32-ext.h \
+nlm32-sparc.lo: nlm32-sparc.c $(INCDIR)/filenames.h \
+ $(INCDIR)/nlm/sparc32-ext.h libnlm.h $(INCDIR)/nlm/common.h \
+ $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h nlmswap.h \
+ nlm-target.h
+nlm32-ppc.lo: nlm32-ppc.c $(INCDIR)/filenames.h $(INCDIR)/nlm/ppc-ext.h \
libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
$(INCDIR)/nlm/external.h nlmswap.h nlm-target.h
-nlm32-ppc.lo: nlm32-ppc.c $(INCDIR)/nlm/ppc-ext.h libnlm.h \
- $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h \
- nlmswap.h nlm-target.h
-nlm32.lo: nlm32.c nlmcode.h libnlm.h $(INCDIR)/nlm/common.h \
- $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
-ns32knetbsd.lo: ns32knetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-oasys.lo: oasys.c $(INCDIR)/oasys.h liboasys.h
-pc532-mach.lo: pc532-mach.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-pe-arm.lo: pe-arm.c coff-arm.c $(INCDIR)/coff/arm.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-arm.lo: pei-arm.c coff-arm.c $(INCDIR)/coff/arm.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-i386.lo: pe-i386.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-i386.lo: pei-i386.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-mcore.lo: pe-mcore.c coff-mcore.c $(INCDIR)/coff/mcore.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-mcore.lo: pei-mcore.c coff-mcore.c $(INCDIR)/coff/mcore.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-ppc.lo: pe-ppc.c coff-ppc.c $(INCDIR)/coff/powerpc.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-ppc.lo: pei-ppc.c coff-ppc.c $(INCDIR)/coff/powerpc.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-sh.lo: pe-sh.c coff-sh.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- coffcode.h peicode.h libpei.h
-pei-sh.lo: pei-sh.c coff-sh.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- coffcode.h peicode.h libpei.h
-pe-mips.lo: pe-mips.c $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/internal.h \
+nlm32.lo: nlm32.c nlmcode.h $(INCDIR)/filenames.h libnlm.h \
+ $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
+ns32knetbsd.lo: ns32knetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+oasys.lo: oasys.c $(INCDIR)/filenames.h $(INCDIR)/oasys.h \
+ liboasys.h
+pc532-mach.lo: pc532-mach.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+pe-arm.lo: pe-arm.c $(INCDIR)/filenames.h coff-arm.c \
+ $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pei-arm.lo: pei-arm.c $(INCDIR)/filenames.h coff-arm.c \
+ $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pe-i386.lo: pe-i386.c $(INCDIR)/filenames.h coff-i386.c \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pei-i386.lo: pei-i386.c $(INCDIR)/filenames.h coff-i386.c \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pe-mcore.lo: pe-mcore.c $(INCDIR)/filenames.h coff-mcore.c \
+ $(INCDIR)/coff/mcore.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pei-mcore.lo: pei-mcore.c $(INCDIR)/filenames.h coff-mcore.c \
+ $(INCDIR)/coff/mcore.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pe-ppc.lo: pe-ppc.c $(INCDIR)/filenames.h coff-ppc.c \
+ $(INCDIR)/coff/powerpc.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+pei-ppc.lo: pei-ppc.c $(INCDIR)/filenames.h coff-ppc.c \
+ $(INCDIR)/coff/powerpc.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
peicode.h libpei.h
-pei-mips.lo: pei-mips.c pe-mips.c $(INCDIR)/coff/mipspe.h \
+pe-sh.lo: pe-sh.c $(INCDIR)/filenames.h coff-sh.c $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/sh.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h coffcode.h peicode.h libpei.h
+pei-sh.lo: pei-sh.c $(INCDIR)/filenames.h coff-sh.c \
+ $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h coffcode.h peicode.h \
+ libpei.h
+pe-mips.lo: pe-mips.c $(INCDIR)/filenames.h $(INCDIR)/coff/mipspe.h \
$(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
$(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-peigen.lo: peigen.c $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h libpei.h
-ppcboot.lo: ppcboot.c
-reloc16.lo: reloc16.c $(INCDIR)/bfdlink.h genlink.h \
- $(INCDIR)/coff/internal.h libcoff.h
-riscix.lo: riscix.c libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
- aout-target.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h
-sparclinux.lo: sparclinux.c $(INCDIR)/aout/aout64.h \
+pei-mips.lo: pei-mips.c $(INCDIR)/filenames.h pe-mips.c \
+ $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+peigen.lo: peigen.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/pe.h libcoff.h \
+ $(INCDIR)/bfdlink.h libpei.h
+ppcboot.lo: ppcboot.c $(INCDIR)/filenames.h
+reloc16.lo: reloc16.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h $(INCDIR)/coff/internal.h libcoff.h
+riscix.lo: riscix.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+sparclinux.lo: sparclinux.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
libaout.h $(INCDIR)/bfdlink.h aout-target.h
-sparclynx.lo: sparclynx.c $(INCDIR)/aout/sun4.h libaout.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
-sparcnetbsd.lo: sparcnetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-sunos.lo: sunos.c $(INCDIR)/bfdlink.h libaout.h aoutf1.h \
- $(INCDIR)/aout/sun4.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
-vaxnetbsd.lo: vaxnetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-versados.lo: versados.c $(INCDIR)/libiberty.h
-vms.lo: vms.c $(INCDIR)/bfdlink.h vms.h
-vms-gsd.lo: vms-gsd.c $(INCDIR)/bfdlink.h vms.h
-vms-hdr.lo: vms-hdr.c $(INCDIR)/bfdlink.h vms.h
-vms-misc.lo: vms-misc.c $(INCDIR)/bfdlink.h vms.h
-vms-tir.lo: vms-tir.c $(INCDIR)/bfdlink.h vms.h
-xcofflink.lo: xcofflink.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- libcoff.h
-aout64.lo: aout64.c aoutx.h $(INCDIR)/bfdlink.h libaout.h \
- $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h
-coff-alpha.lo: coff-alpha.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
- libecoff.h coffswap.h ecoffswap.h
-demo64.lo: demo64.c aoutf1.h $(INCDIR)/aout/sun4.h \
+sparclynx.lo: sparclynx.c $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h \
libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
aout-target.h
-elf64-alpha.lo: elf64-alpha.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \
+sparcnetbsd.lo: sparcnetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+sunos.lo: sunos.c $(INCDIR)/bfdlink.h libaout.h aoutf1.h \
+ $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ aout-target.h
+vaxnetbsd.lo: vaxnetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+versados.lo: versados.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+vms.lo: vms.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-gsd.lo: vms-gsd.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-hdr.lo: vms-hdr.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-misc.lo: vms-misc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-tir.lo: vms-tir.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+xcofflink.lo: xcofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/internal.h libcoff.h
+aout64.lo: aout64.c aoutx.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ libaout.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+coff-alpha.lo: coff-alpha.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
$(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
$(INCDIR)/coff/ecoff.h $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h \
- libcoff.h libecoff.h ecoffswap.h elf64-target.h
-elf64-gen.lo: elf64-gen.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- elf64-target.h
-elf64-mips.lo: elf64-mips.c $(INCDIR)/aout/ar.h $(INCDIR)/bfdlink.h \
- genlink.h elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
- $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/alpha.h ecoffswap.h \
- elf64-target.h
-elf64-sparc.lo: elf64-sparc.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ libcoff.h libecoff.h coffswap.h ecoffswap.h
+coff64-rs6000.lo: coff64-rs6000.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6k64.h libcoff.h \
+ $(INCDIR)/bfdlink.h xcoff-target.h coffcode.h coffswap.h
+demo64.lo: demo64.c aoutf1.h $(INCDIR)/filenames.h \
+ $(INCDIR)/aout/sun4.h libaout.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ar.h aout-target.h
+efi-app-ia64.lo: efi-app-ia64.c $(INCDIR)/filenames.h \
+ coff-ia64.c $(INCDIR)/coff/ia64.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+elf64-alpha.lo: elf64-alpha.c $(INCDIR)/filenames.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/alpha.h \
+ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
+ $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
+ libecoff.h ecoffswap.h elf64-target.h
+elf64-hppa.lo: elf64-hppa.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/reloc-macros.h \
+ libhppa.h elf64-hppa.h elf-hppa.h elf64-target.h
+elf64-ia64.lo: elf64-ia64.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \
+ $(INCDIR)/elf/reloc-macros.h elf64-target.h
+elf64-gen.lo: elf64-gen.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h elf64-target.h
+elf64-mips.lo: elf64-mips.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h \
+ $(INCDIR)/bfdlink.h genlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h \
+ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/alpha.h \
+ ecoffswap.h elf64-target.h
+elf64-sparc.lo: elf64-sparc.c $(INCDIR)/filenames.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/sparc.h \
$(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \
elf64-target.h
-elf64.lo: elf64.c elfcode.h $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- elfcore.h elflink.h
-nlm32-alpha.lo: nlm32-alpha.c $(INCDIR)/nlm/alpha-ext.h \
- libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
- $(INCDIR)/nlm/external.h nlmswap.h nlm-target.h
-nlm64.lo: nlm64.c nlmcode.h libnlm.h $(INCDIR)/nlm/common.h \
- $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
-aix386-core.lo: aix386-core.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h
-hpux-core.lo: hpux-core.c
-irix-core.lo: irix-core.c
-lynx-core.lo: lynx-core.c
-osf-core.lo: osf-core.c
-sco5-core.lo: sco5-core.c libaout.h $(INCDIR)/bfdlink.h
-trad-core.lo: trad-core.c libaout.h $(INCDIR)/bfdlink.h \
- hosts/i386linux.h
-cisco-core.lo: cisco-core.c
+elf64.lo: elf64.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h elfcore.h elflink.h
+nlm32-alpha.lo: nlm32-alpha.c $(INCDIR)/filenames.h \
+ $(INCDIR)/nlm/alpha-ext.h libnlm.h $(INCDIR)/nlm/common.h \
+ $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h nlmswap.h \
+ nlm-target.h
+nlm64.lo: nlm64.c nlmcode.h $(INCDIR)/filenames.h libnlm.h \
+ $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
+aix386-core.lo: aix386-core.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h
+hpux-core.lo: hpux-core.c $(INCDIR)/filenames.h
+irix-core.lo: irix-core.c $(INCDIR)/filenames.h
+lynx-core.lo: lynx-core.c $(INCDIR)/filenames.h
+osf-core.lo: osf-core.c $(INCDIR)/filenames.h
+sco5-core.lo: sco5-core.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h
+trad-core.lo: trad-core.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h
+cisco-core.lo: cisco-core.c $(INCDIR)/filenames.h
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index 0099f3f15d7..3192f328f4a 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -166,6 +166,7 @@ ALL_MACHINES = \
cpu-h8300.lo \
cpu-h8500.lo \
cpu-hppa.lo \
+ cpu-ia64.lo \
cpu-i370.lo \
cpu-i386.lo \
cpu-i860.lo \
@@ -205,6 +206,7 @@ ALL_MACHINES_CFILES = \
cpu-h8300.c \
cpu-h8500.c \
cpu-hppa.c \
+ cpu-ia64.c \
cpu-i370.c \
cpu-i386.c \
cpu-i860.c \
@@ -278,6 +280,7 @@ BFD32_BACKENDS = \
dwarf2.lo \
ecoff.lo \
ecofflink.lo \
+ efi-app-ia32.lo \
elf.lo \
elf32-arc.lo \
elfarm-oabi.lo \
@@ -287,6 +290,7 @@ BFD32_BACKENDS = \
elf32-d30v.lo \
elf32-fr30.lo \
elf32-gen.lo \
+ elf32-hppa.lo \
elf32-i370.lo \
elf32-i386.lo \
elf32-i860.lo \
@@ -410,6 +414,7 @@ BFD32_BACKENDS_CFILES = \
dwarf2.c \
ecoff.c \
ecofflink.c \
+ efi-app-ia32.c \
elf.c \
elf32-arc.c \
elfarm-oabi.c \
@@ -419,6 +424,7 @@ BFD32_BACKENDS_CFILES = \
elf32-d30v.c \
elf32-fr30.c \
elf32-gen.c \
+ elf32-hppa.c \
elf32-i370.c \
elf32-i386.c \
elf32-i860.c \
@@ -504,8 +510,12 @@ BFD32_BACKENDS_CFILES = \
BFD64_BACKENDS = \
aout64.lo \
coff-alpha.lo \
+ coff64-rs6000.lo \
demo64.lo \
+ efi-app-ia64.lo \
elf64-alpha.lo \
+ elf64-hppa.lo \
+ elf64-ia64.lo \
elf64-gen.lo \
elf64-mips.lo \
elf64-sparc.lo \
@@ -517,8 +527,12 @@ BFD64_BACKENDS = \
BFD64_BACKENDS_CFILES = \
aout64.c \
coff-alpha.c \
+ coff64-rs6000.c \
demo64.c \
+ efi-app-ia64.c \
elf64-alpha.c \
+ elf64-hppa.c \
+ elf64-ia64.c \
elf64-gen.c \
elf64-mips.c \
elf64-sparc.c \
@@ -568,12 +582,12 @@ CFILES = \
SOURCE_HFILES = \
- aout-target.h aoutf1.h aoutx.h coffcode.h coffswap.h \
- ecoffswap.h elf32-arm.h elfcode.h elfcore.h \
- elflink.h freebsd.h genlink.h go32stub.h libaout.h \
- libbfd.h libcoff.h libecoff.h elf-bfd.h libhppa.h libieee.h \
- libnlm.h liboasys.h libpei.h netbsd.h nlm-target.h nlmcode.h \
- nlmswap.h ns32k.h peicode.h som.h vms.h
+ aout-target.h aoutf1.h aoutx.h coffcode.h coffswap.h ecoffswap.h \
+ elf-bfd.h elf-hppa.h elf32-arm.h elf32-hppa.h elf64-hppa.h \
+ elfcode.h elfcore.h elflink.h freebsd.h genlink.h go32stub.h \
+ hppa_stubs.h libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \
+ libieee.h libnlm.h liboasys.h libpei.h netbsd.h nlm-target.h \
+ nlmcode.h nlmswap.h ns32k.h peicode.h som.h vms.h xcoff-target.h
HFILES = \
@@ -1180,487 +1194,567 @@ stmp-lcoff-h: $(LIBCOFF_H_FILES)
config.status: $(srcdir)/configure $(srcdir)/config.bfd $(srcdir)/configure.host
$(SHELL) ./config.status --recheck
-elfarm-oabi.lo: elfarm-oabi.c elf32-arm.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-
-elfarm-nabi.lo: elfarm-nabi.c elf32-arm.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-
# What appears below is generated by a hacked mkdep using gcc -MM.
# DO NOT DELETE THIS LINE -- mkdep uses it.
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
-archive.lo: archive.c $(INCDIR)/aout/ar.h $(INCDIR)/aout/ranlib.h
-archures.lo: archures.c
-bfd.lo: bfd.c $(INCDIR)/libiberty.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h libcoff.h \
- libecoff.h $(INCDIR)/coff/ecoff.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
-cache.lo: cache.c
-coffgen.lo: coffgen.c $(INCDIR)/coff/internal.h libcoff.h \
- $(INCDIR)/bfdlink.h
-corefile.lo: corefile.c
-format.lo: format.c
-init.lo: init.c
-libbfd.lo: libbfd.c
-opncls.lo: opncls.c $(INCDIR)/objalloc.h
-reloc.lo: reloc.c $(INCDIR)/bfdlink.h
-section.lo: section.c $(INCDIR)/bfdlink.h
-syms.lo: syms.c $(INCDIR)/bfdlink.h $(INCDIR)/aout/stab_gnu.h \
+archive.lo: archive.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h \
+ $(INCDIR)/aout/ranlib.h
+archures.lo: archures.c $(INCDIR)/filenames.h
+bfd.lo: bfd.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h \
+ libcoff.h libecoff.h $(INCDIR)/coff/ecoff.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
+cache.lo: cache.c $(INCDIR)/filenames.h
+coffgen.lo: coffgen.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
+ libcoff.h $(INCDIR)/bfdlink.h
+corefile.lo: corefile.c $(INCDIR)/filenames.h
+format.lo: format.c $(INCDIR)/filenames.h
+init.lo: init.c $(INCDIR)/filenames.h
+libbfd.lo: libbfd.c $(INCDIR)/filenames.h
+opncls.lo: opncls.c $(INCDIR)/filenames.h $(INCDIR)/objalloc.h
+reloc.lo: reloc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h
+section.lo: section.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h
+syms.lo: syms.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def
+targets.lo: targets.c $(INCDIR)/filenames.h $(INCDIR)/fnmatch.h \
+ targmatch.h
+hash.lo: hash.c $(INCDIR)/filenames.h $(INCDIR)/objalloc.h
+linker.lo: linker.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h
+srec.lo: srec.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+binary.lo: binary.c $(INCDIR)/filenames.h
+tekhex.lo: tekhex.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+ihex.lo: ihex.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+stabs.lo: stabs.c $(INCDIR)/filenames.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def
-targets.lo: targets.c $(INCDIR)/fnmatch.h targmatch.h
-hash.lo: hash.c $(INCDIR)/objalloc.h
-linker.lo: linker.c $(INCDIR)/bfdlink.h genlink.h
-srec.lo: srec.c $(INCDIR)/libiberty.h
-binary.lo: binary.c
-tekhex.lo: tekhex.c $(INCDIR)/libiberty.h
-ihex.lo: ihex.c $(INCDIR)/libiberty.h
-stabs.lo: stabs.c $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def
stab-syms.lo: stab-syms.c libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab.def
-cpu-a29k.lo: cpu-a29k.c
-cpu-alpha.lo: cpu-alpha.c
-cpu-arc.lo: cpu-arc.c
-cpu-arm.lo: cpu-arm.c
-cpu-avr.lo: cpu-avr.c
-cpu-d10v.lo: cpu-d10v.c
-cpu-d30v.lo: cpu-d30v.c
-cpu-fr30.lo: cpu-fr30.c
-cpu-h8300.lo: cpu-h8300.c
-cpu-h8500.lo: cpu-h8500.c
-cpu-hppa.lo: cpu-hppa.c
-cpu-i370.lo: cpu-i370.c
-cpu-i386.lo: cpu-i386.c
-cpu-i860.lo: cpu-i860.c
-cpu-i960.lo: cpu-i960.c
-cpu-m32r.lo: cpu-m32r.c
-cpu-m68k.lo: cpu-m68k.c
-cpu-m88k.lo: cpu-m88k.c
-cpu-m10200.lo: cpu-m10200.c
-cpu-m10300.lo: cpu-m10300.c
-cpu-mcore.lo: cpu-mcore.c
-cpu-mips.lo: cpu-mips.c
-cpu-ns32k.lo: cpu-ns32k.c ns32k.h
-cpu-pj.lo: cpu-pj.c
-cpu-powerpc.lo: cpu-powerpc.c
-cpu-rs6000.lo: cpu-rs6000.c
-cpu-sh.lo: cpu-sh.c
-cpu-sparc.lo: cpu-sparc.c
-cpu-tic30.lo: cpu-tic30.c
-cpu-tic80.lo: cpu-tic80.c
-cpu-tic54x.lo: cpu-tic54x.c
-cpu-v850.lo: cpu-v850.c
-cpu-vax.lo: cpu-vax.c
-cpu-we32k.lo: cpu-we32k.c
-cpu-w65.lo: cpu-w65.c
-cpu-z8k.lo: cpu-z8k.c
-aout-adobe.lo: aout-adobe.c $(INCDIR)/aout/adobe.h \
+cpu-a29k.lo: cpu-a29k.c $(INCDIR)/filenames.h
+cpu-alpha.lo: cpu-alpha.c $(INCDIR)/filenames.h
+cpu-arc.lo: cpu-arc.c $(INCDIR)/filenames.h
+cpu-arm.lo: cpu-arm.c $(INCDIR)/filenames.h
+cpu-avr.lo: cpu-avr.c $(INCDIR)/filenames.h
+cpu-d10v.lo: cpu-d10v.c $(INCDIR)/filenames.h
+cpu-d30v.lo: cpu-d30v.c $(INCDIR)/filenames.h
+cpu-fr30.lo: cpu-fr30.c $(INCDIR)/filenames.h
+cpu-h8300.lo: cpu-h8300.c $(INCDIR)/filenames.h
+cpu-h8500.lo: cpu-h8500.c $(INCDIR)/filenames.h
+cpu-hppa.lo: cpu-hppa.c $(INCDIR)/filenames.h
+cpu-ia64.lo: cpu-ia64.c $(INCDIR)/filenames.h cpu-ia64-opc.c \
+ $(srcdir)/../opcodes/ia64-opc.h $(INCDIR)/opcode/ia64.h
+cpu-i370.lo: cpu-i370.c $(INCDIR)/filenames.h
+cpu-i386.lo: cpu-i386.c $(INCDIR)/filenames.h
+cpu-i860.lo: cpu-i860.c $(INCDIR)/filenames.h
+cpu-i960.lo: cpu-i960.c $(INCDIR)/filenames.h
+cpu-m32r.lo: cpu-m32r.c $(INCDIR)/filenames.h
+cpu-m68k.lo: cpu-m68k.c $(INCDIR)/filenames.h
+cpu-m88k.lo: cpu-m88k.c $(INCDIR)/filenames.h
+cpu-m10200.lo: cpu-m10200.c $(INCDIR)/filenames.h
+cpu-m10300.lo: cpu-m10300.c $(INCDIR)/filenames.h
+cpu-mcore.lo: cpu-mcore.c $(INCDIR)/filenames.h
+cpu-mips.lo: cpu-mips.c $(INCDIR)/filenames.h
+cpu-ns32k.lo: cpu-ns32k.c $(INCDIR)/filenames.h ns32k.h
+cpu-pj.lo: cpu-pj.c $(INCDIR)/filenames.h
+cpu-powerpc.lo: cpu-powerpc.c $(INCDIR)/filenames.h
+cpu-rs6000.lo: cpu-rs6000.c $(INCDIR)/filenames.h
+cpu-sh.lo: cpu-sh.c $(INCDIR)/filenames.h
+cpu-sparc.lo: cpu-sparc.c $(INCDIR)/filenames.h
+cpu-tic30.lo: cpu-tic30.c $(INCDIR)/filenames.h
+cpu-tic54x.lo: cpu-tic54x.c $(INCDIR)/filenames.h
+cpu-tic80.lo: cpu-tic80.c $(INCDIR)/filenames.h
+cpu-v850.lo: cpu-v850.c $(INCDIR)/filenames.h
+cpu-vax.lo: cpu-vax.c $(INCDIR)/filenames.h
+cpu-we32k.lo: cpu-we32k.c $(INCDIR)/filenames.h
+cpu-w65.lo: cpu-w65.c $(INCDIR)/filenames.h
+cpu-z8k.lo: cpu-z8k.c $(INCDIR)/filenames.h
+aout-adobe.lo: aout-adobe.c $(INCDIR)/filenames.h $(INCDIR)/aout/adobe.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def libaout.h \
$(INCDIR)/bfdlink.h
-aout-arm.lo: aout-arm.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aoutx.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
+aout-arm.lo: aout-arm.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aoutx.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ aout-target.h
aout-ns32k.lo: aout-ns32k.c $(INCDIR)/aout/aout64.h \
ns32k.h libaout.h $(INCDIR)/bfdlink.h
aout-sparcle.lo: aout-sparcle.c $(INCDIR)/bfdlink.h \
- libaout.h aoutf1.h $(INCDIR)/aout/sun4.h $(INCDIR)/aout/aout64.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
- aout-target.h
-aout-tic30.lo: aout-tic30.c libaout.h $(INCDIR)/bfdlink.h \
+ libaout.h aoutf1.h $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h aoutx.h
-aout0.lo: aout0.c aoutf1.h $(INCDIR)/aout/sun4.h libaout.h \
+ $(INCDIR)/aout/ar.h aout-target.h
+aout-tic30.lo: aout-tic30.c $(INCDIR)/filenames.h libaout.h \
$(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
-aout32.lo: aout32.c aoutx.h $(INCDIR)/bfdlink.h libaout.h \
- $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h
-armnetbsd.lo: armnetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aoutx.h
+aout0.lo: aout0.c aoutf1.h $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h \
+ libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ aout-target.h
+aout32.lo: aout32.c aoutx.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ libaout.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-bout.lo: bout.c $(INCDIR)/bfdlink.h genlink.h $(INCDIR)/bout.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def libaout.h
-cf-i386lynx.lo: cf-i386lynx.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
- coffcode.h coffswap.h
-cf-m68klynx.lo: cf-m68klynx.c coff-m68k.c $(INCDIR)/coff/m68k.h \
+armnetbsd.lo: armnetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+bout.lo: bout.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h $(INCDIR)/bout.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def libaout.h
+cf-i386lynx.lo: cf-i386lynx.c $(INCDIR)/filenames.h \
+ coff-i386.c $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+cf-m68klynx.lo: cf-m68klynx.c coff-m68k.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+cf-sparclynx.lo: cf-sparclynx.c coff-sparc.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/sparc.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-a29k.lo: coff-a29k.c $(INCDIR)/filenames.h $(INCDIR)/coff/a29k.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-cf-sparclynx.lo: cf-sparclynx.c coff-sparc.c $(INCDIR)/coff/sparc.h \
+coff-apollo.lo: coff-apollo.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/apollo.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-arm.lo: coff-arm.c $(INCDIR)/filenames.h $(INCDIR)/coff/arm.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-a29k.lo: coff-a29k.c $(INCDIR)/coff/a29k.h $(INCDIR)/coff/internal.h \
+coff-aux.lo: coff-aux.c $(INCDIR)/filenames.h $(INCDIR)/coff/aux-coff.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h coff-m68k.c \
libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-apollo.lo: coff-apollo.c $(INCDIR)/coff/apollo.h \
+coff-h8300.lo: coff-h8300.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h $(INCDIR)/coff/h8300.h $(INCDIR)/coff/internal.h \
+ libcoff.h coffcode.h coffswap.h
+coff-h8500.lo: coff-h8500.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/h8500.h $(INCDIR)/coff/internal.h libcoff.h \
+ coffcode.h coffswap.h
+coff-i386.lo: coff-i386.c $(INCDIR)/filenames.h $(INCDIR)/coff/i386.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-arm.lo: coff-arm.c $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-aux.lo: coff-aux.c $(INCDIR)/coff/aux-coff.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/m68k.h coff-m68k.c libcoff.h $(INCDIR)/bfdlink.h \
+coff-i860.lo: coff-i860.c $(INCDIR)/filenames.h $(INCDIR)/coff/i860.h \
+ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-h8300.lo: coff-h8300.c $(INCDIR)/bfdlink.h genlink.h \
- $(INCDIR)/coff/h8300.h $(INCDIR)/coff/internal.h libcoff.h \
+coff-go32.lo: coff-go32.c coff-i386.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-i960.lo: coff-i960.c $(INCDIR)/filenames.h $(INCDIR)/coff/i960.h \
+ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-h8500.lo: coff-h8500.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/h8500.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-i386.lo: coff-i386.c $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-i860.lo: coff-i860.c $(INCDIR)/coff/i860.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-go32.lo: coff-go32.c coff-i386.c $(INCDIR)/coff/i386.h \
+coff-m68k.lo: coff-m68k.c $(INCDIR)/filenames.h $(INCDIR)/coff/m68k.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-i960.lo: coff-i960.c $(INCDIR)/coff/i960.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-m68k.lo: coff-m68k.c $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-m88k.lo: coff-m88k.c $(INCDIR)/coff/m88k.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-mips.lo: coff-mips.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- $(INCDIR)/coff/mips.h libcoff.h libecoff.h coffswap.h \
- ecoffswap.h
-coff-pmac.lo: coff-pmac.c coff-rs6000.c $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/rs6000.h libcoff.h $(INCDIR)/bfdlink.h \
+coff-m88k.lo: coff-m88k.c $(INCDIR)/filenames.h $(INCDIR)/coff/m88k.h \
+ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-rs6000.lo: coff-rs6000.c $(INCDIR)/coff/internal.h \
+coff-mips.lo: coff-mips.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h libcoff.h \
+ libecoff.h coffswap.h ecoffswap.h
+coff-pmac.lo: coff-pmac.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/rs6000.h libcoff.h $(INCDIR)/bfdlink.h \
+ xcoff-target.h coffcode.h coffswap.h
+coff-rs6000.lo: coff-rs6000.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h libcoff.h \
+ $(INCDIR)/bfdlink.h xcoff-target.h coffcode.h coffswap.h
+coff-sh.lo: coff-sh.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/sh.h $(INCDIR)/coff/internal.h libcoff.h \
coffcode.h coffswap.h
-coff-sh.lo: coff-sh.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-sparc.lo: coff-sparc.c $(INCDIR)/coff/sparc.h \
+coff-sparc.lo: coff-sparc.c $(INCDIR)/filenames.h $(INCDIR)/coff/sparc.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-stgo32.lo: coff-stgo32.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/go32exe.h \
+coff-stgo32.lo: coff-stgo32.c coff-i386.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/go32exe.h \
libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h \
go32stub.h
-coff-svm68k.lo: coff-svm68k.c coff-m68k.c $(INCDIR)/coff/m68k.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
+coff-svm68k.lo: coff-svm68k.c coff-m68k.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-tic30.lo: coff-tic30.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/tic30.h $(INCDIR)/coff/internal.h libcoff.h \
coffcode.h coffswap.h
-coff-tic30.lo: coff-tic30.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/tic30.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-tic80.lo: coff-tic80.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/tic80.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-tic54x.lo: coff-tic54x.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/tic54x.h \
+coff-tic54x.lo: coff-tic54x.c $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \
$(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-u68k.lo: coff-u68k.c coff-m68k.c $(INCDIR)/coff/m68k.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
+coff-tic80.lo: coff-tic80.c $(INCDIR)/bfdlink.h $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/tic80.h $(INCDIR)/coff/internal.h libcoff.h \
coffcode.h coffswap.h
-coff-we32k.lo: coff-we32k.c $(INCDIR)/coff/we32k.h \
+coff-u68k.lo: coff-u68k.c coff-m68k.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-we32k.lo: coff-we32k.c $(INCDIR)/filenames.h $(INCDIR)/coff/we32k.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-w65.lo: coff-w65.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/w65.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-z8k.lo: coff-z8k.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/z8k.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-cofflink.lo: cofflink.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- libcoff.h
-dwarf1.lo: dwarf1.c $(INCDIR)/libiberty.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf.h
-dwarf2.lo: dwarf2.c $(INCDIR)/libiberty.h elf-bfd.h \
+coff-w65.lo: coff-w65.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/w65.h $(INCDIR)/coff/internal.h libcoff.h \
+ coffcode.h coffswap.h
+coff-z8k.lo: coff-z8k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/z8k.h $(INCDIR)/coff/internal.h libcoff.h \
+ coffcode.h coffswap.h
+cofflink.lo: cofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/internal.h libcoff.h
+dwarf1.lo: dwarf1.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf.h
+dwarf2.lo: dwarf2.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h
+ecoff.lo: ecoff.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/aout/ar.h $(INCDIR)/aout/ranlib.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def libaout.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/ecoff.h libcoff.h libecoff.h
+ecofflink.lo: ecofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/objalloc.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/ecoff.h libcoff.h libecoff.h
+efi-app-ia32.lo: efi-app-ia32.c $(INCDIR)/filenames.h \
+ coff-i386.c $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+elf.lo: elf.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h
+elf32-arc.lo: elf32-arc.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h
-ecoff.lo: ecoff.c $(INCDIR)/bfdlink.h $(INCDIR)/aout/ar.h \
- $(INCDIR)/aout/ranlib.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- libaout.h $(INCDIR)/aout/aout64.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- libcoff.h libecoff.h
-ecofflink.lo: ecofflink.c $(INCDIR)/bfdlink.h $(INCDIR)/objalloc.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- libcoff.h libecoff.h
-elf.lo: elf.c $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
-elf32-arc.lo: elf32-arc.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elfarm-oabi.lo: elfarm-oabi.c $(INCDIR)/elf/arm.h \
- $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elfarm-oabi.lo: elfarm-oabi.c $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
elf32-arm.h elf32-target.h
elfarm-nabi.lo: elfarm-nabi.c $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
- elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
- $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h elf32-arm.h \
- elf32-target.h
-elf32-avr.lo: elf32-avr.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/avr.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-d10v.lo: elf32-d10v.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- elf32-target.h
-elf32-d30v.lo: elf32-d30v.c elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ elf32-arm.h elf32-target.h
+elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-fr30.lo: elf32-fr30.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/fr30.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-gen.lo: elf32-gen.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+elf32-d10v.lo: elf32-d10v.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf32-d30v.lo: elf32-d30v.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf32-fr30.lo: elf32-fr30.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/fr30.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-i370.lo: elf32-i370.c $(INCDIR)/bfdlink.h elf-bfd.h \
+elf32-gen.lo: elf32-gen.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/i370.h elf32-target.h
-elf32-i386.lo: elf32-i386.c $(INCDIR)/bfdlink.h elf-bfd.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf32-hppa.lo: elf32-hppa.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/i386.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-i860.lo: elf32-i860.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/reloc-macros.h \
+ libhppa.h elf32-hppa.h elf-hppa.h hppa_stubs.h elf32-target.h
+elf32-i370.lo: elf32-i370.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/i370.h elf32-target.h
+elf32-i386.lo: elf32-i386.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-i960.lo: elf32-i960.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/i960.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-m32r.lo: elf32-m32r.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/m32r.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-m68k.lo: elf32-m68k.c $(INCDIR)/bfdlink.h elf-bfd.h \
+elf32-i860.lo: elf32-i860.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-m88k.lo: elf32-m88k.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf32-i960.lo: elf32-i960.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/i960.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf-m10200.lo: elf-m10200.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+elf32-m32r.lo: elf32-m32r.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/m32r.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf-m10300.lo: elf-m10300.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/mn10300.h $(INCDIR)/elf/reloc-macros.h \
+elf32-m68k.lo: elf32-m68k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-mcore.lo: elf32-mcore.c $(INCDIR)/bfdlink.h elf-bfd.h \
+elf32-m88k.lo: elf32-m88k.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf-m10200.lo: elf-m10200.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf-m10300.lo: elf-m10300.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/mcore.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/mn10300.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-mips.lo: elf32-mips.c $(INCDIR)/bfdlink.h genlink.h \
- elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+elf32-mcore.lo: elf32-mcore.c $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/mcore.h \
+ $(INCDIR)/elf/reloc-macros.h elf32-target.h
+elf32-mips.lo: elf32-mips.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
$(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h ecoffswap.h \
elf32-target.h
-elf32-pj.lo: elf32-pj.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/pj.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-ppc.lo: elf32-ppc.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-sh.lo: elf32-sh.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-sparc.lo: elf32-sparc.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \
+elf32-pj.lo: elf32-pj.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/pj.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-v850.lo: elf32-v850.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32.lo: elf32.c elfcode.h $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- elfcore.h elflink.h
-elflink.lo: elflink.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
-epoc-pe-arm.lo: epoc-pe-arm.c pe-arm.c coff-arm.c $(INCDIR)/coff/arm.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-epoc-pei-arm.lo: epoc-pei-arm.c pei-arm.c coff-arm.c \
- $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
- libpei.h
-hp300bsd.lo: hp300bsd.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+elf32-ppc.lo: elf32-ppc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32-sh.lo: elf32-sh.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32-sparc.lo: elf32-sparc.c $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sparc.h \
+ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/sparc.h \
+ elf32-target.h
+elf32-v850.lo: elf32-v850.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32.lo: elf32.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h elfcore.h elflink.h
+elflink.lo: elflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h
+epoc-pe-arm.lo: epoc-pe-arm.c pe-arm.c $(INCDIR)/filenames.h \
+ coff-arm.c $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+epoc-pei-arm.lo: epoc-pei-arm.c pei-arm.c $(INCDIR)/filenames.h \
+ coff-arm.c $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+hp300bsd.lo: hp300bsd.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
hp300hpux.lo: hp300hpux.c $(INCDIR)/aout/hp300hpux.h \
- aoutx.h $(INCDIR)/bfdlink.h libaout.h $(INCDIR)/aout/aout64.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
- aout-target.h
-som.lo: som.c
-i386aout.lo: i386aout.c $(INCDIR)/aout/aout64.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386bsd.lo: i386bsd.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
+ aoutx.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h libaout.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ar.h aout-target.h
+som.lo: som.c $(INCDIR)/filenames.h
+i386aout.lo: i386aout.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386bsd.lo: i386bsd.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
i386dynix.lo: i386dynix.c $(INCDIR)/aout/dynix3.h aoutx.h \
- $(INCDIR)/bfdlink.h libaout.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h libaout.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ar.h aout-target.h
+i386freebsd.lo: i386freebsd.c freebsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386linux.lo: i386linux.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
- aout-target.h
-i386freebsd.lo: i386freebsd.c freebsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386linux.lo: i386linux.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-i386lynx.lo: i386lynx.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386msdos.lo: i386msdos.c libaout.h $(INCDIR)/bfdlink.h
-i386netbsd.lo: i386netbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386mach3.lo: i386mach3.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-i386os9k.lo: i386os9k.c $(INCDIR)/bfdlink.h libaout.h \
- $(INCDIR)/os9k.h
-ieee.lo: ieee.c $(INCDIR)/ieee.h libieee.h
-m68k4knetbsd.lo: m68k4knetbsd.c netbsd.h libaout.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+i386lynx.lo: i386lynx.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386msdos.lo: i386msdos.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h
+i386netbsd.lo: i386netbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386mach3.lo: i386mach3.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+i386os9k.lo: i386os9k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ libaout.h $(INCDIR)/os9k.h
+ieee.lo: ieee.c $(INCDIR)/filenames.h $(INCDIR)/ieee.h \
+ libieee.h
+m68k4knetbsd.lo: m68k4knetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+m68klinux.lo: m68klinux.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+m68klynx.lo: m68klynx.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+m68knetbsd.lo: m68knetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+m88kmach3.lo: m88kmach3.c $(INCDIR)/filenames.h libaout.h \
$(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-m68klinux.lo: m68klinux.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-m68klynx.lo: m68klynx.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-m68knetbsd.lo: m68knetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-m88kmach3.lo: m88kmach3.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-mipsbsd.lo: mipsbsd.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-newsos3.lo: newsos3.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-nlm.lo: nlm.c libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
- $(INCDIR)/nlm/external.h
-nlm32-i386.lo: nlm32-i386.c $(INCDIR)/nlm/i386-ext.h \
+mipsbsd.lo: mipsbsd.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+newsos3.lo: newsos3.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+nlm.lo: nlm.c $(INCDIR)/filenames.h libnlm.h $(INCDIR)/nlm/common.h \
+ $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
+nlm32-i386.lo: nlm32-i386.c $(INCDIR)/filenames.h $(INCDIR)/nlm/i386-ext.h \
libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
$(INCDIR)/nlm/external.h nlmswap.h nlm-target.h
-nlm32-sparc.lo: nlm32-sparc.c $(INCDIR)/nlm/sparc32-ext.h \
+nlm32-sparc.lo: nlm32-sparc.c $(INCDIR)/filenames.h \
+ $(INCDIR)/nlm/sparc32-ext.h libnlm.h $(INCDIR)/nlm/common.h \
+ $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h nlmswap.h \
+ nlm-target.h
+nlm32-ppc.lo: nlm32-ppc.c $(INCDIR)/filenames.h $(INCDIR)/nlm/ppc-ext.h \
libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
$(INCDIR)/nlm/external.h nlmswap.h nlm-target.h
-nlm32-ppc.lo: nlm32-ppc.c $(INCDIR)/nlm/ppc-ext.h libnlm.h \
- $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h \
- nlmswap.h nlm-target.h
-nlm32.lo: nlm32.c nlmcode.h libnlm.h $(INCDIR)/nlm/common.h \
- $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
-ns32knetbsd.lo: ns32knetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-oasys.lo: oasys.c $(INCDIR)/oasys.h liboasys.h
-pc532-mach.lo: pc532-mach.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-pe-arm.lo: pe-arm.c coff-arm.c $(INCDIR)/coff/arm.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-arm.lo: pei-arm.c coff-arm.c $(INCDIR)/coff/arm.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-i386.lo: pe-i386.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-i386.lo: pei-i386.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-mcore.lo: pe-mcore.c coff-mcore.c $(INCDIR)/coff/mcore.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-mcore.lo: pei-mcore.c coff-mcore.c $(INCDIR)/coff/mcore.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-ppc.lo: pe-ppc.c coff-ppc.c $(INCDIR)/coff/powerpc.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-ppc.lo: pei-ppc.c coff-ppc.c $(INCDIR)/coff/powerpc.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-sh.lo: pe-sh.c coff-sh.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- coffcode.h peicode.h libpei.h
-pei-sh.lo: pei-sh.c coff-sh.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- coffcode.h peicode.h libpei.h
-pe-mips.lo: pe-mips.c $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/internal.h \
+nlm32.lo: nlm32.c nlmcode.h $(INCDIR)/filenames.h libnlm.h \
+ $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
+ns32knetbsd.lo: ns32knetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+oasys.lo: oasys.c $(INCDIR)/filenames.h $(INCDIR)/oasys.h \
+ liboasys.h
+pc532-mach.lo: pc532-mach.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+pe-arm.lo: pe-arm.c $(INCDIR)/filenames.h coff-arm.c \
+ $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pei-arm.lo: pei-arm.c $(INCDIR)/filenames.h coff-arm.c \
+ $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pe-i386.lo: pe-i386.c $(INCDIR)/filenames.h coff-i386.c \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pei-i386.lo: pei-i386.c $(INCDIR)/filenames.h coff-i386.c \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pe-mcore.lo: pe-mcore.c $(INCDIR)/filenames.h coff-mcore.c \
+ $(INCDIR)/coff/mcore.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pei-mcore.lo: pei-mcore.c $(INCDIR)/filenames.h coff-mcore.c \
+ $(INCDIR)/coff/mcore.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pe-ppc.lo: pe-ppc.c $(INCDIR)/filenames.h coff-ppc.c \
+ $(INCDIR)/coff/powerpc.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+pei-ppc.lo: pei-ppc.c $(INCDIR)/filenames.h coff-ppc.c \
+ $(INCDIR)/coff/powerpc.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
peicode.h libpei.h
-pei-mips.lo: pei-mips.c pe-mips.c $(INCDIR)/coff/mipspe.h \
+pe-sh.lo: pe-sh.c $(INCDIR)/filenames.h coff-sh.c $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/sh.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h coffcode.h peicode.h libpei.h
+pei-sh.lo: pei-sh.c $(INCDIR)/filenames.h coff-sh.c \
+ $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h coffcode.h peicode.h \
+ libpei.h
+pe-mips.lo: pe-mips.c $(INCDIR)/filenames.h $(INCDIR)/coff/mipspe.h \
$(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
$(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-peigen.lo: peigen.c $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h libpei.h
-ppcboot.lo: ppcboot.c
-reloc16.lo: reloc16.c $(INCDIR)/bfdlink.h genlink.h \
- $(INCDIR)/coff/internal.h libcoff.h
-riscix.lo: riscix.c libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
- aout-target.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h
-sparclinux.lo: sparclinux.c $(INCDIR)/aout/aout64.h \
+pei-mips.lo: pei-mips.c $(INCDIR)/filenames.h pe-mips.c \
+ $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+peigen.lo: peigen.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/pe.h libcoff.h \
+ $(INCDIR)/bfdlink.h libpei.h
+ppcboot.lo: ppcboot.c $(INCDIR)/filenames.h
+reloc16.lo: reloc16.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h $(INCDIR)/coff/internal.h libcoff.h
+riscix.lo: riscix.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+sparclinux.lo: sparclinux.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
libaout.h $(INCDIR)/bfdlink.h aout-target.h
-sparclynx.lo: sparclynx.c $(INCDIR)/aout/sun4.h libaout.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
-sparcnetbsd.lo: sparcnetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-sunos.lo: sunos.c $(INCDIR)/bfdlink.h libaout.h aoutf1.h \
- $(INCDIR)/aout/sun4.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
-vaxnetbsd.lo: vaxnetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-versados.lo: versados.c $(INCDIR)/libiberty.h
-vms.lo: vms.c $(INCDIR)/bfdlink.h vms.h
-vms-gsd.lo: vms-gsd.c $(INCDIR)/bfdlink.h vms.h
-vms-hdr.lo: vms-hdr.c $(INCDIR)/bfdlink.h vms.h
-vms-misc.lo: vms-misc.c $(INCDIR)/bfdlink.h vms.h
-vms-tir.lo: vms-tir.c $(INCDIR)/bfdlink.h vms.h
-xcofflink.lo: xcofflink.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- libcoff.h
-aout64.lo: aout64.c aoutx.h $(INCDIR)/bfdlink.h libaout.h \
- $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h
-coff-alpha.lo: coff-alpha.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
- libecoff.h coffswap.h ecoffswap.h
-demo64.lo: demo64.c aoutf1.h $(INCDIR)/aout/sun4.h \
+sparclynx.lo: sparclynx.c $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h \
libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
aout-target.h
-elf64-alpha.lo: elf64-alpha.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \
+sparcnetbsd.lo: sparcnetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+sunos.lo: sunos.c $(INCDIR)/bfdlink.h libaout.h aoutf1.h \
+ $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ aout-target.h
+vaxnetbsd.lo: vaxnetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+versados.lo: versados.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+vms.lo: vms.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-gsd.lo: vms-gsd.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-hdr.lo: vms-hdr.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-misc.lo: vms-misc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-tir.lo: vms-tir.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+xcofflink.lo: xcofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/internal.h libcoff.h
+aout64.lo: aout64.c aoutx.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ libaout.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+coff-alpha.lo: coff-alpha.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
$(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
$(INCDIR)/coff/ecoff.h $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h \
- libcoff.h libecoff.h ecoffswap.h elf64-target.h
-elf64-gen.lo: elf64-gen.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- elf64-target.h
-elf64-mips.lo: elf64-mips.c $(INCDIR)/aout/ar.h $(INCDIR)/bfdlink.h \
- genlink.h elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
- $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/alpha.h ecoffswap.h \
- elf64-target.h
-elf64-sparc.lo: elf64-sparc.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ libcoff.h libecoff.h coffswap.h ecoffswap.h
+coff64-rs6000.lo: coff64-rs6000.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6k64.h libcoff.h \
+ $(INCDIR)/bfdlink.h xcoff-target.h coffcode.h coffswap.h
+demo64.lo: demo64.c aoutf1.h $(INCDIR)/filenames.h \
+ $(INCDIR)/aout/sun4.h libaout.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ar.h aout-target.h
+efi-app-ia64.lo: efi-app-ia64.c $(INCDIR)/filenames.h \
+ coff-ia64.c $(INCDIR)/coff/ia64.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+elf64-alpha.lo: elf64-alpha.c $(INCDIR)/filenames.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/alpha.h \
+ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
+ $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
+ libecoff.h ecoffswap.h elf64-target.h
+elf64-hppa.lo: elf64-hppa.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/reloc-macros.h \
+ libhppa.h elf64-hppa.h elf-hppa.h elf64-target.h
+elf64-ia64.lo: elf64-ia64.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \
+ $(INCDIR)/elf/reloc-macros.h elf64-target.h
+elf64-gen.lo: elf64-gen.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h elf64-target.h
+elf64-mips.lo: elf64-mips.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h \
+ $(INCDIR)/bfdlink.h genlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h \
+ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/alpha.h \
+ ecoffswap.h elf64-target.h
+elf64-sparc.lo: elf64-sparc.c $(INCDIR)/filenames.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/sparc.h \
$(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \
elf64-target.h
-elf64.lo: elf64.c elfcode.h $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- elfcore.h elflink.h
-nlm32-alpha.lo: nlm32-alpha.c $(INCDIR)/nlm/alpha-ext.h \
- libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
- $(INCDIR)/nlm/external.h nlmswap.h nlm-target.h
-nlm64.lo: nlm64.c nlmcode.h libnlm.h $(INCDIR)/nlm/common.h \
- $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
-aix386-core.lo: aix386-core.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h
-hpux-core.lo: hpux-core.c
-irix-core.lo: irix-core.c
-lynx-core.lo: lynx-core.c
-osf-core.lo: osf-core.c
-sco5-core.lo: sco5-core.c libaout.h $(INCDIR)/bfdlink.h
-trad-core.lo: trad-core.c libaout.h $(INCDIR)/bfdlink.h \
- hosts/i386linux.h
-cisco-core.lo: cisco-core.c
+elf64.lo: elf64.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h elfcore.h elflink.h
+nlm32-alpha.lo: nlm32-alpha.c $(INCDIR)/filenames.h \
+ $(INCDIR)/nlm/alpha-ext.h libnlm.h $(INCDIR)/nlm/common.h \
+ $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h nlmswap.h \
+ nlm-target.h
+nlm64.lo: nlm64.c nlmcode.h $(INCDIR)/filenames.h libnlm.h \
+ $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
+aix386-core.lo: aix386-core.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h
+hpux-core.lo: hpux-core.c $(INCDIR)/filenames.h
+irix-core.lo: irix-core.c $(INCDIR)/filenames.h
+lynx-core.lo: lynx-core.c $(INCDIR)/filenames.h
+osf-core.lo: osf-core.c $(INCDIR)/filenames.h
+sco5-core.lo: sco5-core.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h
+trad-core.lo: trad-core.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h
+cisco-core.lo: cisco-core.c $(INCDIR)/filenames.h
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/bfd/aoutx.h b/bfd/aoutx.h
index 01dd9eee4c0..4b0940d7ad5 100644
--- a/bfd/aoutx.h
+++ b/bfd/aoutx.h
@@ -1,5 +1,5 @@
/* BFD semi-generic back-end for a.out binaries.
- Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
Written by Cygnus Support.
@@ -2833,7 +2833,7 @@ NAME(aout,find_nearest_line)
}
if (main_file_name == NULL
- || main_file_name[0] == '/'
+ || IS_ABSOLUTE_PATH (main_file_name)
|| directory_name == NULL)
filelen = 0;
else
@@ -2857,7 +2857,7 @@ NAME(aout,find_nearest_line)
if (main_file_name != NULL)
{
- if (main_file_name[0] == '/' || directory_name == NULL)
+ if (IS_ABSOLUTE_PATH (main_file_name) || directory_name == NULL)
*filename_ptr = main_file_name;
else
{
diff --git a/bfd/archive.c b/bfd/archive.c
index 19293af4573..5709f26e272 100644
--- a/bfd/archive.c
+++ b/bfd/archive.c
@@ -1,5 +1,5 @@
/* BFD back-end for archive files (libraries).
- Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
Written by Cygnus Support. Mostly Gumby Henkel-Wallace's fault.
@@ -894,10 +894,10 @@ do_slurp_coff_armap (abfd)
bfd_seek (abfd, ardata->first_file_filepos, SEEK_SET);
tmp = (struct areltdata *) _bfd_read_ar_hdr (abfd);
- if (tmp != NULL)
+ if (tmp != NULL)
{
if (tmp->arch_header[0] == '/'
- && tmp->arch_header[1] == ' ')
+ && tmp->arch_header[1] == ' ')
{
ardata->first_file_filepos +=
(tmp->parsed_size + sizeof(struct ar_hdr) + 1) & ~1;
@@ -1183,6 +1183,17 @@ normalize (abfd, file)
{
const char *filename = strrchr (file, '/');
+
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ {
+ /* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
+ char *bslash = strrchr (file, '\\');
+ if (bslash > filename)
+ filename = bslash;
+ if (filename == NULL && file[0] != '\0' && file[1] == ':')
+ filename = file + 1;
+ }
+#endif
if (filename != (char *) NULL)
filename++;
else
@@ -1340,6 +1351,23 @@ _bfd_construct_extended_name_table (abfd, trailing_slash, tabloc, tablen)
/** A couple of functions for creating ar_hdrs */
+#ifdef HPUX_LARGE_AR_IDS
+/* Function to encode large UID/GID values according to HP. */
+static void
+hpux_uid_gid_encode (str, id)
+ char str[6];
+ long int id;
+{
+ int cnt;
+
+ str[5] = '@' + (id & 3);
+ id >>= 2;
+
+ for (cnt = 4; cnt >= 0; ++cnt, id >>= 6)
+ str[cnt] = ' ' + (id & 0x3f);
+}
+#endif /* HPUX_LARGE_AR_IDS */
+
#ifndef HAVE_GETUID
#define getuid() 0
#endif
@@ -1393,7 +1421,21 @@ bfd_ar_hdr_from_filesystem (abfd, filename, member)
/* Goddamned sprintf doesn't permit MAXIMUM field lengths */
sprintf ((hdr->ar_date), "%-12ld", (long) status.st_mtime);
- sprintf ((hdr->ar_uid), "%ld", (long) status.st_uid);
+#ifdef HPUX_LARGE_AR_IDS
+ /* HP has a very "special" way to handle UID/GID's with numeric values
+ > 99999. */
+ if (status.st_uid > 99999)
+ hpux_uid_gid_encode (hdr->ar_gid, (long) status.st_uid);
+ else
+#endif
+ sprintf ((hdr->ar_uid), "%ld", (long) status.st_uid);
+#ifdef HPUX_LARGE_AR_IDS
+ /* HP has a very "special" way to handle UID/GID's with numeric values
+ > 99999. */
+ if (status.st_gid > 99999)
+ hpux_uid_gid_encode (hdr->ar_uid, (long) status.st_gid);
+ else
+#endif
sprintf ((hdr->ar_gid), "%ld", (long) status.st_gid);
sprintf ((hdr->ar_mode), "%-8o", (unsigned int) status.st_mode);
sprintf ((hdr->ar_size), "%-10ld", (long) status.st_size);
@@ -1453,10 +1495,30 @@ bfd_generic_stat_arch_elt (abfd, buf)
#define foo(arelt, stelt, size) \
buf->stelt = strtol (hdr->arelt, &aloser, size); \
if (aloser == hdr->arelt) return -1;
+ /* Some platforms support special notations for large IDs. */
+#ifdef HPUX_LARGE_AR_IDS
+# define foo2(arelt, stelt, size) \
+ if (hdr->arelt[5] == ' ') { foo (arelt, stelt, size); } \
+ else { \
+ int cnt; \
+ for (buf->stelt = cnt = 0; cnt < 5; ++cnt) \
+ { \
+ if (hdr->arelt[cnt] < ' ' || hdr->arelt[cnt] > ' ' + 0x3f) \
+ return -1; \
+ buf->stelt <<= 6; \
+ buf->stelt += hdr->arelt[cnt] - ' '; \
+ } \
+ if (hdr->arelt[5] < '@' || hdr->arelt[5] > '@' + 3) return -1; \
+ buf->stelt <<= 2; \
+ buf->stelt += hdr->arelt[5] - '@'; \
+ }
+#else
+# define foo2(arelt, stelt, size) foo (arelt, stelt, size)
+#endif
foo (ar_date, st_mtime, 10);
- foo (ar_uid, st_uid, 10);
- foo (ar_gid, st_gid, 10);
+ foo2 (ar_uid, st_uid, 10);
+ foo2 (ar_gid, st_gid, 10);
foo (ar_mode, st_mode, 8);
buf->st_size = arch_eltdata (abfd)->parsed_size;
@@ -1515,6 +1577,17 @@ bfd_bsd_truncate_arname (abfd, pathname, arhdr)
CONST char *filename = strrchr (pathname, '/');
int maxlen = ar_maxnamelen (abfd);
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ {
+ /* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
+ char *bslash = strrchr (pathname, '\\');
+ if (bslash > filename)
+ filename = bslash;
+ if (filename == NULL && pathname[0] != '\0' && pathname[1] == ':')
+ filename = pathname + 1;
+ }
+#endif
+
if (filename == NULL)
filename = pathname;
else
@@ -1555,6 +1628,17 @@ bfd_gnu_truncate_arname (abfd, pathname, arhdr)
CONST char *filename = strrchr (pathname, '/');
int maxlen = ar_maxnamelen (abfd);
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ {
+ /* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
+ char *bslash = strrchr (pathname, '\\');
+ if (bslash > filename)
+ filename = bslash;
+ if (filename == NULL && pathname[0] != '\0' && pathname[1] == ':')
+ filename = pathname + 1;
+ }
+#endif
+
if (filename == NULL)
filename = pathname;
else
diff --git a/bfd/archures.c b/bfd/archures.c
index d24ee820b7d..536f2b1358d 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -199,6 +199,7 @@ DESCRIPTION
. bfd_arch_fr30,
.#define bfd_mach_fr30 0x46523330
. bfd_arch_mcore,
+. bfd_arch_ia64, {* HP/Intel ia64 *}
. bfd_arch_pj,
. bfd_arch_avr, {* Atmel AVR microcontrollers *}
.#define bfd_mach_avr1 1
@@ -279,6 +280,7 @@ extern const bfd_arch_info_type bfd_v850_arch;
extern const bfd_arch_info_type bfd_fr30_arch;
extern const bfd_arch_info_type bfd_mcore_arch;
extern const bfd_arch_info_type bfd_avr_arch;
+extern const bfd_arch_info_type bfd_ia64_arch;
static const bfd_arch_info_type * const bfd_archures_list[] =
{
@@ -320,6 +322,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
&bfd_fr30_arch,
&bfd_mcore_arch,
&bfd_avr_arch,
+ &bfd_ia64_arch,
#endif
0
};
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
index 1f67c0c3a25..dc172bf7dac 100644
--- a/bfd/bfd-in.h
+++ b/bfd/bfd-in.h
@@ -89,7 +89,7 @@ typedef struct _bfd bfd;
/* Yup, SVR4 has a "typedef enum boolean" in <sys/types.h> -fnf */
/* It gets worse if the host also defines a true/false enum... -sts */
/* And even worse if your compiler has built-in boolean types... -law */
-#if defined (__GNUG__) && (__GNUC_MINOR__ > 5)
+#if defined (__GNUG__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6))
#define TRUE_FALSE_ALREADY_DEFINED
#endif
#ifdef MPW
@@ -640,6 +640,9 @@ extern long bfd_get_elf_phdr_upper_bound PARAMS ((bfd *abfd));
error occurs; bfd_get_error will return an appropriate code. */
extern int bfd_get_elf_phdrs PARAMS ((bfd *abfd, void *phdrs));
+/* Return the arch_size field of an elf bfd, or -1 if not elf. */
+extern int bfd_elf_get_arch_size PARAMS ((bfd *));
+
/* SunOS shared library support routines for the linker. */
extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
@@ -748,4 +751,11 @@ extern boolean bfd_elf32_arm_process_before_allocation
extern boolean bfd_elf32_arm_get_bfd_for_interworking
PARAMS ((bfd *, struct bfd_link_info *));
+/* TI COFF load page support. */
+extern void bfd_ticoff_set_section_load_page
+ PARAMS ((struct sec *, int));
+
+extern int bfd_ticoff_get_section_load_page
+ PARAMS ((struct sec *));
+
/* And more from the source. */
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 79080cbaad5..a3f6d8cf675 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -89,7 +89,7 @@ typedef struct _bfd bfd;
/* Yup, SVR4 has a "typedef enum boolean" in <sys/types.h> -fnf */
/* It gets worse if the host also defines a true/false enum... -sts */
/* And even worse if your compiler has built-in boolean types... -law */
-#if defined (__GNUG__) && (__GNUC_MINOR__ > 5)
+#if defined (__GNUG__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6))
#define TRUE_FALSE_ALREADY_DEFINED
#endif
#ifdef MPW
@@ -640,6 +640,9 @@ extern long bfd_get_elf_phdr_upper_bound PARAMS ((bfd *abfd));
error occurs; bfd_get_error will return an appropriate code. */
extern int bfd_get_elf_phdrs PARAMS ((bfd *abfd, void *phdrs));
+/* Return the arch_size field of an elf bfd, or -1 if not elf. */
+extern int bfd_elf_get_arch_size PARAMS ((bfd *));
+
/* SunOS shared library support routines for the linker. */
extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
@@ -748,6 +751,13 @@ extern boolean bfd_elf32_arm_process_before_allocation
extern boolean bfd_elf32_arm_get_bfd_for_interworking
PARAMS ((bfd *, struct bfd_link_info *));
+/* TI COFF load page support. */
+extern void bfd_ticoff_set_section_load_page
+ PARAMS ((struct sec *, int));
+
+extern int bfd_ticoff_get_section_load_page
+ PARAMS ((struct sec *));
+
/* And more from the source. */
void
bfd_init PARAMS ((void));
@@ -1058,9 +1068,9 @@ typedef struct sec
#define SEC_SHARED 0x4000000
/* When a section with this flag is being linked, then if the size of
- the input section is less than a page, it should not cross a page
- boundary. If the size of the input section is one page or more, it
- should be aligned on a page boundary. */
+ the input section is less than a page, it should not cross a page
+ boundary. If the size of the input section is one page or more, it
+ should be aligned on a page boundary. */
#define SEC_BLOCK 0x8000000
/* Conditionally link this section; do not link if there are no
@@ -1425,6 +1435,7 @@ enum bfd_architecture
bfd_arch_fr30,
#define bfd_mach_fr30 0x46523330
bfd_arch_mcore,
+ bfd_arch_ia64, /* HP/Intel ia64 */
bfd_arch_pj,
bfd_arch_avr, /* Atmel AVR microcontrollers */
#define bfd_mach_avr1 1
@@ -2441,6 +2452,75 @@ is stored in the reloc's addend. For Rel hosts, we are forced to put
this offset in the reloc's section offset. */
BFD_RELOC_VTABLE_INHERIT,
BFD_RELOC_VTABLE_ENTRY,
+
+/* Intel IA64 Relocations. */
+ BFD_RELOC_IA64_IMM14,
+ BFD_RELOC_IA64_IMM22,
+ BFD_RELOC_IA64_IMM64,
+ BFD_RELOC_IA64_DIR32MSB,
+ BFD_RELOC_IA64_DIR32LSB,
+ BFD_RELOC_IA64_DIR64MSB,
+ BFD_RELOC_IA64_DIR64LSB,
+ BFD_RELOC_IA64_GPREL22,
+ BFD_RELOC_IA64_GPREL64I,
+ BFD_RELOC_IA64_GPREL32MSB,
+ BFD_RELOC_IA64_GPREL32LSB,
+ BFD_RELOC_IA64_GPREL64MSB,
+ BFD_RELOC_IA64_GPREL64LSB,
+ BFD_RELOC_IA64_LTOFF22,
+ BFD_RELOC_IA64_LTOFF64I,
+ BFD_RELOC_IA64_PLTOFF22,
+ BFD_RELOC_IA64_PLTOFF64I,
+ BFD_RELOC_IA64_PLTOFF64MSB,
+ BFD_RELOC_IA64_PLTOFF64LSB,
+ BFD_RELOC_IA64_FPTR64I,
+ BFD_RELOC_IA64_FPTR32MSB,
+ BFD_RELOC_IA64_FPTR32LSB,
+ BFD_RELOC_IA64_FPTR64MSB,
+ BFD_RELOC_IA64_FPTR64LSB,
+ BFD_RELOC_IA64_PCREL21B,
+ BFD_RELOC_IA64_PCREL21BI,
+ BFD_RELOC_IA64_PCREL21M,
+ BFD_RELOC_IA64_PCREL21F,
+ BFD_RELOC_IA64_PCREL22,
+ BFD_RELOC_IA64_PCREL60B,
+ BFD_RELOC_IA64_PCREL64I,
+ BFD_RELOC_IA64_PCREL32MSB,
+ BFD_RELOC_IA64_PCREL32LSB,
+ BFD_RELOC_IA64_PCREL64MSB,
+ BFD_RELOC_IA64_PCREL64LSB,
+ BFD_RELOC_IA64_LTOFF_FPTR22,
+ BFD_RELOC_IA64_LTOFF_FPTR64I,
+ BFD_RELOC_IA64_LTOFF_FPTR64MSB,
+ BFD_RELOC_IA64_LTOFF_FPTR64LSB,
+ BFD_RELOC_IA64_SEGBASE,
+ BFD_RELOC_IA64_SEGREL32MSB,
+ BFD_RELOC_IA64_SEGREL32LSB,
+ BFD_RELOC_IA64_SEGREL64MSB,
+ BFD_RELOC_IA64_SEGREL64LSB,
+ BFD_RELOC_IA64_SECREL32MSB,
+ BFD_RELOC_IA64_SECREL32LSB,
+ BFD_RELOC_IA64_SECREL64MSB,
+ BFD_RELOC_IA64_SECREL64LSB,
+ BFD_RELOC_IA64_REL32MSB,
+ BFD_RELOC_IA64_REL32LSB,
+ BFD_RELOC_IA64_REL64MSB,
+ BFD_RELOC_IA64_REL64LSB,
+ BFD_RELOC_IA64_LTV32MSB,
+ BFD_RELOC_IA64_LTV32LSB,
+ BFD_RELOC_IA64_LTV64MSB,
+ BFD_RELOC_IA64_LTV64LSB,
+ BFD_RELOC_IA64_IPLTMSB,
+ BFD_RELOC_IA64_IPLTLSB,
+ BFD_RELOC_IA64_EPLTMSB,
+ BFD_RELOC_IA64_EPLTLSB,
+ BFD_RELOC_IA64_COPY,
+ BFD_RELOC_IA64_TPREL22,
+ BFD_RELOC_IA64_TPREL64MSB,
+ BFD_RELOC_IA64_TPREL64LSB,
+ BFD_RELOC_IA64_LTOFF_TP22,
+ BFD_RELOC_IA64_LTOFF22X,
+ BFD_RELOC_IA64_LDXMOV,
BFD_RELOC_UNUSED };
typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
reloc_howto_type *
diff --git a/bfd/cache.c b/bfd/cache.c
index ad3140e1ed7..91b6c610854 100644
--- a/bfd/cache.c
+++ b/bfd/cache.c
@@ -1,5 +1,6 @@
/* BFD library -- caching of file descriptors.
- Copyright 1990, 91, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
+ Copyright 1990, 91, 92, 93, 94, 95, 1996, 2000
+ Free Software Foundation, Inc.
Hacked by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
This file is part of BFD, the Binary File Descriptor library.
@@ -300,10 +301,17 @@ bfd_open_file (abfd)
So we unlink the output file if and only if it has
non-zero size. */
+#ifndef __MSDOS__
+ /* Don't do this for MSDOS: it doesn't care about overwriting
+ a running binary, but if this file is already open by
+ another BFD, we will be in deep trouble if we delete an
+ open file. In fact, objdump does just that if invoked with
+ the --info option. */
struct stat s;
if (stat (abfd->filename, &s) == 0 && s.st_size != 0)
unlink (abfd->filename);
+#endif
abfd->iostream = (PTR) fopen (abfd->filename, FOPEN_WB);
abfd->opened_once = true;
}
diff --git a/bfd/coff-a29k.c b/bfd/coff-a29k.c
index 0374b20b473..26d3c6401f2 100644
--- a/bfd/coff-a29k.c
+++ b/bfd/coff-a29k.c
@@ -1,5 +1,5 @@
/* BFD back-end for AMD 29000 COFF binaries.
- Copyright 1990, 91, 92, 93, 94, 95, 97, 98, 1999
+ Copyright 1990, 91, 92, 93, 94, 95, 97, 98, 99, 2000
Free Software Foundation, Inc.
Contributed by David Wood at New York University 7/8/91.
@@ -43,9 +43,9 @@ static boolean coff_a29k_adjust_symndx
#define INSERT_HWORD(WORD,HWORD) \
(((WORD) & 0xff00ff00) | (((HWORD) & 0xff00) << 8) | ((HWORD)& 0xff))
#define EXTRACT_HWORD(WORD) \
- ((((WORD) & 0x00ff0000) >> 8) | ((WORD)& 0xff))
+ ((((WORD) & 0x00ff0000) >> 8) | ((WORD) & 0xff))
#define SIGN_EXTEND_HWORD(HWORD) \
- ((HWORD) & 0x8000 ? (HWORD)|(~0xffffL) : (HWORD))
+ (((HWORD) ^ 0x8000) - 0x8000)
/* Provided the symbol, returns the value reffed */
static long
diff --git a/bfd/coff-alpha.c b/bfd/coff-alpha.c
index 6bbc279aeea..79b8023d31d 100644
--- a/bfd/coff-alpha.c
+++ b/bfd/coff-alpha.c
@@ -2266,7 +2266,7 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data =
(unsigned (*) PARAMS ((bfd *,PTR,PTR))) bfd_void, /* reloc_out */
alpha_ecoff_swap_filehdr_out, alpha_ecoff_swap_aouthdr_out,
alpha_ecoff_swap_scnhdr_out,
- FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, true, false, 4,
+ FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, true, false, 4, false, 2,
alpha_ecoff_swap_filehdr_in, alpha_ecoff_swap_aouthdr_in,
alpha_ecoff_swap_scnhdr_in, NULL,
alpha_ecoff_bad_format_hook, _bfd_ecoff_set_arch_mach_hook,
diff --git a/bfd/coff-go32.c b/bfd/coff-go32.c
index a6b28e12eb4..720f4be1424 100644
--- a/bfd/coff-go32.c
+++ b/bfd/coff-go32.c
@@ -29,6 +29,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
{ COFF_SECTION_NAME_EXACT_MATCH (".text"), \
COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".bss"), \
+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
{ COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.d"), \
COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
{ COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.t"), \
diff --git a/bfd/coff-ia64.c b/bfd/coff-ia64.c
new file mode 100644
index 00000000000..df867e73717
--- /dev/null
+++ b/bfd/coff-ia64.c
@@ -0,0 +1,198 @@
+/* BFD back-end for HP/Intel IA-64 COFF files.
+ Copyright 1999 Free Software Foundation, Inc.
+ Contributed by David Mosberger <davidm@hpl.hp.com>
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+
+#include "coff/ia64.h"
+
+#include "coff/internal.h"
+
+#include "coff/pe.h"
+
+#include "libcoff.h"
+
+#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2)
+/* The page size is a guess based on ELF. */
+
+#define COFF_PAGE_SIZE 0x1000
+
+static reloc_howto_type howto_table[] =
+{
+ {0},
+};
+
+#define BADMAG(x) IA64BADMAG(x)
+#define IA64 1 /* Customize coffcode.h */
+
+#ifdef COFF_WITH_PEP64
+# undef AOUTSZ
+# define AOUTSZ PEP64AOUTSZ
+# define PEAOUTHDR PEP64AOUTHDR
+#endif
+
+#define RTYPE2HOWTO(cache_ptr, dst) \
+ (cache_ptr)->howto = howto_table + (dst)->r_type;
+
+#ifdef COFF_WITH_PE
+/* Return true if this relocation should
+ appear in the output .reloc section. */
+
+static boolean
+in_reloc_p(abfd, howto)
+ bfd * abfd;
+ reloc_howto_type *howto;
+{
+ return 0; /* We don't do relocs for now... */
+}
+#endif
+
+#include "coffcode.h"
+
+static const bfd_target *
+ia64coff_object_p (abfd)
+ bfd *abfd;
+{
+#ifdef COFF_IMAGE_WITH_PE
+ /* We need to hack badly to handle a PE image correctly. In PE
+ images created by the GNU linker, the offset to the COFF header
+ is always the size. However, this is not the case in images
+ generated by other PE linkers. The PE format stores a four byte
+ offset to the PE signature just before the COFF header at
+ location 0x3c of the file. We pick up that offset, verify that
+ the PE signature is there, and then set ourselves up to read in
+ the COFF header. */
+ {
+ bfd_byte ext_offset[4];
+ file_ptr offset;
+ bfd_byte ext_signature[4];
+ unsigned long signature;
+
+ if (bfd_seek (abfd, 0x3c, SEEK_SET) != 0
+ || bfd_read (ext_offset, 1, 4, abfd) != 4)
+ {
+ if (bfd_get_error () != bfd_error_system_call)
+ bfd_set_error (bfd_error_wrong_format);
+ return NULL;
+ }
+ offset = bfd_h_get_32 (abfd, ext_offset);
+ if (bfd_seek (abfd, offset, SEEK_SET) != 0
+ || bfd_read (ext_signature, 1, 4, abfd) != 4)
+ {
+ if (bfd_get_error () != bfd_error_system_call)
+ bfd_set_error (bfd_error_wrong_format);
+ return NULL;
+ }
+ signature = bfd_h_get_32 (abfd, ext_signature);
+
+ if (signature != 0x4550)
+ {
+ bfd_set_error (bfd_error_wrong_format);
+ return NULL;
+ }
+
+ /* Here is the hack. coff_object_p wants to read filhsz bytes to
+ pick up the COFF header. We adjust so that that will work. 20
+ is the size of the COFF filehdr. */
+
+ if (bfd_seek (abfd,
+ (bfd_tell (abfd)
+ - bfd_coff_filhsz (abfd)
+ + 20),
+ SEEK_SET)
+ != 0)
+ {
+ if (bfd_get_error () != bfd_error_system_call)
+ bfd_set_error (bfd_error_wrong_format);
+ return NULL;
+ }
+ }
+#endif
+
+ return coff_object_p (abfd);
+}
+
+const bfd_target
+#ifdef TARGET_SYM
+ TARGET_SYM =
+#else
+ ia64coff_vec =
+#endif
+{
+#ifdef TARGET_NAME
+ TARGET_NAME,
+#else
+ "coff-ia64", /* name */
+#endif
+ bfd_target_coff_flavour,
+ BFD_ENDIAN_LITTLE, /* data byte order is little */
+ BFD_ENDIAN_LITTLE, /* header byte order is little */
+
+ (HAS_RELOC | EXEC_P | /* object flags */
+ HAS_LINENO | HAS_DEBUG |
+ HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
+
+#ifndef COFF_WITH_PE
+ (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC /* section flags */
+ | SEC_CODE | SEC_DATA),
+#else
+ (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC /* section flags */
+ | SEC_CODE | SEC_DATA
+ | SEC_LINK_ONCE | SEC_LINK_DUPLICATES),
+#endif
+
+#ifdef TARGET_UNDERSCORE
+ TARGET_UNDERSCORE, /* leading underscore */
+#else
+ 0, /* leading underscore */
+#endif
+ '/', /* ar_pad_char */
+ 15, /* ar_max_namelen */
+
+ bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+ bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+ bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
+ bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+ bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+ bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
+
+/* Note that we allow an object file to be treated as a core file as well. */
+ {_bfd_dummy_target, ia64coff_object_p, /* bfd_check_format */
+ bfd_generic_archive_p, ia64coff_object_p},
+ {bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */
+ bfd_false},
+ {bfd_false, coff_write_object_contents, /* bfd_write_contents */
+ _bfd_write_archive_contents, bfd_false},
+
+ BFD_JUMP_TABLE_GENERIC (coff),
+ BFD_JUMP_TABLE_COPY (coff),
+ BFD_JUMP_TABLE_CORE (_bfd_nocore),
+ BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
+ BFD_JUMP_TABLE_SYMBOLS (coff),
+ BFD_JUMP_TABLE_RELOCS (coff),
+ BFD_JUMP_TABLE_WRITE (coff),
+ BFD_JUMP_TABLE_LINK (coff),
+ BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
+
+ NULL,
+
+ COFF_SWAP_TABLE
+};
diff --git a/bfd/coff-mips.c b/bfd/coff-mips.c
index bb4b15e96c2..dd7ace5ecdd 100644
--- a/bfd/coff-mips.c
+++ b/bfd/coff-mips.c
@@ -1,5 +1,5 @@
/* BFD back-end for MIPS Extended-Coff files.
- Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
Original version by Per Bothner.
Full support added by Ian Lance Taylor, ian@cygnus.com.
@@ -910,7 +910,7 @@ mips_gprel_reloc (abfd,
reloc_entry->address += input_section->output_offset;
/* Make sure it fit in 16 bits. */
- if (val >= 0x8000 && val < 0xffff8000)
+ if ((long) val >= 0x8000 || (long) val < -0x8000)
return bfd_reloc_overflow;
return bfd_reloc_ok;
@@ -2505,7 +2505,7 @@ static const struct ecoff_backend_data mips_ecoff_backend_data =
(unsigned (*) PARAMS ((bfd *,PTR,PTR))) bfd_void, /* reloc_out */
mips_ecoff_swap_filehdr_out, mips_ecoff_swap_aouthdr_out,
mips_ecoff_swap_scnhdr_out,
- FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, true, false, 4,
+ FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, true, false, 4, false, 2,
mips_ecoff_swap_filehdr_in, mips_ecoff_swap_aouthdr_in,
mips_ecoff_swap_scnhdr_in, NULL,
mips_ecoff_bad_format_hook, _bfd_ecoff_set_arch_mach_hook,
diff --git a/bfd/coff-pmac.c b/bfd/coff-pmac.c
index f3332d98959..790160b7de5 100644
--- a/bfd/coff-pmac.c
+++ b/bfd/coff-pmac.c
@@ -17,11 +17,20 @@ 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. */
-#define TARGET_SYM pmac_xcoff_vec
-#define TARGET_NAME "xcoff-powermac"
/* Tweak coffcode.h based on this being a PowerMac instead of RS/6000. */
#define POWERMAC
-#include "coff-rs6000.c"
+#define TARGET_SYM pmac_xcoff_vec
+#define TARGET_NAME "xcoff-powermac"
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+#include "coff/internal.h"
+#include "coff/rs6000.h"
+#include "libcoff.h"
+#include "xcoff-target.h"
+
+
diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c
index 6f8563f911b..46894001a7b 100644
--- a/bfd/coff-rs6000.c
+++ b/bfd/coff-rs6000.c
@@ -26,8 +26,6 @@ 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. */
-/* Internalcoff.h and coffcode.h modify themselves based on this flag. */
-#define RS6000COFF_C 1
#include "bfd.h"
#include "sysdep.h"
@@ -35,32 +33,20 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "coff/internal.h"
#include "coff/rs6000.h"
#include "libcoff.h"
+#define TARGET_NAME "aixcoff-rs6000"
+#define TARGET_SYM rs6000coff_vec
+#include "xcoff-target.h"
+
/* The main body of code is in coffcode.h. */
-static boolean xcoff_mkobject PARAMS ((bfd *));
-static boolean xcoff_copy_private_bfd_data PARAMS ((bfd *, bfd *));
-static boolean xcoff_is_local_label_name PARAMS ((bfd *, const char *));
-static void xcoff_rtype2howto
- PARAMS ((arelent *, struct internal_reloc *));
-static reloc_howto_type *xcoff_reloc_type_lookup
- PARAMS ((bfd *, bfd_reloc_code_real_type));
-static boolean xcoff_slurp_armap PARAMS ((bfd *));
-static const bfd_target *xcoff_archive_p PARAMS ((bfd *));
-static PTR xcoff_read_ar_hdr PARAMS ((bfd *));
-static bfd *xcoff_openr_next_archived_file PARAMS ((bfd *, bfd *));
-static int xcoff_generic_stat_arch_elt PARAMS ((bfd *, struct stat *));
static const char *normalize_filename PARAMS ((bfd *));
-static boolean xcoff_write_armap
- PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int));
-static boolean xcoff_write_archive_contents PARAMS ((bfd *));
-static int _bfd_xcoff_sizeof_headers PARAMS ((bfd *, boolean));
-
+
/* We use our own tdata type. Its first field is the COFF tdata type,
so the COFF routines are compatible. */
-static boolean
-xcoff_mkobject (abfd)
+boolean
+_bfd_xcoff_mkobject (abfd)
bfd *abfd;
{
coff_data_type *coff;
@@ -90,8 +76,8 @@ xcoff_mkobject (abfd)
/* Copy XCOFF data from one BFD to another. */
-static boolean
-xcoff_copy_private_bfd_data (ibfd, obfd)
+boolean
+_bfd_xcoff_copy_private_bfd_data (ibfd, obfd)
bfd *ibfd;
bfd *obfd;
{
@@ -138,21 +124,304 @@ xcoff_copy_private_bfd_data (ibfd, obfd)
The AIX native linker does not have a -X option, and it ignores the
-x option. */
-static boolean
-xcoff_is_local_label_name (abfd, name)
+boolean
+_bfd_xcoff_is_local_label_name (abfd, name)
bfd *abfd ATTRIBUTE_UNUSED;
const char *name ATTRIBUTE_UNUSED;
{
return false;
}
+
+
+void
+_bfd_xcoff_swap_sym_in (abfd, ext1, in1)
+ bfd *abfd;
+ PTR ext1;
+ PTR in1;
+{
+ SYMENT *ext = (SYMENT *)ext1;
+ struct internal_syment *in = (struct internal_syment *)in1;
+
+
+ if(ext->e.e_name[0] != 0)
+ {
+ memcpy(in->_n._n_name, ext->e.e_name, SYMNMLEN);
+ }
+ else
+ {
+ in->_n._n_n._n_zeroes = 0;
+ in->_n._n_n._n_offset =
+ bfd_h_get_32(abfd, (bfd_byte *) ext->e.e.e_offset);
+ }
+
+ in->n_value = bfd_h_get_32(abfd, (bfd_byte *) ext->e_value);
+ in->n_scnum = bfd_h_get_16(abfd, (bfd_byte *) ext->e_scnum);
+ in->n_type = bfd_h_get_16(abfd, (bfd_byte *) ext->e_type);
+ in->n_sclass = bfd_h_get_8(abfd, ext->e_sclass);
+ in->n_numaux = bfd_h_get_8(abfd, ext->e_numaux);
+}
+
+unsigned int
+_bfd_xcoff_swap_sym_out (abfd, inp, extp)
+ bfd *abfd;
+ PTR inp;
+ PTR extp;
+{
+ struct internal_syment *in = (struct internal_syment *)inp;
+ SYMENT *ext =(SYMENT *)extp;
+
+ if(in->_n._n_name[0] != 0)
+ {
+ memcpy(ext->e.e_name, in->_n._n_name, SYMNMLEN);
+ }
+ else
+ {
+ bfd_h_put_32(abfd, 0, (bfd_byte *) ext->e.e.e_zeroes);
+ bfd_h_put_32(abfd, in->_n._n_n._n_offset,
+ (bfd_byte *) ext->e.e.e_offset);
+ }
+
+ bfd_h_put_32(abfd, in->n_value , (bfd_byte *) ext->e_value);
+ bfd_h_put_16(abfd, in->n_scnum , (bfd_byte *) ext->e_scnum);
+ bfd_h_put_16(abfd, in->n_type , (bfd_byte *) ext->e_type);
+ bfd_h_put_8(abfd, in->n_sclass , ext->e_sclass);
+ bfd_h_put_8(abfd, in->n_numaux , ext->e_numaux);
+ return bfd_coff_symesz (abfd);
+}
+
+#define PUTWORD bfd_h_put_32
+#define PUTHALF bfd_h_put_16
+#define PUTBYTE bfd_h_put_8
+#define GETWORD bfd_h_get_32
+#define GETHALF bfd_h_get_16
+#define GETBYTE bfd_h_get_8
+
+void
+_bfd_xcoff_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
+ bfd *abfd;
+ PTR ext1;
+ int type;
+ int class;
+ int indx;
+ int numaux;
+ PTR in1;
+{
+ AUXENT *ext = (AUXENT *)ext1;
+ union internal_auxent *in = (union internal_auxent *)in1;
+
+ switch (class) {
+ case C_FILE:
+ if (ext->x_file.x_fname[0] == 0) {
+ in->x_file.x_n.x_zeroes = 0;
+ in->x_file.x_n.x_offset =
+ bfd_h_get_32(abfd, (bfd_byte *) ext->x_file.x_n.x_offset);
+ } else {
+ if (numaux > 1)
+ {
+ if (indx == 0)
+ memcpy (in->x_file.x_fname, ext->x_file.x_fname,
+ numaux * sizeof (AUXENT));
+ }
+ else
+ {
+ memcpy (in->x_file.x_fname, ext->x_file.x_fname, FILNMLEN);
+ }
+ }
+ goto end;
+
+ /* RS/6000 "csect" auxents */
+ case C_EXT:
+ case C_HIDEXT:
+ if (indx + 1 == numaux)
+ {
+ in->x_csect.x_scnlen.l =
+ bfd_h_get_32 (abfd, ext->x_csect.x_scnlen);
+ in->x_csect.x_parmhash = bfd_h_get_32 (abfd,
+ ext->x_csect.x_parmhash);
+ in->x_csect.x_snhash = bfd_h_get_16 (abfd, ext->x_csect.x_snhash);
+ /* We don't have to hack bitfields in x_smtyp because it's
+ defined by shifts-and-ands, which are equivalent on all
+ byte orders. */
+ in->x_csect.x_smtyp = bfd_h_get_8 (abfd, ext->x_csect.x_smtyp);
+ in->x_csect.x_smclas = bfd_h_get_8 (abfd, ext->x_csect.x_smclas);
+ in->x_csect.x_stab = bfd_h_get_32 (abfd, ext->x_csect.x_stab);
+ in->x_csect.x_snstab = bfd_h_get_16 (abfd, ext->x_csect.x_snstab);
+ goto end;
+ }
+ break;
+
+ case C_STAT:
+ case C_LEAFSTAT:
+ case C_HIDDEN:
+ if (type == T_NULL) {
+ in->x_scn.x_scnlen = bfd_h_get_32(abfd,
+ (bfd_byte *) ext->x_scn.x_scnlen);
+ in->x_scn.x_nreloc = bfd_h_get_16(abfd,
+ (bfd_byte *) ext->x_scn.x_nreloc);
+ in->x_scn.x_nlinno = bfd_h_get_16(abfd,
+ (bfd_byte *) ext->x_scn.x_nlinno);
+ /* PE defines some extra fields; we zero them out for
+ safety. */
+ in->x_scn.x_checksum = 0;
+ in->x_scn.x_associated = 0;
+ in->x_scn.x_comdat = 0;
+
+ goto end;
+ }
+ break;
+ }
+
+ in->x_sym.x_tagndx.l = bfd_h_get_32(abfd, (bfd_byte *) ext->x_sym.x_tagndx);
+ in->x_sym.x_tvndx = bfd_h_get_16(abfd, (bfd_byte *) ext->x_sym.x_tvndx);
+
+ if (class == C_BLOCK || class == C_FCN || ISFCN (type) || ISTAG (class))
+ {
+ in->x_sym.x_fcnary.x_fcn.x_lnnoptr = bfd_h_get_32(abfd, (bfd_byte *)
+ ext->x_sym.x_fcnary.x_fcn.x_lnnoptr);
+ in->x_sym.x_fcnary.x_fcn.x_endndx.l = bfd_h_get_32(abfd, (bfd_byte *)
+ ext->x_sym.x_fcnary.x_fcn.x_endndx);
+ }
+ else
+ {
+ in->x_sym.x_fcnary.x_ary.x_dimen[0] =
+ bfd_h_get_16 (abfd, (bfd_byte *) ext->x_sym.x_fcnary.x_ary.x_dimen[0]);
+ in->x_sym.x_fcnary.x_ary.x_dimen[1] =
+ bfd_h_get_16 (abfd, (bfd_byte *) ext->x_sym.x_fcnary.x_ary.x_dimen[1]);
+ in->x_sym.x_fcnary.x_ary.x_dimen[2] =
+ bfd_h_get_16 (abfd, (bfd_byte *) ext->x_sym.x_fcnary.x_ary.x_dimen[2]);
+ in->x_sym.x_fcnary.x_ary.x_dimen[3] =
+ bfd_h_get_16 (abfd, (bfd_byte *) ext->x_sym.x_fcnary.x_ary.x_dimen[3]);
+ }
+ if (ISFCN(type)) {
+ in->x_sym.x_misc.x_fsize = bfd_h_get_32(abfd, (bfd_byte *) ext->x_sym.x_misc.x_fsize);
+ }
+ else {
+ in->x_sym.x_misc.x_lnsz.x_lnno = bfd_h_get_16(abfd, (bfd_byte *)
+ ext->x_sym.x_misc.x_lnsz.x_lnno);
+ in->x_sym.x_misc.x_lnsz.x_size = bfd_h_get_16(abfd, (bfd_byte *)
+ ext->x_sym.x_misc.x_lnsz.x_size);
+ }
+
+end: ;
+ /* the semicolon is because MSVC doesn't like labels at
+ end of block. */
+
+}
+
+
+
+unsigned int
+_bfd_xcoff_swap_aux_out (abfd, inp, type, class, indx, numaux, extp)
+ bfd *abfd;
+ PTR inp;
+ int type;
+ int class;
+ int indx ATTRIBUTE_UNUSED;
+ int numaux ATTRIBUTE_UNUSED;
+ PTR extp;
+{
+ union internal_auxent *in = (union internal_auxent *)inp;
+ AUXENT *ext = (AUXENT *)extp;
+
+ memset((PTR)ext, 0, bfd_coff_auxesz (abfd));
+ switch (class)
+ {
+ case C_FILE:
+ if (in->x_file.x_fname[0] == 0)
+ {
+ PUTWORD(abfd, 0, (bfd_byte *) ext->x_file.x_n.x_zeroes);
+ PUTWORD(abfd,
+ in->x_file.x_n.x_offset,
+ (bfd_byte *) ext->x_file.x_n.x_offset);
+ }
+ else
+ {
+ memcpy (ext->x_file.x_fname, in->x_file.x_fname, FILNMLEN);
+ }
+ goto end;
+
+ /* RS/6000 "csect" auxents */
+ case C_EXT:
+ case C_HIDEXT:
+ if (indx + 1 == numaux)
+ {
+ PUTWORD (abfd, in->x_csect.x_scnlen.l,ext->x_csect.x_scnlen);
+ PUTWORD (abfd, in->x_csect.x_parmhash, ext->x_csect.x_parmhash);
+ PUTHALF (abfd, in->x_csect.x_snhash, ext->x_csect.x_snhash);
+ /* We don't have to hack bitfields in x_smtyp because it's
+ defined by shifts-and-ands, which are equivalent on all
+ byte orders. */
+ PUTBYTE (abfd, in->x_csect.x_smtyp, ext->x_csect.x_smtyp);
+ PUTBYTE (abfd, in->x_csect.x_smclas, ext->x_csect.x_smclas);
+ PUTWORD (abfd, in->x_csect.x_stab, ext->x_csect.x_stab);
+ PUTHALF (abfd, in->x_csect.x_snstab, ext->x_csect.x_snstab);
+ goto end;
+ }
+ break;
+
+ case C_STAT:
+ case C_LEAFSTAT:
+ case C_HIDDEN:
+ if (type == T_NULL) {
+ bfd_h_put_32(abfd, in->x_scn.x_scnlen, (bfd_byte *) ext->x_scn.x_scnlen);
+ bfd_h_put_16(abfd, in->x_scn.x_nreloc, (bfd_byte *) ext->x_scn.x_nreloc);
+ bfd_h_put_16(abfd, in->x_scn.x_nlinno, (bfd_byte *) ext->x_scn.x_nlinno);
+ goto end;
+ }
+ break;
+ }
+
+ PUTWORD(abfd, in->x_sym.x_tagndx.l, (bfd_byte *) ext->x_sym.x_tagndx);
+ PUTWORD(abfd, in->x_sym.x_tvndx , (bfd_byte *) ext->x_sym.x_tvndx);
+
+ if (class == C_BLOCK || class == C_FCN || ISFCN (type) || ISTAG (class))
+ {
+ bfd_h_put_32(abfd, in->x_sym.x_fcnary.x_fcn.x_lnnoptr,
+ (bfd_byte *) ext->x_sym.x_fcnary.x_fcn.x_lnnoptr);
+ PUTWORD(abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.l,
+ (bfd_byte *) ext->x_sym.x_fcnary.x_fcn.x_endndx);
+ }
+ else
+ {
+ bfd_h_put_16 (abfd, in->x_sym.x_fcnary.x_ary.x_dimen[0],
+ (bfd_byte *) ext->x_sym.x_fcnary.x_ary.x_dimen[0]);
+ bfd_h_put_16 (abfd, in->x_sym.x_fcnary.x_ary.x_dimen[1],
+ (bfd_byte *) ext->x_sym.x_fcnary.x_ary.x_dimen[1]);
+ bfd_h_put_16 (abfd, in->x_sym.x_fcnary.x_ary.x_dimen[2],
+ (bfd_byte *) ext->x_sym.x_fcnary.x_ary.x_dimen[2]);
+ bfd_h_put_16 (abfd, in->x_sym.x_fcnary.x_ary.x_dimen[3],
+ (bfd_byte *) ext->x_sym.x_fcnary.x_ary.x_dimen[3]);
+ }
+
+ if (ISFCN (type))
+ PUTWORD (abfd, in->x_sym.x_misc.x_fsize,
+ (bfd_byte *) ext->x_sym.x_misc.x_fsize);
+ else
+ {
+ bfd_h_put_16(abfd, in->x_sym.x_misc.x_lnsz.x_lnno,
+ (bfd_byte *)ext->x_sym.x_misc.x_lnsz.x_lnno);
+ bfd_h_put_16(abfd, in->x_sym.x_misc.x_lnsz.x_size,
+ (bfd_byte *)ext->x_sym.x_misc.x_lnsz.x_size);
+ }
+
+end:
+ return bfd_coff_auxesz (abfd);
+}
+
+
+
/* The XCOFF reloc table. Actually, XCOFF relocations specify the
bitsize and whether they are signed or not, along with a
conventional type. This table is for the types, which are used for
different algorithms for putting in the reloc. Many of these
relocs need special_function entries, which I have not written. */
-static reloc_howto_type xcoff_howto_table[] =
+/* In case we're on a 32-bit machine, construct a 64-bit "-1" value
+ from smaller values. Start with zero, widen, *then* decrement. */
+#define MINUS_ONE (((bfd_vma)0) - 1)
+
+reloc_howto_type xcoff_howto_table[] =
{
/* Standard 32 bit relocation. */
HOWTO (0, /* type */
@@ -493,7 +762,21 @@ static reloc_howto_type xcoff_howto_table[] =
true, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
+ false), /* pcrel_offset */
+ HOWTO (0, /* type */
+ 0, /* rightshift */
+ 4, /* size (0 = byte, 1 = short, 2 = long) */
+ 64, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ 0, /* special_function */
+ "R_POS", /* name */
+ true, /* partial_inplace */
+ MINUS_ONE, /* src_mask */
+ MINUS_ONE, /* dst_mask */
false) /* pcrel_offset */
+
};
/* These are the first two like the above but for 16-bit relocs. */
@@ -542,11 +825,11 @@ static reloc_howto_type xcoff_howto_table_16[] =
true, /* partial_inplace */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
- false), /* pcrel_offset */
-};
+ false) /* pcrel_offset */
+ };
-static void
-xcoff_rtype2howto (relent, internal)
+void
+_bfd_xcoff_rtype2howto (relent, internal)
arelent *relent;
struct internal_reloc *internal;
{
@@ -571,8 +854,8 @@ xcoff_rtype2howto (relent, internal)
#endif
}
-static reloc_howto_type *
-xcoff_reloc_type_lookup (abfd, code)
+reloc_howto_type *
+_bfd_xcoff_reloc_type_lookup (abfd, code)
bfd *abfd ATTRIBUTE_UNUSED;
bfd_reloc_code_real_type code;
{
@@ -587,34 +870,13 @@ xcoff_reloc_type_lookup (abfd, code)
case BFD_RELOC_32:
case BFD_RELOC_CTOR:
return &xcoff_howto_table[0];
+ case BFD_RELOC_64:
+ return &xcoff_howto_table[0x1c];
default:
return NULL;
}
}
-#define SELECT_RELOC(internal, howto) \
- { \
- internal.r_type = howto->type; \
- internal.r_size = \
- ((howto->complain_on_overflow == complain_overflow_signed \
- ? 0x80 \
- : 0) \
- | (howto->bitsize - 1)); \
- }
-
-#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (3)
-
-#define COFF_LONG_FILENAMES
-
-#define RTYPE2HOWTO(cache_ptr, dst) xcoff_rtype2howto (cache_ptr, dst)
-
-#define coff_mkobject xcoff_mkobject
-#define coff_bfd_copy_private_bfd_data xcoff_copy_private_bfd_data
-#define coff_bfd_is_local_label_name xcoff_is_local_label_name
-#define coff_bfd_reloc_type_lookup xcoff_reloc_type_lookup
-#define coff_relocate_section _bfd_ppc_xcoff_relocate_section
-
-#include "coffcode.h"
/* XCOFF archive support. The original version of this code was by
Damon A. Permezel. It was enhanced to permit cross support, and
@@ -826,27 +1088,10 @@ struct xcoff_ar_hdr_big
#define arch_xhdr_big(bfd) \
((struct xcoff_ar_hdr_big *) arch_eltdata (bfd)->arch_header)
-/* XCOFF archives do not have anything which corresponds to an
- extended name table. */
-
-#define xcoff_slurp_extended_name_table bfd_false
-#define xcoff_construct_extended_name_table \
- ((boolean (*) PARAMS ((bfd *, char **, bfd_size_type *, const char **))) \
- bfd_false)
-#define xcoff_truncate_arname bfd_dont_truncate_arname
-
-/* We can use the standard get_elt_at_index routine. */
-
-#define xcoff_get_elt_at_index _bfd_generic_get_elt_at_index
-
-/* XCOFF archives do not have a timestamp. */
-
-#define xcoff_update_armap_timestamp bfd_true
-
/* Read in the armap of an XCOFF archive. */
-static boolean
-xcoff_slurp_armap (abfd)
+boolean
+_bfd_xcoff_slurp_armap (abfd)
bfd *abfd;
{
file_ptr off;
@@ -969,8 +1214,8 @@ xcoff_slurp_armap (abfd)
/* See if this is an XCOFF archive. */
-static const bfd_target *
-xcoff_archive_p (abfd)
+const bfd_target *
+_bfd_xcoff_archive_p (abfd)
bfd *abfd;
{
char magic[SXCOFFARMAG];
@@ -1060,7 +1305,7 @@ xcoff_archive_p (abfd)
memcpy (bfd_ardata (abfd)->tdata, &hdr, SIZEOF_AR_FILE_HDR_BIG);
}
- if (! xcoff_slurp_armap (abfd))
+ if (! _bfd_xcoff_slurp_armap (abfd))
{
bfd_release (abfd, bfd_ardata (abfd));
abfd->tdata.aout_ar_data = (struct artdata *) NULL;
@@ -1072,8 +1317,8 @@ xcoff_archive_p (abfd)
/* Read the archive header in an XCOFF archive. */
-static PTR
-xcoff_read_ar_hdr (abfd)
+PTR
+_bfd_xcoff_read_ar_hdr (abfd)
bfd *abfd;
{
size_t namlen;
@@ -1160,8 +1405,8 @@ xcoff_read_ar_hdr (abfd)
/* Open the next element in an XCOFF archive. */
-static bfd *
-xcoff_openr_next_archived_file (archive, last_file)
+bfd *
+_bfd_xcoff_openr_next_archived_file (archive, last_file)
bfd *archive;
bfd *last_file;
{
@@ -1221,8 +1466,8 @@ xcoff_openr_next_archived_file (archive, last_file)
/* Stat an element in an XCOFF archive. */
-static int
-xcoff_generic_stat_arch_elt (abfd, s)
+int
+_bfd_xcoff_generic_stat_arch_elt (abfd, s)
bfd *abfd;
struct stat *s;
{
@@ -1452,8 +1697,8 @@ xcoff_write_armap_big (abfd, elength, map, orl_count, stridx)
}
/*ARGSUSED*/
-static boolean
-xcoff_write_armap (abfd, elength, map, orl_count, stridx)
+boolean
+_bfd_xcoff_write_armap (abfd, elength, map, orl_count, stridx)
bfd *abfd;
unsigned int elength ATTRIBUTE_UNUSED;
struct orl *map;
@@ -1983,8 +2228,8 @@ xcoff_write_archive_contents_big (abfd)
return true;
}
-static boolean
-xcoff_write_archive_contents (abfd)
+boolean
+_bfd_xcoff_write_archive_contents (abfd)
bfd *abfd;
{
if (! xcoff_big_format_p (abfd))
@@ -1997,7 +2242,7 @@ xcoff_write_archive_contents (abfd)
always uses an a.out header. */
/*ARGSUSED*/
-static int
+int
_bfd_xcoff_sizeof_headers (abfd, reloc)
bfd *abfd;
boolean reloc ATTRIBUTE_UNUSED;
@@ -2013,115 +2258,4 @@ _bfd_xcoff_sizeof_headers (abfd, reloc)
return size;
}
-#define CORE_FILE_P _bfd_dummy_target
-
-#define coff_core_file_failing_command _bfd_nocore_core_file_failing_command
-#define coff_core_file_failing_signal _bfd_nocore_core_file_failing_signal
-#define coff_core_file_matches_executable_p \
- _bfd_nocore_core_file_matches_executable_p
-
-#ifdef AIX_CORE
-#undef CORE_FILE_P
-#define CORE_FILE_P rs6000coff_core_p
-extern const bfd_target * rs6000coff_core_p ();
-extern boolean rs6000coff_get_section_contents ();
-extern boolean rs6000coff_core_file_matches_executable_p ();
-
-#undef coff_core_file_matches_executable_p
-#define coff_core_file_matches_executable_p \
- rs6000coff_core_file_matches_executable_p
-
-extern char *rs6000coff_core_file_failing_command PARAMS ((bfd *abfd));
-#undef coff_core_file_failing_command
-#define coff_core_file_failing_command rs6000coff_core_file_failing_command
-
-extern int rs6000coff_core_file_failing_signal PARAMS ((bfd *abfd));
-#undef coff_core_file_failing_signal
-#define coff_core_file_failing_signal rs6000coff_core_file_failing_signal
-
-#undef coff_get_section_contents
-#define coff_get_section_contents rs6000coff_get_section_contents
-#endif /* AIX_CORE */
-
-#ifdef LYNX_CORE
-
-#undef CORE_FILE_P
-#define CORE_FILE_P lynx_core_file_p
-extern const bfd_target *lynx_core_file_p PARAMS ((bfd *abfd));
-
-extern boolean lynx_core_file_matches_executable_p PARAMS ((bfd *core_bfd,
- bfd *exec_bfd));
-#undef coff_core_file_matches_executable_p
-#define coff_core_file_matches_executable_p lynx_core_file_matches_executable_p
-
-extern char *lynx_core_file_failing_command PARAMS ((bfd *abfd));
-#undef coff_core_file_failing_command
-#define coff_core_file_failing_command lynx_core_file_failing_command
-
-extern int lynx_core_file_failing_signal PARAMS ((bfd *abfd));
-#undef coff_core_file_failing_signal
-#define coff_core_file_failing_signal lynx_core_file_failing_signal
-
-#endif /* LYNX_CORE */
-
-#define _bfd_xcoff_bfd_get_relocated_section_contents \
- coff_bfd_get_relocated_section_contents
-#define _bfd_xcoff_bfd_relax_section coff_bfd_relax_section
-#define _bfd_xcoff_bfd_gc_sections coff_bfd_gc_sections
-#define _bfd_xcoff_bfd_link_split_section coff_bfd_link_split_section
-
-/* The transfer vector that leads the outside world to all of the above. */
-
-const bfd_target
-#ifdef TARGET_SYM
- TARGET_SYM =
-#else
- rs6000coff_vec =
-#endif
-{
-#ifdef TARGET_NAME
- TARGET_NAME,
-#else
- "aixcoff-rs6000", /* name */
-#endif
- bfd_target_coff_flavour,
- BFD_ENDIAN_BIG, /* data byte order is big */
- BFD_ENDIAN_BIG, /* header byte order is big */
-
- (HAS_RELOC | EXEC_P | /* object flags */
- HAS_LINENO | HAS_DEBUG | DYNAMIC |
- HAS_SYMS | HAS_LOCALS | WP_TEXT),
-
- (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
- 0, /* leading char */
- '/', /* ar_pad_char */
- 15, /* ar_max_namelen??? FIXMEmgo */
-
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
- bfd_getb64, bfd_getb_signed_64, bfd_putb64,
- bfd_getb32, bfd_getb_signed_32, bfd_putb32,
- bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
-
- {_bfd_dummy_target, coff_object_p, /* bfd_check_format */
- xcoff_archive_p, CORE_FILE_P},
- {bfd_false, coff_mkobject, /* bfd_set_format */
- _bfd_generic_mkarchive, bfd_false},
- {bfd_false, coff_write_object_contents, /* bfd_write_contents */
- xcoff_write_archive_contents, bfd_false},
-
- BFD_JUMP_TABLE_GENERIC (coff),
- BFD_JUMP_TABLE_COPY (coff),
- BFD_JUMP_TABLE_CORE (coff),
- BFD_JUMP_TABLE_ARCHIVE (xcoff),
- BFD_JUMP_TABLE_SYMBOLS (coff),
- BFD_JUMP_TABLE_RELOCS (coff),
- BFD_JUMP_TABLE_WRITE (coff),
- BFD_JUMP_TABLE_LINK (_bfd_xcoff),
- BFD_JUMP_TABLE_DYNAMIC (_bfd_xcoff),
-
- NULL,
-
- COFF_SWAP_TABLE
-};
+
diff --git a/bfd/coff-sh.c b/bfd/coff-sh.c
index 821fecd4db2..1b78ef4f371 100644
--- a/bfd/coff-sh.c
+++ b/bfd/coff-sh.c
@@ -3198,6 +3198,16 @@ static const bfd_coff_backend_data bfd_coff_small_swap_table =
false,
#endif
2,
+#ifdef COFF_FORCE_SYMBOLS_IN_STRINGS
+ true,
+#else
+ false,
+#endif
+#ifdef COFF_DEBUG_STRING_WIDE_PREFIX
+ 4,
+#else
+ 2,
+#endif
coff_swap_filehdr_in, coff_swap_aouthdr_in, coff_swap_scnhdr_in,
coff_swap_reloc_in, coff_bad_format_hook, coff_set_arch_mach_hook,
coff_mkobject_hook, styp_to_sec_flags, coff_set_alignment_hook,
diff --git a/bfd/coff-stgo32.c b/bfd/coff-stgo32.c
index 26dba40b5e3..45e7d62795a 100644
--- a/bfd/coff-stgo32.c
+++ b/bfd/coff-stgo32.c
@@ -46,6 +46,8 @@
{ COFF_SECTION_NAME_EXACT_MATCH (".data"), \
COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
{ COFF_SECTION_NAME_EXACT_MATCH (".text"), \
+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".bss"), \
COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }
#include "bfd.h"
diff --git a/bfd/coff-tic54x.c b/bfd/coff-tic54x.c
index 2a5aafbfef4..4ae62e31a51 100644
--- a/bfd/coff-tic54x.c
+++ b/bfd/coff-tic54x.c
@@ -1,5 +1,5 @@
/* BFD back-end for TMS320C54X coff binaries.
- Copyright (C) 1999,2000 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
Contributed by Timothy Wall (twall@cygnus.com)
This file is part of BFD, the Binary File Descriptor library.
@@ -76,6 +76,56 @@ tic54x_getl_signed_32 (addr)
return COERCE32 (v);
}
+#define coff_get_section_load_page bfd_ticoff_get_section_load_page
+#define coff_set_section_load_page bfd_ticoff_set_section_load_page
+
+void
+bfd_ticoff_set_section_load_page (sect, page)
+ asection *sect;
+ int page;
+{
+ sect->lma = (sect->lma & ADDR_MASK) | PG_TO_FLAG(page);
+}
+
+
+int
+bfd_ticoff_get_section_load_page (sect)
+ asection *sect;
+{
+ int page;
+
+ /* Provide meaningful defaults for predefined sections. */
+ if (sect == &bfd_com_section)
+ page = PG_DATA;
+
+ else if (sect == &bfd_und_section
+ || sect == &bfd_abs_section
+ || sect == &bfd_ind_section)
+ page = PG_PROG;
+
+ else
+ page = FLAG_TO_PG (sect->lma);
+
+ return page;
+}
+
+/* Set the architecture appropriately. Allow unkown architectures
+ (e.g. binary). */
+static boolean
+tic54x_set_arch_mach (abfd, arch, machine)
+ bfd *abfd;
+ enum bfd_architecture arch;
+ unsigned long machine;
+{
+ if (arch == bfd_arch_unknown)
+ arch = bfd_arch_tic54x;
+
+ else if (arch != bfd_arch_tic54x)
+ return false;
+
+ return bfd_default_set_arch_mach (abfd, arch, machine);
+}
+
static bfd_reloc_status_type
tic54x_relocation (abfd, reloc_entry, symbol, data, input_section,
output_bfd, error_message)
@@ -295,6 +345,18 @@ ticoff_bfd_is_local_label_name (abfd, name)
#define BADMAG(x) COFF2_BADMAG(x)
#include "coffcode.h"
+static boolean
+tic54x_set_section_contents (abfd, section, location, offset, bytes_to_do)
+ bfd *abfd;
+ sec_ptr section;
+ PTR location;
+ file_ptr offset;
+ bfd_size_type bytes_to_do;
+{
+ return coff_set_section_contents (abfd, section, location,
+ offset, bytes_to_do);
+}
+
static void
tic54x_reloc_processing (relent, reloc, symbols, abfd, section)
arelent *relent;
@@ -366,6 +428,16 @@ static CONST bfd_coff_backend_data ticoff0_swap_table =
#else
false,
#endif
+#ifdef COFF_FORCE_SYMBOLS_IN_STRINGS
+ true,
+#else
+ false,
+#endif
+#ifdef COFF_DEBUG_STRING_WIDE_PREFIX
+ 4,
+#else
+ 2,
+#endif
COFF_DEFAULT_SECTION_ALIGNMENT_POWER,
coff_SWAP_filehdr_in, coff_SWAP_aouthdr_in, coff_SWAP_scnhdr_in,
coff_SWAP_reloc_in, ticoff0_bad_format_hook, coff_set_arch_mach_hook,
@@ -398,6 +470,16 @@ static CONST bfd_coff_backend_data ticoff1_swap_table =
false,
#endif
COFF_DEFAULT_SECTION_ALIGNMENT_POWER,
+#ifdef COFF_FORCE_SYMBOLS_IN_STRINGS
+ true,
+#else
+ false,
+#endif
+#ifdef COFF_DEBUG_STRING_WIDE_PREFIX
+ 4,
+#else
+ 2,
+#endif
coff_SWAP_filehdr_in, coff_SWAP_aouthdr_in, coff_SWAP_scnhdr_in,
coff_SWAP_reloc_in, ticoff1_bad_format_hook, coff_set_arch_mach_hook,
coff_mkobject_hook, styp_to_sec_flags, coff_set_alignment_hook,
@@ -420,7 +502,7 @@ const bfd_target tic54x_coff0_vec =
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
- HAS_SYMS | HAS_LOCALS | WP_TEXT | HAS_LOAD_PAGE ),
+ HAS_SYMS | HAS_LOCALS | WP_TEXT ),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
'_', /* leading symbol underscore */
@@ -446,7 +528,7 @@ const bfd_target tic54x_coff0_vec =
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
- BFD_JUMP_TABLE_WRITE (coff),
+ BFD_JUMP_TABLE_WRITE (tic54x),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
@@ -464,7 +546,7 @@ const bfd_target tic54x_coff0_beh_vec =
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
- HAS_SYMS | HAS_LOCALS | WP_TEXT | HAS_LOAD_PAGE ),
+ HAS_SYMS | HAS_LOCALS | WP_TEXT ),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
'_', /* leading symbol underscore */
@@ -490,7 +572,7 @@ const bfd_target tic54x_coff0_beh_vec =
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
- BFD_JUMP_TABLE_WRITE (coff),
+ BFD_JUMP_TABLE_WRITE (tic54x),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
@@ -509,7 +591,7 @@ const bfd_target tic54x_coff1_vec =
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
- HAS_SYMS | HAS_LOCALS | WP_TEXT | HAS_LOAD_PAGE ),
+ HAS_SYMS | HAS_LOCALS | WP_TEXT ),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
'_', /* leading symbol underscore */
@@ -535,7 +617,7 @@ const bfd_target tic54x_coff1_vec =
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
- BFD_JUMP_TABLE_WRITE (coff),
+ BFD_JUMP_TABLE_WRITE (tic54x),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
@@ -554,7 +636,7 @@ const bfd_target tic54x_coff1_beh_vec =
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
- HAS_SYMS | HAS_LOCALS | WP_TEXT | HAS_LOAD_PAGE ),
+ HAS_SYMS | HAS_LOCALS | WP_TEXT ),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
'_', /* leading symbol underscore */
@@ -580,7 +662,7 @@ const bfd_target tic54x_coff1_beh_vec =
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
- BFD_JUMP_TABLE_WRITE (coff),
+ BFD_JUMP_TABLE_WRITE (tic54x),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
@@ -599,7 +681,7 @@ const bfd_target tic54x_coff2_vec =
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
- HAS_SYMS | HAS_LOCALS | WP_TEXT | HAS_LOAD_PAGE ),
+ HAS_SYMS | HAS_LOCALS | WP_TEXT ),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
'_', /* leading symbol underscore */
@@ -625,7 +707,7 @@ const bfd_target tic54x_coff2_vec =
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
- BFD_JUMP_TABLE_WRITE (coff),
+ BFD_JUMP_TABLE_WRITE (tic54x),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
@@ -644,7 +726,7 @@ const bfd_target tic54x_coff2_beh_vec =
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
- HAS_SYMS | HAS_LOCALS | WP_TEXT | HAS_LOAD_PAGE ),
+ HAS_SYMS | HAS_LOCALS | WP_TEXT ),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
'_', /* leading symbol underscore */
@@ -670,7 +752,7 @@ const bfd_target tic54x_coff2_beh_vec =
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
- BFD_JUMP_TABLE_WRITE (coff),
+ BFD_JUMP_TABLE_WRITE (tic54x),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
diff --git a/bfd/coff64-rs6000.c b/bfd/coff64-rs6000.c
new file mode 100644
index 00000000000..8e5c501bf7a
--- /dev/null
+++ b/bfd/coff64-rs6000.c
@@ -0,0 +1,360 @@
+/* BFD back-end for IBM RS/6000 "XCOFF64" files.
+ Copyright 2000
+ Free Software Foundation, Inc.
+ Written Clinton Popetz.
+ Contributed by Cygnus Support.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+/* Internalcoff.h and coffcode.h modify themselves based on these flags. */
+#define XCOFF64
+#define RS6000COFF_C 1
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+#include "coff/internal.h"
+#include "coff/rs6k64.h"
+#include "libcoff.h"
+
+
+#define GET_FILEHDR_SYMPTR bfd_h_get_64
+#define PUT_FILEHDR_SYMPTR bfd_h_put_64
+#define GET_AOUTHDR_DATA_START bfd_h_get_64
+#define PUT_AOUTHDR_DATA_START bfd_h_put_64
+#define GET_AOUTHDR_TEXT_START bfd_h_get_64
+#define PUT_AOUTHDR_TEXT_START bfd_h_put_64
+#define GET_AOUTHDR_TSIZE bfd_h_get_64
+#define PUT_AOUTHDR_TSIZE bfd_h_put_64
+#define GET_AOUTHDR_DSIZE bfd_h_get_64
+#define PUT_AOUTHDR_DSIZE bfd_h_put_64
+#define GET_AOUTHDR_BSIZE bfd_h_get_64
+#define PUT_AOUTHDR_BSIZE bfd_h_put_64
+#define GET_AOUTHDR_ENTRY bfd_h_get_64
+#define PUT_AOUTHDR_ENTRY bfd_h_put_64
+#define GET_SCNHDR_PADDR bfd_h_get_64
+#define PUT_SCNHDR_PADDR bfd_h_put_64
+#define GET_SCNHDR_VADDR bfd_h_get_64
+#define PUT_SCNHDR_VADDR bfd_h_put_64
+#define GET_SCNHDR_SIZE bfd_h_get_64
+#define PUT_SCNHDR_SIZE bfd_h_put_64
+#define GET_SCNHDR_SCNPTR bfd_h_get_64
+#define PUT_SCNHDR_SCNPTR bfd_h_put_64
+#define GET_SCNHDR_RELPTR bfd_h_get_64
+#define PUT_SCNHDR_RELPTR bfd_h_put_64
+#define GET_SCNHDR_LNNOPTR bfd_h_get_64
+#define PUT_SCNHDR_LNNOPTR bfd_h_put_64
+#define GET_SCNHDR_NRELOC bfd_h_get_32
+#define MAX_SCNHDR_NRELOC 0xffffffff
+#define PUT_SCNHDR_NRELOC bfd_h_put_32
+#define GET_SCNHDR_NLNNO bfd_h_get_32
+#define MAX_SCNHDR_NLNNO 0xffffffff
+#define PUT_SCNHDR_NLNNO bfd_h_put_32
+#define GET_RELOC_VADDR bfd_h_get_64
+#define PUT_RELOC_VADDR bfd_h_put_64
+
+#define COFF_FORCE_SYMBOLS_IN_STRINGS
+#define COFF_DEBUG_STRING_WIDE_PREFIX
+
+
+#define COFF_ADJUST_SCNHDR_OUT_POST(ABFD,INT,EXT) \
+do { \
+ memset (((SCNHDR *)EXT)->s_pad, 0, sizeof (((SCNHDR *)EXT)->s_pad));\
+} while(0)
+
+#define NO_COFF_LINENOS
+
+#define coff_SWAP_lineno_in xcoff64_swap_lineno_in
+#define coff_SWAP_lineno_out xcoff64_swap_lineno_out
+
+#define PUTWORD bfd_h_put_32
+#define PUTHALF bfd_h_put_16
+#define PUTBYTE bfd_h_put_8
+#define GETWORD bfd_h_get_32
+#define GETHALF bfd_h_get_16
+#define GETBYTE bfd_h_get_8
+
+
+/* For XCOFF64, the effective width of symndx changes depending on
+ whether we are the first entry. Sigh. */
+static void
+xcoff64_swap_lineno_in (abfd, ext1, in1)
+ bfd *abfd;
+ PTR ext1;
+ PTR in1;
+{
+ LINENO *ext = (LINENO *)ext1;
+ struct internal_lineno *in = (struct internal_lineno *)in1;
+
+ in->l_lnno = bfd_h_get_32(abfd, (bfd_byte *) (ext->l_lnno));
+ if (in->l_lnno == 0)
+ in->l_addr.l_symndx =
+ bfd_h_get_32(abfd, (bfd_byte *) ext->l_addr.l_symndx);
+ else
+ in->l_addr.l_symndx =
+ bfd_h_get_64(abfd, (bfd_byte *) ext->l_addr.l_symndx);
+}
+
+static unsigned int
+xcoff64_swap_lineno_out (abfd, inp, outp)
+ bfd *abfd;
+ PTR inp;
+ PTR outp;
+{
+ struct internal_lineno *in = (struct internal_lineno *)inp;
+ struct external_lineno *ext = (struct external_lineno *)outp;
+ PUTWORD(abfd, in->l_addr.l_symndx, (bfd_byte *)
+ ext->l_addr.l_symndx);
+
+ bfd_h_put_32 (abfd, in->l_lnno, (bfd_byte *) (ext->l_lnno));
+ if (in->l_lnno == 0)
+ bfd_h_put_32 (abfd, in->l_addr.l_symndx, (bfd_byte *)ext->l_addr.l_symndx);
+ else
+ bfd_h_put_64 (abfd, in->l_addr.l_symndx, (bfd_byte *)ext->l_addr.l_symndx);
+
+ return bfd_coff_linesz (abfd);
+}
+
+
+static void xcoff64_swap_sym_in PARAMS ((bfd *, PTR, PTR));
+static unsigned int xcoff64_swap_sym_out PARAMS ((bfd *, PTR, PTR));
+static void xcoff64_swap_aux_in PARAMS ((bfd *, PTR, int, int, int, int, PTR));
+static unsigned int xcoff64_swap_aux_out PARAMS ((bfd *, PTR, int, int, int, int, PTR));
+
+static void
+xcoff64_swap_sym_in (abfd, ext1, in1)
+ bfd *abfd;
+ PTR ext1;
+ PTR in1;
+{
+ SYMENT *ext = (SYMENT *)ext1;
+ struct internal_syment *in = (struct internal_syment *)in1;
+
+
+ in->_n._n_n._n_zeroes = 0;
+ in->_n._n_n._n_offset = bfd_h_get_32(abfd, (bfd_byte *) ext->e_offset);
+ in->n_value = bfd_h_get_64(abfd, (bfd_byte *) ext->e.e_value);
+ in->n_scnum = bfd_h_get_16(abfd, (bfd_byte *) ext->e_scnum);
+ in->n_type = bfd_h_get_16(abfd, (bfd_byte *) ext->e_type);
+ in->n_sclass = bfd_h_get_8(abfd, ext->e_sclass);
+ in->n_numaux = bfd_h_get_8(abfd, ext->e_numaux);
+}
+
+static unsigned int
+xcoff64_swap_sym_out (abfd, inp, extp)
+ bfd *abfd;
+ PTR inp;
+ PTR extp;
+{
+ struct internal_syment *in = (struct internal_syment *)inp;
+ SYMENT *ext =(SYMENT *)extp;
+
+ bfd_h_put_32(abfd, in->_n._n_n._n_offset, (bfd_byte *) ext->e_offset);
+ bfd_h_put_64(abfd, in->n_value , (bfd_byte *) ext->e.e_value);
+ bfd_h_put_16(abfd, in->n_scnum , (bfd_byte *) ext->e_scnum);
+ bfd_h_put_16(abfd, in->n_type , (bfd_byte *) ext->e_type);
+ bfd_h_put_8(abfd, in->n_sclass , ext->e_sclass);
+ bfd_h_put_8(abfd, in->n_numaux , ext->e_numaux);
+ return bfd_coff_symesz (abfd);
+}
+
+static void
+xcoff64_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
+ bfd *abfd;
+ PTR ext1;
+ int type;
+ int class;
+ int indx;
+ int numaux;
+ PTR in1;
+{
+ AUXENT *ext = (AUXENT *)ext1;
+ union internal_auxent *in = (union internal_auxent *)in1;
+
+ switch (class) {
+ case C_FILE:
+ if (ext->x_file.x_fname[0] == 0) {
+ in->x_file.x_n.x_zeroes = 0;
+ in->x_file.x_n.x_offset =
+ bfd_h_get_32(abfd, (bfd_byte *) ext->x_file.x_n.x_offset);
+ } else {
+ if (numaux > 1)
+ {
+ if (indx == 0)
+ memcpy (in->x_file.x_fname, ext->x_file.x_fname,
+ numaux * sizeof (AUXENT));
+ }
+ else
+ {
+ memcpy (in->x_file.x_fname, ext->x_file.x_fname, FILNMLEN);
+ }
+ }
+ goto end;
+
+ /* RS/6000 "csect" auxents */
+ case C_EXT:
+ case C_HIDEXT:
+ if (indx + 1 == numaux)
+ {
+ in->x_csect.x_scnlen.l =
+ bfd_h_get_32(abfd, ext->x_csect.x_scnlen_lo);
+ /* FIXME: If we want section lengths larger than 32 bits, we need
+ to modify the internal coff structures to support it. */
+ in->x_csect.x_parmhash = bfd_h_get_32 (abfd,
+ ext->x_csect.x_parmhash);
+ in->x_csect.x_snhash = bfd_h_get_16 (abfd, ext->x_csect.x_snhash);
+ /* We don't have to hack bitfields in x_smtyp because it's
+ defined by shifts-and-ands, which are equivalent on all
+ byte orders. */
+ in->x_csect.x_smtyp = bfd_h_get_8 (abfd, ext->x_csect.x_smtyp);
+ in->x_csect.x_smclas = bfd_h_get_8 (abfd, ext->x_csect.x_smclas);
+ goto end;
+ }
+ break;
+
+ case C_STAT:
+ case C_LEAFSTAT:
+ case C_HIDDEN:
+ if (type == T_NULL) {
+ /* PE defines some extra fields; we zero them out for
+ safety. */
+ in->x_scn.x_checksum = 0;
+ in->x_scn.x_associated = 0;
+ in->x_scn.x_comdat = 0;
+
+ goto end;
+ }
+ break;
+ }
+
+ if (class == C_BLOCK || class == C_FCN || ISFCN (type) || ISTAG (class))
+ {
+ in->x_sym.x_fcnary.x_fcn.x_lnnoptr = bfd_h_get_64(abfd, (bfd_byte *)
+ ext->x_sym.x_fcnary.x_fcn.x_lnnoptr);
+ in->x_sym.x_fcnary.x_fcn.x_endndx.l = bfd_h_get_32(abfd, (bfd_byte *)
+ ext->x_sym.x_fcnary.x_fcn.x_endndx);
+ }
+ if (ISFCN(type)) {
+ in->x_sym.x_misc.x_fsize = bfd_h_get_32(abfd, (bfd_byte *) ext->x_sym.x_fcnary.x_fcn.x_fsize);
+ }
+ else {
+ in->x_sym.x_misc.x_lnsz.x_lnno = bfd_h_get_32(abfd, (bfd_byte *)
+ ext->x_sym.x_fcnary.x_lnsz.x_lnno);
+ in->x_sym.x_misc.x_lnsz.x_size = bfd_h_get_16(abfd, (bfd_byte *)
+ ext->x_sym.x_fcnary.x_lnsz.x_size);
+ }
+
+end: ;
+ /* the semicolon is because MSVC doesn't like labels at
+ end of block. */
+
+}
+
+
+
+static unsigned int
+xcoff64_swap_aux_out (abfd, inp, type, class, indx, numaux, extp)
+ bfd *abfd;
+ PTR inp;
+ int type;
+ int class;
+ int indx ATTRIBUTE_UNUSED;
+ int numaux ATTRIBUTE_UNUSED;
+ PTR extp;
+{
+ union internal_auxent *in = (union internal_auxent *)inp;
+ AUXENT *ext = (AUXENT *)extp;
+
+ memset((PTR)ext, 0, bfd_coff_auxesz (abfd));
+ switch (class)
+ {
+ case C_FILE:
+ if (in->x_file.x_fname[0] == 0)
+ {
+ PUTWORD(abfd, 0, (bfd_byte *) ext->x_file.x_n.x_zeroes);
+ PUTWORD(abfd,
+ in->x_file.x_n.x_offset,
+ (bfd_byte *) ext->x_file.x_n.x_offset);
+ }
+ else
+ {
+ memcpy (ext->x_file.x_fname, in->x_file.x_fname, FILNMLEN);
+ }
+ PUTBYTE (abfd, _AUX_FILE, (bfd_byte *) ext->x_auxtype.x_auxtype);
+ goto end;
+
+ /* RS/6000 "csect" auxents */
+ case C_EXT:
+ case C_HIDEXT:
+ if (indx + 1 == numaux)
+ {
+ PUTWORD (abfd, in->x_csect.x_scnlen.l, ext->x_csect.x_scnlen_lo);
+ PUTWORD (abfd, in->x_csect.x_parmhash, ext->x_csect.x_parmhash);
+ PUTHALF (abfd, in->x_csect.x_snhash, ext->x_csect.x_snhash);
+ /* We don't have to hack bitfields in x_smtyp because it's
+ defined by shifts-and-ands, which are equivalent on all
+ byte orders. */
+ PUTBYTE (abfd, in->x_csect.x_smtyp, ext->x_csect.x_smtyp);
+ PUTBYTE (abfd, in->x_csect.x_smclas, ext->x_csect.x_smclas);
+ PUTBYTE (abfd, _AUX_CSECT, (bfd_byte *) ext->x_auxtype.x_auxtype);
+ goto end;
+ }
+ break;
+
+ case C_STAT:
+ case C_LEAFSTAT:
+ case C_HIDDEN:
+ if (type == T_NULL) {
+ goto end;
+ }
+ break;
+ }
+
+ if (class == C_BLOCK || class == C_FCN || ISFCN (type) || ISTAG (class))
+ {
+ bfd_h_put_64(abfd, in->x_sym.x_fcnary.x_fcn.x_lnnoptr,
+ (bfd_byte *) ext->x_sym.x_fcnary.x_fcn.x_lnnoptr);
+ PUTBYTE (abfd, _AUX_FCN, (bfd_byte *) ext->x_auxtype.x_auxtype);
+ PUTWORD(abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.l,
+ (bfd_byte *) ext->x_sym.x_fcnary.x_fcn.x_endndx);
+ }
+ if (ISFCN (type))
+ PUTWORD (abfd, in->x_sym.x_misc.x_fsize,
+ (bfd_byte *) ext->x_sym.x_fcnary.x_fcn.x_fsize);
+ else
+ {
+ bfd_h_put_32(abfd, in->x_sym.x_misc.x_lnsz.x_lnno,
+ (bfd_byte *)ext->x_sym.x_fcnary.x_lnsz.x_lnno);
+ bfd_h_put_16(abfd, in->x_sym.x_misc.x_lnsz.x_size,
+ (bfd_byte *)ext->x_sym.x_fcnary.x_lnsz.x_size);
+ }
+
+end:
+ return bfd_coff_auxesz (abfd);
+}
+
+
+#define coff_SWAP_sym_in xcoff64_swap_sym_in
+#define coff_SWAP_sym_out xcoff64_swap_sym_out
+#define coff_SWAP_aux_in xcoff64_swap_aux_in
+#define coff_SWAP_aux_out xcoff64_swap_aux_out
+
+#define TARGET_NAME "aixcoff64-rs6000"
+#define TARGET_SYM rs6000coff64_vec
+
+#include "xcoff-target.h"
+
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index 27d467c552f..26c86203c43 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -1124,6 +1124,8 @@ dependent COFF routines:
. boolean _bfd_coff_long_filenames;
. boolean _bfd_coff_long_section_names;
. unsigned int _bfd_coff_default_section_alignment_power;
+. boolean _bfd_coff_force_symnames_in_strings;
+. unsigned int _bfd_coff_debug_string_prefix_length;
. void (*_bfd_coff_swap_filehdr_in) PARAMS ((
. bfd *abfd,
. PTR ext,
@@ -1321,6 +1323,12 @@ dependent COFF routines:
.#define bfd_coff_symname_in_debug(abfd, sym)\
. ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
.
+.#define bfd_coff_force_symnames_in_strings(abfd)\
+. (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
+.
+.#define bfd_coff_debug_string_prefix_length(abfd)\
+. (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
+.
.#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
. ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
. (abfd, file, base, symbol, aux, indaux))
@@ -1531,6 +1539,10 @@ coff_set_alignment_hook (abfd, section, scnhdr)
i = COFF_DECODE_ALIGNMENT(hdr->s_flags);
#endif
section->alignment_power = i;
+
+#ifdef coff_set_section_load_page
+ coff_set_section_load_page (section, hdr->s_page);
+#endif
}
#else /* ! COFF_ALIGN_IN_SECTION_HEADER */
@@ -1783,6 +1795,12 @@ coff_set_arch_mach_hook (abfd, filehdr)
machine = 0;
break;
#endif
+#ifdef IA64MAGIC
+ case IA64MAGIC:
+ arch = bfd_arch_ia64;
+ machine = 0;
+ break;
+#endif
#ifdef A29K_MAGIC_BIG
case A29K_MAGIC_BIG:
case A29K_MAGIC_LITTLE:
@@ -1891,9 +1909,13 @@ coff_set_arch_mach_hook (abfd, filehdr)
#endif
#ifdef RS6000COFF_C
+#ifdef XCOFF64
+ case U803XTOCMAGIC:
+#else
case U802ROMAGIC:
case U802WRMAGIC:
case U802TOCMAGIC:
+#endif
{
int cputype;
@@ -1920,7 +1942,7 @@ coff_set_arch_mach_hook (abfd, filehdr)
free (buf);
return false;
}
- coff_swap_sym_in (abfd, (PTR) buf, (PTR) &sym);
+ bfd_coff_swap_sym_in (abfd, (PTR) buf, (PTR) &sym);
if (sym.n_sclass == C_FILE)
cputype = sym.n_type & 0xff;
else
@@ -1942,7 +1964,11 @@ coff_set_arch_mach_hook (abfd, filehdr)
machine = 0;
#else
arch = bfd_arch_rs6000;
+#ifdef XCOFF64
+ machine = 620;
+#else
machine = 6000;
+#endif
#endif /* POWERMAC */
break;
@@ -2064,6 +2090,7 @@ coff_set_arch_mach_hook (abfd, filehdr)
break;
#endif
default:
+ arch = bfd_arch_obscure;
(*_bfd_error_handler)
(_("Unrecognized TI COFF target id '0x%x'"),
internal_f->f_target_id);
@@ -2114,6 +2141,10 @@ symname_in_debug_hook (abfd, sym)
#ifdef RS6000COFF_C
+#ifdef XCOFF64
+#define FORCE_SYMNAMES_IN_STRINGS
+#endif
+
/* Handle the csect auxent of a C_EXT or C_HIDEXT symbol. */
static boolean coff_pointerize_aux_hook
@@ -2552,6 +2583,12 @@ coff_set_flags (abfd, magicp, flagsp)
return true;
break;
#endif
+#ifdef IA64MAGIC
+ case bfd_arch_ia64:
+ *magicp = IA64MAGIC;
+ return true;
+ break;
+#endif
#ifdef MC68MAGIC
case bfd_arch_m68k:
#ifdef APOLLOM68KMAGIC
@@ -2650,12 +2687,18 @@ coff_set_flags (abfd, magicp, flagsp)
break;
#endif
-#ifdef U802TOCMAGIC
+#ifdef RS6000COFF_C
case bfd_arch_rs6000:
#ifndef PPCMAGIC
case bfd_arch_powerpc:
#endif
- *magicp = U802TOCMAGIC;
+#ifdef XCOFF64
+ if (bfd_get_mach (abfd) == 620 && !strncmp (abfd->xvec->name,"aix", 3))
+ *magicp = U803XTOCMAGIC;
+ else
+#else
+ *magicp = U802TOCMAGIC;
+#endif
return true;
break;
#endif
@@ -2763,8 +2806,8 @@ coff_compute_section_file_positions (abfd)
size_t len;
len = strlen (bfd_asymbol_name (*symp));
- if (len > SYMNMLEN)
- sz += len + 3;
+ if (len > SYMNMLEN || bfd_coff_force_symnames_in_strings (abfd))
+ sz += len + 1 + bfd_coff_debug_string_prefix_length (abfd);
}
}
if (sz > 0)
@@ -3248,6 +3291,9 @@ coff_write_object_contents (abfd)
section.s_vaddr = current->vma;
section.s_paddr = current->lma;
section.s_size = current->_raw_size;
+#ifdef coff_get_section_load_page
+ section.s_page = coff_get_section_load_page (current);
+#endif
#ifdef COFF_WITH_PE
section.s_paddr = 0;
@@ -3289,7 +3335,8 @@ coff_write_object_contents (abfd)
&& ! is_reloc_section)
hasdebug = true;
-#ifdef RS6000COFF_C
+#ifdef RS6000COFF_C
+#ifndef XCOFF64
/* Indicate the use of an XCOFF overflow section header. */
if (current->reloc_count >= 0xffff || current->lineno_count >= 0xffff)
{
@@ -3297,6 +3344,7 @@ coff_write_object_contents (abfd)
section.s_nlnno = 0xffff;
}
#endif
+#endif
section.s_flags = sec_to_styp_flags (current->name, current->flags);
@@ -3627,6 +3675,11 @@ coff_write_object_contents (abfd)
#endif /* LYNXOS */
#endif /* I386 */
+#if defined(IA64)
+#define __A_MAGIC_SET__
+ internal_a.magic = ZMAGIC;
+#endif /* IA64 */
+
#if defined(SPARC)
#define __A_MAGIC_SET__
#if defined(LYNXOS)
@@ -4043,7 +4096,7 @@ coff_slurp_line_table (abfd, asect)
while (counter < asect->lineno_count)
{
struct internal_lineno dst;
- coff_swap_lineno_in (abfd, src, &dst);
+ bfd_coff_swap_lineno_in (abfd, src, &dst);
cache_ptr->line_number = dst.l_lnno;
if (cache_ptr->line_number == 0)
@@ -4984,7 +5037,17 @@ static const bfd_coff_backend_data bfd_coff_std_swap_table =
#else
false,
#endif
- COFF_DEFAULT_SECTION_ALIGNMENT_POWER,
+ COFF_DEFAULT_SECTION_ALIGNMENT_POWER,
+#ifdef COFF_FORCE_SYMBOLS_IN_STRINGS
+ true,
+#else
+ false,
+#endif
+#ifdef COFF_DEBUG_STRING_WIDE_PREFIX
+ 4,
+#else
+ 2,
+#endif
coff_SWAP_filehdr_in, coff_SWAP_aouthdr_in, coff_SWAP_scnhdr_in,
coff_SWAP_reloc_in, coff_bad_format_hook, coff_set_arch_mach_hook,
coff_mkobject_hook, styp_to_sec_flags, coff_set_alignment_hook,
diff --git a/bfd/coffgen.c b/bfd/coffgen.c
index 47e5baac190..bb7f86205dc 100644
--- a/bfd/coffgen.c
+++ b/bfd/coffgen.c
@@ -819,7 +819,16 @@ coff_fix_symbol_name (abfd, symbol, native, string_size_p,
{
unsigned int filnmlen;
- strncpy (native->u.syment._n._n_name, ".file", SYMNMLEN);
+ if (bfd_coff_force_symnames_in_strings (abfd))
+ {
+ native->u.syment._n._n_n._n_offset =
+ (*string_size_p + STRING_SIZE_SIZE);
+ native->u.syment._n._n_n._n_zeroes = 0;
+ *string_size_p += 6; /* strlen(".file") + 1 */
+ }
+ else
+ strncpy (native->u.syment._n._n_name, ".file", SYMNMLEN);
+
auxent = &(native + 1)->u.auxent;
filnmlen = bfd_coff_filnmlen (abfd);
@@ -846,7 +855,7 @@ coff_fix_symbol_name (abfd, symbol, native, string_size_p,
}
else
{
- if (name_length <= SYMNMLEN)
+ if (name_length <= SYMNMLEN && !bfd_coff_force_symnames_in_strings (abfd))
{
/* This name will fit into the symbol neatly */
strncpy (native->u.syment._n._n_name, symbol->name, SYMNMLEN);
@@ -861,7 +870,8 @@ coff_fix_symbol_name (abfd, symbol, native, string_size_p,
else
{
long filepos;
- bfd_byte buf[2];
+ bfd_byte buf[4];
+ int prefix_len = bfd_coff_debug_string_prefix_length (abfd);
/* This name should be written into the .debug section. For
some reason each name is preceded by a two byte length
@@ -871,24 +881,29 @@ coff_fix_symbol_name (abfd, symbol, native, string_size_p,
if (*debug_string_section_p == (asection *) NULL)
*debug_string_section_p = bfd_get_section_by_name (abfd, ".debug");
filepos = bfd_tell (abfd);
- bfd_put_16 (abfd, name_length + 1, buf);
+ if (prefix_len == 4)
+ bfd_put_32 (abfd, name_length + 1, buf);
+ else
+ bfd_put_16 (abfd, name_length + 1, buf);
+
if (!bfd_set_section_contents (abfd,
*debug_string_section_p,
(PTR) buf,
(file_ptr) *debug_string_size_p,
- (bfd_size_type) 2)
+ (bfd_size_type) prefix_len)
|| !bfd_set_section_contents (abfd,
*debug_string_section_p,
(PTR) symbol->name,
((file_ptr) *debug_string_size_p
- + 2),
+ + prefix_len),
(bfd_size_type) name_length + 1))
abort ();
if (bfd_seek (abfd, filepos, SEEK_SET) != 0)
abort ();
- native->u.syment._n._n_n._n_offset = *debug_string_size_p + 2;
+ native->u.syment._n._n_n._n_offset =
+ *debug_string_size_p + prefix_len;
native->u.syment._n._n_n._n_zeroes = 0;
- *debug_string_size_p += name_length + 3;
+ *debug_string_size_p += name_length + 1 + prefix_len;
}
}
}
@@ -1244,7 +1259,7 @@ coff_write_symbols (abfd)
{
/* This is not a COFF symbol, so it certainly is not a
file name, nor does it go in the .debug section. */
- maxlen = SYMNMLEN;
+ maxlen = bfd_coff_force_symnames_in_strings (abfd) ? 0 : SYMNMLEN;
}
else if (bfd_coff_symname_in_debug (abfd,
&c_symbol->native->u.syment))
@@ -1255,9 +1270,13 @@ coff_write_symbols (abfd)
}
else if (c_symbol->native->u.syment.n_sclass == C_FILE
&& c_symbol->native->u.syment.n_numaux > 0)
- maxlen = bfd_coff_filnmlen (abfd);
+ {
+ if (bfd_coff_force_symnames_in_strings (abfd))
+ bfd_write (".file", 1, 6, abfd);
+ maxlen = bfd_coff_filnmlen (abfd);
+ }
else
- maxlen = SYMNMLEN;
+ maxlen = bfd_coff_force_symnames_in_strings (abfd) ? 0 : SYMNMLEN;
if (name_length > maxlen)
{
diff --git a/bfd/coffswap.h b/bfd/coffswap.h
index d7d090fd41e..5bf011efdd7 100644
--- a/bfd/coffswap.h
+++ b/bfd/coffswap.h
@@ -168,12 +168,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef GET_SCNHDR_NRELOC
#define GET_SCNHDR_NRELOC bfd_h_get_16
#endif
+#ifndef MAX_SCNHDR_NRELOC
+#define MAX_SCNHDR_NRELOC 0xffff
+#endif
#ifndef PUT_SCNHDR_NRELOC
#define PUT_SCNHDR_NRELOC bfd_h_put_16
#endif
#ifndef GET_SCNHDR_NLNNO
#define GET_SCNHDR_NLNNO bfd_h_get_16
#endif
+#ifndef MAX_SCNHDR_NLNNO
+#define MAX_SCNHDR_NLNNO 0xffff
+#endif
#ifndef PUT_SCNHDR_NLNNO
#define PUT_SCNHDR_NLNNO bfd_h_put_16
#endif
@@ -184,6 +190,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define PUT_SCNHDR_FLAGS bfd_h_put_32
#endif
+#ifndef GET_RELOC_VADDR
+#define GET_RELOC_VADDR bfd_h_get_32
+#endif
+#ifndef PUT_RELOC_VADDR
+#define PUT_RELOC_VADDR bfd_h_put_32
+#endif
static void coff_swap_aouthdr_in PARAMS ((bfd *, PTR, PTR));
static unsigned int coff_swap_aouthdr_out PARAMS ((bfd *, PTR, PTR));
@@ -217,7 +229,7 @@ coff_swap_reloc_in (abfd, src, dst)
RELOC *reloc_src = (RELOC *) src;
struct internal_reloc *reloc_dst = (struct internal_reloc *) dst;
- reloc_dst->r_vaddr = bfd_h_get_32(abfd, (bfd_byte *)reloc_src->r_vaddr);
+ reloc_dst->r_vaddr = GET_RELOC_VADDR (abfd, (bfd_byte *)reloc_src->r_vaddr);
reloc_dst->r_symndx = bfd_h_get_signed_32(abfd, (bfd_byte *) reloc_src->r_symndx);
#ifdef RS6000COFF_C
@@ -241,7 +253,7 @@ coff_swap_reloc_out (abfd, src, dst)
{
struct internal_reloc *reloc_src = (struct internal_reloc *)src;
struct external_reloc *reloc_dst = (struct external_reloc *)dst;
- bfd_h_put_32(abfd, reloc_src->r_vaddr, (bfd_byte *) reloc_dst->r_vaddr);
+ PUT_RELOC_VADDR (abfd, reloc_src->r_vaddr, (bfd_byte *) reloc_dst->r_vaddr);
bfd_h_put_32(abfd, reloc_src->r_symndx, (bfd_byte *) reloc_dst->r_symndx);
#ifdef RS6000COFF_C
@@ -439,28 +451,6 @@ coff_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
}
goto end;
- /* RS/6000 "csect" auxents */
-#ifdef RS6000COFF_C
- case C_EXT:
- case C_HIDEXT:
- if (indx + 1 == numaux)
- {
- in->x_csect.x_scnlen.l = bfd_h_get_32 (abfd, ext->x_csect.x_scnlen);
- in->x_csect.x_parmhash = bfd_h_get_32 (abfd,
- ext->x_csect.x_parmhash);
- in->x_csect.x_snhash = bfd_h_get_16 (abfd, ext->x_csect.x_snhash);
- /* We don't have to hack bitfields in x_smtyp because it's
- defined by shifts-and-ands, which are equivalent on all
- byte orders. */
- in->x_csect.x_smtyp = bfd_h_get_8 (abfd, ext->x_csect.x_smtyp);
- in->x_csect.x_smclas = bfd_h_get_8 (abfd, ext->x_csect.x_smclas);
- in->x_csect.x_stab = bfd_h_get_32 (abfd, ext->x_csect.x_stab);
- in->x_csect.x_snstab = bfd_h_get_16 (abfd, ext->x_csect.x_snstab);
- goto end;
- }
- break;
-#endif
-
case C_STAT:
#ifdef C_LEAFSTAT
case C_LEAFSTAT:
@@ -558,27 +548,6 @@ coff_swap_aux_out (abfd, inp, type, class, indx, numaux, extp)
}
goto end;
-#ifdef RS6000COFF_C
- /* RS/6000 "csect" auxents */
- case C_EXT:
- case C_HIDEXT:
- if (indx + 1 == numaux)
- {
- PUTWORD (abfd, in->x_csect.x_scnlen.l, ext->x_csect.x_scnlen);
- PUTWORD (abfd, in->x_csect.x_parmhash, ext->x_csect.x_parmhash);
- PUTHALF (abfd, in->x_csect.x_snhash, ext->x_csect.x_snhash);
- /* We don't have to hack bitfields in x_smtyp because it's
- defined by shifts-and-ands, which are equivalent on all
- byte orders. */
- PUTBYTE (abfd, in->x_csect.x_smtyp, ext->x_csect.x_smtyp);
- PUTBYTE (abfd, in->x_csect.x_smclas, ext->x_csect.x_smclas);
- PUTWORD (abfd, in->x_csect.x_stab, ext->x_csect.x_stab);
- PUTHALF (abfd, in->x_csect.x_snstab, ext->x_csect.x_snstab);
- goto end;
- }
- break;
-#endif
-
case C_STAT:
#ifdef C_LEAFSTAT
case C_LEAFSTAT:
@@ -705,7 +674,11 @@ coff_swap_aouthdr_in (abfd, aouthdr_ext1, aouthdr_int1)
#ifdef RS6000COFF_C
+#ifdef XCOFF64
+ aouthdr_int->o_toc = bfd_h_get_64(abfd, aouthdr_ext->o_toc);
+#else
aouthdr_int->o_toc = bfd_h_get_32(abfd, aouthdr_ext->o_toc);
+#endif
aouthdr_int->o_snentry = bfd_h_get_16(abfd, aouthdr_ext->o_snentry);
aouthdr_int->o_sntext = bfd_h_get_16(abfd, aouthdr_ext->o_sntext);
aouthdr_int->o_sndata = bfd_h_get_16(abfd, aouthdr_ext->o_sndata);
@@ -716,9 +689,14 @@ coff_swap_aouthdr_in (abfd, aouthdr_ext1, aouthdr_int1)
aouthdr_int->o_algndata = bfd_h_get_16(abfd, aouthdr_ext->o_algndata);
aouthdr_int->o_modtype = bfd_h_get_16(abfd, aouthdr_ext->o_modtype);
aouthdr_int->o_cputype = bfd_h_get_16(abfd, aouthdr_ext->o_cputype);
+#ifdef XCOFF64
+ aouthdr_int->o_maxstack = bfd_h_get_64(abfd, aouthdr_ext->o_maxstack);
+ aouthdr_int->o_maxdata = bfd_h_get_64(abfd, aouthdr_ext->o_maxdata);
+#else
aouthdr_int->o_maxstack = bfd_h_get_32(abfd, aouthdr_ext->o_maxstack);
aouthdr_int->o_maxdata = bfd_h_get_32(abfd, aouthdr_ext->o_maxdata);
#endif
+#endif
#ifdef MIPSECOFF
aouthdr_int->bss_start = bfd_h_get_32(abfd, aouthdr_ext->bss_start);
@@ -763,7 +741,11 @@ coff_swap_aouthdr_out (abfd, in, out)
#endif
#ifdef RS6000COFF_C
+#ifdef XCOFF64
+ bfd_h_put_64 (abfd, aouthdr_in->o_toc, aouthdr_out->o_toc);
+#else
bfd_h_put_32 (abfd, aouthdr_in->o_toc, aouthdr_out->o_toc);
+#endif
bfd_h_put_16 (abfd, aouthdr_in->o_snentry, aouthdr_out->o_snentry);
bfd_h_put_16 (abfd, aouthdr_in->o_sntext, aouthdr_out->o_sntext);
bfd_h_put_16 (abfd, aouthdr_in->o_sndata, aouthdr_out->o_sndata);
@@ -774,9 +756,18 @@ coff_swap_aouthdr_out (abfd, in, out)
bfd_h_put_16 (abfd, aouthdr_in->o_algndata, aouthdr_out->o_algndata);
bfd_h_put_16 (abfd, aouthdr_in->o_modtype, aouthdr_out->o_modtype);
bfd_h_put_16 (abfd, aouthdr_in->o_cputype, aouthdr_out->o_cputype);
+#ifdef XCOFF64
+ bfd_h_put_64 (abfd, aouthdr_in->o_maxstack, aouthdr_out->o_maxstack);
+ bfd_h_put_64 (abfd, aouthdr_in->o_maxdata, aouthdr_out->o_maxdata);
+#else
bfd_h_put_32 (abfd, aouthdr_in->o_maxstack, aouthdr_out->o_maxstack);
bfd_h_put_32 (abfd, aouthdr_in->o_maxdata, aouthdr_out->o_maxdata);
+#endif
memset (aouthdr_out->o_resv2, 0, sizeof aouthdr_out->o_resv2);
+#ifdef XCOFF64
+ memset (aouthdr_out->o_debugger, 0, sizeof aouthdr_out->o_debugger);
+ memset (aouthdr_out->o_resv3, 0, sizeof aouthdr_out->o_resv3);
+#endif
#endif
#ifdef MIPSECOFF
@@ -879,8 +870,9 @@ coff_swap_scnhdr_out (abfd, in, out)
PUTWORD(abfd, scnhdr_int->s_nlnno, (bfd_byte *) scnhdr_ext->s_nlnno);
PUTWORD(abfd, scnhdr_int->s_nreloc, (bfd_byte *) scnhdr_ext->s_nreloc);
#else
- if (scnhdr_int->s_nlnno <= 0xffff)
- PUTHALF(abfd, scnhdr_int->s_nlnno, (bfd_byte *) scnhdr_ext->s_nlnno);
+ if (scnhdr_int->s_nlnno <= MAX_SCNHDR_NLNNO)
+ PUT_SCNHDR_NLNNO(abfd, scnhdr_int->s_nlnno,
+ (bfd_byte *) scnhdr_ext->s_nlnno);
else
{
char buf[sizeof (scnhdr_int->s_name) + 1];
@@ -891,10 +883,11 @@ coff_swap_scnhdr_out (abfd, in, out)
(_("%s: warning: %s: line number overflow: 0x%lx > 0xffff"),
bfd_get_filename (abfd),
buf, scnhdr_int->s_nlnno);
- PUTHALF (abfd, 0xffff, (bfd_byte *) scnhdr_ext->s_nlnno);
+ PUT_SCNHDR_NLNNO(abfd, 0xffff, (bfd_byte *) scnhdr_ext->s_nlnno);
}
- if (scnhdr_int->s_nreloc <= 0xffff)
- PUTHALF(abfd, scnhdr_int->s_nreloc, (bfd_byte *) scnhdr_ext->s_nreloc);
+ if (scnhdr_int->s_nreloc <= MAX_SCNHDR_NRELOC)
+ PUT_SCNHDR_NRELOC(abfd, scnhdr_int->s_nreloc,
+ (bfd_byte *) scnhdr_ext->s_nreloc);
else
{
char buf[sizeof (scnhdr_int->s_name) + 1];
@@ -905,7 +898,7 @@ coff_swap_scnhdr_out (abfd, in, out)
bfd_get_filename (abfd),
buf, scnhdr_int->s_nreloc);
bfd_set_error (bfd_error_file_truncated);
- PUTHALF (abfd, 0xffff, (bfd_byte *) scnhdr_ext->s_nreloc);
+ PUT_SCNHDR_NRELOC(abfd, 0xffff, (bfd_byte *) scnhdr_ext->s_nreloc);
ret = 0;
}
#endif
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 3d290a4eaee..324a168efca 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -80,6 +80,14 @@ case "${targ}" in
alpha*-*-*)
targ_defvec=ecoffalpha_little_vec
;;
+ ia64*-*-linux-gnu* | ia64*-*-elf*)
+ targ_defvec=bfd_elf64_ia64_little_vec
+ targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
+ ;;
+ sparc64-*-netbsd*)
+ targ_defvec=bfd_elf64_sparc_vec
+ targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
+ ;;
#endif /* BFD64 */
arc-*-elf*)
@@ -123,6 +131,10 @@ case "${targ}" in
targ_selvecs=armcoff_big_vec
targ_underscore=yes
;;
+ armeb-*-elf | arm*b-*-linux-gnu*)
+ targ_defvec=bfd_elf32_bigarm_vec
+ targ_selvecs=bfd_elf32_littlearm_vec
+ ;;
arm-*-elf | arm*-*-linux-gnu* | arm*-*-conix*)
targ_defvec=bfd_elf32_littlearm_vec
targ_selvecs=bfd_elf32_bigarm_vec
@@ -216,27 +228,27 @@ case "${targ}" in
targ_underscore=yes
;;
-#if 0 /* HPPA ELF does not work currently. */
hppa*-*-*elf* | hppa*-*-linux-gnu* | hppa*-*-lites* | hppa*-*-sysv4* | hppa*-*-rtems*)
targ_defvec=bfd_elf32_hppa_vec
;;
+#ifdef BFD64
+ hppa*64*-*-hpux11*)
+ targ_defvec=bfd_elf64_hppa_vec
+ targ_cflags=-DHPUX_LARGE_AR_IDS
+ ;;
#endif
#if defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) || defined (HOST_HPPAMPEIX)
-#if 0 /* HPPA ELF does not work currently. */
hppa*-*-bsd*)
targ_defvec=som_vec
targ_selvecs=bfd_elf32_hppa_vec
;;
-#endif
hppa*-*-hpux* | hppa*-*-hiux* | hppa*-*-mpeix*)
targ_defvec=som_vec
;;
-#if 0 /* HPPA ELF does not work currently. */
hppa*-*-osf*)
targ_defvec=som_vec
targ_selvecs=bfd_elf32_hppa_vec
;;
-#endif
#endif /* defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) */
i370-*-*)
@@ -287,9 +299,13 @@ case "${targ}" in
targ_defvec=bfd_elf32_i386_vec
targ_selvecs=i386coff_vec
;;
- i[3456]86-*-netbsd* | i[3456]86-*-openbsd*)
+ i[3456]86-*-netbsdelf*)
+ targ_defvec=bfd_elf32_i386_vec
+ targ_selvecs=i386netbsd_vec
+ ;;
+ i[3456]86-*-netbsdaout* | i[3456]86-*-netbsd* | i[3456]86-*-openbsd*)
targ_defvec=i386netbsd_vec
- targ_selvecs=i386bsd_vec
+ targ_selvecs="bfd_elf32_i386_vec i386bsd_vec"
targ_underscore=yes
;;
i[3456]86-*-netware*)
@@ -303,7 +319,7 @@ case "${targ}" in
;;
i[3456]86-*-linux-gnu*)
targ_defvec=bfd_elf32_i386_vec
- targ_selvecs=i386linux_vec
+ targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec"
;;
i[3456]86-*-lynxos*)
targ_defvec=i386lynx_coff_vec
@@ -610,6 +626,7 @@ case "${targ}" in
powerpc-*-aix* | powerpc-*-beos*)
targ_defvec=rs6000coff_vec
+ targ_selvecs="rs6000coff64_vec"
;;
powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \
diff --git a/bfd/configure b/bfd/configure
index 2f3ba7cfde6..b567ae50156 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -4992,10 +4992,12 @@ EOF
fi
-cat >> confdefs.h <<EOF
+if test -n "$TRAD_HEADER"; then
+ cat >> confdefs.h <<EOF
#define TRAD_HEADER $TRAD_HEADER
EOF
+fi
# Horrible hacks to build DLLs on Windows.
WIN32LDFLAGS=
@@ -5107,8 +5109,17 @@ do
apollocoff_vec) tb="$tb coff-apollo.lo" ;;
b_out_vec_big_host) tb="$tb bout.lo aout32.lo" ;;
b_out_vec_little_host) tb="$tb bout.lo aout32.lo" ;;
+ bfd_efi_app_ia32_vec) tb="$tb efi-app-ia32.lo peigen.lo cofflink.lo" ;;
+ bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo peigen.lo cofflink.lo"
+ target64=true ;;
bfd_elf64_alpha_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"
target64=true ;;
+ bfd_elf64_hppa_vec) tb="$tb elf64-hppa.lo elf64.lo $elf"
+ target64=true ;;
+ bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"
+ target64=true ;;
+ bfd_elf64_ia64_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"
+ target64=true ;;
bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
bfd_elf32_littlearc_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
bfd_elf32_littlearm_vec) tb="$tb elfarm-nabi.lo elf32.lo $elf" ;;
@@ -5197,14 +5208,16 @@ do
m68kaux_coff_vec) tb="$tb coff-aux.lo coff-m68k.lo cofflink.lo" ;;
m68ksysvcoff_vec) tb="$tb coff-svm68k.lo cofflink.lo" ;;
m88kbcs_vec) tb="$tb coff-m88k.lo" ;;
- mipslpe_vec) tb="$tb pe-mips.lo cofflink.lo" ;;
- mipslpei_vec) tb="$tb pei-mips.lo cofflink.lo" ;;
+ mipslpe_vec) tb="$tb pe-mips.lo peigen.lo cofflink.lo" ;;
+ mipslpei_vec) tb="$tb pei-mips.lo peigen.lo cofflink.lo" ;;
mcore_pe_big_vec) tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
mcore_pe_little_vec) tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
mcore_pei_big_vec) tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
mcore_pei_little_vec) tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
newsos3_vec) tb="$tb newsos3.lo aout32.lo" ;;
nlm32_i386_vec) tb="$tb nlm32-i386.lo nlm32.lo nlm.lo" ;;
+ rs6000coff64_vec) tb="$tb coff64-rs6000.lo xcofflink.lo"
+ target64=true ;;
nlm32_sparc_vec) tb="$tb nlm32-sparc.lo nlm32.lo nlm.lo" ;;
nlm32_alpha_vec) tb="$tb nlm32-alpha.lo nlm32.lo nlm.lo"
target64=true ;;
@@ -5333,17 +5346,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5337: checking for $ac_hdr" >&5
+echo "configure:5350: 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 5342 "configure"
+#line 5355 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5347: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5360: \"$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*
@@ -5372,12 +5385,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5376: checking for $ac_func" >&5
+echo "configure:5389: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5381 "configure"
+#line 5394 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5400,7 +5413,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5425,7 +5438,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:5429: checking for working mmap" >&5
+echo "configure:5442: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5433,7 +5446,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 5437 "configure"
+#line 5450 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -5573,7 +5586,7 @@ main()
}
EOF
-if { (eval echo configure:5577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5590: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -5598,12 +5611,12 @@ fi
for ac_func in madvise mprotect
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5602: checking for $ac_func" >&5
+echo "configure:5615: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5607 "configure"
+#line 5620 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5626,7 +5639,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5630: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
diff --git a/bfd/configure.host b/bfd/configure.host
index e24cd600228..bd5391cd7da 100644
--- a/bfd/configure.host
+++ b/bfd/configure.host
@@ -27,6 +27,8 @@ hppa*-*-mpeix*) HDEFINES=-DHOST_HPPAMPEIX ;;
hppa*-*-bsd*) HDEFINES=-DHOST_HPPABSD ;;
hppa*-*-osf*) HDEFINES=-DHOST_HPPAOSF ;;
+ia64-*-linux*) host64=true; HOST_64BIT_TYPE=long ;;
+
i[3456]86-sequent-bsd*) HDEFINES=-Dshared=genshared ;;
i[3456]86-sequent-sysv4*) ;;
i[3456]86-sequent-sysv*) HDEFINES=-Dshared=genshared ;;
diff --git a/bfd/configure.in b/bfd/configure.in
index 3e3a689bcae..4cc84deb3de 100644
--- a/bfd/configure.in
+++ b/bfd/configure.in
@@ -351,8 +351,10 @@ changequote([,])dnl
fi
AC_SUBST(COREFILE)
AC_SUBST(COREFLAG)
-AC_DEFINE_UNQUOTED(TRAD_HEADER, $TRAD_HEADER,
- [Name of host specific header file to include in trad-core.c.])
+if test -n "$TRAD_HEADER"; then
+ AC_DEFINE_UNQUOTED(TRAD_HEADER, $TRAD_HEADER,
+ [Name of host specific header file to include in trad-core.c.])
+fi
# Horrible hacks to build DLLs on Windows.
WIN32LDFLAGS=
@@ -464,8 +466,17 @@ do
apollocoff_vec) tb="$tb coff-apollo.lo" ;;
b_out_vec_big_host) tb="$tb bout.lo aout32.lo" ;;
b_out_vec_little_host) tb="$tb bout.lo aout32.lo" ;;
+ bfd_efi_app_ia32_vec) tb="$tb efi-app-ia32.lo peigen.lo cofflink.lo" ;;
+ bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo peigen.lo cofflink.lo"
+ target64=true ;;
bfd_elf64_alpha_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"
target64=true ;;
+ bfd_elf64_hppa_vec) tb="$tb elf64-hppa.lo elf64.lo $elf"
+ target64=true ;;
+ bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"
+ target64=true ;;
+ bfd_elf64_ia64_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"
+ target64=true ;;
bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
bfd_elf32_littlearc_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
bfd_elf32_littlearm_vec) tb="$tb elfarm-nabi.lo elf32.lo $elf" ;;
@@ -554,14 +565,16 @@ do
m68kaux_coff_vec) tb="$tb coff-aux.lo coff-m68k.lo cofflink.lo" ;;
m68ksysvcoff_vec) tb="$tb coff-svm68k.lo cofflink.lo" ;;
m88kbcs_vec) tb="$tb coff-m88k.lo" ;;
- mipslpe_vec) tb="$tb pe-mips.lo cofflink.lo" ;;
- mipslpei_vec) tb="$tb pei-mips.lo cofflink.lo" ;;
+ mipslpe_vec) tb="$tb pe-mips.lo peigen.lo cofflink.lo" ;;
+ mipslpei_vec) tb="$tb pei-mips.lo peigen.lo cofflink.lo" ;;
mcore_pe_big_vec) tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
mcore_pe_little_vec) tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
mcore_pei_big_vec) tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
mcore_pei_little_vec) tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
newsos3_vec) tb="$tb newsos3.lo aout32.lo" ;;
nlm32_i386_vec) tb="$tb nlm32-i386.lo nlm32.lo nlm.lo" ;;
+ rs6000coff64_vec) tb="$tb coff64-rs6000.lo xcofflink.lo"
+ target64=true ;;
nlm32_sparc_vec) tb="$tb nlm32-sparc.lo nlm32.lo nlm.lo" ;;
nlm32_alpha_vec) tb="$tb nlm32-alpha.lo nlm32.lo nlm.lo"
target64=true ;;
diff --git a/bfd/cpu-i960.c b/bfd/cpu-i960.c
index 7fb2c7ebc5c..2374b2fdf37 100644
--- a/bfd/cpu-i960.c
+++ b/bfd/cpu-i960.c
@@ -34,28 +34,44 @@ scan_960_mach (ap, string)
const char *string;
{
unsigned long machine;
+ int i;
+ int fail_because_not_80960 = false;
+
+ for (i = 0; i < strlen (string); i ++)
+ string[i] = tolower (string[i]);
+
+ /* Look for the string i960 at the front of the string. */
+ if (strncmp ("i960", string, 4) == 0)
+ {
+ string += 4;
- /* Look for the string i960, or somesuch at the front of the string */
+ /* i960 on it's own means core to us. */
+ if (* string == 0)
+ return ap->mach == bfd_mach_i960_core;
+
+ /* "i960:*" is valid, anything else is not. */
+ if (* string != ':')
+ return false;
- if (strncmp("i960",string,4) == 0) {
- string+=4;
- }
- else {
- /* no match, can be us */
- return false;
- }
- if (string[0] == 0) {
- /* i960 on it's own means core to us*/
- if (ap->mach == bfd_mach_i960_core) return true;
- return false;
- }
+ string ++;
+ }
+ /* In some bfds the cpu-id is written as "80960KA", "80960KB",
+ "80960CA" or "80960MC". */
+ else if (strncmp ("80960", string, 5) == 0)
+ {
+ string += 5;
- if (string[0] != ':') {
+ /* Sett his to true here. If a correct matching postfix
+ is detected below it will be reset to false. */
+ fail_because_not_80960 = true;
+ }
+ /* No match, can't be us. */
+ else
return false;
- }
- string++;
- if (string[0] == '\0')
+
+ if (* string == '\0')
return false;
+
if (string[0] == 'c' && string[1] == 'o' && string[2] == 'r' &&
string[3] == 'e' && string[4] == '\0')
machine = bfd_mach_i960_core;
@@ -63,20 +79,20 @@ scan_960_mach (ap, string)
machine = bfd_mach_i960_ka_sa;
else if (strcmp (string, "kb_sb") == 0)
machine = bfd_mach_i960_kb_sb;
- else if (string[1] == '\0' || string[2] != '\0') /* rest are 2-char */
+ else if (string[1] == '\0' || string[2] != '\0') /* rest are 2-char. */
return false;
else if (string[0] == 'k' && string[1] == 'b')
- machine = bfd_mach_i960_kb_sb;
+ { machine = bfd_mach_i960_kb_sb; fail_because_not_80960 = false; }
else if (string[0] == 's' && string[1] == 'b')
machine = bfd_mach_i960_kb_sb;
else if (string[0] == 'm' && string[1] == 'c')
- machine = bfd_mach_i960_mc;
+ { machine = bfd_mach_i960_mc; fail_because_not_80960 = false; }
else if (string[0] == 'x' && string[1] == 'a')
machine = bfd_mach_i960_xa;
else if (string[0] == 'c' && string[1] == 'a')
- machine = bfd_mach_i960_ca;
+ { machine = bfd_mach_i960_ca; fail_because_not_80960 = false; }
else if (string[0] == 'k' && string[1] == 'a')
- machine = bfd_mach_i960_ka_sa;
+ { machine = bfd_mach_i960_ka_sa; fail_because_not_80960 = false; }
else if (string[0] == 's' && string[1] == 'a')
machine = bfd_mach_i960_ka_sa;
else if (string[0] == 'j' && string[1] == 'x')
@@ -85,7 +101,13 @@ scan_960_mach (ap, string)
machine = bfd_mach_i960_hx;
else
return false;
- if (machine == ap->mach) return true;
+
+ if (fail_because_not_80960)
+ return false;
+
+ if (machine == ap->mach)
+ return true;
+
return false;
}
diff --git a/bfd/cpu-ia64-opc.c b/bfd/cpu-ia64-opc.c
new file mode 100644
index 00000000000..130dbe7b998
--- /dev/null
+++ b/bfd/cpu-ia64-opc.c
@@ -0,0 +1,586 @@
+/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+
+/* Logically, this code should be part of libopcode but since some of
+ the operand insertion/extraction functions help bfd to implement
+ relocations, this code is included as part of elf64-ia64.c. This
+ avoids circular dependencies between libopcode and libbfd and also
+ obviates the need for applications to link in libopcode when all
+ they really want is libbfd.
+
+ --davidm Mon Apr 13 22:14:02 1998 */
+
+#include "../opcodes/ia64-opc.h"
+
+#define NELEMS(a) ((int) (sizeof (a) / sizeof ((a)[0])))
+
+static const char*
+ins_rsvd (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ return "internal error---this shouldn't happen";
+}
+
+static const char*
+ext_rsvd (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ return "internal error---this shouldn't happen";
+}
+
+static const char*
+ins_const (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ return 0;
+}
+
+static const char*
+ext_const (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ return 0;
+}
+
+static const char*
+ins_reg (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ if (value >= 1u << self->field[0].bits)
+ return "register number out of range";
+
+ *code |= value << self->field[0].shift;
+ return 0;
+}
+
+static const char*
+ext_reg (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ *valuep = ((code >> self->field[0].shift)
+ & ((1u << self->field[0].bits) - 1));
+ return 0;
+}
+
+static const char*
+ins_immu (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ ia64_insn new = 0;
+ int i;
+
+ for (i = 0; i < NELEMS (self->field) && self->field[i].bits; ++i)
+ {
+ new |= ((value & ((((ia64_insn) 1) << self->field[i].bits) - 1))
+ << self->field[i].shift);
+ value >>= self->field[i].bits;
+ }
+ if (value)
+ return "integer operand out of range";
+
+ *code |= new;
+ return 0;
+}
+
+static const char*
+ext_immu (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ BFD_HOST_U_64_BIT value = 0;
+ int i, bits = 0, total = 0;
+
+ for (i = 0; i < NELEMS (self->field) && self->field[i].bits; ++i)
+ {
+ bits = self->field[i].bits;
+ value |= ((code >> self->field[i].shift)
+ & ((((BFD_HOST_U_64_BIT) 1) << bits) - 1)) << total;
+ total += bits;
+ }
+ *valuep = value;
+ return 0;
+}
+
+static const char*
+ins_immus8 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ if (value & 0x7)
+ return "value not an integer multiple of 8";
+ return ins_immu (self, value >> 3, code);
+}
+
+static const char*
+ext_immus8 (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ const char *result;
+
+ result = ext_immu (self, code, valuep);
+ if (result)
+ return result;
+
+ *valuep = *valuep << 3;
+ return 0;
+}
+
+static const char*
+ins_imms_scaled (const struct ia64_operand *self, ia64_insn value,
+ ia64_insn *code, int scale)
+{
+ BFD_HOST_64_BIT svalue = value, sign_bit;
+ ia64_insn new = 0;
+ int i;
+
+ svalue >>= scale;
+
+ for (i = 0; i < NELEMS (self->field) && self->field[i].bits; ++i)
+ {
+ new |= ((svalue & ((((ia64_insn) 1) << self->field[i].bits) - 1))
+ << self->field[i].shift);
+ sign_bit = (svalue >> (self->field[i].bits - 1)) & 1;
+ svalue >>= self->field[i].bits;
+ }
+ if ((!sign_bit && svalue != 0) || (sign_bit && svalue != -1))
+ return "integer operand out of range";
+
+ *code |= new;
+ return 0;
+}
+
+static const char*
+ext_imms_scaled (const struct ia64_operand *self, ia64_insn code,
+ ia64_insn *valuep, int scale)
+{
+ int i, bits = 0, total = 0, shift;
+ BFD_HOST_64_BIT val = 0;
+
+ for (i = 0; i < NELEMS (self->field) && self->field[i].bits; ++i)
+ {
+ bits = self->field[i].bits;
+ val |= ((code >> self->field[i].shift)
+ & ((((BFD_HOST_U_64_BIT) 1) << bits) - 1)) << total;
+ total += bits;
+ }
+ /* sign extend: */
+ shift = 8*sizeof (val) - total;
+ val = (val << shift) >> shift;
+
+ *valuep = (val << scale);
+ return 0;
+}
+
+static const char*
+ins_imms (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ return ins_imms_scaled (self, value, code, 0);
+}
+
+static const char*
+ins_immsu4 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ if (value == (BFD_HOST_U_64_BIT) 0x100000000)
+ value = 0;
+ else
+ value = (((BFD_HOST_64_BIT)value << 32) >> 32);
+
+ return ins_imms_scaled (self, value, code, 0);
+}
+
+static const char*
+ext_imms (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ return ext_imms_scaled (self, code, valuep, 0);
+}
+
+static const char*
+ins_immsm1 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ --value;
+ return ins_imms_scaled (self, value, code, 0);
+}
+
+static const char*
+ins_immsm1u4 (const struct ia64_operand *self, ia64_insn value,
+ ia64_insn *code)
+{
+ if (value == (BFD_HOST_U_64_BIT) 0x100000000)
+ value = 0;
+ else
+ value = (((BFD_HOST_64_BIT)value << 32) >> 32);
+
+ --value;
+ return ins_imms_scaled (self, value, code, 0);
+}
+
+static const char*
+ext_immsm1 (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ const char *res = ext_imms_scaled (self, code, valuep, 0);
+
+ ++*valuep;
+ return res;
+}
+
+static const char*
+ins_imms1 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ return ins_imms_scaled (self, value, code, 1);
+}
+
+static const char*
+ext_imms1 (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ return ext_imms_scaled (self, code, valuep, 1);
+}
+
+static const char*
+ins_imms4 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ return ins_imms_scaled (self, value, code, 4);
+}
+
+static const char*
+ext_imms4 (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ return ext_imms_scaled (self, code, valuep, 4);
+}
+
+static const char*
+ins_imms16 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ return ins_imms_scaled (self, value, code, 16);
+}
+
+static const char*
+ext_imms16 (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ return ext_imms_scaled (self, code, valuep, 16);
+}
+
+static const char*
+ins_cimmu (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ ia64_insn mask = (((ia64_insn) 1) << self->field[0].bits) - 1;
+ return ins_immu (self, value ^ mask, code);
+}
+
+static const char*
+ext_cimmu (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ const char *result;
+ ia64_insn mask;
+
+ mask = (((ia64_insn) 1) << self->field[0].bits) - 1;
+ result = ext_immu (self, code, valuep);
+ if (!result)
+ {
+ mask = (((ia64_insn) 1) << self->field[0].bits) - 1;
+ *valuep ^= mask;
+ }
+ return result;
+}
+
+static const char*
+ins_cnt (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ --value;
+ if (value >= ((BFD_HOST_U_64_BIT) 1) << self->field[0].bits)
+ return "count out of range";
+
+ *code |= value << self->field[0].shift;
+ return 0;
+}
+
+static const char*
+ext_cnt (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ *valuep = ((code >> self->field[0].shift)
+ & ((((BFD_HOST_U_64_BIT) 1) << self->field[0].bits) - 1)) + 1;
+ return 0;
+}
+
+static const char*
+ins_cnt2b (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ --value;
+
+ if (value > 2)
+ return "count must be in range 1..3";
+
+ *code |= value << self->field[0].shift;
+ return 0;
+}
+
+static const char*
+ext_cnt2b (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ *valuep = ((code >> self->field[0].shift) & 0x3) + 1;
+ return 0;
+}
+
+static const char*
+ins_cnt2c (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ switch (value)
+ {
+ case 0: value = 0; break;
+ case 7: value = 1; break;
+ case 15: value = 2; break;
+ case 16: value = 3; break;
+ default: return "count must be 0, 7, 15, or 16";
+ }
+ *code |= value << self->field[0].shift;
+ return 0;
+}
+
+static const char*
+ext_cnt2c (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ ia64_insn value;
+
+ value = (code >> self->field[0].shift) & 0x3;
+ switch (value)
+ {
+ case 0: value = 0; break;
+ case 1: value = 7; break;
+ case 2: value = 15; break;
+ case 3: value = 16; break;
+ }
+ *valuep = value;
+ return 0;
+}
+
+static const char*
+ins_inc3 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
+{
+ BFD_HOST_64_BIT val = value;
+ BFD_HOST_U_64_BIT sign = 0;
+
+ if (val < 0)
+ {
+ sign = 0x4;
+ value = -value;
+ }
+ switch (value)
+ {
+ case 1: value = 3; break;
+ case 4: value = 2; break;
+ case 8: value = 1; break;
+ case 16: value = 0; break;
+ default: return "count must be +/- 1, 4, 8, or 16";
+ }
+ *code |= (sign | value) << self->field[0].shift;
+ return 0;
+}
+
+static const char*
+ext_inc3 (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
+{
+ BFD_HOST_64_BIT val;
+ int negate;
+
+ val = (code >> self->field[0].shift) & 0x7;
+ negate = val & 0x4;
+ switch (val & 0x3)
+ {
+ case 0: val = 16; break;
+ case 1: val = 8; break;
+ case 2: val = 4; break;
+ case 3: val = 1; break;
+ }
+ if (negate)
+ val = -val;
+
+ *valuep = val;
+ return 0;
+}
+
+#define CST IA64_OPND_CLASS_CST
+#define REG IA64_OPND_CLASS_REG
+#define IND IA64_OPND_CLASS_IND
+#define ABS IA64_OPND_CLASS_ABS
+#define REL IA64_OPND_CLASS_REL
+
+#define SDEC IA64_OPND_FLAG_DECIMAL_SIGNED
+#define UDEC IA64_OPND_FLAG_DECIMAL_UNSIGNED
+
+const struct ia64_operand elf64_ia64_operands[IA64_OPND_COUNT] =
+ {
+ /* constants: */
+ { CST, ins_const, ext_const, "NIL", {{ 0, }}, 0, "<none>" },
+ { CST, ins_const, ext_const, "ar.ccv", {{ 0, }}, 0, "ar.ccv" },
+ { CST, ins_const, ext_const, "ar.pfs", {{ 0, }}, 0, "ar.pfs" },
+ { CST, ins_const, ext_const, "1", {{ 0, }}, 0, "1" },
+ { CST, ins_const, ext_const, "8", {{ 0, }}, 0, "1" },
+ { CST, ins_const, ext_const, "16", {{ 0, }}, 0, "16" },
+ { CST, ins_const, ext_const, "r0", {{ 0, }}, 0, "r0" },
+ { CST, ins_const, ext_const, "ip", {{ 0, }}, 0, "ip" },
+ { CST, ins_const, ext_const, "pr", {{ 0, }}, 0, "pr" },
+ { CST, ins_const, ext_const, "pr.rot", {{ 0, }}, 0, "pr.rot" },
+ { CST, ins_const, ext_const, "psr", {{ 0, }}, 0, "psr" },
+ { CST, ins_const, ext_const, "psr.l", {{ 0, }}, 0, "psr.l" },
+ { CST, ins_const, ext_const, "psr.um", {{ 0, }}, 0, "psr.um" },
+
+ /* register operands: */
+ { REG, ins_reg, ext_reg, "ar", {{ 7, 20}}, 0, /* AR3 */
+ "an application register" },
+ { REG, ins_reg, ext_reg, "b", {{ 3, 6}}, 0, /* B1 */
+ "a branch register" },
+ { REG, ins_reg, ext_reg, "b", {{ 3, 13}}, 0, /* B2 */
+ "a branch register"},
+ { REG, ins_reg, ext_reg, "cr", {{ 7, 20}}, 0, /* CR */
+ "a control register"},
+ { REG, ins_reg, ext_reg, "f", {{ 7, 6}}, 0, /* F1 */
+ "a floating-point register" },
+ { REG, ins_reg, ext_reg, "f", {{ 7, 13}}, 0, /* F2 */
+ "a floating-point register" },
+ { REG, ins_reg, ext_reg, "f", {{ 7, 20}}, 0, /* F3 */
+ "a floating-point register" },
+ { REG, ins_reg, ext_reg, "f", {{ 7, 27}}, 0, /* F4 */
+ "a floating-point register" },
+ { REG, ins_reg, ext_reg, "p", {{ 6, 6}}, 0, /* P1 */
+ "a predicate register" },
+ { REG, ins_reg, ext_reg, "p", {{ 6, 27}}, 0, /* P2 */
+ "a predicate register" },
+ { REG, ins_reg, ext_reg, "r", {{ 7, 6}}, 0, /* R1 */
+ "a general register" },
+ { REG, ins_reg, ext_reg, "r", {{ 7, 13}}, 0, /* R2 */
+ "a general register" },
+ { REG, ins_reg, ext_reg, "r", {{ 7, 20}}, 0, /* R3 */
+ "a general register" },
+ { REG, ins_reg, ext_reg, "r", {{ 2, 20}}, 0, /* R3_2 */
+ "a general register r0-r3" },
+
+ /* indirect operands: */
+ { IND, ins_reg, ext_reg, "cpuid", {{7, 20}}, 0, /* CPUID_R3 */
+ "a cpuid register" },
+ { IND, ins_reg, ext_reg, "dbr", {{7, 20}}, 0, /* DBR_R3 */
+ "a dbr register" },
+ { IND, ins_reg, ext_reg, "dtr", {{7, 20}}, 0, /* DTR_R3 */
+ "a dtr register" },
+ { IND, ins_reg, ext_reg, "itr", {{7, 20}}, 0, /* ITR_R3 */
+ "an itr register" },
+ { IND, ins_reg, ext_reg, "ibr", {{7, 20}}, 0, /* IBR_R3 */
+ "an ibr register" },
+ { IND, ins_reg, ext_reg, "", {{7, 20}}, 0, /* MR3 */
+ "an indirect memory address" },
+ { IND, ins_reg, ext_reg, "msr", {{7, 20}}, 0, /* MSR_R3 */
+ "an msr register" },
+ { IND, ins_reg, ext_reg, "pkr", {{7, 20}}, 0, /* PKR_R3 */
+ "a pkr register" },
+ { IND, ins_reg, ext_reg, "pmc", {{7, 20}}, 0, /* PMC_R3 */
+ "a pmc register" },
+ { IND, ins_reg, ext_reg, "pmd", {{7, 20}}, 0, /* PMD_R3 */
+ "a pmd register" },
+ { IND, ins_reg, ext_reg, "rr", {{7, 20}}, 0, /* RR_R3 */
+ "an rr register" },
+
+ /* immediate operands: */
+ { ABS, ins_cimmu, ext_cimmu, 0, {{ 5, 20 }}, UDEC, /* CCNT5 */
+ "a 5-bit count (0-31)" },
+ { ABS, ins_cnt, ext_cnt, 0, {{ 2, 27 }}, UDEC, /* CNT2a */
+ "a 2-bit count (1-4)" },
+ { ABS, ins_cnt2b, ext_cnt2b, 0, {{ 2, 27 }}, UDEC, /* CNT2b */
+ "a 2-bit count (1-3)" },
+ { ABS, ins_cnt2c, ext_cnt2c, 0, {{ 2, 30 }}, UDEC, /* CNT2c */
+ "a count (0, 7, 15, or 16)" },
+ { ABS, ins_immu, ext_immu, 0, {{ 5, 14}}, UDEC, /* CNT5 */
+ "a 5-bit count (0-31)" },
+ { ABS, ins_immu, ext_immu, 0, {{ 6, 27}}, UDEC, /* CNT6 */
+ "a 6-bit count (0-63)" },
+ { ABS, ins_cimmu, ext_cimmu, 0, {{ 6, 20}}, UDEC, /* CPOS6a */
+ "a 6-bit bit pos (0-63)" },
+ { ABS, ins_cimmu, ext_cimmu, 0, {{ 6, 14}}, UDEC, /* CPOS6b */
+ "a 6-bit bit pos (0-63)" },
+ { ABS, ins_cimmu, ext_cimmu, 0, {{ 6, 31}}, UDEC, /* CPOS6c */
+ "a 6-bit bit pos (0-63)" },
+ { ABS, ins_imms, ext_imms, 0, {{ 1, 36}}, SDEC, /* IMM1 */
+ "a 1-bit integer (-1, 0)" },
+ { ABS, ins_immu, ext_immu, 0, {{ 2, 13}}, UDEC, /* IMMU2 */
+ "a 2-bit unsigned (0-3)" },
+ { ABS, ins_immu, ext_immu, 0, {{ 7, 13}}, 0, /* IMMU7a */
+ "a 7-bit unsigned (0-127)" },
+ { ABS, ins_immu, ext_immu, 0, {{ 7, 20}}, 0, /* IMMU7b */
+ "a 7-bit unsigned (0-127)" },
+ { ABS, ins_immu, ext_immu, 0, {{ 7, 13}}, UDEC, /* SOF */
+ "a frame size (register count)" },
+ { ABS, ins_immu, ext_immu, 0, {{ 7, 20}}, UDEC, /* SOL */
+ "a local register count" },
+ { ABS, ins_immus8,ext_immus8,0, {{ 4, 27}}, UDEC, /* SOR */
+ "a rotating register count (integer multiple of 8)" },
+ { ABS, ins_imms, ext_imms, 0, /* IMM8 */
+ {{ 7, 13}, { 1, 36}}, SDEC,
+ "an 8-bit integer (-128-127)" },
+ { ABS, ins_immsu4, ext_imms, 0, /* IMM8U4 */
+ {{ 7, 13}, { 1, 36}}, SDEC,
+ "an 8-bit signed integer for 32-bit unsigned compare (-128-127)" },
+ { ABS, ins_immsm1, ext_immsm1, 0, /* IMM8M1 */
+ {{ 7, 13}, { 1, 36}}, SDEC,
+ "an 8-bit integer (-127-128)" },
+ { ABS, ins_immsm1u4, ext_immsm1, 0, /* IMM8M1U4 */
+ {{ 7, 13}, { 1, 36}}, SDEC,
+ "an 8-bit integer for 32-bit unsigned compare (-127-(-1),1-128,0x100000000)" },
+ { ABS, ins_immsm1, ext_immsm1, 0, /* IMM8M1U8 */
+ {{ 7, 13}, { 1, 36}}, SDEC,
+ "an 8-bit integer for 64-bit unsigned compare (-127-(-1),1-128,0x10000000000000000)" },
+ { ABS, ins_immu, ext_immu, 0, {{ 2, 33}, { 7, 20}}, 0, /* IMMU9 */
+ "a 9-bit unsigned (0-511)" },
+ { ABS, ins_imms, ext_imms, 0, /* IMM9a */
+ {{ 7, 6}, { 1, 27}, { 1, 36}}, SDEC,
+ "a 9-bit integer (-256-255)" },
+ { ABS, ins_imms, ext_imms, 0, /* IMM9b */
+ {{ 7, 13}, { 1, 27}, { 1, 36}}, SDEC,
+ "a 9-bit integer (-256-255)" },
+ { ABS, ins_imms, ext_imms, 0, /* IMM14 */
+ {{ 7, 13}, { 6, 27}, { 1, 36}}, SDEC,
+ "a 14-bit integer (-8192-8191)" },
+ { ABS, ins_imms1, ext_imms1, 0, /* IMM17 */
+ {{ 7, 6}, { 8, 24}, { 1, 36}}, 0,
+ "a 17-bit integer (-65536-65535)" },
+ { ABS, ins_immu, ext_immu, 0, {{20, 6}, { 1, 36}}, 0, /* IMMU21 */
+ "a 21-bit unsigned" },
+ { ABS, ins_imms, ext_imms, 0, /* IMM22 */
+ {{ 7, 13}, { 9, 27}, { 5, 22}, { 1, 36}}, SDEC,
+ "a 22-bit integer" },
+ { ABS, ins_immu, ext_immu, 0, /* IMMU24 */
+ {{21, 6}, { 2, 31}, { 1, 36}}, 0,
+ "a 24-bit unsigned" },
+ { ABS, ins_imms16,ext_imms16,0, {{27, 6}, { 1, 36}}, 0, /* IMM44 */
+ "a 44-bit unsigned (least 16 bits ignored/zeroes)" },
+ { ABS, ins_rsvd, ext_rsvd, 0, {{0, 0}}, 0, /* IMMU62 */
+ "a 62-bit unsigned" },
+ { ABS, ins_rsvd, ext_rsvd, 0, {{0, 0}}, 0, /* IMMU64 */
+ "a 64-bit unsigned" },
+ { ABS, ins_inc3, ext_inc3, 0, {{ 3, 13}}, SDEC, /* INC3 */
+ "an increment (+/- 1, 4, 8, or 16)" },
+ { ABS, ins_cnt, ext_cnt, 0, {{ 4, 27}}, UDEC, /* LEN4 */
+ "a 4-bit length (1-16)" },
+ { ABS, ins_cnt, ext_cnt, 0, {{ 6, 27}}, UDEC, /* LEN6 */
+ "a 6-bit length (1-64)" },
+ { ABS, ins_immu, ext_immu, 0, {{ 4, 20}}, 0, /* MBTYPE4 */
+ "a mix type (@rev, @mix, @shuf, @alt, or @brcst)" },
+ { ABS, ins_immu, ext_immu, 0, {{ 8, 20}}, 0, /* MBTYPE8 */
+ "an 8-bit mix type" },
+ { ABS, ins_immu, ext_immu, 0, {{ 6, 14}}, UDEC, /* POS6 */
+ "a 6-bit bit pos (0-63)" },
+ { REL, ins_imms4, ext_imms4, 0, {{ 7, 6}, { 2, 33}}, 0, /* TAG13 */
+ "a branch tag" },
+ { REL, ins_imms4, ext_imms4, 0, {{ 9, 24}}, 0, /* TAG13b */
+ "a branch tag" },
+ { REL, ins_imms4, ext_imms4, 0, {{20, 6}, { 1, 36}}, 0, /* TGT25 */
+ "a branch target" },
+ { REL, ins_imms4, ext_imms4, 0, /* TGT25b */
+ {{ 7, 6}, {13, 20}, { 1, 36}}, 0,
+ "a branch target" },
+ { REL, ins_imms4, ext_imms4, 0, {{20, 13}, { 1, 36}}, 0, /* TGT25c */
+ "a branch target" },
+ { REL, ins_rsvd, ext_rsvd, 0, {{0, 0}}, 0, /* TGT64 */
+ "a branch target" },
+ };
diff --git a/bfd/cpu-ia64.c b/bfd/cpu-ia64.c
new file mode 100644
index 00000000000..8069b1a9eff
--- /dev/null
+++ b/bfd/cpu-ia64.c
@@ -0,0 +1,42 @@
+/* BFD support for the ia64 architecture.
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+
+const bfd_arch_info_type bfd_ia64_arch =
+ {
+ 64, /* 64 bits in a word */
+ 64, /* 64 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_ia64,
+ 0, /* only 1 machine */
+ "ia64",
+ "ia64",
+ 3, /* log2 of section alignment */
+ true, /* the one and only */
+ bfd_default_compatible,
+ bfd_default_scan ,
+ 0,
+ };
+
+#include "cpu-ia64-opc.c"
diff --git a/bfd/cpu-powerpc.c b/bfd/cpu-powerpc.c
index 11f0f80af5a..a2c8f59fe40 100644
--- a/bfd/cpu-powerpc.c
+++ b/bfd/cpu-powerpc.c
@@ -103,6 +103,20 @@ static const bfd_arch_info_type arch_info_struct[] =
false, /* not the default */
powerpc_compatible,
bfd_default_scan,
+ &arch_info_struct[4]
+ },
+ {
+ 32, /* 32 bits in a word */
+ 64, /* 64 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_powerpc,
+ 620, /* for the mpc620 */
+ "powerpc",
+ "powerpc:620",
+ 3,
+ false, /* not the default */
+ powerpc_compatible,
+ bfd_default_scan,
0
}
};
diff --git a/bfd/dep-in.sed b/bfd/dep-in.sed
index 444dde0c019..c3781f23bcb 100644
--- a/bfd/dep-in.sed
+++ b/bfd/dep-in.sed
@@ -6,8 +6,9 @@ t loop
s!\.o:!.lo:!
s! @BFD_H@!!g
s!@INCDIR@!$(INCDIR)!g
+s!@SRCDIR@/../opcodes!$(srcdir)/../opcodes!g
s!@SRCDIR@/!!g
-s!hosts/[^ ]*\.h ! !g
+s! hosts/[^ ]*\.h! !g
s/ sysdep.h//g
s! \.\./bfd/sysdep.h!!g
s/ libbfd.h//g
diff --git a/bfd/doc/ChangeLog b/bfd/doc/ChangeLog
index 968c2c9ff01..39c7265e836 100644
--- a/bfd/doc/ChangeLog
+++ b/bfd/doc/ChangeLog
@@ -1,3 +1,16 @@
+Wed May 24 12:03:25 2000 Hans-Peter Nilsson <hp@axis.com>
+
+ * bfdint.texi (BFD ELF processor required): Add paragraph about
+ target necessities for readelf.
+
+2000-04-30 Ben Elliston <bje@redhat.com>
+
+ * bfdint.texi (BFD generated files): Fix another typo.
+
+2000-04-17 Ben Elliston <bje@redhat.com>
+
+ * bfdint.texi (BFD_JUMP_TABLE macros): Fix typo.
+
Fri Apr 7 17:54:38 2000 Andrew Cagney <cagney@b1.cygnus.com>
* Makefile.in: Rebuild with current autoconf/automake.
diff --git a/bfd/doc/bfdint.texi b/bfd/doc/bfdint.texi
index eb09b34a9d2..ef4fa910831 100644
--- a/bfd/doc/bfdint.texi
+++ b/bfd/doc/bfdint.texi
@@ -447,7 +447,7 @@ For example, the @samp{BFD_JUMP_TABLE_RELOCS} macro defines three
functions: @samp{_get_reloc_upper_bound}, @samp{_canonicalize_reloc},
and @samp{_bfd_reloc_type_lookup}. A reference like
@samp{BFD_JUMP_TABLE_RELOCS (foo)} will expand into three functions
-prefixed with @samp{foo}: @samp{foo_get_reloc_upper_found}, etc. The
+prefixed with @samp{foo}: @samp{foo_get_reloc_upper_bound}, etc. The
@samp{BFD_JUMP_TABLE_RELOCS} macro will be placed such that those three
functions initialize the appropriate fields in the BFD target vector.
@@ -908,7 +908,7 @@ target vector is named @samp{_bfd_canonicalize_dynamic_reloc}.
BFD contains several automatically generated files. This section
describes them. Some files are created at configure time, when you
configure BFD. Some files are created at make time, when you build
-time. Some files are automatically rebuilt at make time, but only if
+BFD. Some files are automatically rebuilt at make time, but only if
you configure with the @samp{--enable-maintainer-mode} option. Some
files live in the object directory---the directory from which you run
configure---and some live in the source directory. All files that live
@@ -1607,6 +1607,10 @@ it should use the @samp{START_RELOC_NUMBERS}, @samp{RELOC_NUMBER},
macros to create a table mapping the number used to indentify a
relocation to a name describing that relocation.
+While not a BFD component, you probably also want to make the binutils
+program @samp{readelf} parse your ELF objects. For this, you need to add
+code for @code{EM_@var{cpu}} as appropriate in @file{binutils/readelf.c}.
+
@node BFD ELF processor linker
@subsubsection Processor specific linker support
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index 92397a2e119..1c02912d214 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -700,8 +700,8 @@ concat_filename (table, file)
if (file - 1 >= table->num_files)
{
- (*_bfd_error_handler) (_("Dwarf Error: mangled line number "
- "section (bad file number)."));
+ (*_bfd_error_handler)
+ (_("Dwarf Error: mangled line number section (bad file number)."));
return "<unknown>";
}
diff --git a/bfd/efi-app-ia32.c b/bfd/efi-app-ia32.c
new file mode 100644
index 00000000000..5784178935a
--- /dev/null
+++ b/bfd/efi-app-ia32.c
@@ -0,0 +1,35 @@
+/* BFD back-end for Intel IA-32 EFI application files.
+ Copyright 1999 Free Software Foundation, Inc.
+ Contributed by David Mosberger <davidm@hpl.hp.com>
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "bfd.h"
+#include "sysdep.h"
+
+#define TARGET_SYM bfd_efi_app_ia32_vec
+#define TARGET_NAME "efi-app-ia32"
+#define COFF_IMAGE_WITH_PE
+#define COFF_WITH_PE
+#define PCRELOFFSET true
+#define TARGET_UNDERSCORE '_'
+#define COFF_LONG_SECTION_NAMES
+#define ALIGN_SECTIONS_IN_FILE
+#define PEI_DEFAULT_TARGET_SUBSYSTEM IMAGE_SUBSYSTEM_EFI_APPLICATION
+#define PEI_FORCE_MINIMUM_ALIGNMENT
+
+#include "coff-i386.c"
diff --git a/bfd/efi-app-ia64.c b/bfd/efi-app-ia64.c
new file mode 100644
index 00000000000..b3182dc8b3f
--- /dev/null
+++ b/bfd/efi-app-ia64.c
@@ -0,0 +1,35 @@
+/* BFD back-end for HP/Intel IA-64 EFI application files.
+ Copyright 1999 Free Software Foundation, Inc.
+ Contributed by David Mosberger <davidm@hpl.hp.com>
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "bfd.h"
+#include "sysdep.h"
+
+#define TARGET_SYM bfd_efi_app_ia64_vec
+#define TARGET_NAME "efi-app-ia64"
+#define COFF_IMAGE_WITH_PE
+#define COFF_WITH_PE
+#define COFF_WITH_PEP64
+#define PCRELOFFSET true
+#define TARGET_UNDERSCORE '_'
+#define COFF_LONG_SECTION_NAMES
+#define PEI_DEFAULT_TARGET_SUBSYSTEM IMAGE_SUBSYSTEM_EFI_APPLICATION
+#define PEI_FORCE_MINIMUM_ALIGNMENT
+
+#include "coff-ia64.c"
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index 0dcecdf5884..3978aee2693 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -1142,6 +1142,10 @@ extern long bfd_elf32_slurp_symbol_table
extern boolean bfd_elf32_write_shdrs_and_ehdr PARAMS ((bfd *));
extern int bfd_elf32_write_out_phdrs
PARAMS ((bfd *, const Elf_Internal_Phdr *, int));
+extern void bfd_elf32_write_relocs
+ PARAMS ((bfd *, asection *, PTR));
+extern boolean bfd_elf32_slurp_reloc_table
+ PARAMS ((bfd *, asection *, asymbol **, boolean));
extern boolean bfd_elf32_add_dynamic_entry
PARAMS ((struct bfd_link_info *, bfd_vma, bfd_vma));
extern boolean bfd_elf32_link_create_dynamic_sections
@@ -1185,6 +1189,10 @@ extern long bfd_elf64_slurp_symbol_table
extern boolean bfd_elf64_write_shdrs_and_ehdr PARAMS ((bfd *));
extern int bfd_elf64_write_out_phdrs
PARAMS ((bfd *, const Elf_Internal_Phdr *, int));
+extern void bfd_elf64_write_relocs
+ PARAMS ((bfd *, asection *, PTR));
+extern boolean bfd_elf64_slurp_reloc_table
+ PARAMS ((bfd *, asection *, asymbol **, boolean));
extern boolean bfd_elf64_add_dynamic_entry
PARAMS ((struct bfd_link_info *, bfd_vma, bfd_vma));
extern boolean bfd_elf64_link_create_dynamic_sections
diff --git a/bfd/elf-hppa.h b/bfd/elf-hppa.h
index b55e1c4e5bc..0a4dc649e3e 100644
--- a/bfd/elf-hppa.h
+++ b/bfd/elf-hppa.h
@@ -1,5 +1,5 @@
/* Common code for PA ELF implementations.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -28,6 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#if ARCH_SIZE == 64
#define ELF_R_TYPE(X) ELF64_R_TYPE(X)
#define ELF_R_SYM(X) ELF64_R_SYM(X)
+#define elf_hppa_internal_shdr Elf64_Internal_Shdr
#define _bfd_elf_hppa_gen_reloc_type _bfd_elf64_hppa_gen_reloc_type
#define elf_hppa_relocate_section elf64_hppa_relocate_section
#define bfd_elf_bfd_final_link bfd_elf64_bfd_final_link
@@ -36,33 +37,39 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#if ARCH_SIZE == 32
#define ELF_R_TYPE(X) ELF32_R_TYPE(X)
#define ELF_R_SYM(X) ELF32_R_SYM(X)
+#define elf_hppa_internal_shdr Elf32_Internal_Shdr
#define _bfd_elf_hppa_gen_reloc_type _bfd_elf32_hppa_gen_reloc_type
#define elf_hppa_relocate_section elf32_hppa_relocate_section
#define bfd_elf_bfd_final_link bfd_elf32_bfd_final_link
#define elf_hppa_final_link elf32_hppa_final_link
#endif
-static boolean
-elf_hppa_relocate_section
- PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *,
- bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
+elf_hppa_reloc_type ** _bfd_elf_hppa_gen_reloc_type
+ PARAMS ((bfd *, elf_hppa_reloc_type, int, int, int, asymbol *));
-static bfd_reloc_status_type elf_hppa_final_link_relocate
- 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 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_Rel *));
+
+static reloc_howto_type * elf_hppa_reloc_type_lookup
+ PARAMS ((bfd *, bfd_reloc_code_real_type));
+
+static boolean elf_hppa_is_local_label_name
+ PARAMS ((bfd *, const char *));
-static unsigned long elf_hppa_relocate_insn
- PARAMS ((unsigned long, long, unsigned long));
+static boolean elf_hppa_fake_sections
+ PARAMS ((bfd *abfd, elf_hppa_internal_shdr *, asection *));
+
+#if ARCH_SIZE == 64
+static void elf_hppa_final_write_processing
+ PARAMS ((bfd *, boolean));
static boolean elf_hppa_add_symbol_hook
PARAMS ((bfd *, struct bfd_link_info *, const Elf_Internal_Sym *,
const char **, flagword *, asection **, bfd_vma *));
-static boolean elf_hppa_final_link
- PARAMS ((bfd *, struct bfd_link_info *));
-
static boolean elf_hppa_unmark_useless_dynamic_symbols
PARAMS ((struct elf_link_hash_entry *, PTR));
@@ -72,268 +79,518 @@ static boolean elf_hppa_remark_useless_dynamic_symbols
static void elf_hppa_record_segment_addrs
PARAMS ((bfd *, asection *, PTR));
+static boolean elf_hppa_final_link
+ PARAMS ((bfd *, struct bfd_link_info *));
+
+static 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
+ 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 unsigned int elf_hppa_relocate_insn
+ PARAMS ((unsigned int, unsigned int, unsigned int));
+#endif
+
+
/* ELF/PA relocation howto entries. */
static reloc_howto_type elf_hppa_howto_table[ELF_HOWTO_TABLE_SIZE] =
{
- {R_PARISC_NONE, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_NONE"},
+ { R_PARISC_NONE, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_NONE", false, 0, 0, false },
/* The values in DIR32 are to placate the check in
_bfd_stab_section_find_nearest_line. */
- {R_PARISC_DIR32, 0, 2, 32, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DIR32", false, 0, 0xffffffff, false},
- {R_PARISC_DIR21L, 0, 0, 21, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DIR21L"},
- {R_PARISC_DIR17R, 0, 0, 17, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DIR17R"},
- {R_PARISC_DIR17F, 0, 0, 17, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DIR17F"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_DIR14R, 0, 0, 14, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DIR14R"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_PCREL32, 0, 0, 32, true, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL32"},
-
- {R_PARISC_PCREL21L, 0, 0, 21, true, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL21L"},
- {R_PARISC_PCREL17R, 0, 0, 17, true, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL17R"},
- {R_PARISC_PCREL17F, 0, 0, 17, true, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL17F"},
- {R_PARISC_PCREL17C, 0, 0, 17, true, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL17C"},
- {R_PARISC_PCREL14R, 0, 0, 14, true, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL14R"},
- {R_PARISC_PCREL14F, 0, 0, 14, true, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL14F"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_DPREL21L, 0, 0, 21, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DPREL21L"},
- {R_PARISC_DPREL14WR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DPREL14WR"},
-
- {R_PARISC_DPREL14DR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DPREL14DR"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_DPREL14R, 0, 0, 14, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DPREL14R"},
- {R_PARISC_DPREL14F, 0, 0, 14, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DPREL14F"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_DLTREL21L, 0, 0, 21, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DLTREL21L"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
-
- {R_PARISC_DLTREL14R, 0, 0, 14, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DLTREL14R"},
- {R_PARISC_DLTREL14F, 0, 0, 14, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DLTREL14F"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_DLTIND21L, 0, 0, 21, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DLTIND21L"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_DLTIND14R, 0, 0, 14, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DLTIND14R"},
- {R_PARISC_DLTIND14F, 0, 0, 14, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DLTIND14F"},
-
- {R_PARISC_SETBASE, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_SETBASE"},
- {R_PARISC_SECREL32, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_SECREL32"},
- {R_PARISC_BASEREL21L, 0, 0, 21, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_BASEREL21L"},
- {R_PARISC_BASEREL17R, 0, 0, 17, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_BASEREL17R"},
- {R_PARISC_BASEREL17F, 0, 0, 17, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_BASEREL17F"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_BASEREL14R, 0, 0, 14, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_BASEREL14R"},
- {R_PARISC_BASEREL14F, 0, 0, 14, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_BASEREL14F"},
- {R_PARISC_SEGBASE, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_SEGBASE"},
- {R_PARISC_SEGREL32, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_SEGREL32"},
-
- {R_PARISC_PLTOFF21L, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PLTOFF21L"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_PLTOFF14R, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PLTOFF14R"},
- {R_PARISC_PLTOFF14F, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PLTOFF14F"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_LTOFF_FPTR32, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR32"},
- {R_PARISC_LTOFF_FPTR21L, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR21L"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
-
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_LTOFF_FPTR14R, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR14R"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_FPTR64, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_FPTR64"},
- {R_PARISC_PLABEL32, 0, 0, 32, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PLABEL32"},
- {R_PARISC_PLABEL21L, 0, 0, 21, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PLABEL21L"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
-
- {R_PARISC_PLABEL14R, 0, 0, 14, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PLABEL14R"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_PCREL64, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL64"},
- {R_PARISC_PCREL22C, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL22C"},
- {R_PARISC_PCREL22F, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL22F"},
- {R_PARISC_PCREL14WR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL14WR"},
- {R_PARISC_PCREL14DR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL14DR"},
- {R_PARISC_PCREL16F, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL16F"},
- {R_PARISC_PCREL16WF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL16WF"},
- {R_PARISC_PCREL16DF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PCREL16DF"},
-
- {R_PARISC_DIR64, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DIR64"},
- {R_PARISC_NONE, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_NONE"},
- {R_PARISC_NONE, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_NONE"},
- {R_PARISC_DIR14WR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DIR14WR"},
- {R_PARISC_DIR14DR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DIR14DR"},
- {R_PARISC_DIR16F, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DIR16F"},
- {R_PARISC_DIR16WF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DIR16WF"},
- {R_PARISC_DIR16DF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DIR16DF"},
- {R_PARISC_GPREL64, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_GPREL64"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
-
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_DLTREL14WR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DLTREL14WR"},
- {R_PARISC_DLTREL14DR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DLTREL14DR"},
- {R_PARISC_GPREL16F, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_GPREL16F"},
- {R_PARISC_GPREL16WF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_GPREL16WF"},
- {R_PARISC_GPREL16DF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_GPREL16DF"},
- {R_PARISC_LTOFF64, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF64"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_DLTIND14WR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DLTIND14WR"},
-
- {R_PARISC_DLTIND14DR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_DLTIND14DR"},
- {R_PARISC_LTOFF16F, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF16F"},
- {R_PARISC_LTOFF16WF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF16DF"},
- {R_PARISC_LTOFF16DF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF16DF"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_BASEREL14WR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_BSEREL14WR"},
- {R_PARISC_BASEREL14DR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_BASEREL14DR"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
-
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_SEGREL64, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_SEGREL64"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_PLTOFF14WR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PLTOFF14WR"},
- {R_PARISC_PLTOFF14DR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PLTOFF14DR"},
- {R_PARISC_PLTOFF16F, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PLTOFF16F"},
- {R_PARISC_PLTOFF16WF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PLTOFF16WF"},
- {R_PARISC_PLTOFF16DF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_PLTOFF16DF"},
-
- {R_PARISC_LTOFF_FPTR64, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_LTOFF_FPTR14WR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR14WR"},
- {R_PARISC_LTOFF_FPTR14DR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR14DR"},
- {R_PARISC_LTOFF_FPTR16F, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR16F"},
- {R_PARISC_LTOFF_FPTR16WF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR16WF"},
- {R_PARISC_LTOFF_FPTR16DF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_COPY, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_COPY"},
- {R_PARISC_IPLT, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_IPLT"},
-
- {R_PARISC_EPLT, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_EPLT"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
-
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
-
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_TPREL32, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_TPREL32"},
- {R_PARISC_TPREL21L, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_TPREL21L"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_TPREL14R, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_TPREL14R"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
-
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_LTOFF_TP21L, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP21L"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_LTOFF_TP14R, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_LTOFF_TP14F, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP14F"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
-
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
-
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
-
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
-
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
-
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_TPREL64, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_TPREL64"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_TPREL14WR, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_TPREL14WR"},
-
- {R_PARISC_TPREL14DR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_TPREL14DR"},
- {R_PARISC_TPREL16F, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_TPREL16F"},
- {R_PARISC_TPREL16WF, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_TPREL16WF"},
- {R_PARISC_TPREL16DF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_TPREL16DF"},
- {R_PARISC_LTOFF_TP64, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP64"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED"},
- {R_PARISC_LTOFF_TP14WR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP14WR"},
- {R_PARISC_LTOFF_TP14DR, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP14DR"},
- {R_PARISC_LTOFF_TP16F, 0, 0, 0, false, 0, complain_overflow_dont, NULL, "R_PARISC_LTOFF_TP16F"},
-
- {R_PARISC_LTOFF_TP16WF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP16WF"},
- {R_PARISC_LTOFF_TP16DF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP16DF"},
+ { R_PARISC_DIR32, 0, 2, 32, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DIR32", false, 0, 0xffffffff, false },
+ { R_PARISC_DIR21L, 0, 0, 21, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DIR21L", false, 0, 0, false },
+ { R_PARISC_DIR17R, 0, 0, 17, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DIR17R", false, 0, 0, false },
+ { R_PARISC_DIR17F, 0, 0, 17, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DIR17F", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_DIR14R, 0, 0, 14, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DIR14R", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_PCREL32, 0, 0, 32, true, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL32", false, 0, 0, false },
+
+ { R_PARISC_PCREL21L, 0, 0, 21, true, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL21L", false, 0, 0, false },
+ { R_PARISC_PCREL17R, 0, 0, 17, true, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL17R", false, 0, 0, false },
+ { R_PARISC_PCREL17F, 0, 0, 17, true, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL17F", false, 0, 0, false },
+ { R_PARISC_PCREL17C, 0, 0, 17, true, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL17C", false, 0, 0, false },
+ { R_PARISC_PCREL14R, 0, 0, 14, true, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL14R", false, 0, 0, false },
+ { R_PARISC_PCREL14F, 0, 0, 14, true, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL14F", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_DPREL21L, 0, 0, 21, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DPREL21L", false, 0, 0, false },
+ { R_PARISC_DPREL14WR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DPREL14WR", false, 0, 0, false },
+
+ { R_PARISC_DPREL14DR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DPREL14DR", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_DPREL14R, 0, 0, 14, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DPREL14R", false, 0, 0, false },
+ { R_PARISC_DPREL14F, 0, 0, 14, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DPREL14F", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_DLTREL21L, 0, 0, 21, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DLTREL21L", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+
+ { R_PARISC_DLTREL14R, 0, 0, 14, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DLTREL14R", false, 0, 0, false },
+ { R_PARISC_DLTREL14F, 0, 0, 14, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DLTREL14F", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_DLTIND21L, 0, 0, 21, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DLTIND21L", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_DLTIND14R, 0, 0, 14, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DLTIND14R", false, 0, 0, false },
+ { R_PARISC_DLTIND14F, 0, 0, 14, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DLTIND14F", false, 0, 0, false },
+
+ { R_PARISC_SETBASE, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_SETBASE", false, 0, 0, false },
+ { R_PARISC_SECREL32, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_SECREL32", false, 0, 0, false },
+ { R_PARISC_BASEREL21L, 0, 0, 21, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_BASEREL21L", false, 0, 0, false },
+ { R_PARISC_BASEREL17R, 0, 0, 17, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_BASEREL17R", false, 0, 0, false },
+ { R_PARISC_BASEREL17F, 0, 0, 17, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_BASEREL17F", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_BASEREL14R, 0, 0, 14, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_BASEREL14R", false, 0, 0, false },
+ { R_PARISC_BASEREL14F, 0, 0, 14, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_BASEREL14F", false, 0, 0, false },
+ { R_PARISC_SEGBASE, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_SEGBASE", false, 0, 0, false },
+ { R_PARISC_SEGREL32, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_SEGREL32", false, 0, 0, false },
+
+ { R_PARISC_PLTOFF21L, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PLTOFF21L", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_PLTOFF14R, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PLTOFF14R", false, 0, 0, false },
+ { R_PARISC_PLTOFF14F, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PLTOFF14F", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_LTOFF_FPTR32, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR32", false, 0, 0, false },
+ { R_PARISC_LTOFF_FPTR21L, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR21L", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_LTOFF_FPTR14R, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR14R", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_FPTR64, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_FPTR64", false, 0, 0, false },
+ { R_PARISC_PLABEL32, 0, 0, 32, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PLABEL32", false, 0, 0, false },
+ { R_PARISC_PLABEL21L, 0, 0, 21, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PLABEL21L", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+
+ { R_PARISC_PLABEL14R, 0, 0, 14, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PLABEL14R", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_PCREL64, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL64", false, 0, 0, false },
+ { R_PARISC_PCREL22C, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL22C", false, 0, 0, false },
+ { R_PARISC_PCREL22F, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL22F", false, 0, 0, false },
+ { R_PARISC_PCREL14WR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL14WR", false, 0, 0, false },
+ { R_PARISC_PCREL14DR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL14DR", false, 0, 0, false },
+ { R_PARISC_PCREL16F, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL16F", false, 0, 0, false },
+ { R_PARISC_PCREL16WF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL16WF", false, 0, 0, false },
+ { R_PARISC_PCREL16DF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PCREL16DF", false, 0, 0, false },
+
+ { R_PARISC_DIR64, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DIR64", false, 0, 0, false },
+ { R_PARISC_NONE, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_NONE", false, 0, 0, false },
+ { R_PARISC_NONE, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_NONE", false, 0, 0, false },
+ { R_PARISC_DIR14WR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DIR14WR", false, 0, 0, false },
+ { R_PARISC_DIR14DR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DIR14DR", false, 0, 0, false },
+ { R_PARISC_DIR16F, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DIR16F", false, 0, 0, false },
+ { R_PARISC_DIR16WF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DIR16WF", false, 0, 0, false },
+ { R_PARISC_DIR16DF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DIR16DF", false, 0, 0, false },
+ { R_PARISC_GPREL64, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_GPREL64", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_DLTREL14WR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DLTREL14WR", false, 0, 0, false },
+ { R_PARISC_DLTREL14DR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DLTREL14DR", false, 0, 0, false },
+ { R_PARISC_GPREL16F, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_GPREL16F", false, 0, 0, false },
+ { R_PARISC_GPREL16WF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_GPREL16WF", false, 0, 0, false },
+ { R_PARISC_GPREL16DF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_GPREL16DF", false, 0, 0, false },
+ { R_PARISC_LTOFF64, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF64", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_DLTIND14WR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DLTIND14WR", false, 0, 0, false },
+
+ { R_PARISC_DLTIND14DR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_DLTIND14DR", false, 0, 0, false },
+ { R_PARISC_LTOFF16F, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF16F", false, 0, 0, false },
+ { R_PARISC_LTOFF16WF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF16DF", false, 0, 0, false },
+ { R_PARISC_LTOFF16DF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF16DF", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_BASEREL14WR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_BSEREL14WR", false, 0, 0, false },
+ { R_PARISC_BASEREL14DR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_BASEREL14DR", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_SEGREL64, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_SEGREL64", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_PLTOFF14WR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PLTOFF14WR", false, 0, 0, false },
+ { R_PARISC_PLTOFF14DR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PLTOFF14DR", false, 0, 0, false },
+ { R_PARISC_PLTOFF16F, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PLTOFF16F", false, 0, 0, false },
+ { R_PARISC_PLTOFF16WF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PLTOFF16WF", false, 0, 0, false },
+ { R_PARISC_PLTOFF16DF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_PLTOFF16DF", false, 0, 0, false },
+
+ { R_PARISC_LTOFF_FPTR64, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_LTOFF_FPTR14WR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR14WR", false, 0, 0, false },
+ { R_PARISC_LTOFF_FPTR14DR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR14DR", false, 0, 0, false },
+ { R_PARISC_LTOFF_FPTR16F, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR16F", false, 0, 0, false },
+ { R_PARISC_LTOFF_FPTR16WF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR16WF", false, 0, 0, false },
+ { R_PARISC_LTOFF_FPTR16DF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_COPY, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_COPY", false, 0, 0, false },
+ { R_PARISC_IPLT, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_IPLT", false, 0, 0, false },
+
+ { R_PARISC_EPLT, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_EPLT", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_TPREL32, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_TPREL32", false, 0, 0, false },
+ { R_PARISC_TPREL21L, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_TPREL21L", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_TPREL14R, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_TPREL14R", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_LTOFF_TP21L, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP21L", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_LTOFF_TP14R, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_LTOFF_TP14F, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP14F", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_TPREL64, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_TPREL64", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_TPREL14WR, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_TPREL14WR", false, 0, 0, false },
+
+ { R_PARISC_TPREL14DR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_TPREL14DR", false, 0, 0, false },
+ { R_PARISC_TPREL16F, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_TPREL16F", false, 0, 0, false },
+ { R_PARISC_TPREL16WF, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_TPREL16WF", false, 0, 0, false },
+ { R_PARISC_TPREL16DF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_TPREL16DF", false, 0, 0, false },
+ { R_PARISC_LTOFF_TP64, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP64", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_UNIMPLEMENTED, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", false, 0, 0, false },
+ { R_PARISC_LTOFF_TP14WR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP14WR", false, 0, 0, false },
+ { R_PARISC_LTOFF_TP14DR, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP14DR", false, 0, 0, false },
+ { R_PARISC_LTOFF_TP16F, 0, 0, 0, false, 0, complain_overflow_dont,
+ NULL, "R_PARISC_LTOFF_TP16F", false, 0, 0, false },
+
+ { R_PARISC_LTOFF_TP16WF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP16WF", false, 0, 0, false },
+ { R_PARISC_LTOFF_TP16DF, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP16DF", false, 0, 0, false },
};
#define OFFSET_14R_FROM_21L 4
@@ -348,8 +605,8 @@ _bfd_elf_hppa_gen_reloc_type (abfd, base_type, format, field, ignore, sym)
elf_hppa_reloc_type base_type;
int format;
int field;
- int ignore;
- asymbol *sym;
+ int ignore ATTRIBUTE_UNUSED;
+ asymbol *sym ATTRIBUTE_UNUSED;
{
elf_hppa_reloc_type *finaltype;
elf_hppa_reloc_type **final_types;
@@ -599,7 +856,7 @@ _bfd_elf_hppa_gen_reloc_type (abfd, base_type, format, field, ignore, sym)
static void
elf_hppa_info_to_howto (abfd, bfd_reloc, elf_reloc)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
arelent *bfd_reloc;
Elf_Internal_Rela *elf_reloc;
{
@@ -612,7 +869,7 @@ elf_hppa_info_to_howto (abfd, bfd_reloc, elf_reloc)
static void
elf_hppa_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
arelent *bfd_reloc;
Elf_Internal_Rel *elf_reloc;
{
@@ -626,7 +883,7 @@ elf_hppa_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
static reloc_howto_type *
elf_hppa_reloc_type_lookup (abfd, code)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
bfd_reloc_code_real_type code;
{
if ((int) code < (int) R_PARISC_UNIMPLEMENTED)
@@ -637,34 +894,6 @@ elf_hppa_reloc_type_lookup (abfd, code)
return NULL;
}
-static void
-elf_hppa_final_write_processing (abfd, linker)
- bfd *abfd;
- boolean linker;
-{
- int mach = bfd_get_mach (abfd);
-
- elf_elfheader (abfd)->e_flags &= ~(EF_PARISC_ARCH | EF_PARISC_TRAPNIL
- | EF_PARISC_EXT | EF_PARISC_LSB
- | EF_PARISC_WIDE | EF_PARISC_NO_KABP
- | EF_PARISC_LAZYSWAP);
-
- if (mach == 10)
- elf_elfheader (abfd)->e_flags |= EFA_PARISC_1_0;
- else if (mach == 11)
- elf_elfheader (abfd)->e_flags |= EFA_PARISC_1_1;
- else if (mach == 20)
- elf_elfheader (abfd)->e_flags |= EFA_PARISC_2_0;
- else if (mach == 25)
- elf_elfheader (abfd)->e_flags |= (EF_PARISC_WIDE
- | EFA_PARISC_2_0
- /* The GNU tools have trapped without
- option since 1993, so need to take
- a step backwards with the ELF
- based toolchains. */
- | EF_PARISC_TRAPNIL);
-}
-
/* Return true if SYM represents a local label symbol. */
static boolean
@@ -681,7 +910,7 @@ elf_hppa_is_local_label_name (abfd, name)
static boolean
elf_hppa_fake_sections (abfd, hdr, sec)
bfd *abfd;
- Elf64_Internal_Shdr *hdr;
+ elf_hppa_internal_shdr *hdr;
asection *sec;
{
register const char *name;
@@ -692,7 +921,11 @@ elf_hppa_fake_sections (abfd, hdr, sec)
{
int indx;
asection *sec;
+#if ARCH_SIZE == 64
hdr->sh_type = SHT_LOPROC + 1;
+#else
+ hdr->sh_type = 1;
+#endif
/* ?!? How are unwinds supposed to work for symbols in arbitrary
sections? Or what if we have multiple .text sections in a single
.o file? HP really messed up on this one.
@@ -717,6 +950,35 @@ elf_hppa_fake_sections (abfd, hdr, sec)
return true;
}
+#if ARCH_SIZE == 64
+static void
+elf_hppa_final_write_processing (abfd, linker)
+ bfd *abfd;
+ boolean linker;
+{
+ int mach = bfd_get_mach (abfd);
+
+ elf_elfheader (abfd)->e_flags &= ~(EF_PARISC_ARCH | EF_PARISC_TRAPNIL
+ | EF_PARISC_EXT | EF_PARISC_LSB
+ | EF_PARISC_WIDE | EF_PARISC_NO_KABP
+ | EF_PARISC_LAZYSWAP);
+
+ if (mach == 10)
+ elf_elfheader (abfd)->e_flags |= EFA_PARISC_1_0;
+ else if (mach == 11)
+ elf_elfheader (abfd)->e_flags |= EFA_PARISC_1_1;
+ else if (mach == 20)
+ elf_elfheader (abfd)->e_flags |= EFA_PARISC_2_0;
+ else if (mach == 25)
+ elf_elfheader (abfd)->e_flags |= (EF_PARISC_WIDE
+ | EFA_PARISC_2_0
+ /* The GNU tools have trapped without
+ option since 1993, so need to take
+ a step backwards with the ELF
+ based toolchains. */
+ | EF_PARISC_TRAPNIL);
+}
+
/* Hook called by the linker routine which adds symbols from an object
file. HP's libraries define symbols with HP specific section
indices, which we have to handle. */
@@ -763,10 +1025,10 @@ elf_hppa_unmark_useless_dynamic_symbols (h, data)
the generic code will warn that it is undefined.
This behavior is undesirable on HPs since the standard shared
- libraries contain reerences to undefined symbols.
+ libraries contain references to undefined symbols.
So we twiddle the flags associated with such symbols so that they
- will not trigger the warning. ?!? FIXME. This is horribly fraglie.
+ will not trigger the warning. ?!? FIXME. This is horribly fragile.
Ultimately we should have better controls over the generic ELF BFD
linker code. */
@@ -1079,7 +1341,8 @@ elf_hppa_relocate_section (output_bfd, info, input_bfd, input_section,
relocation = 0;
}
/* Allow undefined symbols in shared libraries. */
- else if (info->shared && !info->no_undefined)
+ else if (info->shared && !info->no_undefined
+ && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
{
if (info->symbolic)
(*info->callbacks->undefined_symbol)
@@ -1182,12 +1445,11 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
struct elf_link_hash_entry *h;
struct elf64_hppa_dyn_hash_entry *dyn_h;
{
- unsigned long insn;
+ unsigned int insn;
bfd_vma offset = rel->r_offset;
bfd_vma addend = rel->r_addend;
reloc_howto_type *howto = elf_hppa_howto_table + ELF_R_TYPE (rel->r_info);
- unsigned long r_type = howto->type;
- unsigned long r_field = e_fsel;
+ unsigned int r_type = howto->type;
bfd_byte *hit_data = contents + offset;
struct elf64_hppa_link_hash_table *hppa_info = elf64_hppa_hash_table (info);
@@ -1198,6 +1460,12 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
case R_PARISC_NONE:
break;
+ /* Basic function call support. I'm not entirely sure if PCREL14F is
+ actually needed or even handled correctly.
+
+ Note for a call to a function defined in another dynamic library
+ we want to redirect the call to a stub. */
+
/* Random PC relative relocs. */
case R_PARISC_PCREL21L:
case R_PARISC_PCREL14R:
@@ -1208,16 +1476,6 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
case R_PARISC_PCREL16WF:
case R_PARISC_PCREL16DF:
{
- if (r_type == R_PARISC_PCREL21L)
- r_field = e_lsel;
- else if (r_type == R_PARISC_PCREL14F
- || r_type == R_PARISC_PCREL16F
- || r_type == R_PARISC_PCREL16WF
- || r_type == R_PARISC_PCREL16DF)
- r_field = e_fsel;
- else
- r_field = e_rsel;
-
/* If this is a call to a function defined in another dynamic
library, then redirect the call to the local stub for this
function. */
@@ -1230,29 +1488,27 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
+ input_section->output_section->vma);
/* Adjust for any field selectors. */
- value = hppa_field_adjust (value, -8 + addend, r_field);
+ if (r_type == R_PARISC_PCREL21L)
+ value = hppa_field_adjust (value, -8 + addend, e_lsel);
+ else if (r_type == R_PARISC_PCREL14F
+ || r_type == R_PARISC_PCREL16F
+ || r_type == R_PARISC_PCREL16WF
+ || r_type == R_PARISC_PCREL16DF)
+ value = hppa_field_adjust (value, -8 + addend, e_fsel);
+ else
+ value = hppa_field_adjust (value, -8 + addend, e_rsel);
/* Apply the relocation to the given instruction. */
insn = elf_hppa_relocate_insn (insn, value, r_type);
break;
}
- /* Basic function call support. I'm not entirely sure if PCREL14F is
- actually needed or even handled correctly.
-
- Note for a call to a function defined in another dynamic library
- we want to redirect the call to a stub. */
case R_PARISC_PCREL22F:
case R_PARISC_PCREL17F:
case R_PARISC_PCREL22C:
case R_PARISC_PCREL17C:
case R_PARISC_PCREL17R:
{
- if (r_type == R_PARISC_PCREL17R)
- r_field = e_rsel;
- else
- r_field = e_fsel;
-
/* If this is a call to a function defined in another dynamic
library, then redirect the call to the local stub for this
function. */
@@ -1265,7 +1521,10 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
+ input_section->output_section->vma);
/* Adjust for any field selectors. */
- value = hppa_field_adjust (value, -8 + addend, e_fsel);
+ if (r_type == R_PARISC_PCREL17R)
+ value = hppa_field_adjust (value, -8 + addend, e_rsel);
+ else
+ value = hppa_field_adjust (value, -8 + addend, e_fsel);
/* All branches are implicitly shifted by 2 places. */
value >>= 2;
@@ -1352,7 +1611,6 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
+ hppa_info->dlt_sec->output_section->vma);
value -= _bfd_get_gp_value (output_bfd);
-
/* All DLTIND relocations are basically the same at this point,
except that we need different field selectors for the 21bit
version vs the 14bit versions. */
@@ -1426,8 +1684,10 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
case R_PARISC_DIR16DF:
{
/* All DIR relocations are basically the same at this point,
- except that we need different field selectors for the 21bit
- version vs the 14bit versions. */
+ except that branch offsets need to be divided by four, and
+ we need different field selectors. Note that we don't
+ redirect absolute calls to local stubs. */
+
if (r_type == R_PARISC_DIR21L)
value = hppa_field_adjust (value, addend, e_lrsel);
else if (r_type == R_PARISC_DIR17F
@@ -1438,6 +1698,12 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
else
value = hppa_field_adjust (value, addend, e_rrsel);
+ if (r_type == R_PARISC_DIR17R || r_type == R_PARISC_DIR17F)
+ {
+ /* All branches are implicitly shifted by 2 places. */
+ value >>= 2;
+ }
+
insn = elf_hppa_relocate_insn (insn, value, r_type);
break;
}
@@ -1698,11 +1964,11 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
Instead this routine is meant to handle the bit manipulations needed
to insert the relocation into the given instruction. */
-static unsigned long
+static unsigned int
elf_hppa_relocate_insn (insn, sym_value, r_type)
- unsigned long insn;
- long sym_value;
- unsigned long r_type;
+ unsigned int insn;
+ unsigned int sym_value;
+ unsigned int r_type;
{
switch (r_type)
{
@@ -1710,24 +1976,7 @@ elf_hppa_relocate_insn (insn, sym_value, r_type)
the "B" instruction. */
case R_PARISC_PCREL22F:
case R_PARISC_PCREL22C:
- {
- unsigned int w3, w2, w1, w;
-
- /* These are 22 bit branches. Mask off bits we do not care
- about. */
- sym_value &= 0x3fffff;
-
- /* Now extract the W1, W2, W3 and W fields from the value. */
- dis_assemble_22 (sym_value, &w3, &w1, &w2, &w);
-
- /* Mask out bits for the value in the instruction. */
- insn &= 0xfc00e002;
-
- /* Insert the bits for the W1, W2 and W fields into the
- instruction. */
- insn |= (w3 << 21) | (w2 << 2) | (w1 << 16) | w;
- return insn;
- }
+ return re_assemble_22 (insn & ~ 0x3ff1ffd, sym_value);
/* This is any 17bit branch. In PA2.0 syntax it also corresponds to
the "B" instruction as well as BE. */
@@ -1736,24 +1985,7 @@ elf_hppa_relocate_insn (insn, sym_value, r_type)
case R_PARISC_DIR17R:
case R_PARISC_PCREL17C:
case R_PARISC_PCREL17R:
- {
- unsigned int w2, w1, w;
-
- /* These are 17 bit branches. Mask off bits we do not care
- about. */
- sym_value &= 0x1ffff;
-
- /* Now extract the W1, W2 and W fields from the value. */
- dis_assemble_17 (sym_value, &w1, &w2, &w);
-
- /* Mask out bits for the value in the instruction. */
- insn &= 0xffe0e002;
-
- /* Insert the bits for the W1, W2 and W fields into the
- instruction. */
- insn |= (w2 << 2) | (w1 << 16) | w;
- return insn;
- }
+ return re_assemble_17 (insn & ~ 0x1f1ffd, sym_value);
/* ADDIL or LDIL instructions. */
case R_PARISC_DLTREL21L:
@@ -1764,18 +1996,7 @@ elf_hppa_relocate_insn (insn, sym_value, r_type)
case R_PARISC_DPREL21L:
case R_PARISC_PLTOFF21L:
case R_PARISC_DIR21L:
- {
- int w;
-
- /* Mask off bits in INSN we do not want. */
- insn &= 0xffe00000;
-
- /* Turn the 21bit value into the proper format. */
- dis_assemble_21 (sym_value, &w);
-
- /* And insert the proper bits into INSN. */
- return insn | w;
- }
+ return re_assemble_21 (insn & ~ 0x1fffff, sym_value);
/* LDO and integer loads/stores with 14bit displacements. */
case R_PARISC_DLTREL14R:
@@ -1799,18 +2020,7 @@ elf_hppa_relocate_insn (insn, sym_value, r_type)
case R_PARISC_DIR14R:
case R_PARISC_DIR16F:
case R_PARISC_LTOFF16F:
- {
- int w;
-
- /* Mask off bits in INSN we do not want. */
- insn &= 0xffffc000;
-
- /* Turn the 14bit value into the proper format. */
- low_sign_unext (sym_value, 14, &w);
-
- /* And insert the proper bits into INSN. */
- return insn | w;
- }
+ return (insn & ~ 0x3fff) | low_sign_unext (sym_value, 14);
/* Doubleword loads and stores with a 14bit displacement. */
case R_PARISC_DLTREL14DR:
@@ -1828,22 +2038,8 @@ elf_hppa_relocate_insn (insn, sym_value, r_type)
case R_PARISC_DIR14DR:
case R_PARISC_DIR16DF:
case R_PARISC_LTOFF16DF:
- {
- /* Mask off bits in INSN we do not want. */
- insn &= 0xffffc00e;
-
- /* The sign bit at 14 moves into bit zero in the destination. */
- insn |= ((sym_value & 0x2000) >> 13);
-
- /* Turn off the bits in sym_value we do not care about. */
- sym_value &= 0x1ff8;
-
- /* Now shift it one bit position left so that it lines up with the
- destination field in INSN. */
- sym_value <<= 1;
-
- return insn | sym_value;
- }
+ return (insn & ~ 0x3ff1) | (((sym_value & 0x2000) >> 13)
+ | ((sym_value & 0x1ff8) << 1));
/* Floating point single word load/store instructions. */
case R_PARISC_DLTREL14WR:
@@ -1861,24 +2057,11 @@ elf_hppa_relocate_insn (insn, sym_value, r_type)
case R_PARISC_DIR16WF:
case R_PARISC_DIR14WR:
case R_PARISC_LTOFF16WF:
- {
- /* Mask off bits in INSN we do not want. */
- insn &= 0xffffc006;
-
- /* The sign bit at 14 moves into bit zero in the destination. */
- insn |= ((sym_value & 0x2000) >> 13);
-
- /* Turn off the bits in sym_value we do not care about. */
- sym_value &= 0x1ffc;
-
- /* Now shift it one bit position left so that it lines up with the
- destination field in INSN. */
- sym_value <<= 1;
-
- return insn | sym_value;
- }
+ return (insn & ~ 0x3ff9) | (((sym_value & 0x2000) >> 13)
+ | ((sym_value & 0x1ffc) << 1));
default:
return insn;
}
}
+#endif
diff --git a/bfd/elf.c b/bfd/elf.c
index 8830ff099cc..3143a0ebfd1 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -977,6 +977,7 @@ _bfd_elf_link_hash_table_init (table, abfd, newfunc)
table->needed = NULL;
table->hgot = NULL;
table->stab_info = NULL;
+ table->dynlocal = NULL;
return _bfd_link_hash_table_init (&table->root, abfd, newfunc);
}
@@ -1354,8 +1355,9 @@ bfd_section_from_shdr (abfd, shindex)
target_sect->rel_filepos = hdr->sh_offset;
/* In the section to which the relocations apply, mark whether
its relocations are of the REL or RELA variety. */
- elf_section_data (target_sect)->use_rela_p
- = (hdr->sh_type == SHT_RELA);
+ if (hdr->sh_size != 0)
+ elf_section_data (target_sect)->use_rela_p
+ = (hdr->sh_type == SHT_RELA);
abfd->flags |= HAS_RELOC;
return true;
}
@@ -1752,6 +1754,22 @@ elf_fake_sections (abfd, asect, failedptrarg)
*failedptr = true;
}
+/* Get elf arch size (32 / 64).
+ Returns -1 if not elf. */
+
+int
+bfd_elf_get_arch_size (abfd)
+ bfd *abfd;
+{
+ if (abfd->xvec->flavour != bfd_target_elf_flavour)
+ {
+ bfd_set_error (bfd_error_wrong_format);
+ return -1;
+ }
+
+ return (get_elf_backend_data (abfd))->s->arch_size;
+}
+
/* Assign all ELF section numbers. The dummy first section is handled here
too. The link/info pointers for the standard section types are filled
in here too, while we're at it. */
@@ -1764,7 +1782,6 @@ assign_section_numbers (abfd)
asection *sec;
unsigned int section_number;
Elf_Internal_Shdr **i_shdrp;
- struct elf_backend_data *bed = get_elf_backend_data (abfd);
section_number = 1;
@@ -1899,7 +1916,7 @@ assign_section_numbers (abfd)
/* This is a .stab section. */
elf_section_data (s)->this_hdr.sh_entsize =
- 4 + 2 * (bed->s->arch_size / 8);
+ 4 + 2 * bfd_elf_get_arch_size (abfd) / 8;
}
}
break;
@@ -3205,7 +3222,7 @@ prep_headers (abfd)
bfd_big_endian (abfd) ? ELFDATA2MSB : ELFDATA2LSB;
i_ehdrp->e_ident[EI_VERSION] = bed->s->ev_current;
- i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_SYSV;
+ i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_NONE;
i_ehdrp->e_ident[EI_ABIVERSION] = 0;
for (count = EI_PAD; count < EI_NIDENT; count++)
@@ -3226,7 +3243,7 @@ prep_headers (abfd)
i_ehdrp->e_machine = EM_NONE;
break;
case bfd_arch_sparc:
- if (bed->s->arch_size == 64)
+ if (bfd_elf_get_arch_size (abfd) == 64)
i_ehdrp->e_machine = EM_SPARCV9;
else
i_ehdrp->e_machine = EM_SPARC;
@@ -3237,6 +3254,9 @@ prep_headers (abfd)
case bfd_arch_i386:
i_ehdrp->e_machine = EM_386;
break;
+ case bfd_arch_ia64:
+ i_ehdrp->e_machine = EM_IA_64;
+ break;
case bfd_arch_m68k:
i_ehdrp->e_machine = EM_68K;
break;
@@ -3726,7 +3746,7 @@ copy_private_bfd_data (ibfd, obfd)
more to do. */
isec = 0;
- matching_lma = false;
+ matching_lma = 0;
suggested_lma = 0;
for (j = 0, s = ibfd->sections; s != NULL; s = s->next)
@@ -3792,21 +3812,32 @@ copy_private_bfd_data (ibfd, obfd)
free (sections);
continue;
}
- else if (matching_lma != 0)
- {
- /* At least one section fits inside the current segment.
- Keep it, but modify its physical address to match the
- LMA of the first section that fitted. */
-
- m->p_paddr = matching_lma;
- }
else
{
- /* None of the sections fitted inside the current segment.
- Change the current segment's physical address to match
- the LMA of the first section. */
+ if (matching_lma != 0)
+ {
+ /* At least one section fits inside the current segment.
+ Keep it, but modify its physical address to match the
+ LMA of the first section that fitted. */
+
+ m->p_paddr = matching_lma;
+ }
+ else
+ {
+ /* None of the sections fitted inside the current segment.
+ Change the current segment's physical address to match
+ the LMA of the first section. */
+
+ m->p_paddr = suggested_lma;
+ }
+
+ /* Offset the segment physical address from the lma to allow
+ for space taken up by elf headers. */
+ if (m->includes_filehdr)
+ m->p_paddr -= iehdr->e_ehsize;
- m->p_paddr = suggested_lma;
+ if (m->includes_phdrs)
+ m->p_paddr -= iehdr->e_phnum * iehdr->e_phentsize;
}
/* Step Three: Loop over the sections again, this time assigning
@@ -3839,7 +3870,12 @@ copy_private_bfd_data (ibfd, obfd)
{
/* If the first section in a segment does not start at
the beginning of the segment, then something is wrong. */
- if (os->lma != m->p_paddr)
+ if (os->lma != (m->p_paddr
+ + (m->includes_filehdr
+ ? iehdr->e_ehsize : 0)
+ + (m->includes_phdrs
+ ? iehdr->e_phnum * iehdr->e_phentsize
+ : 0)))
abort ();
}
else
@@ -4470,18 +4506,13 @@ _bfd_elf_slurp_version_tables (abfd)
Elf_Internal_Shdr *hdr;
Elf_External_Verdef *everdef;
Elf_Internal_Verdef *iverdef;
+ Elf_Internal_Verdef *iverdefarr;
+ Elf_Internal_Verdef iverdefmem;
unsigned int i;
+ unsigned int maxidx;
hdr = &elf_tdata (abfd)->dynverdef_hdr;
- elf_tdata (abfd)->verdef =
- ((Elf_Internal_Verdef *)
- bfd_zalloc (abfd, hdr->sh_info * sizeof (Elf_Internal_Verdef)));
- if (elf_tdata (abfd)->verdef == NULL)
- goto error_return;
-
- elf_tdata (abfd)->cverdefs = hdr->sh_info;
-
contents = (bfd_byte *) bfd_malloc (hdr->sh_size);
if (contents == NULL)
goto error_return;
@@ -4489,15 +4520,42 @@ _bfd_elf_slurp_version_tables (abfd)
|| bfd_read ((PTR) contents, 1, hdr->sh_size, abfd) != hdr->sh_size)
goto error_return;
+ /* We know the number of entries in the section but not the maximum
+ index. Therefore we have to run through all entries and find
+ the maximum. */
everdef = (Elf_External_Verdef *) contents;
- iverdef = elf_tdata (abfd)->verdef;
- for (i = 0; i < hdr->sh_info; i++, iverdef++)
+ maxidx = 0;
+ for (i = 0; i < hdr->sh_info; ++i)
+ {
+ _bfd_elf_swap_verdef_in (abfd, everdef, &iverdefmem);
+
+ if ((iverdefmem.vd_ndx & VERSYM_VERSION) > maxidx)
+ maxidx = iverdefmem.vd_ndx & VERSYM_VERSION;
+
+ everdef = ((Elf_External_Verdef *)
+ ((bfd_byte *) everdef + iverdefmem.vd_next));
+ }
+
+ elf_tdata (abfd)->verdef =
+ ((Elf_Internal_Verdef *)
+ bfd_zalloc (abfd, maxidx * sizeof (Elf_Internal_Verdef)));
+ if (elf_tdata (abfd)->verdef == NULL)
+ goto error_return;
+
+ elf_tdata (abfd)->cverdefs = maxidx;
+
+ everdef = (Elf_External_Verdef *) contents;
+ iverdefarr = elf_tdata (abfd)->verdef;
+ for (i = 0; i < hdr->sh_info; i++)
{
Elf_External_Verdaux *everdaux;
Elf_Internal_Verdaux *iverdaux;
unsigned int j;
- _bfd_elf_swap_verdef_in (abfd, everdef, iverdef);
+ _bfd_elf_swap_verdef_in (abfd, everdef, &iverdefmem);
+
+ iverdef = &iverdefarr[(iverdefmem.vd_ndx & VERSYM_VERSION) - 1];
+ memcpy (iverdef, &iverdefmem, sizeof (Elf_Internal_Verdef));
iverdef->vd_bfd = abfd;
diff --git a/bfd/elf32-arm.h b/bfd/elf32-arm.h
index a66629348f1..e655781bde6 100644
--- a/bfd/elf32-arm.h
+++ b/bfd/elf32-arm.h
@@ -1838,14 +1838,17 @@ elf32_arm_relocate_section (output_bfd, info, input_bfd, input_section,
}
else if (h->root.type == bfd_link_hash_undefweak)
relocation = 0;
- else if (info->shared && !info->symbolic && !info->no_undefined)
+ 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))))
+ (!info->shared || info->no_undefined
+ || ELF_ST_VISIBILITY (h->other)))))
return false;
relocation = 0;
}
@@ -2007,25 +2010,14 @@ elf32_arm_merge_private_bfd_data (ibfd, obfd)
flagword out_flags;
flagword in_flags;
+ /* Check if we have the same endianess */
+ if (_bfd_generic_verify_endian_match (ibfd, obfd) == false)
+ return false;
+
if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
return true;
- /* Check if we have the same endianess */
- if ( ibfd->xvec->byteorder != obfd->xvec->byteorder
- && obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN
- && ibfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN)
- {
- (*_bfd_error_handler)
- (_("%s: compiled for a %s endian system and target is %s endian"),
- bfd_get_filename (ibfd),
- bfd_big_endian (ibfd) ? "big" : "little",
- bfd_big_endian (obfd) ? "big" : "little");
-
- bfd_set_error (bfd_error_wrong_format);
- return false;
- }
-
/* The input BFD must have had its flags initialised. */
/* The following seems bogus to me -- The flags are initialized in
the assembler but I don't think an elf_flags_init field is
diff --git a/bfd/elf32-d30v.c b/bfd/elf32-d30v.c
index 263b5c010e5..52bafb99af7 100644
--- a/bfd/elf32-d30v.c
+++ b/bfd/elf32-d30v.c
@@ -1,5 +1,5 @@
/* D30V-specific support for 32-bit ELF
- Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1997, 98, 99, 2000 Free Software Foundation, Inc.
Contributed by Martin Hunt (hunt@cygnus.com).
This file is part of BFD, the Binary File Descriptor library.
@@ -263,8 +263,8 @@ static reloc_howto_type elf_d30v_howto_table[] =
};
-#define MIN32 (long long)0xffffffff80000000LL
-#define MAX32 0x7fffffffLL
+#define MAX32 ((bfd_signed_vma) 0x7fffffff)
+#define MIN32 (- MAX32 - 1)
static bfd_reloc_status_type
bfd_elf_d30v_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd, error_message)
@@ -276,7 +276,7 @@ bfd_elf_d30v_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
bfd *output_bfd;
char **error_message;
{
- long long relocation;
+ bfd_signed_vma relocation;
bfd_vma in1, in2, num;
bfd_vma tmp_addr = 0;
bfd_reloc_status_type r;
@@ -287,6 +287,13 @@ bfd_elf_d30v_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
reloc_howto_type *howto = reloc_entry->howto;
int make_absolute = 0;
+ if (output_bfd != (bfd *) NULL)
+ {
+ /* Partial linking -- do nothing. */
+ reloc_entry->address += input_section->output_offset;
+ return bfd_reloc_ok;
+ }
+
r = bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
input_section, output_bfd, error_message);
if (r != bfd_reloc_continue)
@@ -314,11 +321,7 @@ bfd_elf_d30v_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
reloc_target_output_section = symbol->section->output_section;
/* Convert input-section-relative symbol value to absolute. */
- if (output_bfd)
- output_base = 0;
- else
- output_base = reloc_target_output_section->vma;
-
+ output_base = reloc_target_output_section->vma;
relocation += output_base + symbol->section->output_offset;
/* Add in supplied addend. */
@@ -334,18 +337,6 @@ bfd_elf_d30v_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
relocation -= tmp_addr;
}
- if (output_bfd != (bfd *) NULL)
- {
- /* This is a partial relocation, and we want to apply the relocation
- to the reloc entry rather than the raw data. Modify the reloc
- inplace to reflect what we now know. */
- reloc_entry->addend = relocation;
- reloc_entry->address += input_section->output_offset;
- return flag;
- }
- else
- reloc_entry->addend = 0;
-
in1 = bfd_get_32 (abfd, (bfd_byte *) data + addr);
in2 = bfd_get_32 (abfd, (bfd_byte *) data + addr + 4);
@@ -360,15 +351,10 @@ bfd_elf_d30v_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
if (howto->pc_relative == true && howto->bitsize == 32)
{
- /* the D30V has a PC that doesn't wrap and PC-relative jumps */
- /* are signed, so a PC-relative jump can'tbe more than +/- 2^31 byrtes */
- /* if one exceeds this, change it to an absolute jump */
- if (relocation > MAX32)
- {
- relocation = (relocation + tmp_addr) & 0xffffffff;
- make_absolute = 1;
- }
- else if (relocation < MIN32)
+ /* The D30V has a PC that doesn't wrap and PC-relative jumps are
+ signed, so a PC-relative jump can't be more than +/- 2^31 bytes.
+ If one exceeds this, change it to an absolute jump. */
+ if (relocation > MAX32 || relocation < MIN32)
{
relocation = (relocation + tmp_addr) & 0xffffffff;
make_absolute = 1;
@@ -411,6 +397,13 @@ bfd_elf_d30v_reloc_21 (abfd, reloc_entry, symbol, data, input_section, output_bf
reloc_howto_type *howto = reloc_entry->howto;
int mask, max;
+ if (output_bfd != (bfd *) NULL)
+ {
+ /* Partial linking -- do nothing. */
+ reloc_entry->address += input_section->output_offset;
+ return bfd_reloc_ok;
+ }
+
r = bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
input_section, output_bfd, error_message);
if (r != bfd_reloc_continue)
@@ -438,11 +431,7 @@ bfd_elf_d30v_reloc_21 (abfd, reloc_entry, symbol, data, input_section, output_bf
reloc_target_output_section = symbol->section->output_section;
/* Convert input-section-relative symbol value to absolute. */
- if (output_bfd)
- output_base = 0;
- else
- output_base = reloc_target_output_section->vma;
-
+ output_base = reloc_target_output_section->vma;
relocation += output_base + symbol->section->output_offset;
/* Add in supplied addend. */
@@ -453,23 +442,12 @@ bfd_elf_d30v_reloc_21 (abfd, reloc_entry, symbol, data, input_section, output_bf
if (howto->pc_relative == true)
{
- relocation -= input_section->output_section->vma + input_section->output_offset;
+ relocation -= (input_section->output_section->vma
+ + input_section->output_offset);
if (howto->pcrel_offset == true)
relocation -= reloc_entry->address;
}
- if (output_bfd != (bfd *) NULL)
- {
- /* This is a partial relocation, and we want to apply the relocation
- to the reloc entry rather than the raw data. Modify the reloc
- inplace to reflect what we now know. */
- reloc_entry->addend = relocation;
- reloc_entry->address += input_section->output_offset;
- return flag;
- }
- else
- reloc_entry->addend = 0;
-
in1 = bfd_get_32 (abfd, (bfd_byte *) data + addr);
mask = (1 << howto->bitsize) - 1;
diff --git a/bfd/elf32-fr30.c b/bfd/elf32-fr30.c
index 6b295d3e52a..b150ec95642 100644
--- a/bfd/elf32-fr30.c
+++ b/bfd/elf32-fr30.c
@@ -1,5 +1,5 @@
/* FR30-specific support for 32-bit ELF.
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -275,7 +275,7 @@ fr30_elf_i20_reloc (abfd, reloc_entry, symbol, data,
+ symbol->section->output_offset
+ reloc_entry->addend;
- if (relocation > ((1U << 20) - 1))
+ if (relocation > (((bfd_vma) 1 << 20) - 1))
return bfd_reloc_overflow;
x = bfd_get_32 (abfd, data + reloc_entry->address);
diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c
index 683a308515a..1fdd4abb26f 100644
--- a/bfd/elf32-hppa.c
+++ b/bfd/elf32-hppa.c
@@ -1,5 +1,5 @@
/* BFD back-end for HP PA-RISC ELF files.
- Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
Written by
@@ -311,17 +311,17 @@ hppa_elf_relocate_insn (abfd, input_sect, insn, address, sym_value,
case BL:
case BE:
case BLE:
- /* XXX computing constant_value is not needed??? */
+ /* XXX r_addend ignored ???. */
constant_value = assemble_17 ((insn & 0x001f0000) >> 16,
(insn & 0x00001ffc) >> 2,
insn & 1);
- constant_value = (constant_value << 15) >> 15;
+ constant_value = (constant_value << (BFD_ARCH_SIZE-17))
+ >> (BFD_ARCH_SIZE-17);
if (pcrel)
{
- sym_value -=
- address + input_sect->output_offset
- + input_sect->output_section->vma;
+ sym_value -= (address + input_sect->output_offset
+ + input_sect->output_section->vma);
sym_value = hppa_field_adjust (sym_value, -8, r_field);
}
else
@@ -665,7 +665,7 @@ elf32_hppa_bfd_final_link_relocate (howto, input_bfd, output_bfd,
/* Any kind of linker stub needed? */
if (((int)(value - location) > 0x3ffff)
- || ((int)(value - location) < (int)0xfffc0000))
+ || ((int)(value - location) < -0x40000))
{
struct elf32_hppa_stub_hash_table *stub_hash_table;
struct elf32_hppa_stub_hash_entry *stub_hash;
@@ -831,7 +831,7 @@ elf32_hppa_size_of_stub (location, destination, sym_name)
{
/* Determine if a long branch stub is needed. */
if (!(((int)(location - destination) > 0x3ffff)
- || ((int)(location - destination) < (int)0xfffc0000)))
+ || ((int)(location - destination) < -0x40000)))
return 0;
if (!strncmp ("$$", sym_name, 2)
diff --git a/bfd/elf32-hppa.h b/bfd/elf32-hppa.h
index 915fc13ae59..17c5e1673ae 100644
--- a/bfd/elf32-hppa.h
+++ b/bfd/elf32-hppa.h
@@ -4,7 +4,8 @@
in the Stratus FTX/Golf Object File Format (SED-1762) dated
February 1994.
- Copyright (C) 1990, 91, 92, 93, 94 Free Software Foundation, Inc.
+ Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 98, 99, 2000
+ Free Software Foundation, Inc.
Written by:
diff --git a/bfd/elf32-i370.c b/bfd/elf32-i370.c
index c8bf94326cd..0715d86d081 100644
--- a/bfd/elf32-i370.c
+++ b/bfd/elf32-i370.c
@@ -1413,7 +1413,8 @@ i370_elf_relocate_section (output_bfd, info, input_bfd, input_section,
}
else if (h->root.type == bfd_link_hash_undefweak)
relocation = 0;
- else if (info->shared)
+ else if (info->shared
+ && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
relocation = 0;
else
{
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
index 90efba8dc9b..53edaaf2543 100644
--- a/bfd/elf32-i386.c
+++ b/bfd/elf32-i386.c
@@ -439,7 +439,7 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
bfd *dynobj;
Elf_Internal_Shdr *symtab_hdr;
struct elf_link_hash_entry **sym_hashes;
- bfd_vma *local_got_offsets;
+ bfd_signed_vma *local_got_refcounts;
const Elf_Internal_Rela *rel;
const Elf_Internal_Rela *rel_end;
asection *sgot;
@@ -452,7 +452,7 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
dynobj = elf_hash_table (info)->dynobj;
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
sym_hashes = elf_sym_hashes (abfd);
- local_got_offsets = elf_local_got_offsets (abfd);
+ local_got_refcounts = elf_local_got_refcounts (abfd);
sgot = NULL;
srelgot = NULL;
@@ -522,57 +522,54 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
if (h != NULL)
{
- if (h->got.offset != (bfd_vma) -1)
+ if (h->got.refcount == -1)
{
- /* We have already allocated space in the .got. */
- break;
- }
- h->got.offset = sgot->_raw_size;
+ h->got.refcount = 1;
- /* Make sure this symbol is output as a dynamic symbol. */
- if (h->dynindx == -1)
- {
- if (! bfd_elf32_link_record_dynamic_symbol (info, h))
- return false;
- }
+ /* Make sure this symbol is output as a dynamic symbol. */
+ if (h->dynindx == -1)
+ {
+ if (! bfd_elf32_link_record_dynamic_symbol (info, h))
+ return false;
+ }
- srelgot->_raw_size += sizeof (Elf32_External_Rel);
+ sgot->_raw_size += 4;
+ srelgot->_raw_size += sizeof (Elf32_External_Rel);
+ }
+ else
+ h->got.refcount += 1;
}
else
{
- /* This is a global offset table entry for a local
- symbol. */
- if (local_got_offsets == NULL)
+ /* This is a global offset table entry for a local symbol. */
+ if (local_got_refcounts == NULL)
{
size_t size;
- register unsigned int i;
- size = symtab_hdr->sh_info * sizeof (bfd_vma);
- local_got_offsets = (bfd_vma *) bfd_alloc (abfd, size);
- if (local_got_offsets == NULL)
+ size = symtab_hdr->sh_info * sizeof (bfd_signed_vma);
+ local_got_refcounts = ((bfd_signed_vma *)
+ bfd_alloc (abfd, size));
+ if (local_got_refcounts == NULL)
return false;
- elf_local_got_offsets (abfd) = local_got_offsets;
- for (i = 0; i < symtab_hdr->sh_info; i++)
- local_got_offsets[i] = (bfd_vma) -1;
+ elf_local_got_refcounts (abfd) = local_got_refcounts;
+ memset (local_got_refcounts, -1, size);
}
- if (local_got_offsets[r_symndx] != (bfd_vma) -1)
+ if (local_got_refcounts[r_symndx] == -1)
{
- /* We have already allocated space in the .got. */
- break;
- }
- local_got_offsets[r_symndx] = sgot->_raw_size;
+ local_got_refcounts[r_symndx] = 1;
- if (info->shared)
- {
- /* If we are generating a shared object, we need to
- output a R_386_RELATIVE reloc so that the dynamic
- linker can adjust this GOT entry. */
- srelgot->_raw_size += sizeof (Elf32_External_Rel);
+ sgot->_raw_size += 4;
+ if (info->shared)
+ {
+ /* If we are generating a shared object, we need to
+ output a R_386_RELATIVE reloc so that the dynamic
+ linker can adjust this GOT entry. */
+ srelgot->_raw_size += sizeof (Elf32_External_Rel);
+ }
}
+ else
+ local_got_refcounts[r_symndx] += 1;
}
-
- sgot->_raw_size += 4;
-
break;
case R_386_PLT32:
@@ -588,8 +585,13 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
if (h == NULL)
continue;
- h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT;
-
+ if (h->plt.refcount == -1)
+ {
+ h->plt.refcount = 1;
+ h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT;
+ }
+ else
+ h->plt.refcount += 1;
break;
case R_386_32:
@@ -766,14 +768,81 @@ elf_i386_gc_mark_hook (abfd, info, rel, h, sym)
static boolean
elf_i386_gc_sweep_hook (abfd, info, sec, relocs)
- bfd *abfd ATTRIBUTE_UNUSED;
+ bfd *abfd;
struct bfd_link_info *info ATTRIBUTE_UNUSED;
- asection *sec ATTRIBUTE_UNUSED;
- const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED;
+ asection *sec;
+ const Elf_Internal_Rela *relocs;
{
- /* ??? It would seem that the existing i386 code does no sort
- of reference counting or whatnot on its GOT and PLT entries,
- so it is not possible to garbage collect them at this time. */
+ Elf_Internal_Shdr *symtab_hdr;
+ struct elf_link_hash_entry **sym_hashes;
+ bfd_signed_vma *local_got_refcounts;
+ const Elf_Internal_Rela *rel, *relend;
+ unsigned long r_symndx;
+ struct elf_link_hash_entry *h;
+ bfd *dynobj;
+ asection *sgot;
+ asection *srelgot;
+
+ symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes (abfd);
+ local_got_refcounts = elf_local_got_refcounts (abfd);
+
+ dynobj = elf_hash_table (info)->dynobj;
+ if (dynobj == NULL)
+ return true;
+
+ sgot = bfd_get_section_by_name (dynobj, ".got");
+ srelgot = bfd_get_section_by_name (dynobj, ".rel.got");
+
+ relend = relocs + sec->reloc_count;
+ for (rel = relocs; rel < relend; rel++)
+ switch (ELF32_R_TYPE (rel->r_info))
+ {
+ case R_386_GOT32:
+ case R_386_GOTOFF:
+ case R_386_GOTPC:
+ r_symndx = ELF32_R_SYM (rel->r_info);
+ if (r_symndx >= symtab_hdr->sh_info)
+ {
+ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+ if (h->got.refcount > 0)
+ {
+ h->got.refcount -= 1;
+ if (h->got.refcount == 0)
+ {
+ sgot->_raw_size -= 4;
+ srelgot->_raw_size -= sizeof (Elf32_External_Rel);
+ }
+ }
+ }
+ else if (local_got_refcounts != NULL)
+ {
+ if (local_got_refcounts[r_symndx] > 0)
+ {
+ local_got_refcounts[r_symndx] -= 1;
+ if (local_got_refcounts[r_symndx] == 0)
+ {
+ sgot->_raw_size -= 4;
+ if (info->shared)
+ srelgot->_raw_size -= sizeof (Elf32_External_Rel);
+ }
+ }
+ }
+ break;
+
+ case R_386_PLT32:
+ r_symndx = ELF32_R_SYM (rel->r_info);
+ if (r_symndx >= symtab_hdr->sh_info)
+ {
+ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+ if (h->plt.refcount > 0)
+ h->plt.refcount -= 1;
+ }
+ break;
+
+ default:
+ break;
+ }
return true;
}
@@ -812,16 +881,18 @@ elf_i386_adjust_dynamic_symbol (info, h)
if (h->type == STT_FUNC
|| (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0)
{
- if (! info->shared
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
- && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0)
+ if ((! info->shared
+ && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
+ && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0)
+ || (info->shared && h->plt.refcount <= 0))
{
/* This case can occur if we saw a PLT32 reloc in an input
- file, but the symbol was never referred to by a dynamic
- object. In such a case, we don't actually need to build
- a procedure linkage table, and we can just do a PC32
- reloc instead. */
- BFD_ASSERT ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0);
+ file, but the symbol was never referred to by a dynamic
+ object, or if all references were garbage collected. In
+ such a case, we don't actually need to build a procedure
+ linkage table, and we can just do a PC32 reloc instead. */
+ h->plt.offset = (bfd_vma) -1;
+ h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
return true;
}
@@ -859,13 +930,11 @@ elf_i386_adjust_dynamic_symbol (info, h)
/* We also need to make an entry in the .got.plt section, which
will be placed in the .got section by the linker script. */
-
s = bfd_get_section_by_name (dynobj, ".got.plt");
BFD_ASSERT (s != NULL);
s->_raw_size += 4;
/* We also need to make an entry in the .rel.plt section. */
-
s = bfd_get_section_by_name (dynobj, ".rel.plt");
BFD_ASSERT (s != NULL);
s->_raw_size += sizeof (Elf32_External_Rel);
@@ -1193,9 +1262,14 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
sym_hashes = elf_sym_hashes (input_bfd);
local_got_offsets = elf_local_got_offsets (input_bfd);
- sgot = NULL;
- splt = NULL;
sreloc = NULL;
+ splt = NULL;
+ sgot = NULL;
+ if (dynobj != NULL)
+ {
+ splt = bfd_get_section_by_name (dynobj, ".plt");
+ sgot = bfd_get_section_by_name (dynobj, ".got");
+ }
rel = relocs;
relend = relocs + input_section->reloc_count;
@@ -1273,6 +1347,7 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
sec = h->root.u.def.section;
if (r_type == R_386_GOTPC
|| (r_type == R_386_PLT32
+ && splt != NULL
&& h->plt.offset != (bfd_vma) -1)
|| (r_type == R_386_GOT32
&& elf_hash_table (info)->dynamic_sections_created
@@ -1291,7 +1366,9 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
sections against symbols defined externally
in shared libraries. We can't do anything
with them here. */
- || (input_section->flags & SEC_DEBUGGING) != 0)))
+ || ((input_section->flags & SEC_DEBUGGING) != 0
+ && (h->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
@@ -1313,14 +1390,17 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
}
else if (h->root.type == bfd_link_hash_undefweak)
relocation = 0;
- else if (info->shared && !info->symbolic && !info->no_undefined)
+ 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))))
+ (!info->shared || info->no_undefined
+ || ELF_ST_VISIBILITY (h->other)))))
return false;
relocation = 0;
}
@@ -1331,11 +1411,7 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
case R_386_GOT32:
/* Relocation is to the entry for this symbol in the global
offset table. */
- if (sgot == NULL)
- {
- sgot = bfd_get_section_by_name (dynobj, ".got");
- BFD_ASSERT (sgot != NULL);
- }
+ BFD_ASSERT (sgot != NULL);
if (h != NULL)
{
@@ -1454,12 +1530,13 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
/* Relocation is to the entry for this symbol in the
procedure linkage table. */
- /* Resolve a PLT32 reloc again a local symbol directly,
+ /* Resolve a PLT32 reloc against a local symbol directly,
without using the procedure linkage table. */
if (h == NULL)
break;
- if (h->plt.offset == (bfd_vma) -1)
+ if (h->plt.offset == (bfd_vma) -1
+ || splt == NULL)
{
/* We didn't make a PLT entry for this symbol. This
happens when statically linking PIC code, or when
@@ -1467,12 +1544,6 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
break;
}
- if (splt == NULL)
- {
- splt = bfd_get_section_by_name (dynobj, ".plt");
- BFD_ASSERT (splt != NULL);
- }
-
relocation = (splt->output_section->vma
+ splt->output_offset
+ h->plt.offset);
@@ -1739,17 +1810,21 @@ elf_i386_finish_dynamic_symbol (output_bfd, info, h, sym)
+ sgot->output_offset
+ (h->got.offset &~ 1));
- /* If this is a -Bsymbolic link, and the symbol is defined
- locally, we just want to emit a RELATIVE reloc. Likewise if
- the symbol was forced to be local because of a version file.
+ /* If this is a static link, or it is a -Bsymbolic link and the
+ symbol is defined locally or was forced to be local because
+ of a version file, we just want to emit a RELATIVE reloc.
The entry in the global offset table will already have been
initialized in the relocate_section function. */
- if (info->shared
- && (info->symbolic || h->dynindx == -1)
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR))
- rel.r_info = ELF32_R_INFO (0, R_386_RELATIVE);
+ 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)))
+ {
+ rel.r_info = ELF32_R_INFO (0, R_386_RELATIVE);
+ }
else
{
+ BFD_ASSERT((h->got.offset & 1) == 0);
bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + h->got.offset);
rel.r_info = ELF32_R_INFO (h->dynindx, R_386_GLOB_DAT);
}
@@ -1923,27 +1998,6 @@ elf_i386_finish_dynamic_sections (output_bfd, info)
#define ELF_ARCH bfd_arch_i386
#define ELF_MACHINE_CODE EM_386
#define ELF_MAXPAGESIZE 0x1000
-#define elf_info_to_howto elf_i386_info_to_howto
-#define elf_info_to_howto_rel elf_i386_info_to_howto_rel
-#define bfd_elf32_bfd_reloc_type_lookup elf_i386_reloc_type_lookup
-#define bfd_elf32_bfd_is_local_label_name \
- elf_i386_is_local_label_name
-#define elf_backend_create_dynamic_sections \
- _bfd_elf_create_dynamic_sections
-#define bfd_elf32_bfd_link_hash_table_create \
- elf_i386_link_hash_table_create
-#define elf_backend_check_relocs elf_i386_check_relocs
-#define elf_backend_adjust_dynamic_symbol \
- elf_i386_adjust_dynamic_symbol
-#define elf_backend_size_dynamic_sections \
- elf_i386_size_dynamic_sections
-#define elf_backend_relocate_section elf_i386_relocate_section
-#define elf_backend_finish_dynamic_symbol \
- elf_i386_finish_dynamic_symbol
-#define elf_backend_finish_dynamic_sections \
- elf_i386_finish_dynamic_sections
-#define elf_backend_gc_mark_hook elf_i386_gc_mark_hook
-#define elf_backend_gc_sweep_hook elf_i386_gc_sweep_hook
#define elf_backend_can_gc_sections 1
#define elf_backend_want_got_plt 1
@@ -1952,4 +2006,22 @@ elf_i386_finish_dynamic_sections (output_bfd, info)
#define elf_backend_got_header_size 12
#define elf_backend_plt_header_size PLT_ENTRY_SIZE
+#define elf_info_to_howto elf_i386_info_to_howto
+#define elf_info_to_howto_rel elf_i386_info_to_howto_rel
+
+#define bfd_elf32_bfd_final_link _bfd_elf32_gc_common_final_link
+#define bfd_elf32_bfd_is_local_label_name elf_i386_is_local_label_name
+#define bfd_elf32_bfd_link_hash_table_create elf_i386_link_hash_table_create
+#define bfd_elf32_bfd_reloc_type_lookup elf_i386_reloc_type_lookup
+
+#define elf_backend_adjust_dynamic_symbol elf_i386_adjust_dynamic_symbol
+#define elf_backend_check_relocs elf_i386_check_relocs
+#define elf_backend_create_dynamic_sections _bfd_elf_create_dynamic_sections
+#define elf_backend_finish_dynamic_sections elf_i386_finish_dynamic_sections
+#define elf_backend_finish_dynamic_symbol elf_i386_finish_dynamic_symbol
+#define elf_backend_gc_mark_hook elf_i386_gc_mark_hook
+#define elf_backend_gc_sweep_hook elf_i386_gc_sweep_hook
+#define elf_backend_relocate_section elf_i386_relocate_section
+#define elf_backend_size_dynamic_sections elf_i386_size_dynamic_sections
+
#include "elf32-target.h"
diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c
index cc622301755..b01523477b4 100644
--- a/bfd/elf32-m68k.c
+++ b/bfd/elf32-m68k.c
@@ -847,19 +847,19 @@ elf_m68k_gc_sweep_hook (abfd, info, sec, relocs)
unsigned long r_symndx;
struct elf_link_hash_entry *h;
bfd *dynobj;
- asection *sgot = NULL;
- asection *srelgot = NULL;
+ asection *sgot;
+ asection *srelgot;
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
sym_hashes = elf_sym_hashes (abfd);
local_got_refcounts = elf_local_got_refcounts (abfd);
dynobj = elf_hash_table (info)->dynobj;
- if (dynobj)
- {
- sgot = bfd_get_section_by_name (dynobj, ".got");
- srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
- }
+ if (dynobj == NULL)
+ return true;
+
+ sgot = bfd_get_section_by_name (dynobj, ".got");
+ srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
relend = relocs + sec->reloc_count;
for (rel = relocs; rel < relend; rel++)
@@ -887,7 +887,7 @@ elf_m68k_gc_sweep_hook (abfd, info, sec, relocs)
}
}
}
- else
+ else if (local_got_refcounts != NULL)
{
if (local_got_refcounts[r_symndx] > 0)
{
@@ -1479,14 +1479,17 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section,
}
else if (h->root.type == bfd_link_hash_undefweak)
relocation = 0;
- else if (info->shared && !info->symbolic && !info->no_undefined)
+ 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))))
+ (!info->shared || info->no_undefined
+ || ELF_ST_VISIBILITY (h->other)))))
return false;
relocation = 0;
}
diff --git a/bfd/elf32-mcore.c b/bfd/elf32-mcore.c
index 5963a9eff6e..99e9c73596e 100644
--- a/bfd/elf32-mcore.c
+++ b/bfd/elf32-mcore.c
@@ -322,18 +322,8 @@ mcore_elf_merge_private_bfd_data (ibfd, obfd)
flagword new_flags;
/* Check if we have the same endianess */
- if ( ibfd->xvec->byteorder != obfd->xvec->byteorder
- && obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN)
- {
- (*_bfd_error_handler)
- (_("%s: compiled for a %s endian system and target is %s endian.\n"),
- bfd_get_filename (ibfd),
- bfd_big_endian (ibfd) ? "big" : "little",
- bfd_big_endian (obfd) ? "big" : "little");
-
- bfd_set_error (bfd_error_wrong_format);
- return false;
- }
+ if (_bfd_generic_verify_endian_match (ibfd, obfd) == false)
+ return false;
if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
@@ -532,7 +522,8 @@ mcore_elf_relocate_section (output_bfd, info, input_bfd, input_section,
}
else if (h->root.type == bfd_link_hash_undefweak)
relocation = 0;
- else if (info->shared)
+ else if (info->shared
+ && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
relocation = 0;
else
{
diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c
index d91bab97268..29e260e2130 100644
--- a/bfd/elf32-mips.c
+++ b/bfd/elf32-mips.c
@@ -1520,7 +1520,7 @@ gprel16_with_gp (abfd, symbol, reloc_entry, input_section, relocateable, data,
reloc_entry->address += input_section->output_offset;
/* Make sure it fit in 16 bits. */
- if (val >= 0x8000 && val < 0xffff8000)
+ if ((long) val >= 0x8000 || (long) val < -0x8000)
return bfd_reloc_overflow;
return bfd_reloc_ok;
@@ -2460,21 +2460,8 @@ _bfd_mips_elf_merge_private_bfd_data (ibfd, obfd)
boolean ok;
/* Check if we have the same endianess */
- if (ibfd->xvec->byteorder != obfd->xvec->byteorder
- && obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN)
- {
- const char *msg;
-
- if (bfd_big_endian (ibfd))
- msg = _("%s: compiled for a big endian system and target is little endian");
- else
- msg = _("%s: compiled for a little endian system and target is big endian");
-
- (*_bfd_error_handler) (msg, bfd_get_filename (ibfd));
-
- bfd_set_error (bfd_error_wrong_format);
- return false;
- }
+ if (_bfd_generic_verify_endian_match (ibfd, obfd) == false)
+ return false;
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
@@ -5930,7 +5917,8 @@ mips_elf_calculate_relocation (abfd,
and check to see if they exist by looking at their
addresses. */
symbol = 0;
- else if (info->shared && !info->symbolic && !info->no_undefined)
+ else if (info->shared && !info->symbolic && !info->no_undefined
+ && ELF_ST_VISIBILITY (h->root.other) == STV_DEFAULT)
symbol = 0;
else if (strcmp (h->root.root.root.string, "_DYNAMIC_LINK") == 0)
{
@@ -5948,7 +5936,8 @@ mips_elf_calculate_relocation (abfd,
if (! ((*info->callbacks->undefined_symbol)
(info, h->root.root.root.string, input_bfd,
input_section, relocation->r_offset,
- (!info->shared || info->no_undefined))))
+ (!info->shared || info->no_undefined
+ || ELF_ST_VISIBILITY (h->root.other)))))
return bfd_reloc_undefined;
symbol = 0;
}
@@ -6739,8 +6728,8 @@ _bfd_mips_elf_relocate_section (output_bfd, info, input_bfd, input_section,
bfd_vma low_bits;
bfd_vma high_bits;
- if (addend & 0x80000000u)
- sign_bits = 0xffffffffu;
+ if (addend & ((bfd_vma) 1 << 31))
+ sign_bits = ((bfd_vma) 1 << 32) - 1;
else
sign_bits = 0;
@@ -6859,8 +6848,8 @@ _bfd_mips_elf_relocate_section (output_bfd, info, input_bfd, input_section,
bfd_vma low_bits;
bfd_vma high_bits;
- if (value & 0x80000000u)
- sign_bits = 0xffffffffu;
+ if (value & ((bfd_vma) 1 << 31))
+ sign_bits = ((bfd_vma) 1 << 32) - 1;
else
sign_bits = 0;
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index 242cfb730ab..6dc3effc3f1 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -1399,21 +1399,8 @@ ppc_elf_merge_private_bfd_data (ibfd, obfd)
boolean error;
/* Check if we have the same endianess */
- if (ibfd->xvec->byteorder != obfd->xvec->byteorder
- && obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN)
- {
- const char *msg;
-
- if (bfd_big_endian (ibfd))
- msg = _("%s: compiled for a big endian system and target is little endian");
- else
- msg = _("%s: compiled for a little endian system and target is big endian");
-
- (*_bfd_error_handler) (msg, bfd_get_filename (ibfd));
-
- bfd_set_error (bfd_error_wrong_format);
- return false;
- }
+ if (_bfd_generic_verify_endian_match (ibfd, obfd) == false)
+ return false;
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
@@ -2540,7 +2527,7 @@ ppc_elf_gc_sweep_hook (abfd, info, sec, relocs)
if (h->got.refcount > 0)
h->got.refcount--;
}
- else
+ else if (local_got_refcounts != NULL)
{
if (local_got_refcounts[r_symndx] > 0)
local_got_refcounts[r_symndx]--;
@@ -3022,6 +3009,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
{
sec = h->root.u.def.section;
if ((r_type == R_PPC_PLT32
+ && splt != NULL
&& h->plt.offset != (bfd_vma) -1)
|| (r_type == R_PPC_LOCAL24PC
&& sec->output_section == NULL)
@@ -3043,7 +3031,9 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
It's here to avoid a crash when
generating a shared library with DWARF
debugging information. */
- || (input_section->flags & SEC_DEBUGGING) != 0)
+ || ((input_section->flags & SEC_DEBUGGING) != 0
+ && (h->elf_link_hash_flags
+ & ELF_LINK_HASH_DEF_DYNAMIC) != 0))
&& (r_type == R_PPC_ADDR32
|| r_type == R_PPC_ADDR24
|| r_type == R_PPC_ADDR16
@@ -3101,7 +3091,9 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
}
else if (h->root.type == bfd_link_hash_undefweak)
relocation = 0;
- else if (info->shared && !info->symbolic && !info->no_undefined)
+ else if (info->shared && !info->symbolic
+ && !info->no_undefined
+ && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
relocation = 0;
else
{
@@ -3111,7 +3103,8 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
input_section,
rel->r_offset,
(!info->shared
- || info->no_undefined)))
+ || info->no_undefined
+ || ELF_ST_VISIBILITY (h->other))))
return false;
relocation = 0;
}
diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c
index 6913fa47f1c..7fe30ef1752 100644
--- a/bfd/elf32-sh.c
+++ b/bfd/elf32-sh.c
@@ -1394,6 +1394,13 @@ sh_elf_relax_delete_bytes (abfd, sec, addr, count)
bfd_put_16 (abfd, insn, contents + nraddr);
break;
+ case R_SH_SWITCH8:
+ voff += adjust;
+ if (voff < 0 || voff >= 0xff)
+ overflow = true;
+ bfd_put_8 (abfd, voff, contents + nraddr);
+ break;
+
case R_SH_SWITCH16:
voff += adjust;
if (voff < - 0x8000 || voff >= 0x8000)
diff --git a/bfd/elf32-sparc.c b/bfd/elf32-sparc.c
index e61a82fabeb..70d65a5f87b 100644
--- a/bfd/elf32-sparc.c
+++ b/bfd/elf32-sparc.c
@@ -24,6 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "libbfd.h"
#include "elf-bfd.h"
#include "elf/sparc.h"
+#include "opcode/sparc.h"
static reloc_howto_type *elf32_sparc_reloc_type_lookup
PARAMS ((bfd *, bfd_reloc_code_real_type));
@@ -36,6 +37,8 @@ static boolean elf32_sparc_adjust_dynamic_symbol
PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *));
static boolean elf32_sparc_size_dynamic_sections
PARAMS ((bfd *, struct bfd_link_info *));
+static boolean elf32_sparc_relax_section
+ PARAMS ((bfd *, asection *, struct bfd_link_info *, boolean *));
static boolean elf32_sparc_relocate_section
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
@@ -1059,6 +1062,23 @@ elf32_sparc_size_dynamic_sections (output_bfd, info)
return true;
}
+
+#define SET_SEC_DO_RELAX(section) do { elf_section_data(section)->tdata = (void *)1; } while (0)
+#define SEC_DO_RELAX(section) (elf_section_data(section)->tdata == (void *)1)
+
+/*ARGSUSED*/
+static boolean
+elf32_sparc_relax_section (abfd, section, link_info, again)
+ bfd *abfd ATTRIBUTE_UNUSED;
+ asection *section ATTRIBUTE_UNUSED;
+ struct bfd_link_info *link_info ATTRIBUTE_UNUSED;
+ boolean *again;
+{
+ *again = false;
+ SET_SEC_DO_RELAX (section);
+ return true;
+}
+
/* Relocate a SPARC ELF section. */
static boolean
@@ -1213,14 +1233,17 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
}
else if (h->root.type == bfd_link_hash_undefweak)
relocation = 0;
- else if (info->shared && !info->symbolic && !info->no_undefined)
+ 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))))
+ (!info->shared || info->no_undefined
+ || ELF_ST_VISIBILITY (h->other)))))
return false;
relocation = 0;
}
@@ -1515,6 +1538,7 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
break;
}
+ r = bfd_reloc_continue;
if (r_type == R_SPARC_WDISP16)
{
bfd_vma x;
@@ -1546,7 +1570,97 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
bfd_putl32 (/*input_bfd,*/ x, contents + rel->r_offset);
r = bfd_reloc_ok;
}
- else
+ else if ((r_type == R_SPARC_WDISP30 || r_type == R_SPARC_WPLT30)
+ && SEC_DO_RELAX (input_section)
+ && rel->r_offset + 4 < input_section->_raw_size)
+ {
+#define G0 0
+#define O7 15
+#define XCC (2 << 20)
+#define COND(x) (((x)&0xf)<<25)
+#define CONDA COND(0x8)
+#define INSN_BPA (F2(0,1) | CONDA | BPRED | XCC)
+#define INSN_BA (F2(0,2) | CONDA)
+#define INSN_OR F3(2, 0x2, 0)
+#define INSN_NOP F2(0,4)
+
+ bfd_vma x, y;
+
+ /* If the instruction is a call with either:
+ restore
+ arithmetic instruction with rd == %o7
+ where rs1 != %o7 and rs2 if it is register != %o7
+ then we can optimize if the call destination is near
+ by changing the call into a branch always. */
+ x = bfd_get_32 (input_bfd, contents + rel->r_offset);
+ y = bfd_get_32 (input_bfd, contents + rel->r_offset + 4);
+ if ((x & OP(~0)) == OP(1) && (y & OP(~0)) == OP(2))
+ {
+ if (((y & OP3(~0)) == OP3(0x3d) /* restore */
+ || ((y & OP3(0x28)) == 0 /* arithmetic */
+ && (y & RD(~0)) == RD(O7)))
+ && (y & RS1(~0)) != RS1(O7)
+ && ((y & F3I(~0))
+ || (y & RS2(~0)) != RS2(O7)))
+ {
+ bfd_vma reloc;
+
+ reloc = relocation + rel->r_addend - rel->r_offset;
+ reloc -= (input_section->output_section->vma
+ + input_section->output_offset);
+
+ /* Ensure the reloc fits into simm22. */
+ if ((reloc & 3) == 0
+ && ((reloc & ~(bfd_vma)0x7fffff) == 0
+ || ((reloc | 0x7fffff) == ~(bfd_vma)0)))
+ {
+ reloc >>= 2;
+
+ /* Check whether it fits into simm19 on v9. */
+ if (((reloc & 0x3c0000) == 0
+ || (reloc & 0x3c0000) == 0x3c0000)
+ && (elf_elfheader (output_bfd)->e_flags & EF_SPARC_32PLUS))
+ x = INSN_BPA | (reloc & 0x7ffff); /* ba,pt %xcc */
+ else
+ x = INSN_BA | (reloc & 0x3fffff); /* ba */
+ bfd_put_32 (input_bfd, x, contents + rel->r_offset);
+ r = bfd_reloc_ok;
+ if (rel->r_offset >= 4
+ && (y & (0xffffffff ^ RS1(~0)))
+ == (INSN_OR | RD(O7) | RS2(G0)))
+ {
+ bfd_vma z;
+ unsigned int reg;
+
+ z = bfd_get_32 (input_bfd,
+ contents + rel->r_offset - 4);
+ if ((z & (0xffffffff ^ RD(~0)))
+ != (INSN_OR | RS1(O7) | RS2(G0)))
+ break;
+
+ /* The sequence was
+ or %o7, %g0, %rN
+ call foo
+ or %rN, %g0, %o7
+
+ If call foo was replaced with ba, replace
+ or %rN, %g0, %o7 with nop. */
+
+ reg = (y & RS1(~0)) >> 14;
+ if (reg != ((z & RD(~0)) >> 25)
+ || reg == G0 || reg == O7)
+ break;
+
+ bfd_put_32 (input_bfd, INSN_NOP,
+ contents + rel->r_offset + 4);
+ }
+
+ }
+ }
+ }
+ }
+
+ if (r == bfd_reloc_continue)
r = _bfd_final_link_relocate (howto, input_bfd, input_section,
contents, rel->r_offset,
relocation, rel->r_addend);
@@ -1964,6 +2078,7 @@ elf32_sparc_final_write_processing (abfd, linker)
#define ELF_MAXPAGESIZE 0x10000
#define bfd_elf32_bfd_reloc_type_lookup elf32_sparc_reloc_type_lookup
+#define bfd_elf32_bfd_relax_section elf32_sparc_relax_section
#define elf_info_to_howto elf32_sparc_info_to_howto
#define elf_backend_create_dynamic_sections \
_bfd_elf_create_dynamic_sections
diff --git a/bfd/elf64-alpha.c b/bfd/elf64-alpha.c
index 4da9e925c63..4c083fa4944 100644
--- a/bfd/elf64-alpha.c
+++ b/bfd/elf64-alpha.c
@@ -3475,14 +3475,17 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
}
else if (h->root.root.type == bfd_link_hash_undefweak)
relocation = 0;
- else if (info->shared && !info->symbolic && !info->no_undefined)
+ 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))))
+ (!info->shared || info->no_undefined
+ || ELF_ST_VISIBILITY (h->root.other)))))
return false;
relocation = 0;
}
diff --git a/bfd/elf64-hppa.c b/bfd/elf64-hppa.c
new file mode 100644
index 00000000000..b5b9f7f3f59
--- /dev/null
+++ b/bfd/elf64-hppa.c
@@ -0,0 +1,2633 @@
+/* Generic support for 64-bit ELF
+ Copyright 1999, 2000 Free Software Foundation, Inc.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+#include "elf-bfd.h"
+#include "elf/hppa.h"
+#include "libhppa.h"
+#include "elf64-hppa.h"
+#define ARCH_SIZE 64
+
+#define PLT_ENTRY_SIZE 0x10
+#define DLT_ENTRY_SIZE 0x8
+#define OPD_ENTRY_SIZE 0x20
+
+#define ELF_DYNAMIC_INTERPRETER "/usr/lib/pa20_64/dld.sl"
+
+/* The stub is supposed to load the target address and target's DP
+ value out of the PLT, then do an external branch to the target
+ address.
+
+ LDD PLTOFF(%r27),%r1
+ BVE (%r1)
+ LDD PLTOFF+8(%r27),%r27
+
+ Note that we must use the LDD with a 14 bit displacement, not the one
+ with a 5 bit displacement. */
+static char plt_stub[] = {0x53, 0x61, 0x00, 0x00, 0xe8, 0x20, 0xd0, 0x00,
+ 0x53, 0x7b, 0x00, 0x00 };
+
+struct elf64_hppa_dyn_hash_entry
+{
+ struct bfd_hash_entry root;
+
+ /* Offsets for this symbol in various linker sections. */
+ bfd_vma dlt_offset;
+ bfd_vma plt_offset;
+ bfd_vma opd_offset;
+ bfd_vma stub_offset;
+
+ /* The symbol table entry, if any, that this was derrived from. */
+ struct elf_link_hash_entry *h;
+
+ /* The index of the (possibly local) symbol in the input bfd and its
+ associated BFD. Needed so that we can have relocs against local
+ symbols in shared libraries. */
+ unsigned long sym_indx;
+ bfd *owner;
+
+ /* Dynamic symbols may need to have two different values. One for
+ the dynamic symbol table, one for the normal symbol table.
+
+ In such cases we store the symbol's real value and section
+ index here so we can restore the real value before we write
+ the normal symbol table. */
+ bfd_vma st_value;
+ int st_shndx;
+
+ /* Used to count non-got, non-plt relocations for delayed sizing
+ of relocation sections. */
+ struct elf64_hppa_dyn_reloc_entry
+ {
+ /* Next relocation in the chain. */
+ struct elf64_hppa_dyn_reloc_entry *next;
+
+ /* The type of the relocation. */
+ int type;
+
+ /* The input section of the relocation. */
+ asection *sec;
+
+ /* The index of the section symbol for the input section of
+ the relocation. Only needed when building shared libraries. */
+ int sec_symndx;
+
+ /* The offset within the input section of the relocation. */
+ bfd_vma offset;
+
+ /* The addend for the relocation. */
+ bfd_vma addend;
+
+ } *reloc_entries;
+
+ /* Nonzero if this symbol needs an entry in one of the linker
+ sections. */
+ unsigned want_dlt;
+ unsigned want_plt;
+ unsigned want_opd;
+ unsigned want_stub;
+};
+
+struct elf64_hppa_dyn_hash_table
+{
+ struct bfd_hash_table root;
+};
+
+struct elf64_hppa_link_hash_table
+{
+ struct elf_link_hash_table root;
+
+ /* Shortcuts to get to the various linker defined sections. */
+ asection *dlt_sec;
+ asection *dlt_rel_sec;
+ asection *plt_sec;
+ asection *plt_rel_sec;
+ asection *opd_sec;
+ asection *opd_rel_sec;
+ asection *other_rel_sec;
+
+ /* Offset of __gp within .plt section. When the PLT gets large we want
+ to slide __gp into the PLT section so that we can continue to use
+ single DP relative instructions to load values out of the PLT. */
+ bfd_vma gp_offset;
+
+ /* Note this is not strictly correct. We should create a stub section for
+ each input section with calls. The stub section should be placed before
+ the section with the call. */
+ asection *stub_sec;
+
+ bfd_vma text_segment_base;
+ bfd_vma data_segment_base;
+
+ struct elf64_hppa_dyn_hash_table dyn_hash_table;
+
+ /* We build tables to map from an input section back to its
+ symbol index. This is the BFD for which we currently have
+ a map. */
+ bfd *section_syms_bfd;
+
+ /* Array of symbol numbers for each input section attached to the
+ current BFD. */
+ int *section_syms;
+};
+
+#define elf64_hppa_hash_table(p) \
+ ((struct elf64_hppa_link_hash_table *) ((p)->hash))
+
+typedef struct bfd_hash_entry *(*new_hash_entry_func)
+ PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
+
+static boolean elf64_hppa_dyn_hash_table_init
+ PARAMS ((struct elf64_hppa_dyn_hash_table *ht, bfd *abfd,
+ new_hash_entry_func new));
+static struct bfd_hash_entry *elf64_hppa_new_dyn_hash_entry
+ PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table,
+ const char *string));
+static struct bfd_link_hash_table *elf64_hppa_hash_table_create
+ PARAMS ((bfd *abfd));
+static struct elf64_hppa_dyn_hash_entry *elf64_hppa_dyn_hash_lookup
+ PARAMS ((struct elf64_hppa_dyn_hash_table *table, const char *string,
+ boolean create, boolean copy));
+static void elf64_hppa_dyn_hash_traverse
+ PARAMS ((struct elf64_hppa_dyn_hash_table *table,
+ boolean (*func)(struct elf64_hppa_dyn_hash_entry *, PTR),
+ PTR info));
+
+static const char *get_dyn_name
+ PARAMS ((bfd *abfd, struct elf_link_hash_entry *h,
+ const Elf_Internal_Rela *rel, char **pbuf, size_t *plen));
+
+
+/* This must follow the definitions of the various derived linker
+ hash tables and shared functions. */
+#include "elf-hppa.h"
+
+
+static boolean elf64_hppa_object_p
+ PARAMS ((bfd *));
+
+static boolean elf64_hppa_section_from_shdr
+ PARAMS ((bfd *, Elf64_Internal_Shdr *, char *));
+
+static void elf64_hppa_post_process_headers
+ PARAMS ((bfd *, struct bfd_link_info *));
+
+static boolean elf64_hppa_create_dynamic_sections
+ PARAMS ((bfd *, struct bfd_link_info *));
+
+static boolean elf64_hppa_adjust_dynamic_symbol
+ PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *));
+
+static boolean elf64_hppa_size_dynamic_sections
+ PARAMS ((bfd *, struct bfd_link_info *));
+
+static boolean elf64_hppa_finish_dynamic_symbol
+ PARAMS ((bfd *, struct bfd_link_info *,
+ struct elf_link_hash_entry *, Elf_Internal_Sym *));
+
+static boolean elf64_hppa_finish_dynamic_sections
+ PARAMS ((bfd *, struct bfd_link_info *));
+
+static boolean elf64_hppa_check_relocs
+ PARAMS ((bfd *, struct bfd_link_info *,
+ asection *, const Elf_Internal_Rela *));
+
+static boolean elf64_hppa_dynamic_symbol_p
+ PARAMS ((struct elf_link_hash_entry *, struct bfd_link_info *));
+
+static boolean elf64_hppa_mark_exported_functions
+ PARAMS ((struct elf_link_hash_entry *, PTR));
+
+static boolean elf64_hppa_finalize_opd
+ PARAMS ((struct elf64_hppa_dyn_hash_entry *, PTR));
+
+static boolean elf64_hppa_finalize_dlt
+ PARAMS ((struct elf64_hppa_dyn_hash_entry *, PTR));
+
+static boolean allocate_global_data_dlt
+ PARAMS ((struct elf64_hppa_dyn_hash_entry *, PTR));
+
+static boolean allocate_global_data_plt
+ PARAMS ((struct elf64_hppa_dyn_hash_entry *, PTR));
+
+static boolean allocate_global_data_stub
+ PARAMS ((struct elf64_hppa_dyn_hash_entry *, PTR));
+
+static boolean allocate_global_data_opd
+ PARAMS ((struct elf64_hppa_dyn_hash_entry *, PTR));
+
+static boolean get_reloc_section
+ PARAMS ((bfd *, struct elf64_hppa_link_hash_table *, asection *));
+
+static boolean count_dyn_reloc
+ PARAMS ((bfd *, struct elf64_hppa_dyn_hash_entry *,
+ int, asection *, int, bfd_vma, bfd_vma));
+
+static boolean allocate_dynrel_entries
+ PARAMS ((struct elf64_hppa_dyn_hash_entry *, PTR));
+
+static boolean elf64_hppa_finalize_dynreloc
+ PARAMS ((struct elf64_hppa_dyn_hash_entry *, PTR));
+
+static boolean get_opd
+ PARAMS ((bfd *, struct bfd_link_info *, struct elf64_hppa_link_hash_table *));
+
+static boolean get_plt
+ PARAMS ((bfd *, struct bfd_link_info *, struct elf64_hppa_link_hash_table *));
+
+static boolean get_dlt
+ PARAMS ((bfd *, struct bfd_link_info *, struct elf64_hppa_link_hash_table *));
+
+static boolean get_stub
+ PARAMS ((bfd *, struct bfd_link_info *, struct elf64_hppa_link_hash_table *));
+
+static boolean
+elf64_hppa_dyn_hash_table_init (ht, abfd, new)
+ struct elf64_hppa_dyn_hash_table *ht;
+ bfd *abfd;
+ new_hash_entry_func new;
+{
+ memset (ht, 0, sizeof(*ht));
+ return bfd_hash_table_init (&ht->root, new);
+}
+
+static struct bfd_hash_entry*
+elf64_hppa_new_dyn_hash_entry (entry, table, string)
+ struct bfd_hash_entry *entry;
+ struct bfd_hash_table *table;
+ const char *string;
+{
+ struct elf64_hppa_dyn_hash_entry *ret;
+ ret = (struct elf64_hppa_dyn_hash_entry *) entry;
+
+ /* Allocate the structure if it has not already been allocated by a
+ subclass. */
+ if (!ret)
+ ret = bfd_hash_allocate (table, sizeof (*ret));
+
+ if (!ret)
+ return 0;
+
+ /* Initialize our local data. All zeros, and definitely easier
+ than setting 8 bit fields. */
+ memset (ret, 0, sizeof(*ret));
+
+ /* Call the allocation method of the superclass. */
+ ret = ((struct elf64_hppa_dyn_hash_entry *)
+ bfd_hash_newfunc ((struct bfd_hash_entry *) ret, table, string));
+
+ return &ret->root;
+}
+
+/* Create the derived linker hash table. The PA64 ELF port uses this
+ derived hash table to keep information specific to the PA ElF
+ linker (without using static variables). */
+
+static struct bfd_link_hash_table*
+elf64_hppa_hash_table_create (abfd)
+ bfd *abfd;
+{
+ struct elf64_hppa_link_hash_table *ret;
+
+ ret = bfd_zalloc (abfd, sizeof (*ret));
+ if (!ret)
+ return 0;
+ if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
+ _bfd_elf_link_hash_newfunc))
+ {
+ bfd_release (abfd, ret);
+ return 0;
+ }
+
+ if (!elf64_hppa_dyn_hash_table_init (&ret->dyn_hash_table, abfd,
+ elf64_hppa_new_dyn_hash_entry))
+ return 0;
+ return &ret->root.root;
+}
+
+/* Look up an entry in a PA64 ELF linker hash table. */
+
+static struct elf64_hppa_dyn_hash_entry *
+elf64_hppa_dyn_hash_lookup(table, string, create, copy)
+ struct elf64_hppa_dyn_hash_table *table;
+ const char *string;
+ boolean create, copy;
+{
+ return ((struct elf64_hppa_dyn_hash_entry *)
+ bfd_hash_lookup (&table->root, string, create, copy));
+}
+
+/* Traverse a PA64 ELF linker hash table. */
+
+static void
+elf64_hppa_dyn_hash_traverse (table, func, info)
+ struct elf64_hppa_dyn_hash_table *table;
+ boolean (*func) PARAMS ((struct elf64_hppa_dyn_hash_entry *, PTR));
+ PTR info;
+{
+ (bfd_hash_traverse
+ (&table->root,
+ (boolean (*) PARAMS ((struct bfd_hash_entry *, PTR))) func,
+ info));
+}
+
+/* Return nonzero if ABFD represents a PA2.0 ELF64 file.
+
+ Additionally we set the default architecture and machine. */
+static boolean
+elf64_hppa_object_p (abfd)
+ bfd *abfd;
+{
+ /* Set the right machine number for an HPPA ELF file. */
+ return bfd_default_set_arch_mach (abfd, bfd_arch_hppa, 25);
+}
+
+/* Given section type (hdr->sh_type), return a boolean indicating
+ whether or not the section is an elf64-hppa specific section. */
+static boolean
+elf64_hppa_section_from_shdr (abfd, hdr, name)
+ bfd *abfd;
+ Elf64_Internal_Shdr *hdr;
+ char *name;
+{
+ asection *newsect;
+
+ switch (hdr->sh_type)
+ {
+ case SHT_PARISC_EXT:
+ if (strcmp (name, ".PARISC.archext") != 0)
+ return false;
+ break;
+ case SHT_PARISC_UNWIND:
+ if (strcmp (name, ".PARISC.unwind") != 0)
+ return false;
+ break;
+ case SHT_PARISC_DOC:
+ case SHT_PARISC_ANNOT:
+ default:
+ return false;
+ }
+
+ if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
+ return false;
+ newsect = hdr->bfd_section;
+
+ return true;
+}
+
+
+/* Construct a string for use in the elf64_hppa_dyn_hash_table. The
+ name describes what was once potentially anonymous memory. We
+ allocate memory as necessary, possibly reusing PBUF/PLEN. */
+
+static const char *
+get_dyn_name (abfd, h, rel, pbuf, plen)
+ bfd *abfd;
+ struct elf_link_hash_entry *h;
+ const Elf_Internal_Rela *rel;
+ char **pbuf;
+ size_t *plen;
+{
+ size_t nlen, tlen;
+ char *buf;
+ size_t len;
+
+ if (h && rel->r_addend == 0)
+ return h->root.root.string;
+
+ if (h)
+ nlen = strlen (h->root.root.string);
+ else
+ {
+ nlen = sizeof(void*)*2 + 1 + sizeof(bfd_vma)*4 + 1 + 1;
+ nlen += 10; /* %p slop */
+ }
+ tlen = nlen + 1 + 16 + 1;
+
+ len = *plen;
+ buf = *pbuf;
+ if (len < tlen)
+ {
+ if (buf)
+ free (buf);
+ *pbuf = buf = malloc (tlen);
+ *plen = len = tlen;
+ if (!buf)
+ return NULL;
+ }
+
+ if (h)
+ {
+ memcpy (buf, h->root.root.string, nlen);
+ sprintf_vma (buf + nlen, rel->r_addend);
+ }
+ else
+ {
+ nlen = sprintf (buf, "%p:%lx", abfd, ELF64_R_SYM (rel->r_info));
+ if (rel->r_addend)
+ {
+ buf[nlen++] = '+';
+ sprintf_vma (buf + nlen, rel->r_addend);
+ }
+ }
+
+ return buf;
+}
+
+/* SEC is a section containing relocs for an input BFD when linking; return
+ a suitable section for holding relocs in the output BFD for a link. */
+
+static boolean
+get_reloc_section (abfd, hppa_info, sec)
+ bfd *abfd;
+ struct elf64_hppa_link_hash_table *hppa_info;
+ asection *sec;
+{
+ const char *srel_name;
+ asection *srel;
+ bfd *dynobj;
+
+ srel_name = (bfd_elf_string_from_elf_section
+ (abfd, elf_elfheader(abfd)->e_shstrndx,
+ elf_section_data(sec)->rel_hdr.sh_name));
+ if (srel_name == NULL)
+ return false;
+
+ BFD_ASSERT ((strncmp (srel_name, ".rela", 5) == 0
+ && strcmp (bfd_get_section_name (abfd, sec),
+ srel_name+5) == 0)
+ || (strncmp (srel_name, ".rel", 4) == 0
+ && strcmp (bfd_get_section_name (abfd, sec),
+ srel_name+4) == 0));
+
+ dynobj = hppa_info->root.dynobj;
+ if (!dynobj)
+ hppa_info->root.dynobj = dynobj = abfd;
+
+ srel = bfd_get_section_by_name (dynobj, srel_name);
+ if (srel == NULL)
+ {
+ srel = bfd_make_section (dynobj, srel_name);
+ if (srel == NULL
+ || !bfd_set_section_flags (dynobj, srel,
+ (SEC_ALLOC
+ | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED
+ | SEC_READONLY))
+ || !bfd_set_section_alignment (dynobj, srel, 3))
+ return false;
+ }
+
+ hppa_info->other_rel_sec = srel;
+ return true;
+}
+
+/* Add a new entry to the list of dynamic relocations against DYN_H.
+
+ We use this to keep a record of all the FPTR relocations against a
+ particular symbol so that we can create FPTR relocations in the
+ output file. */
+
+static boolean
+count_dyn_reloc (abfd, dyn_h, type, sec, sec_symndx, offset, addend)
+ bfd *abfd;
+ struct elf64_hppa_dyn_hash_entry *dyn_h;
+ int type;
+ asection *sec;
+ int sec_symndx;
+ bfd_vma offset;
+ bfd_vma addend;
+{
+ struct elf64_hppa_dyn_reloc_entry *rent;
+
+ rent = (struct elf64_hppa_dyn_reloc_entry *)
+ bfd_alloc (abfd, sizeof (*rent));
+ if (!rent)
+ return false;
+
+ rent->next = dyn_h->reloc_entries;
+ rent->type = type;
+ rent->sec = sec;
+ rent->sec_symndx = sec_symndx;
+ rent->offset = offset;
+ rent->addend = addend;
+ dyn_h->reloc_entries = rent;
+
+ return true;
+}
+
+/* Scan the RELOCS and record the type of dynamic entries that each
+ referenced symbol needs. */
+
+static boolean
+elf64_hppa_check_relocs (abfd, info, sec, relocs)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ asection *sec;
+ const Elf_Internal_Rela *relocs;
+{
+ struct elf64_hppa_link_hash_table *hppa_info;
+ const Elf_Internal_Rela *relend;
+ Elf_Internal_Shdr *symtab_hdr;
+ const Elf_Internal_Rela *rel;
+ asection *dlt, *plt, *stubs;
+ char *buf;
+ size_t buf_len;
+ int sec_symndx;
+
+ if (info->relocateable)
+ return true;
+
+ /* If this is the first dynamic object found in the link, create
+ the special sections required for dynamic linking. */
+ if (! elf_hash_table (info)->dynamic_sections_created)
+ {
+ if (! bfd_elf64_link_create_dynamic_sections (abfd, info))
+ return false;
+ }
+
+ hppa_info = elf64_hppa_hash_table (info);
+ symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+
+ /* If necessary, build a new table holding section symbols indices
+ for this BFD. This is disgusting. */
+
+ if (info->shared && hppa_info->section_syms_bfd != abfd)
+ {
+ int i, highest_shndx;
+ asection *section;
+ Elf_Internal_Sym *local_syms, *isym;
+ Elf64_External_Sym *ext_syms, *esym;
+
+ /* We're done with the old cache of section index to section symbol
+ index information. Free it.
+
+ ?!? Note we leak the last section_syms array. Presumably we
+ could free it in one of the later routines in this file. */
+ if (hppa_info->section_syms)
+ free (hppa_info->section_syms);
+
+ /* Allocate memory for the internal and external symbols. */
+ local_syms
+ = (Elf_Internal_Sym *) bfd_malloc (symtab_hdr->sh_info
+ * sizeof (Elf_Internal_Sym));
+ if (local_syms == NULL)
+ return false;
+
+ ext_syms
+ = (Elf64_External_Sym *) bfd_malloc (symtab_hdr->sh_info
+ * sizeof (Elf64_External_Sym));
+ if (ext_syms == NULL)
+ {
+ free (local_syms);
+ return false;
+ }
+
+ /* Read in the local symbols. */
+ if (bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0
+ || bfd_read (ext_syms, 1,
+ (symtab_hdr->sh_info
+ * sizeof (Elf64_External_Sym)), abfd)
+ != (symtab_hdr->sh_info * sizeof (Elf64_External_Sym)))
+ {
+ free (local_syms);
+ free (ext_syms);
+ return false;
+ }
+
+ /* Swap in the local symbols, also record the highest section index
+ referenced by the local symbols. */
+ isym = local_syms;
+ esym = ext_syms;
+ highest_shndx = 0;
+ for (i = 0; i < symtab_hdr->sh_info; i++, esym++, isym++)
+ {
+ bfd_elf64_swap_symbol_in (abfd, esym, isym);
+ if (isym->st_shndx > highest_shndx)
+ highest_shndx = isym->st_shndx;
+ }
+
+ /* Now we can free the external symbols. */
+ free (ext_syms);
+
+ /* Allocate an array to hold the section index to section symbol index
+ mapping. Bump by one since we start counting at zero. */
+ highest_shndx++;
+ hppa_info->section_syms = (int *) bfd_malloc (highest_shndx
+ * sizeof (int));
+
+ /* Now walk the local symbols again. If we find a section symbol,
+ record the index of the symbol into the section_syms array. */
+ for (isym = local_syms, i = 0; i < symtab_hdr->sh_info; i++, isym++)
+ {
+ if (ELF_ST_TYPE (isym->st_info) == STT_SECTION)
+ hppa_info->section_syms[isym->st_shndx] = i;
+ }
+
+ /* We are finished with the local symbols. Get rid of them. */
+ free (local_syms);
+
+ /* Record which BFD we built the section_syms mapping for. */
+ hppa_info->section_syms_bfd = abfd;
+ }
+
+ /* Record the symbol index for this input section. We may need it for
+ relocations when building shared libraries. When not building shared
+ libraries this value is never really used, but assign it to zero to
+ prevent out of bounds memory accesses in other routines. */
+ if (info->shared)
+ {
+ sec_symndx = _bfd_elf_section_from_bfd_section (abfd, sec);
+
+ /* If we did not find a section symbol for this section, then
+ something went terribly wrong above. */
+ if (sec_symndx == -1)
+ return false;
+
+ sec_symndx = hppa_info->section_syms[sec_symndx];
+ }
+ else
+ sec_symndx = 0;
+
+ dlt = plt = stubs = NULL;
+ buf = NULL;
+ buf_len = 0;
+
+ 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,
+ };
+
+ struct elf_link_hash_entry *h = NULL;
+ unsigned long r_symndx = ELF64_R_SYM (rel->r_info);
+ struct elf64_hppa_dyn_hash_entry *dyn_h;
+ int need_entry;
+ const char *addr_name;
+ boolean maybe_dynamic;
+ int dynrel_type = R_PARISC_NONE;
+ static reloc_howto_type *howto;
+
+ if (r_symndx >= symtab_hdr->sh_info)
+ {
+ /* We're dealing with a global symbol -- find its hash entry
+ and mark it as being referenced. */
+ long indx = r_symndx - symtab_hdr->sh_info;
+ h = elf_sym_hashes (abfd)[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;
+
+ h->elf_link_hash_flags |= ELF_LINK_HASH_REF_REGULAR;
+ }
+
+ /* We can only get preliminary data on whether a symbol is
+ locally or externally defined, as not all of the input files
+ have yet been processed. Do something with what we know, as
+ this may help reduce memory usage and processing time later. */
+ maybe_dynamic = false;
+ if (h && ((info->shared && ! info->symbolic)
+ || ! (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)
+ || h->root.type == bfd_link_hash_defweak))
+ maybe_dynamic = true;
+
+ howto = elf_hppa_howto_table + ELF64_R_TYPE (rel->r_info);
+ need_entry = 0;
+ switch (howto->type)
+ {
+ /* These are simple indirect references to symbols through the
+ DLT. We need to create a DLT entry for any symbols which
+ appears in a DLTIND relocation. */
+ case R_PARISC_DLTIND21L:
+ case R_PARISC_DLTIND14R:
+ case R_PARISC_DLTIND14F:
+ case R_PARISC_DLTIND14WR:
+ case R_PARISC_DLTIND14DR:
+ need_entry = NEED_DLT;
+ break;
+
+ /* ?!? These need a DLT entry. But I have no idea what to do with
+ the "link time TP value. */
+ case R_PARISC_LTOFF_TP21L:
+ case R_PARISC_LTOFF_TP14R:
+ case R_PARISC_LTOFF_TP14F:
+ case R_PARISC_LTOFF_TP64:
+ case R_PARISC_LTOFF_TP14WR:
+ case R_PARISC_LTOFF_TP14DR:
+ case R_PARISC_LTOFF_TP16F:
+ case R_PARISC_LTOFF_TP16WF:
+ case R_PARISC_LTOFF_TP16DF:
+ need_entry = NEED_DLT;
+ break;
+
+ /* These are function calls. Depending on their precise target we
+ may need to make a stub for them. The stub uses the PLT, so we
+ need to create PLT entries for these symbols too. */
+ case R_PARISC_PCREL17F:
+ case R_PARISC_PCREL22F:
+ case R_PARISC_PCREL32:
+ case R_PARISC_PCREL64:
+ case R_PARISC_PCREL21L:
+ case R_PARISC_PCREL17R:
+ case R_PARISC_PCREL17C:
+ case R_PARISC_PCREL14R:
+ case R_PARISC_PCREL14F:
+ case R_PARISC_PCREL22C:
+ case R_PARISC_PCREL14WR:
+ case R_PARISC_PCREL14DR:
+ case R_PARISC_PCREL16F:
+ case R_PARISC_PCREL16WF:
+ case R_PARISC_PCREL16DF:
+ need_entry = (NEED_PLT | NEED_STUB);
+ break;
+
+ case R_PARISC_PLTOFF21L:
+ case R_PARISC_PLTOFF14R:
+ case R_PARISC_PLTOFF14F:
+ case R_PARISC_PLTOFF14WR:
+ case R_PARISC_PLTOFF14DR:
+ case R_PARISC_PLTOFF16F:
+ case R_PARISC_PLTOFF16WF:
+ case R_PARISC_PLTOFF16DF:
+ need_entry = (NEED_PLT);
+ break;
+
+ case R_PARISC_DIR64:
+ if (info->shared || maybe_dynamic)
+ need_entry = (NEED_DYNREL);
+ dynrel_type = R_PARISC_DIR64;
+ break;
+
+ /* This is an indirect reference through the DLT to get the address
+ of a OPD descriptor. Thus we need to make a DLT entry that points
+ to an OPD entry. */
+ case R_PARISC_LTOFF_FPTR21L:
+ case R_PARISC_LTOFF_FPTR14R:
+ case R_PARISC_LTOFF_FPTR14WR:
+ case R_PARISC_LTOFF_FPTR14DR:
+ case R_PARISC_LTOFF_FPTR32:
+ case R_PARISC_LTOFF_FPTR64:
+ case R_PARISC_LTOFF_FPTR16F:
+ case R_PARISC_LTOFF_FPTR16WF:
+ case R_PARISC_LTOFF_FPTR16DF:
+ if (info->shared || maybe_dynamic)
+ need_entry = (NEED_DLT | NEED_OPD);
+ else
+ need_entry = (NEED_DLT | NEED_OPD);
+ dynrel_type = R_PARISC_FPTR64;
+ break;
+
+ /* This is a simple OPD entry. */
+ case R_PARISC_FPTR64:
+ if (info->shared || maybe_dynamic)
+ need_entry = (NEED_OPD | NEED_DYNREL);
+ else
+ need_entry = (NEED_OPD);
+ dynrel_type = R_PARISC_FPTR64;
+ break;
+
+ /* Add more cases as needed. */
+ }
+
+ if (!need_entry)
+ continue;
+
+ /* Collect a canonical name for this address. */
+ addr_name = get_dyn_name (abfd, h, rel, &buf, &buf_len);
+
+ /* Collect the canonical entry data for this address. */
+ dyn_h = elf64_hppa_dyn_hash_lookup (&hppa_info->dyn_hash_table,
+ addr_name, true, true);
+ BFD_ASSERT (dyn_h);
+
+ /* Stash away enough information to be able to find this symbol
+ regardless of whether or not it is local or global. */
+ dyn_h->h = h;
+ dyn_h->owner = abfd;
+ dyn_h->sym_indx = r_symndx;
+
+ /* ?!? We may need to do some error checking in here. */
+ /* Create what's needed. */
+ if (need_entry & NEED_DLT)
+ {
+ if (! hppa_info->dlt_sec
+ && ! get_dlt (abfd, info, hppa_info))
+ goto err_out;
+ dyn_h->want_dlt = 1;
+ }
+
+ if (need_entry & NEED_PLT)
+ {
+ if (! hppa_info->plt_sec
+ && ! get_plt (abfd, info, hppa_info))
+ goto err_out;
+ dyn_h->want_plt = 1;
+ }
+
+ if (need_entry & NEED_STUB)
+ {
+ if (! hppa_info->stub_sec
+ && ! get_stub (abfd, info, hppa_info))
+ goto err_out;
+ dyn_h->want_stub = 1;
+ }
+
+ if (need_entry & NEED_OPD)
+ {
+ if (! hppa_info->opd_sec
+ && ! get_opd (abfd, info, hppa_info))
+ goto err_out;
+
+ dyn_h->want_opd = 1;
+
+ /* FPTRs are not allocated by the dynamic linker for PA64, though
+ it is possible that will change in the future. */
+
+ /* This could be a local function that had its address taken, in
+ which case H will be NULL. */
+ if (h)
+ h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT;
+ }
+
+ /* Add a new dynamic relocation to the chain of dynamic
+ relocations for this symbol. */
+ if ((need_entry & NEED_DYNREL) && (sec->flags & SEC_ALLOC))
+ {
+ if (! hppa_info->other_rel_sec
+ && ! get_reloc_section (abfd, hppa_info, sec))
+ goto err_out;
+
+ if (!count_dyn_reloc (abfd, dyn_h, dynrel_type, sec,
+ sec_symndx, rel->r_offset, rel->r_addend))
+ goto err_out;
+
+ /* If we are building a shared library and we just recorded
+ a dynamic R_PARISC_FPTR64 relocation, then make sure the
+ section symbol for this section ends up in the dynamic
+ symbol table. */
+ if (info->shared && dynrel_type == R_PARISC_FPTR64
+ && ! (_bfd_elf64_link_record_local_dynamic_symbol
+ (info, abfd, sec_symndx)))
+ return false;
+ }
+ }
+
+ if (buf)
+ free (buf);
+ return true;
+
+ err_out:
+ if (buf)
+ free (buf);
+ return false;
+}
+
+struct elf64_hppa_allocate_data
+{
+ struct bfd_link_info *info;
+ bfd_size_type ofs;
+};
+
+/* Should we do dynamic things to this symbol? */
+
+static boolean
+elf64_hppa_dynamic_symbol_p (h, info)
+ struct elf_link_hash_entry *h;
+ struct bfd_link_info *info;
+{
+ if (h == NULL)
+ return false;
+
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ if (h->dynindx == -1)
+ return false;
+
+ if (h->root.type == bfd_link_hash_undefweak
+ || h->root.type == bfd_link_hash_defweak)
+ return true;
+
+ if (h->root.root.string[0] == '$' && h->root.root.string[1] == '$')
+ return false;
+
+ if ((info->shared && !info->symbolic)
+ || ((h->elf_link_hash_flags
+ & (ELF_LINK_HASH_DEF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR))
+ == (ELF_LINK_HASH_DEF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR)))
+ return true;
+
+ return false;
+}
+
+/* Mark all funtions exported by this file so that we can later allocate
+ entries in .opd for them. */
+
+static boolean
+elf64_hppa_mark_exported_functions (h, data)
+ struct elf_link_hash_entry *h;
+ PTR data;
+{
+ struct bfd_link_info *info = (struct bfd_link_info *)data;
+ struct elf64_hppa_link_hash_table *hppa_info;
+
+ hppa_info = elf64_hppa_hash_table (info);
+
+ if (h
+ && (h->root.type == bfd_link_hash_defined
+ || h->root.type == bfd_link_hash_defweak)
+ && h->root.u.def.section->output_section != NULL
+ && h->type == STT_FUNC)
+ {
+ struct elf64_hppa_dyn_hash_entry *dyn_h;
+
+ /* Add this symbol to the PA64 linker hash table. */
+ dyn_h = elf64_hppa_dyn_hash_lookup (&hppa_info->dyn_hash_table,
+ h->root.root.string, true, true);
+ BFD_ASSERT (dyn_h);
+ dyn_h->h = h;
+
+ if (! hppa_info->opd_sec
+ && ! get_opd (hppa_info->root.dynobj, info, hppa_info))
+ return false;
+
+ dyn_h->want_opd = 1;
+ h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT;
+ }
+
+ return true;
+}
+
+/* Allocate space for a DLT entry. */
+
+static boolean
+allocate_global_data_dlt (dyn_h, data)
+ struct elf64_hppa_dyn_hash_entry *dyn_h;
+ PTR data;
+{
+ struct elf64_hppa_allocate_data *x = (struct elf64_hppa_allocate_data *)data;
+
+ if (dyn_h->want_dlt)
+ {
+ struct elf_link_hash_entry *h = dyn_h->h;
+
+ if (x->info->shared)
+ {
+ /* Possibly add the symbol to the local dynamic symbol
+ table since we might need to create a dynamic relocation
+ against it. */
+ if (! h
+ || (h && h->dynindx == -1))
+ {
+ bfd *owner;
+ owner = (h ? h->root.u.def.section->owner : dyn_h->owner);
+
+ if (!_bfd_elf64_link_record_local_dynamic_symbol
+ (x->info, owner, dyn_h->sym_indx))
+ return false;
+ }
+ }
+
+ dyn_h->dlt_offset = x->ofs;
+ x->ofs += DLT_ENTRY_SIZE;
+ }
+ return true;
+}
+
+/* Allocate space for a DLT.PLT entry. */
+
+static boolean
+allocate_global_data_plt (dyn_h, data)
+ struct elf64_hppa_dyn_hash_entry *dyn_h;
+ PTR data;
+{
+ struct elf64_hppa_allocate_data *x = (struct elf64_hppa_allocate_data *)data;
+
+ if (dyn_h->want_plt
+ && elf64_hppa_dynamic_symbol_p (dyn_h->h, x->info)
+ && !((dyn_h->h->root.type == bfd_link_hash_defined
+ || dyn_h->h->root.type == bfd_link_hash_defweak)
+ && dyn_h->h->root.u.def.section->output_section != NULL))
+ {
+ dyn_h->plt_offset = x->ofs;
+ x->ofs += PLT_ENTRY_SIZE;
+ if (dyn_h->plt_offset < 0x2000)
+ elf64_hppa_hash_table (x->info)->gp_offset = dyn_h->plt_offset;
+ }
+ else
+ dyn_h->want_plt = 0;
+
+ return true;
+}
+
+/* Allocate space for a STUB entry. */
+
+static boolean
+allocate_global_data_stub (dyn_h, data)
+ struct elf64_hppa_dyn_hash_entry *dyn_h;
+ PTR data;
+{
+ struct elf64_hppa_allocate_data *x = (struct elf64_hppa_allocate_data *)data;
+
+ if (dyn_h->want_stub
+ && elf64_hppa_dynamic_symbol_p (dyn_h->h, x->info)
+ && !((dyn_h->h->root.type == bfd_link_hash_defined
+ || dyn_h->h->root.type == bfd_link_hash_defweak)
+ && dyn_h->h->root.u.def.section->output_section != NULL))
+ {
+ dyn_h->stub_offset = x->ofs;
+ x->ofs += sizeof (plt_stub);
+ }
+ else
+ dyn_h->want_stub = 0;
+ return true;
+}
+
+/* Allocate space for a FPTR entry. */
+
+static boolean
+allocate_global_data_opd (dyn_h, data)
+ struct elf64_hppa_dyn_hash_entry *dyn_h;
+ PTR data;
+{
+ struct elf64_hppa_allocate_data *x = (struct elf64_hppa_allocate_data *)data;
+
+ if (dyn_h->want_opd)
+ {
+ struct elf_link_hash_entry *h = dyn_h->h;
+
+ if (h)
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ /* We never need an opd entry for a symbol which is not
+ defined by this output file. */
+ if (h && h->root.type == bfd_link_hash_undefined)
+ dyn_h->want_opd = 0;
+
+ /* If we are creating a shared library, took the address of a local
+ function or might export this function from this object file, then
+ we have to create an opd descriptor. */
+ else if (x->info->shared
+ || h == NULL
+ || h->dynindx == -1
+ || ((h->root.type == bfd_link_hash_defined
+ || h->root.type == bfd_link_hash_defweak)
+ && h->root.u.def.section->output_section != NULL))
+ {
+ /* If we are creating a shared library, then we will have to
+ create a runtime relocation for the symbol to properly
+ initialize the .opd entry. Make sure the symbol gets
+ added to the dynamic symbol table. */
+ if (x->info->shared
+ && (h == NULL || (h->dynindx == -1)))
+ {
+ bfd *owner;
+ owner = (h ? h->root.u.def.section->owner : dyn_h->owner);
+
+ if (!_bfd_elf64_link_record_local_dynamic_symbol
+ (x->info, owner, dyn_h->sym_indx))
+ return false;
+ }
+
+ /* This may not be necessary or desirable anymore now that
+ we have some support for dealing with section symbols
+ in dynamic relocs. But name munging does make the result
+ much easier to debug. ie, the EPLT reloc will reference
+ a symbol like .foobar, instead of .text + offset. */
+ if (x->info->shared && h)
+ {
+ char *new_name;
+ struct elf_link_hash_entry *nh;
+
+ new_name = alloca (strlen (h->root.root.string) + 2);
+ new_name[0] = '.';
+ strcpy (new_name + 1, h->root.root.string);
+
+ nh = elf_link_hash_lookup (elf_hash_table (x->info),
+ new_name, true, true, true);
+
+ nh->root.type = h->root.type;
+ nh->root.u.def.value = h->root.u.def.value;
+ nh->root.u.def.section = h->root.u.def.section;
+
+ if (! bfd_elf64_link_record_dynamic_symbol (x->info, nh))
+ return false;
+
+ }
+ dyn_h->opd_offset = x->ofs;
+ x->ofs += OPD_ENTRY_SIZE;
+ }
+
+ /* Otherwise we do not need an opd entry. */
+ else
+ dyn_h->want_opd = 0;
+ }
+ return true;
+}
+
+/* HP requires the EI_OSABI field to be filled in. The assignment to
+ EI_ABIVERSION may not be strictly necessary. */
+
+static void
+elf64_hppa_post_process_headers (abfd, link_info)
+ bfd * abfd;
+ struct bfd_link_info * link_info ATTRIBUTE_UNUSED;
+{
+ Elf_Internal_Ehdr * i_ehdrp;
+
+ i_ehdrp = elf_elfheader (abfd);
+
+ i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_HPUX;
+ i_ehdrp->e_ident[EI_ABIVERSION] = 1;
+}
+
+/* Create function descriptor section (.opd). This section is called .opd
+ because it contains "official prodecure descriptors". The "official"
+ refers to the fact that these descriptors are used when taking the address
+ of a procedure, thus ensuring a unique address for each procedure. */
+
+static boolean
+get_opd (abfd, info, hppa_info)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ struct elf64_hppa_link_hash_table *hppa_info;
+{
+ asection *opd;
+ bfd *dynobj;
+
+ opd = hppa_info->opd_sec;
+ if (!opd)
+ {
+ dynobj = hppa_info->root.dynobj;
+ if (!dynobj)
+ hppa_info->root.dynobj = dynobj = abfd;
+
+ opd = bfd_make_section (dynobj, ".opd");
+ if (!opd
+ || !bfd_set_section_flags (dynobj, opd,
+ (SEC_ALLOC
+ | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED))
+ || !bfd_set_section_alignment (abfd, opd, 3))
+ {
+ BFD_ASSERT (0);
+ return false;
+ }
+
+ hppa_info->opd_sec = opd;
+ }
+
+ return true;
+}
+
+/* Create the PLT section. */
+
+static boolean
+get_plt (abfd, info, hppa_info)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ struct elf64_hppa_link_hash_table *hppa_info;
+{
+ asection *plt;
+ bfd *dynobj;
+
+ plt = hppa_info->plt_sec;
+ if (!plt)
+ {
+ dynobj = hppa_info->root.dynobj;
+ if (!dynobj)
+ hppa_info->root.dynobj = dynobj = abfd;
+
+ plt = bfd_make_section (dynobj, ".plt");
+ if (!plt
+ || !bfd_set_section_flags (dynobj, plt,
+ (SEC_ALLOC
+ | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED))
+ || !bfd_set_section_alignment (abfd, plt, 3))
+ {
+ BFD_ASSERT (0);
+ return false;
+ }
+
+ hppa_info->plt_sec = plt;
+ }
+
+ return true;
+}
+
+/* Create the DLT section. */
+
+static boolean
+get_dlt (abfd, info, hppa_info)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ struct elf64_hppa_link_hash_table *hppa_info;
+{
+ asection *dlt;
+ bfd *dynobj;
+
+ dlt = hppa_info->dlt_sec;
+ if (!dlt)
+ {
+ dynobj = hppa_info->root.dynobj;
+ if (!dynobj)
+ hppa_info->root.dynobj = dynobj = abfd;
+
+ dlt = bfd_make_section (dynobj, ".dlt");
+ if (!dlt
+ || !bfd_set_section_flags (dynobj, dlt,
+ (SEC_ALLOC
+ | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED))
+ || !bfd_set_section_alignment (abfd, dlt, 3))
+ {
+ BFD_ASSERT (0);
+ return false;
+ }
+
+ hppa_info->dlt_sec = dlt;
+ }
+
+ return true;
+}
+
+/* Create the stubs section. */
+
+static boolean
+get_stub (abfd, info, hppa_info)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ struct elf64_hppa_link_hash_table *hppa_info;
+{
+ asection *stub;
+ bfd *dynobj;
+
+ stub = hppa_info->stub_sec;
+ if (!stub)
+ {
+ dynobj = hppa_info->root.dynobj;
+ if (!dynobj)
+ hppa_info->root.dynobj = dynobj = abfd;
+
+ stub = bfd_make_section (dynobj, ".stub");
+ if (!stub
+ || !bfd_set_section_flags (dynobj, stub,
+ (SEC_ALLOC
+ | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_READONLY
+ | SEC_LINKER_CREATED))
+ || !bfd_set_section_alignment (abfd, stub, 3))
+ {
+ BFD_ASSERT (0);
+ return false;
+ }
+
+ hppa_info->stub_sec = stub;
+ }
+
+ return true;
+}
+
+/* Create sections necessary for dynamic linking. This is only a rough
+ cut and will likely change as we learn more about the somewhat
+ unusual dynamic linking scheme HP uses.
+
+ .stub:
+ Contains code to implement cross-space calls. The first time one
+ of the stubs is used it will call into the dynamic linker, later
+ calls will go straight to the target.
+
+ The only stub we support right now looks like
+
+ ldd OFFSET(%dp),%r1
+ bve %r0(%r1)
+ ldd OFFSET+8(%dp),%dp
+
+ Other stubs may be needed in the future. We may want the remove
+ the break/nop instruction. It is only used right now to keep the
+ offset of a .plt entry and a .stub entry in sync.
+
+ .dlt:
+ This is what most people call the .got. HP used a different name.
+ Losers.
+
+ .rela.dlt:
+ Relocations for the DLT.
+
+ .plt:
+ Function pointers as address,gp pairs.
+
+ .rela.plt:
+ Should contain dynamic IPLT (and EPLT?) relocations.
+
+ .opd:
+ FPTRS
+
+ .rela.opd:
+ EPLT relocations for symbols exported from shared libraries. */
+
+static boolean
+elf64_hppa_create_dynamic_sections (abfd, info)
+ bfd *abfd;
+ struct bfd_link_info *info;
+{
+ asection *s;
+
+ if (! get_stub (abfd, info, elf64_hppa_hash_table (info)))
+ return false;
+
+ if (! get_dlt (abfd, info, elf64_hppa_hash_table (info)))
+ return false;
+
+ if (! get_plt (abfd, info, elf64_hppa_hash_table (info)))
+ return false;
+
+ if (! get_opd (abfd, info, elf64_hppa_hash_table (info)))
+ return false;
+
+ s = bfd_make_section(abfd, ".rela.dlt");
+ if (s == NULL
+ || !bfd_set_section_flags (abfd, s, (SEC_ALLOC | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_READONLY
+ | SEC_LINKER_CREATED))
+ || !bfd_set_section_alignment (abfd, s, 3))
+ return false;
+ elf64_hppa_hash_table (info)->dlt_rel_sec = s;
+
+ s = bfd_make_section(abfd, ".rela.plt");
+ if (s == NULL
+ || !bfd_set_section_flags (abfd, s, (SEC_ALLOC | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_READONLY
+ | SEC_LINKER_CREATED))
+ || !bfd_set_section_alignment (abfd, s, 3))
+ return false;
+ elf64_hppa_hash_table (info)->plt_rel_sec = s;
+
+ s = bfd_make_section(abfd, ".rela.data");
+ if (s == NULL
+ || !bfd_set_section_flags (abfd, s, (SEC_ALLOC | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_READONLY
+ | SEC_LINKER_CREATED))
+ || !bfd_set_section_alignment (abfd, s, 3))
+ return false;
+ elf64_hppa_hash_table (info)->other_rel_sec = s;
+
+ s = bfd_make_section(abfd, ".rela.opd");
+ if (s == NULL
+ || !bfd_set_section_flags (abfd, s, (SEC_ALLOC | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_READONLY
+ | SEC_LINKER_CREATED))
+ || !bfd_set_section_alignment (abfd, s, 3))
+ return false;
+ elf64_hppa_hash_table (info)->opd_rel_sec = s;
+
+ return true;
+}
+
+/* Allocate dynamic relocations for those symbols that turned out
+ to be dynamic. */
+
+static boolean
+allocate_dynrel_entries (dyn_h, data)
+ struct elf64_hppa_dyn_hash_entry *dyn_h;
+ PTR data;
+{
+ struct elf64_hppa_allocate_data *x = (struct elf64_hppa_allocate_data *)data;
+ struct elf64_hppa_link_hash_table *hppa_info;
+ struct elf64_hppa_dyn_reloc_entry *rent;
+ boolean dynamic_symbol, shared;
+
+ hppa_info = elf64_hppa_hash_table (x->info);
+ dynamic_symbol = elf64_hppa_dynamic_symbol_p (dyn_h->h, x->info);
+ shared = x->info->shared;
+
+ /* We may need to allocate relocations for a non-dynamic symbol
+ when creating a shared library. */
+ if (!dynamic_symbol && !shared)
+ return true;
+
+ /* Take care of the normal data relocations. */
+
+ for (rent = dyn_h->reloc_entries; rent; rent = rent->next)
+ {
+ switch (rent->type)
+ {
+ case R_PARISC_FPTR64:
+ /* Allocate one iff we are not building a shared library and
+ !want_opd, which by this point will be true only if we're
+ actually allocating one statically in the main executable. */
+ if (!x->info->shared && dyn_h->want_opd)
+ continue;
+ break;
+ }
+ hppa_info->other_rel_sec->_raw_size += sizeof (Elf64_External_Rela);
+
+ /* Make sure this symbol gets into the dynamic symbol table if it is
+ not already recorded. ?!? This should not be in the loop since
+ the symbol need only be added once. */
+ if (dyn_h->h == 0 || dyn_h->h->dynindx == -1)
+ if (!_bfd_elf64_link_record_local_dynamic_symbol
+ (x->info, rent->sec->owner, dyn_h->sym_indx))
+ return false;
+ }
+
+ /* Take care of the GOT and PLT relocations. */
+
+ if ((dynamic_symbol || shared) && dyn_h->want_dlt)
+ hppa_info->dlt_rel_sec->_raw_size += sizeof (Elf64_External_Rela);
+
+ /* If we are building a shared library, then every symbol that has an
+ opd entry will need an EPLT relocation to relocate the symbol's address
+ and __gp value based on the runtime load address. */
+ if (shared && dyn_h->want_opd)
+ hppa_info->opd_rel_sec->_raw_size += sizeof (Elf64_External_Rela);
+
+ if (dyn_h->want_plt && dynamic_symbol)
+ {
+ bfd_size_type t = 0;
+
+ /* Dynamic symbols get one IPLT relocation. Local symbols in
+ shared libraries get two REL relocations. Local symbols in
+ main applications get nothing. */
+ if (dynamic_symbol)
+ t = sizeof (Elf64_External_Rela);
+ else if (shared)
+ t = 2 * sizeof (Elf64_External_Rela);
+
+ hppa_info->plt_rel_sec->_raw_size += t;
+ }
+
+ return true;
+}
+
+/* Adjust a symbol defined by a dynamic object and referenced by a
+ regular object. */
+
+static boolean
+elf64_hppa_adjust_dynamic_symbol (info, h)
+ struct bfd_link_info *info;
+ struct elf_link_hash_entry *h;
+{
+ /* ??? Undefined symbols with PLT entries should be re-defined
+ to be the PLT entry. */
+
+ /* If this is a weak symbol, and there is a real definition, the
+ processor independent code will have arranged for us to see the
+ real definition first, and we can just use the same value. */
+ if (h->weakdef != NULL)
+ {
+ BFD_ASSERT (h->weakdef->root.type == bfd_link_hash_defined
+ || h->weakdef->root.type == bfd_link_hash_defweak);
+ h->root.u.def.section = h->weakdef->root.u.def.section;
+ h->root.u.def.value = h->weakdef->root.u.def.value;
+ return true;
+ }
+
+ /* If this is a reference to a symbol defined by a dynamic object which
+ is not a function, we might allocate the symbol in our .dynbss section
+ and allocate a COPY dynamic relocation.
+
+ But PA64 code is canonically PIC, so as a rule we can avoid this sort
+ of hackery. */
+
+ return true;
+}
+
+/* Set the final sizes of the dynamic sections and allocate memory for
+ the contents of our special sections. */
+
+static boolean
+elf64_hppa_size_dynamic_sections (output_bfd, info)
+ bfd *output_bfd;
+ struct bfd_link_info *info;
+{
+ bfd *dynobj;
+ asection *s;
+ boolean plt;
+ boolean relocs;
+ boolean reltext;
+ boolean stubs;
+ struct elf64_hppa_allocate_data data;
+ struct elf64_hppa_link_hash_table *hppa_info;
+
+ hppa_info = elf64_hppa_hash_table (info);
+
+ dynobj = elf_hash_table (info)->dynobj;
+ BFD_ASSERT (dynobj != NULL);
+
+ if (elf_hash_table (info)->dynamic_sections_created)
+ {
+ /* Set the contents of the .interp section to the interpreter. */
+ if (! info->shared)
+ {
+ s = bfd_get_section_by_name (dynobj, ".interp");
+ BFD_ASSERT (s != NULL);
+ s->_raw_size = sizeof ELF_DYNAMIC_INTERPRETER;
+ s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+ }
+ }
+ else
+ {
+ /* We may have created entries in the .rela.got section.
+ However, if we are not creating the dynamic sections, we will
+ not actually use these entries. Reset the size of .rela.dlt,
+ which will cause it to get stripped from the output file
+ below. */
+ s = bfd_get_section_by_name (dynobj, ".rela.dlt");
+ if (s != NULL)
+ s->_raw_size = 0;
+ }
+
+ /* Allocate the GOT entries. */
+
+ data.info = info;
+ if (elf64_hppa_hash_table (info)->dlt_sec)
+ {
+ data.ofs = 0x0;
+ elf64_hppa_dyn_hash_traverse (&hppa_info->dyn_hash_table,
+ allocate_global_data_dlt, &data);
+ hppa_info->dlt_sec->_raw_size = data.ofs;
+
+ data.ofs = 0x0;
+ elf64_hppa_dyn_hash_traverse (&hppa_info->dyn_hash_table,
+ allocate_global_data_plt, &data);
+ hppa_info->plt_sec->_raw_size = data.ofs;
+
+ data.ofs = 0x0;
+ elf64_hppa_dyn_hash_traverse (&hppa_info->dyn_hash_table,
+ allocate_global_data_stub, &data);
+ hppa_info->stub_sec->_raw_size = data.ofs;
+ }
+
+ /* Mark each function this program exports so that we will allocate
+ space in the .opd section for each function's FPTR.
+
+ We have to traverse the main linker hash table since we have to
+ find functions which may not have been mentioned in any relocs. */
+ elf_link_hash_traverse (elf_hash_table (info),
+ elf64_hppa_mark_exported_functions,
+ info);
+
+ /* Allocate space for entries in the .opd section. */
+ if (elf64_hppa_hash_table (info)->opd_sec)
+ {
+ data.ofs = 0;
+ elf64_hppa_dyn_hash_traverse (&hppa_info->dyn_hash_table,
+ allocate_global_data_opd, &data);
+ hppa_info->opd_sec->_raw_size = data.ofs;
+ }
+
+ /* Now allocate space for dynamic relocations, if necessary. */
+ if (hppa_info->root.dynamic_sections_created)
+ elf64_hppa_dyn_hash_traverse (&hppa_info->dyn_hash_table,
+ allocate_dynrel_entries, &data);
+
+ /* The sizes of all the sections are set. Allocate memory for them. */
+ plt = false;
+ relocs = false;
+ reltext = false;
+ for (s = dynobj->sections; s != NULL; s = s->next)
+ {
+ const char *name;
+ boolean strip;
+
+ if ((s->flags & SEC_LINKER_CREATED) == 0)
+ continue;
+
+ /* It's OK to base decisions on the section name, because none
+ of the dynobj section names depend upon the input files. */
+ name = bfd_get_section_name (dynobj, s);
+
+ strip = 0;
+
+ if (strcmp (name, ".plt") == 0)
+ {
+ if (s->_raw_size == 0)
+ {
+ /* Strip this section if we don't need it; see the
+ comment below. */
+ strip = true;
+ }
+ else
+ {
+ /* Remember whether there is a PLT. */
+ plt = true;
+ }
+ }
+ else if (strcmp (name, ".dlt") == 0)
+ {
+ if (s->_raw_size == 0)
+ {
+ /* Strip this section if we don't need it; see the
+ comment below. */
+ strip = true;
+ }
+ }
+ else if (strcmp (name, ".opd") == 0)
+ {
+ if (s->_raw_size == 0)
+ {
+ /* Strip this section if we don't need it; see the
+ comment below. */
+ strip = true;
+ }
+ }
+ else if (strncmp (name, ".rela", 4) == 0)
+ {
+ if (s->_raw_size == 0)
+ {
+ /* If we don't need this section, strip it from the
+ output file. This is mostly to handle .rela.bss and
+ .rela.plt. We must create both sections in
+ create_dynamic_sections, because they must be created
+ before the linker maps input sections to output
+ sections. The linker does that before
+ adjust_dynamic_symbol is called, and it is that
+ function which decides whether anything needs to go
+ into these sections. */
+ strip = true;
+ }
+ else
+ {
+ asection *target;
+
+ /* Remember whether there are any reloc sections other
+ than .rela.plt. */
+ if (strcmp (name, ".rela.plt") != 0)
+ {
+ const char *outname;
+
+ relocs = true;
+
+ /* If this relocation section applies to a read only
+ section, then we probably need a DT_TEXTREL
+ entry. The entries in the .rela.plt section
+ really apply to the .got section, which we
+ created ourselves and so know is not readonly. */
+ outname = bfd_get_section_name (output_bfd,
+ s->output_section);
+ target = bfd_get_section_by_name (output_bfd, outname + 4);
+ if (target != NULL
+ && (target->flags & SEC_READONLY) != 0
+ && (target->flags & SEC_ALLOC) != 0)
+ reltext = true;
+ }
+
+ /* We use the reloc_count field as a counter if we need
+ to copy relocs into the output file. */
+ s->reloc_count = 0;
+ }
+ }
+ else if (strncmp (name, ".dlt", 4) != 0
+ && strcmp (name, ".stub") != 0
+ && strcmp (name, ".got") != 0)
+ {
+ /* It's not one of our sections, so don't allocate space. */
+ continue;
+ }
+
+ if (strip)
+ {
+ _bfd_strip_section_from_output (info, s);
+ continue;
+ }
+
+ /* Allocate memory for the section contents if it has not
+ been allocated already. */
+ if (s->contents == NULL)
+ {
+ s->contents = (bfd_byte *) bfd_alloc (dynobj, s->_raw_size);
+ if (s->contents == NULL && s->_raw_size != 0)
+ return false;
+ }
+ }
+
+ if (elf_hash_table (info)->dynamic_sections_created)
+ {
+ /* Always create a DT_PLTGOT. It actually has nothing to do with
+ the PLT, it is how we communicate the __gp value of a load
+ module to the dynamic linker. */
+ if (! bfd_elf64_add_dynamic_entry (info, DT_HP_DLD_FLAGS, 0)
+ || ! bfd_elf64_add_dynamic_entry (info, DT_PLTGOT, 0))
+ return false;
+
+ /* Add some entries to the .dynamic section. We fill in the
+ values later, in elf64_hppa_finish_dynamic_sections, but we
+ must add the entries now so that we get the correct size for
+ the .dynamic section. The DT_DEBUG entry is filled in by the
+ dynamic linker and used by the debugger. */
+ if (! info->shared)
+ {
+ if (! bfd_elf64_add_dynamic_entry (info, DT_DEBUG, 0)
+ || ! bfd_elf64_add_dynamic_entry (info, DT_HP_DLD_HOOK, 0)
+ || ! bfd_elf64_add_dynamic_entry (info, DT_HP_LOAD_MAP, 0))
+ return false;
+ }
+
+ if (plt)
+ {
+ if (! bfd_elf64_add_dynamic_entry (info, DT_PLTRELSZ, 0)
+ || ! bfd_elf64_add_dynamic_entry (info, DT_PLTREL, DT_RELA)
+ || ! bfd_elf64_add_dynamic_entry (info, DT_JMPREL, 0))
+ return false;
+ }
+
+ if (relocs)
+ {
+ if (! bfd_elf64_add_dynamic_entry (info, DT_RELA, 0)
+ || ! bfd_elf64_add_dynamic_entry (info, DT_RELASZ, 0)
+ || ! bfd_elf64_add_dynamic_entry (info, DT_RELAENT,
+ sizeof (Elf64_External_Rela)))
+ return false;
+ }
+
+ if (reltext)
+ {
+ if (! bfd_elf64_add_dynamic_entry (info, DT_TEXTREL, 0))
+ return false;
+ }
+ }
+
+ return true;
+}
+
+/* Called after we have output the symbol into the dynamic symbol
+ table, but before we output the symbol into the normal symbol
+ table.
+
+ For some symbols we had to change their address when outputting
+ the dynamic symbol table. We undo that change here so that
+ the symbols have their expected value in the normal symbol
+ table. Ick. */
+
+static boolean
+elf64_hppa_link_output_symbol_hook (abfd, info, name, sym, input_sec)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ const char *name;
+ Elf_Internal_Sym *sym;
+ asection *input_sec;
+{
+ struct elf64_hppa_link_hash_table *hppa_info;
+ struct elf64_hppa_dyn_hash_entry *dyn_h;
+
+ /* We may be called with the file symbol or section symbols.
+ They never need munging, so it is safe to ignore them. */
+ if (!name)
+ return true;
+
+ /* Get the PA dyn_symbol (if any) associated with NAME. */
+ hppa_info = elf64_hppa_hash_table (info);
+ dyn_h = elf64_hppa_dyn_hash_lookup (&hppa_info->dyn_hash_table,
+ name, false, false);
+
+ /* Function symbols for which we created .opd entries were munged
+ by finish_dynamic_symbol and have to be un-munged here. */
+ if (dyn_h && dyn_h->want_opd)
+ {
+ /* Restore the saved value and section index. */
+ sym->st_value = dyn_h->st_value;
+ sym->st_shndx = dyn_h->st_shndx;
+ }
+
+ return true;
+}
+
+/* Finish up dynamic symbol handling. We set the contents of various
+ dynamic sections here. */
+
+static boolean
+elf64_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;
+{
+ asection *stub, *splt, *sdlt, *sopd, *spltrel, *sdltrel;
+ struct elf64_hppa_link_hash_table *hppa_info;
+ struct elf64_hppa_dyn_hash_entry *dyn_h;
+
+ hppa_info = elf64_hppa_hash_table (info);
+ dyn_h = elf64_hppa_dyn_hash_lookup (&hppa_info->dyn_hash_table,
+ h->root.root.string, false, false);
+
+ stub = hppa_info->stub_sec;
+ splt = hppa_info->plt_sec;
+ sdlt = hppa_info->dlt_sec;
+ sopd = hppa_info->opd_sec;
+ spltrel = hppa_info->plt_rel_sec;
+ sdltrel = hppa_info->dlt_rel_sec;
+
+ BFD_ASSERT (stub != NULL && splt != NULL
+ && sopd != NULL && sdlt != NULL)
+
+ /* Incredible. It is actually necessary to NOT use the symbol's real
+ value when building the dynamic symbol table for a shared library.
+ At least for symbols that refer to functions.
+
+ We will store a new value and section index into the symbol long
+ enough to output it into the dynamic symbol table, then we restore
+ the original values (in elf64_hppa_link_output_symbol_hook). */
+ if (dyn_h && dyn_h->want_opd)
+ {
+ /* Save away the original value and section index so that we
+ can restore them later. */
+ dyn_h->st_value = sym->st_value;
+ dyn_h->st_shndx = sym->st_shndx;
+
+ /* For the dynamic symbol table entry, we want the value to be
+ address of this symbol's entry within the .opd section. */
+ sym->st_value = (dyn_h->opd_offset
+ + sopd->output_offset
+ + sopd->output_section->vma);
+ sym->st_shndx = _bfd_elf_section_from_bfd_section (output_bfd,
+ sopd->output_section);
+ }
+
+ /* Initialize a .plt entry if requested. */
+ if (dyn_h && dyn_h->want_plt
+ && elf64_hppa_dynamic_symbol_p (dyn_h->h, info))
+ {
+ bfd_vma value;
+ Elf_Internal_Rela rel;
+
+ /* We do not actually care about the value in the PLT entry
+ if we are creating a shared library and the symbol is
+ still undefined, we create a dynamic relocation to fill
+ in the correct value. */
+ if (info->shared && h->root.type == bfd_link_hash_undefined)
+ value = 0;
+ else
+ value = (h->root.u.def.value + h->root.u.def.section->vma);
+
+ /* Fill in the entry in the procedure linkage table.
+
+ The format of a plt entry is
+ <funcaddr> <__gp>.
+
+ plt_offset is the offset within the PLT section at which to
+ install the PLT entry.
+
+ We are modifying the in-memory PLT contents here, so we do not add
+ in the output_offset of the PLT section. */
+
+ bfd_put_64 (splt->owner, value, splt->contents + dyn_h->plt_offset);
+ value = _bfd_get_gp_value (splt->output_section->owner);
+ bfd_put_64 (splt->owner, value, splt->contents + dyn_h->plt_offset + 0x8);
+
+ /* Create a dynamic IPLT relocation for this entry.
+
+ We are creating a relocation in the output file's PLT section,
+ which is included within the DLT secton. So we do need to include
+ the PLT's output_offset in the computation of the relocation's
+ address. */
+ rel.r_offset = (dyn_h->plt_offset + splt->output_offset
+ + splt->output_section->vma);
+ rel.r_info = ELF64_R_INFO (h->dynindx, R_PARISC_IPLT);
+ rel.r_addend = 0;
+
+ bfd_elf64_swap_reloca_out (splt->output_section->owner, &rel,
+ (((Elf64_External_Rela *)
+ spltrel->contents)
+ + spltrel->reloc_count));
+ spltrel->reloc_count++;
+ }
+
+ /* Initialize an external call stub entry if requested. */
+ if (dyn_h && dyn_h->want_stub
+ && elf64_hppa_dynamic_symbol_p (dyn_h->h, info))
+ {
+ bfd_vma value;
+ int insn;
+
+ /* Install the generic stub template.
+
+ We are modifying the contents of the stub section, so we do not
+ need to include the stub section's output_offset here. */
+ memcpy (stub->contents + dyn_h->stub_offset, plt_stub, sizeof (plt_stub));
+
+ /* Fix up the first ldd instruction.
+
+ We are modifying the contents of the STUB section in memory,
+ so we do not need to include its output offset in this computation.
+
+ Note the plt_offset value is the value of the PLT entry relative to
+ the start of the PLT section. These instructions will reference
+ data relative to the value of __gp, which may not necessarily have
+ the same address as the start of the PLT section.
+
+ gp_offset contains the offset of __gp within the PLT section. */
+ value = dyn_h->plt_offset - hppa_info->gp_offset;
+
+ insn = bfd_get_32 (stub->owner, stub->contents + dyn_h->stub_offset);
+ insn &= 0xffffc00e;
+ insn |= ((value & 0x2000) >> 13);
+ value &= 0x1ff8;
+ value <<= 1;
+ bfd_put_32 (stub->owner, (insn | value),
+ stub->contents + dyn_h->stub_offset);
+
+ /* Fix up the second ldd instruction. */
+ value = dyn_h->plt_offset - hppa_info->gp_offset + 8;
+
+ insn = bfd_get_32 (stub->owner, stub->contents + dyn_h->stub_offset + 8);
+ insn &= 0xffffc00e;
+ insn |= ((value & 0x2000) >> 13);
+ value &= 0x1ff8;
+ value <<= 1;
+ bfd_put_32 (stub->owner, (insn | value),
+ stub->contents + dyn_h->stub_offset + 8);
+ }
+
+ /* Millicode symbols should not be put in the dynamic
+ symbol table under any circumstances. */
+ if (ELF_ST_TYPE (sym->st_info) == STT_PARISC_MILLI)
+ h->dynindx = -1;
+
+ return true;
+}
+
+/* The .opd section contains FPTRs for each function this file
+ exports. Initialize the FPTR entries. */
+
+static boolean
+elf64_hppa_finalize_opd (dyn_h, data)
+ struct elf64_hppa_dyn_hash_entry *dyn_h;
+ PTR data;
+{
+ struct bfd_link_info *info = (struct bfd_link_info *)data;
+ struct elf64_hppa_link_hash_table *hppa_info;
+ struct elf_link_hash_entry *h = dyn_h->h;
+ asection *sopd;
+ asection *sopdrel;
+
+ hppa_info = elf64_hppa_hash_table (info);
+ sopd = hppa_info->opd_sec;
+ sopdrel = hppa_info->opd_rel_sec;
+
+ if (h && dyn_h && dyn_h->want_opd)
+ {
+ bfd_vma value;
+
+ /* The first two words of an .opd entry are zero.
+
+ We are modifying the contents of the OPD section in memory, so we
+ do not need to include its output offset in this computation. */
+ memset (sopd->contents + dyn_h->opd_offset, 0, 16);
+
+ value = (h->root.u.def.value
+ + h->root.u.def.section->output_section->vma
+ + h->root.u.def.section->output_offset);
+
+ /* The next word is the address of the function. */
+ bfd_put_64 (sopd->owner, value, sopd->contents + dyn_h->opd_offset + 16);
+
+ /* The last word is our local __gp value. */
+ value = _bfd_get_gp_value (sopd->output_section->owner);
+ bfd_put_64 (sopd->owner, value, sopd->contents + dyn_h->opd_offset + 24);
+ }
+
+ /* If we are generating a shared library, we must generate EPLT relocations
+ for each entry in the .opd, even for static functions (they may have
+ had their address taken). */
+ if (info->shared && dyn_h && dyn_h->want_opd)
+ {
+ Elf64_Internal_Rela rel;
+ bfd_vma value;
+ int dynindx;
+
+ /* We may need to do a relocation against a local symbol, in
+ which case we have to look up it's dynamic symbol index off
+ the local symbol hash table. */
+ if (h && h->dynindx != -1)
+ dynindx = h->dynindx;
+ else
+ dynindx
+ = _bfd_elf_link_lookup_local_dynindx (info, dyn_h->owner,
+ dyn_h->sym_indx);
+
+ /* The offset of this relocation is the absolute address of the
+ .opd entry for this symbol. */
+ rel.r_offset = (dyn_h->opd_offset + sopd->output_offset
+ + sopd->output_section->vma);
+
+ /* If H is non-null, then we have an external symbol.
+
+ It is imperative that we use a different dynamic symbol for the
+ EPLT relocation if the symbol has global scope.
+
+ In the dynamic symbol table, the function symbol will have a value
+ which is address of the function's .opd entry.
+
+ Thus, we can not use that dynamic symbol for the EPLT relocation
+ (if we did, the data in the .opd would reference itself rather
+ than the actual address of the function). Instead we have to use
+ a new dynamic symbol which has the same value as the original global
+ function symbol.
+
+ We prefix the original symbol with a "." and use the new symbol in
+ the EPLT relocation. This new symbol has already been recorded in
+ the symbol table, we just have to look it up and use it.
+
+ We do not have such problems with static functions because we do
+ not make their addresses in the dynamic symbol table point to
+ the .opd entry. Ultimately this should be safe since a static
+ function can not be directly referenced outside of its shared
+ library.
+
+ We do have to play similar games for FPTR relocations in shared
+ libraries, including those for static symbols. See the FPTR
+ handling in elf64_hppa_finalize_dynreloc. */
+ if (h)
+ {
+ char *new_name;
+ struct elf_link_hash_entry *nh;
+
+ new_name = alloca (strlen (h->root.root.string) + 2);
+ new_name[0] = '.';
+ strcpy (new_name + 1, h->root.root.string);
+
+ nh = elf_link_hash_lookup (elf_hash_table (info),
+ new_name, false, false, false);
+
+ /* All we really want from the new symbol is its dynamic
+ symbol index. */
+ dynindx = nh->dynindx;
+ }
+
+ rel.r_addend = 0;
+ rel.r_info = ELF64_R_INFO (dynindx, R_PARISC_EPLT);
+
+ bfd_elf64_swap_reloca_out (sopd->output_section->owner, &rel,
+ (((Elf64_External_Rela *)
+ sopdrel->contents)
+ + sopdrel->reloc_count));
+ sopdrel->reloc_count++;
+ }
+ return true;
+}
+
+/* The .dlt section contains addresses for items referenced through the
+ dlt. Note that we can have a DLTIND relocation for a local symbol, thus
+ we can not depend on finish_dynamic_symbol to initialize the .dlt. */
+
+static boolean
+elf64_hppa_finalize_dlt (dyn_h, data)
+ struct elf64_hppa_dyn_hash_entry *dyn_h;
+ PTR data;
+{
+ struct bfd_link_info *info = (struct bfd_link_info *)data;
+ struct elf64_hppa_link_hash_table *hppa_info;
+ asection *sdlt, *sdltrel;
+ struct elf_link_hash_entry *h = dyn_h->h;
+
+ hppa_info = elf64_hppa_hash_table (info);
+
+ sdlt = hppa_info->dlt_sec;
+ sdltrel = hppa_info->dlt_rel_sec;
+
+ /* H/DYN_H may refer to a local variable and we know it's
+ address, so there is no need to create a relocation. Just install
+ the proper value into the DLT, note this shortcut can not be
+ skipped when building a shared library. */
+ if (! info->shared && h && dyn_h && dyn_h->want_dlt)
+ {
+ bfd_vma value;
+
+ /* If we had an LTOFF_FPTR style relocation we want the DLT entry
+ to point to the FPTR entry in the .opd section.
+
+ We include the OPD's output offset in this computation as
+ we are referring to an absolute address in the resulting
+ object file. */
+ if (dyn_h->want_opd)
+ {
+ value = (dyn_h->opd_offset
+ + hppa_info->opd_sec->output_offset
+ + hppa_info->opd_sec->output_section->vma);
+ }
+ else
+ {
+ value = (h->root.u.def.value
+ + h->root.u.def.section->output_offset);
+
+ if (h->root.u.def.section->output_section)
+ value += h->root.u.def.section->output_section->vma;
+ else
+ value += h->root.u.def.section->vma;
+ }
+
+ /* We do not need to include the output offset of the DLT section
+ here because we are modifying the in-memory contents. */
+ bfd_put_64 (sdlt->owner, value, sdlt->contents + dyn_h->dlt_offset);
+ }
+
+ /* Create a relocation for the DLT entry assocated with this symbol.
+ When building a shared library the symbol does not have to be dynamic. */
+ if (dyn_h->want_dlt
+ && (elf64_hppa_dynamic_symbol_p (dyn_h->h, info) || info->shared))
+ {
+ Elf64_Internal_Rela rel;
+ int dynindx;
+
+ /* We may need to do a relocation against a local symbol, in
+ which case we have to look up it's dynamic symbol index off
+ the local symbol hash table. */
+ if (h && h->dynindx != -1)
+ dynindx = h->dynindx;
+ else
+ dynindx
+ = _bfd_elf_link_lookup_local_dynindx (info, dyn_h->owner,
+ dyn_h->sym_indx);
+
+
+ /* Create a dynamic relocation for this entry. Do include the output
+ offset of the DLT entry since we need an absolute address in the
+ resulting object file. */
+ rel.r_offset = (dyn_h->dlt_offset + sdlt->output_offset
+ + sdlt->output_section->vma);
+ if (h && h->type == STT_FUNC)
+ rel.r_info = ELF64_R_INFO (dynindx, R_PARISC_FPTR64);
+ else
+ rel.r_info = ELF64_R_INFO (dynindx, R_PARISC_DIR64);
+ rel.r_addend = 0;
+
+ bfd_elf64_swap_reloca_out (sdlt->output_section->owner, &rel,
+ (((Elf64_External_Rela *)
+ sdltrel->contents)
+ + sdltrel->reloc_count));
+ sdltrel->reloc_count++;
+ }
+ return true;
+}
+
+/* Finalize the dynamic relocations. Specifically the FPTR relocations
+ for dynamic functions used to initialize static data. */
+
+static boolean
+elf64_hppa_finalize_dynreloc (dyn_h, data)
+ struct elf64_hppa_dyn_hash_entry *dyn_h;
+ PTR data;
+{
+ struct bfd_link_info *info = (struct bfd_link_info *)data;
+ struct elf64_hppa_link_hash_table *hppa_info;
+ struct elf_link_hash_entry *h;
+ int dynamic_symbol;
+
+ dynamic_symbol = elf64_hppa_dynamic_symbol_p (dyn_h->h, info);
+
+ if (!dynamic_symbol && !info->shared)
+ return true;
+
+ if (dyn_h->reloc_entries)
+ {
+ struct elf64_hppa_dyn_reloc_entry *rent;
+ int dynindx;
+
+ hppa_info = elf64_hppa_hash_table (info);
+ h = dyn_h->h;
+
+ /* We may need to do a relocation against a local symbol, in
+ which case we have to look up it's dynamic symbol index off
+ the local symbol hash table. */
+ if (h && h->dynindx != -1)
+ dynindx = h->dynindx;
+ else
+ dynindx
+ = _bfd_elf_link_lookup_local_dynindx (info, dyn_h->owner,
+ dyn_h->sym_indx);
+
+ for (rent = dyn_h->reloc_entries; rent; rent = rent->next)
+ {
+ Elf64_Internal_Rela rel;
+
+ switch (rent->type)
+ {
+ case R_PARISC_FPTR64:
+ /* Allocate one iff we are not building a shared library and
+ !want_opd, which by this point will be true only if we're
+ actually allocating one statically in the main executable. */
+ if (!info->shared && dyn_h->want_opd)
+ continue;
+ break;
+ }
+
+ /* Create a dynamic relocation for this entry.
+
+ We need the output offset for the reloc's section because
+ we are creating an absolute address in the resulting object
+ file. */
+ rel.r_offset = (rent->offset + rent->sec->output_offset
+ + rent->sec->output_section->vma);
+
+ /* An FPTR64 relocation implies that we took the address of
+ a function and that the function has an entry in the .opd
+ section. We want the FPTR64 relocation to reference the
+ entry in .opd.
+
+ We could munge the symbol value in the dynamic symbol table
+ (in fact we already do for functions with global scope) to point
+ to the .opd entry. Then we could use that dynamic symbol in
+ this relocation.
+
+ Or we could do something sensible, not munge the symbol's
+ address and instead just use a different symbol to reference
+ the .opd entry. At least that seems sensible until you
+ realize there's no local dynamic symbols we can use for that
+ purpose. Thus the hair in the check_relocs routine.
+
+ We use a section symbol recorded by check_relocs as the
+ base symbol for the relocation. The addend is the difference
+ between the section symbol and the address of the .opd entry. */
+ if (info->shared && rent->type == R_PARISC_FPTR64)
+ {
+ bfd_vma value, value2;
+ asymbol *sym;
+ int elf_index;
+
+ /* First compute the address of the opd entry for this symbol. */
+ value = (dyn_h->opd_offset
+ + hppa_info->opd_sec->output_section->vma
+ + hppa_info->opd_sec->output_offset);
+
+ /* Compute the value of the start of the section with
+ the relocation. */
+ value2 = (rent->sec->output_section->vma
+ + rent->sec->output_offset);
+
+ /* Compute the difference between the start of the section
+ with the relocation and the opd entry. */
+ value -= value2;
+
+ /* The result becomes the addend of the relocation. */
+ rel.r_addend = value;
+
+ /* The section symbol becomes the symbol for the dynamic
+ relocation. */
+ dynindx
+ = _bfd_elf_link_lookup_local_dynindx (info,
+ rent->sec->owner,
+ rent->sec_symndx);
+ }
+ else
+ rel.r_addend = rent->addend;
+
+ rel.r_info = ELF64_R_INFO (dynindx, rent->type);
+
+ bfd_elf64_swap_reloca_out (hppa_info->other_rel_sec->output_section->owner,
+ &rel,
+ (((Elf64_External_Rela *)
+ hppa_info->other_rel_sec->contents)
+ + hppa_info->other_rel_sec->reloc_count));
+ hppa_info->other_rel_sec->reloc_count++;
+ }
+ }
+
+ return true;
+}
+
+/* Finish up the dynamic sections. */
+
+static boolean
+elf64_hppa_finish_dynamic_sections (output_bfd, info)
+ bfd *output_bfd;
+ struct bfd_link_info *info;
+{
+ bfd *dynobj;
+ asection *sdyn;
+ struct elf64_hppa_link_hash_table *hppa_info;
+
+ hppa_info = elf64_hppa_hash_table (info);
+
+ /* Finalize the contents of the .opd section. */
+ elf64_hppa_dyn_hash_traverse (&hppa_info->dyn_hash_table,
+ elf64_hppa_finalize_opd,
+ info);
+
+ elf64_hppa_dyn_hash_traverse (&hppa_info->dyn_hash_table,
+ elf64_hppa_finalize_dynreloc,
+ info);
+
+ /* Finalize the contents of the .dlt section. */
+ dynobj = elf_hash_table (info)->dynobj;
+ /* Finalize the contents of the .dlt section. */
+ elf64_hppa_dyn_hash_traverse (&hppa_info->dyn_hash_table,
+ elf64_hppa_finalize_dlt,
+ info);
+
+
+ sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
+
+ if (elf_hash_table (info)->dynamic_sections_created)
+ {
+ Elf64_External_Dyn *dyncon, *dynconend;
+ struct elf_link_hash_entry *h;
+
+ BFD_ASSERT (sdyn != NULL);
+
+ dyncon = (Elf64_External_Dyn *) sdyn->contents;
+ dynconend = (Elf64_External_Dyn *) (sdyn->contents + sdyn->_raw_size);
+ for (; dyncon < dynconend; dyncon++)
+ {
+ Elf_Internal_Dyn dyn;
+ asection *s;
+
+ bfd_elf64_swap_dyn_in (dynobj, dyncon, &dyn);
+
+ switch (dyn.d_tag)
+ {
+ default:
+ break;
+
+ case DT_HP_LOAD_MAP:
+ /* Compute the absolute address of 16byte scratchpad area
+ for the dynamic linker.
+
+ By convention the linker script will allocate the scratchpad
+ area at the start of the .data section. So all we have to
+ to is find the start of the .data section. */
+ s = bfd_get_section_by_name (output_bfd, ".data");
+ dyn.d_un.d_ptr = s->vma;
+ bfd_elf64_swap_dyn_out (output_bfd, &dyn, dyncon);
+ break;
+
+ case DT_PLTGOT:
+ /* HP's use PLTGOT to set the GOT register. */
+ dyn.d_un.d_ptr = _bfd_get_gp_value (output_bfd);
+ bfd_elf64_swap_dyn_out (output_bfd, &dyn, dyncon);
+ break;
+
+ case DT_JMPREL:
+ s = hppa_info->plt_rel_sec;
+ dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
+ bfd_elf64_swap_dyn_out (output_bfd, &dyn, dyncon);
+ break;
+
+ case DT_PLTRELSZ:
+ s = hppa_info->plt_rel_sec;
+ dyn.d_un.d_val = s->_raw_size;
+ bfd_elf64_swap_dyn_out (output_bfd, &dyn, dyncon);
+ break;
+
+ case DT_RELA:
+ s = hppa_info->other_rel_sec;
+ if (! s)
+ s = hppa_info->dlt_rel_sec;
+ dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
+ bfd_elf64_swap_dyn_out (output_bfd, &dyn, dyncon);
+ break;
+
+ case DT_RELASZ:
+ s = hppa_info->other_rel_sec;
+ dyn.d_un.d_val = s->_raw_size;
+ s = hppa_info->dlt_rel_sec;
+ dyn.d_un.d_val += s->_raw_size;
+ s = hppa_info->opd_rel_sec;
+ dyn.d_un.d_val += s->_raw_size;
+ /* There is some question about whether or not the size of
+ the PLT relocs should be included here. HP's tools do
+ it, so we'll emulate them. */
+ s = hppa_info->plt_rel_sec;
+ dyn.d_un.d_val += s->_raw_size;
+ bfd_elf64_swap_dyn_out (output_bfd, &dyn, dyncon);
+ break;
+
+ }
+ }
+ }
+
+ return true;
+}
+
+
+/* Return the number of additional phdrs we will need.
+
+ The generic ELF code only creates PT_PHDRs for executables. The HP
+ dynamic linker requires PT_PHDRs for dynamic libraries too.
+
+ This routine indicates that the backend needs one additional program
+ header for that case.
+
+ Note we do not have access to the link info structure here, so we have
+ to guess whether or not we are building a shared library based on the
+ existence of a .interp section. */
+
+static int
+elf64_hppa_additional_program_headers (abfd)
+ bfd *abfd;
+{
+ asection *s;
+
+ /* If we are creating a shared library, then we have to create a
+ PT_PHDR segment. HP's dynamic linker chokes without it. */
+ s = bfd_get_section_by_name (abfd, ".interp");
+ if (! s)
+ return 1;
+ return 0;
+}
+
+/* Allocate and initialize any program headers required by this
+ specific backend.
+
+ The generic ELF code only creates PT_PHDRs for executables. The HP
+ dynamic linker requires PT_PHDRs for dynamic libraries too.
+
+ This allocates the PT_PHDR and initializes it in a manner suitable
+ for the HP linker.
+
+ Note we do not have access to the link info structure here, so we have
+ to guess whether or not we are building a shared library based on the
+ existence of a .interp section. */
+
+static boolean
+elf64_hppa_modify_segment_map (abfd)
+ bfd *abfd;
+{
+ struct elf_segment_map *m, **pm;
+ asection *s;
+
+ s = bfd_get_section_by_name (abfd, ".interp");
+ if (! s)
+ {
+ for (m = elf_tdata (abfd)->segment_map; m != NULL; m = m->next)
+ if (m->p_type == PT_PHDR)
+ break;
+ if (m == NULL)
+ {
+ m = (struct elf_segment_map *) bfd_zalloc (abfd, sizeof *m);
+ if (m == NULL)
+ return false;
+
+ m->p_type = PT_PHDR;
+ m->p_flags = PF_R | PF_X;
+ m->p_flags_valid = 1;
+ m->p_paddr_valid = 1;
+ m->includes_phdrs = 1;
+
+ m->next = elf_tdata (abfd)->segment_map;
+ elf_tdata (abfd)->segment_map = m;
+ }
+ }
+
+ for (m = elf_tdata (abfd)->segment_map; m != NULL; m = m->next)
+ if (m->p_type == PT_LOAD)
+ {
+ int i;
+
+ for (i = 0; i < m->count; i++)
+ {
+ /* The code "hint" is not really a hint. It is a requirement
+ for certain versions of the HP dynamic linker. Worse yet,
+ it must be set even if the shared library does not have
+ any code in its "text" segment (thus the check for .hash
+ to catch this situation). */
+ if (m->sections[i]->flags & SEC_CODE
+ || (strcmp (m->sections[i]->name, ".hash") == 0))
+ m->p_flags |= (PF_X | PF_HP_CODE);
+ }
+ }
+
+ return true;
+}
+
+/* The hash bucket size is the standard one, namely 4. */
+
+const struct elf_size_info hppa64_elf_size_info =
+{
+ sizeof (Elf64_External_Ehdr),
+ sizeof (Elf64_External_Phdr),
+ sizeof (Elf64_External_Shdr),
+ sizeof (Elf64_External_Rel),
+ sizeof (Elf64_External_Rela),
+ sizeof (Elf64_External_Sym),
+ sizeof (Elf64_External_Dyn),
+ sizeof (Elf_External_Note),
+ 4,
+ 1,
+ 64, 8,
+ ELFCLASS64, EV_CURRENT,
+ bfd_elf64_write_out_phdrs,
+ bfd_elf64_write_shdrs_and_ehdr,
+ bfd_elf64_write_relocs,
+ bfd_elf64_swap_symbol_out,
+ bfd_elf64_slurp_reloc_table,
+ bfd_elf64_slurp_symbol_table,
+ bfd_elf64_swap_dyn_in,
+ bfd_elf64_swap_dyn_out,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+#define TARGET_BIG_SYM bfd_elf64_hppa_vec
+#define TARGET_BIG_NAME "elf64-hppa"
+#define ELF_ARCH bfd_arch_hppa
+#define ELF_MACHINE_CODE EM_PARISC
+/* This is not strictly correct. The maximum page size for PA2.0 is
+ 64M. But everything still uses 4k. */
+#define ELF_MAXPAGESIZE 0x1000
+#define bfd_elf64_bfd_reloc_type_lookup elf_hppa_reloc_type_lookup
+#define bfd_elf64_bfd_is_local_label_name elf_hppa_is_local_label_name
+#define elf_info_to_howto elf_hppa_info_to_howto
+#define elf_info_to_howto_rel elf_hppa_info_to_howto_rel
+
+#define elf_backend_section_from_shdr elf64_hppa_section_from_shdr
+#define elf_backend_object_p elf64_hppa_object_p
+#define elf_backend_final_write_processing \
+ elf_hppa_final_write_processing
+#define elf_backend_fake_sections elf_hppa_fake_sections
+#define elf_backend_add_symbol_hook elf_hppa_add_symbol_hook
+
+#define elf_backend_relocate_section elf_hppa_relocate_section
+
+#define bfd_elf64_bfd_final_link elf_hppa_final_link
+
+#define elf_backend_create_dynamic_sections \
+ elf64_hppa_create_dynamic_sections
+#define elf_backend_post_process_headers elf64_hppa_post_process_headers
+
+#define elf_backend_adjust_dynamic_symbol \
+ elf64_hppa_adjust_dynamic_symbol
+
+#define elf_backend_size_dynamic_sections \
+ elf64_hppa_size_dynamic_sections
+
+#define elf_backend_finish_dynamic_symbol \
+ elf64_hppa_finish_dynamic_symbol
+#define elf_backend_finish_dynamic_sections \
+ elf64_hppa_finish_dynamic_sections
+
+/* Stuff for the BFD linker: */
+#define bfd_elf64_bfd_link_hash_table_create \
+ elf64_hppa_hash_table_create
+
+#define elf_backend_check_relocs \
+ elf64_hppa_check_relocs
+
+#define elf_backend_size_info \
+ hppa64_elf_size_info
+
+#define elf_backend_additional_program_headers \
+ elf64_hppa_additional_program_headers
+
+#define elf_backend_modify_segment_map \
+ elf64_hppa_modify_segment_map
+
+#define elf_backend_link_output_symbol_hook \
+ elf64_hppa_link_output_symbol_hook
+
+
+#define elf_backend_want_got_plt 0
+#define elf_backend_plt_readonly 0
+#define elf_backend_want_plt_sym 0
+#define elf_backend_got_header_size 0
+#define elf_backend_plt_header_size 0
+#define elf_backend_type_change_ok true
+
+#include "elf64-target.h"
diff --git a/bfd/elf64-hppa.h b/bfd/elf64-hppa.h
new file mode 100644
index 00000000000..5098e0c42b3
--- /dev/null
+++ b/bfd/elf64-hppa.h
@@ -0,0 +1,47 @@
+/* ELF64/HPPA support
+
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef _ELF64_HPPA_H
+#define _ELF64_HPPA_H
+
+#include "elf-bfd.h"
+#include "libhppa.h"
+#include "elf/hppa.h"
+
+extern elf_hppa_reloc_type ** _bfd_elf64_hppa_gen_reloc_type
+ PARAMS ((bfd *, elf_hppa_reloc_type, int, int, int, asymbol *));
+
+/* Define groups of basic relocations. FIXME: These should
+ be the only basic relocations created by GAS. The rest
+ should be internal to the BFD backend.
+
+ The idea is both SOM and ELF define these basic relocation
+ types so they map into a SOM or ELF specific relocation
+ as appropriate. This allows GAS to share much more code
+ between the two target object formats. */
+
+#define R_HPPA_NONE R_PARISC_NONE
+#define R_HPPA R_PARISC_DIR64
+#define R_HPPA_GOTOFF R_PARISC_DLTREL21L
+#define R_HPPA_PCREL_CALL R_PARISC_PCREL21L
+#define R_HPPA_ABS_CALL R_PARISC_DIR17F
+#define R_HPPA_COMPLEX R_PARISC_UNIMPLEMENTED
+
+#endif /* _ELF64_HPPA_H */
diff --git a/bfd/elf64-ia64.c b/bfd/elf64-ia64.c
new file mode 100644
index 00000000000..2fafeb18b29
--- /dev/null
+++ b/bfd/elf64-ia64.c
@@ -0,0 +1,4097 @@
+/* IA-64 support for 64-bit ELF
+ Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+#include "elf-bfd.h"
+#include "opcode/ia64.h"
+#include "elf/ia64.h"
+
+
+/*
+ * THE RULES for all the stuff the linker creates --
+ *
+ * GOT Entries created in response to LTOFF or LTOFF_FPTR
+ * relocations. Dynamic relocs created for dynamic
+ * symbols in an application; REL relocs for locals
+ * in a shared library.
+ *
+ * FPTR The canonical function descriptor. Created for local
+ * symbols in applications. Descriptors for dynamic symbols
+ * and local symbols in shared libraries are created by
+ * ld.so. Thus there are no dynamic relocs against these
+ * objects. The FPTR relocs for such _are_ passed through
+ * to the dynamic relocation tables.
+ *
+ * FULL_PLT Created for a PCREL21B relocation against a dynamic symbol.
+ * Requires the creation of a PLTOFF entry. This does not
+ * require any dynamic relocations.
+ *
+ * PLTOFF Created by PLTOFF relocations. For local symbols, this
+ * is an alternate function descriptor, and in shared libraries
+ * requires two REL relocations. Note that this cannot be
+ * transformed into an FPTR relocation, since it must be in
+ * range of the GP. For dynamic symbols, this is a function
+ * descriptor for a MIN_PLT entry, and requires one IPLT reloc.
+ *
+ * MIN_PLT Created by PLTOFF entries against dynamic symbols. This
+ * does not reqire dynamic relocations.
+ */
+
+#define USE_RELA /* we want RELA relocs, not REL */
+
+#define NELEMS(a) ((int) (sizeof (a) / sizeof ((a)[0])))
+
+typedef struct bfd_hash_entry *(*new_hash_entry_func)
+ PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
+
+/* In dynamically (linker-) created sections, we generally need to keep track
+ of the place a symbol or expression got allocated to. This is done via hash
+ tables that store entries of the following type. */
+
+struct elf64_ia64_dyn_sym_info
+{
+ /* The addend for which this entry is relevant. */
+ bfd_vma addend;
+
+ /* Next addend in the list. */
+ struct elf64_ia64_dyn_sym_info *next;
+
+ bfd_vma got_offset;
+ bfd_vma fptr_offset;
+ bfd_vma pltoff_offset;
+ bfd_vma plt_offset;
+ bfd_vma plt2_offset;
+
+ /* The symbol table entry, if any, that this was derrived from. */
+ struct elf_link_hash_entry *h;
+
+ /* Used to count non-got, non-plt relocations for delayed sizing
+ of relocation sections. */
+ struct elf64_ia64_dyn_reloc_entry
+ {
+ struct elf64_ia64_dyn_reloc_entry *next;
+ asection *srel;
+ int type;
+ int count;
+ } *reloc_entries;
+
+ /* True when the section contents have been updated. */
+ unsigned got_done : 1;
+ unsigned fptr_done : 1;
+ unsigned pltoff_done : 1;
+
+ /* True for the different kinds of linker data we want created. */
+ unsigned want_got : 1;
+ unsigned want_fptr : 1;
+ unsigned want_ltoff_fptr : 1;
+ unsigned want_plt : 1;
+ unsigned want_plt2 : 1;
+ unsigned want_pltoff : 1;
+};
+
+struct elf64_ia64_local_hash_entry
+{
+ struct bfd_hash_entry root;
+ struct elf64_ia64_dyn_sym_info *info;
+};
+
+struct elf64_ia64_local_hash_table
+{
+ struct bfd_hash_table root;
+ /* No additional fields for now. */
+};
+
+struct elf64_ia64_link_hash_entry
+{
+ struct elf_link_hash_entry root;
+ struct elf64_ia64_dyn_sym_info *info;
+};
+
+struct elf64_ia64_link_hash_table
+{
+ /* The main hash table */
+ struct elf_link_hash_table root;
+
+ asection *got_sec; /* the linkage table section (or NULL) */
+ asection *rel_got_sec; /* dynamic relocation section for same */
+ asection *fptr_sec; /* function descriptor table (or NULL) */
+ asection *plt_sec; /* the primary plt section (or NULL) */
+ asection *pltoff_sec; /* private descriptors for plt (or NULL) */
+ asection *rel_pltoff_sec; /* dynamic relocation section for same */
+
+ bfd_size_type minplt_entries; /* number of minplt entries */
+
+ struct elf64_ia64_local_hash_table loc_hash_table;
+};
+
+#define elf64_ia64_hash_table(p) \
+ ((struct elf64_ia64_link_hash_table *) ((p)->hash))
+
+static bfd_reloc_status_type elf64_ia64_reloc
+ PARAMS ((bfd *abfd, arelent *reloc, asymbol *sym, PTR data,
+ asection *input_section, bfd *output_bfd, char **error_message));
+static reloc_howto_type * lookup_howto
+ PARAMS ((unsigned int rtype));
+static reloc_howto_type *elf64_ia64_reloc_type_lookup
+ PARAMS ((bfd *abfd, bfd_reloc_code_real_type bfd_code));
+static void elf64_ia64_info_to_howto
+ PARAMS ((bfd *abfd, arelent *bfd_reloc, Elf64_Internal_Rela *elf_reloc));
+static boolean elf64_ia64_relax_section
+ PARAMS((bfd *abfd, asection *sec, struct bfd_link_info *link_info,
+ boolean *again));
+static boolean elf64_ia64_section_from_shdr
+ PARAMS ((bfd *, Elf64_Internal_Shdr *, char *));
+static boolean elf64_ia64_fake_sections
+ PARAMS ((bfd *abfd, Elf64_Internal_Shdr *hdr, asection *sec));
+static boolean elf64_ia64_add_symbol_hook
+ PARAMS ((bfd *abfd, struct bfd_link_info *info, const Elf_Internal_Sym *sym,
+ const char **namep, flagword *flagsp, asection **secp,
+ bfd_vma *valp));
+static int elf64_ia64_additional_program_headers
+ PARAMS ((bfd *abfd));
+static boolean elf64_ia64_is_local_label_name
+ PARAMS ((bfd *abfd, const char *name));
+static boolean elf64_ia64_dynamic_symbol_p
+ PARAMS ((struct elf_link_hash_entry *h, struct bfd_link_info *info));
+static boolean elf64_ia64_local_hash_table_init
+ PARAMS ((struct elf64_ia64_local_hash_table *ht, bfd *abfd,
+ new_hash_entry_func new));
+static struct bfd_hash_entry *elf64_ia64_new_loc_hash_entry
+ PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table,
+ const char *string));
+static struct bfd_hash_entry *elf64_ia64_new_elf_hash_entry
+ PARAMS ((struct bfd_hash_entry *entry, struct bfd_hash_table *table,
+ const char *string));
+static struct bfd_link_hash_table *elf64_ia64_hash_table_create
+ PARAMS ((bfd *abfd));
+static struct elf64_ia64_local_hash_entry *elf64_ia64_local_hash_lookup
+ PARAMS ((struct elf64_ia64_local_hash_table *table, const char *string,
+ boolean create, boolean copy));
+static void elf64_ia64_dyn_sym_traverse
+ PARAMS ((struct elf64_ia64_link_hash_table *ia64_info,
+ boolean (*func)(struct elf64_ia64_dyn_sym_info *, PTR),
+ PTR info));
+static boolean elf64_ia64_create_dynamic_sections
+ PARAMS ((bfd *abfd, struct bfd_link_info *info));
+static struct elf64_ia64_dyn_sym_info * get_dyn_sym_info
+ PARAMS ((struct elf64_ia64_link_hash_table *ia64_info,
+ struct elf_link_hash_entry *h,
+ bfd *abfd, const Elf_Internal_Rela *rel, boolean create));
+static asection *get_got
+ PARAMS ((bfd *abfd, struct bfd_link_info *info,
+ struct elf64_ia64_link_hash_table *ia64_info));
+static asection *get_fptr
+ PARAMS ((bfd *abfd, struct bfd_link_info *info,
+ struct elf64_ia64_link_hash_table *ia64_info));
+static asection *get_pltoff
+ PARAMS ((bfd *abfd, struct bfd_link_info *info,
+ struct elf64_ia64_link_hash_table *ia64_info));
+static asection *get_reloc_section
+ PARAMS ((bfd *abfd, struct elf64_ia64_link_hash_table *ia64_info,
+ asection *sec, boolean create));
+static boolean count_dyn_reloc
+ PARAMS ((bfd *abfd, struct elf64_ia64_dyn_sym_info *dyn_i,
+ asection *srel, int type));
+static boolean elf64_ia64_check_relocs
+ PARAMS ((bfd *abfd, struct bfd_link_info *info, asection *sec,
+ const Elf_Internal_Rela *relocs));
+static boolean elf64_ia64_adjust_dynamic_symbol
+ PARAMS ((struct bfd_link_info *info, struct elf_link_hash_entry *h));
+static unsigned long global_sym_index
+ PARAMS ((struct elf_link_hash_entry *h));
+static boolean allocate_fptr
+ PARAMS ((struct elf64_ia64_dyn_sym_info *dyn_i, PTR data));
+static boolean allocate_global_data_got
+ PARAMS ((struct elf64_ia64_dyn_sym_info *dyn_i, PTR data));
+static boolean allocate_global_fptr_got
+ PARAMS ((struct elf64_ia64_dyn_sym_info *dyn_i, PTR data));
+static boolean allocate_local_got
+ PARAMS ((struct elf64_ia64_dyn_sym_info *dyn_i, PTR data));
+static boolean allocate_pltoff_entries
+ PARAMS ((struct elf64_ia64_dyn_sym_info *dyn_i, PTR data));
+static boolean allocate_plt_entries
+ PARAMS ((struct elf64_ia64_dyn_sym_info *dyn_i, PTR data));
+static boolean allocate_plt2_entries
+ PARAMS ((struct elf64_ia64_dyn_sym_info *dyn_i, PTR data));
+static boolean allocate_dynrel_entries
+ PARAMS ((struct elf64_ia64_dyn_sym_info *dyn_i, PTR data));
+static boolean elf64_ia64_size_dynamic_sections
+ PARAMS ((bfd *output_bfd, struct bfd_link_info *info));
+static bfd_reloc_status_type elf64_ia64_install_value
+ PARAMS ((bfd *abfd, bfd_byte *hit_addr, bfd_vma val, unsigned int r_type));
+static void elf64_ia64_install_dyn_reloc
+ PARAMS ((bfd *abfd, struct bfd_link_info *info, asection *sec,
+ asection *srel, bfd_vma offset, unsigned int type,
+ long dynindx, bfd_vma addend));
+static bfd_vma set_got_entry
+ PARAMS ((bfd *abfd, struct bfd_link_info *info,
+ struct elf64_ia64_dyn_sym_info *dyn_i, long dynindx,
+ bfd_vma addend, bfd_vma value, unsigned int dyn_r_type));
+static bfd_vma set_fptr_entry
+ PARAMS ((bfd *abfd, struct bfd_link_info *info,
+ struct elf64_ia64_dyn_sym_info *dyn_i,
+ bfd_vma value));
+static bfd_vma set_pltoff_entry
+ PARAMS ((bfd *abfd, struct bfd_link_info *info,
+ struct elf64_ia64_dyn_sym_info *dyn_i,
+ bfd_vma value, boolean));
+static boolean elf64_ia64_final_link
+ PARAMS ((bfd *abfd, struct bfd_link_info *info));
+static boolean elf64_ia64_relocate_section
+ 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));
+static boolean elf64_ia64_finish_dynamic_symbol
+ PARAMS ((bfd *output_bfd, struct bfd_link_info *info,
+ struct elf_link_hash_entry *h, Elf_Internal_Sym *sym));
+static boolean elf64_ia64_finish_dynamic_sections
+ PARAMS ((bfd *abfd, struct bfd_link_info *info));
+static boolean elf64_ia64_set_private_flags
+ PARAMS ((bfd *abfd, flagword flags));
+static boolean elf64_ia64_copy_private_bfd_data
+ PARAMS ((bfd *ibfd, bfd *obfd));
+static boolean elf64_ia64_merge_private_bfd_data
+ PARAMS ((bfd *ibfd, bfd *obfd));
+static boolean elf64_ia64_print_private_bfd_data
+ PARAMS ((bfd *abfd, PTR ptr));
+
+
+/* ia64-specific relocation */
+
+/* Perform a relocation. Not much to do here as all the hard work is
+ done in elf64_ia64_final_link_relocate. */
+static bfd_reloc_status_type
+elf64_ia64_reloc (abfd, reloc, sym, data, input_section,
+ output_bfd, error_message)
+ bfd *abfd;
+ arelent *reloc;
+ asymbol *sym;
+ PTR data;
+ asection *input_section;
+ bfd *output_bfd;
+ char **error_message;
+{
+ if (output_bfd)
+ {
+ reloc->address += input_section->output_offset;
+ return bfd_reloc_ok;
+ }
+ *error_message = "Unsupported call to elf64_ia64_reloc";
+ return bfd_reloc_notsupported;
+}
+
+#define IA64_HOWTO(TYPE, NAME, SIZE, PCREL, IN) \
+ HOWTO (TYPE, 0, SIZE, 0, PCREL, 0, complain_overflow_signed, \
+ elf64_ia64_reloc, NAME, false, 0, 0, IN)
+
+/* This table has to be sorted according to increasing number of the
+ TYPE field. */
+static reloc_howto_type ia64_howto_table[] =
+ {
+ IA64_HOWTO (R_IA64_NONE, "NONE", 0, false, true),
+
+ IA64_HOWTO (R_IA64_IMM14, "IMM14", 0, false, true),
+ IA64_HOWTO (R_IA64_IMM22, "IMM22", 0, false, true),
+ IA64_HOWTO (R_IA64_IMM64, "IMM64", 0, false, true),
+ IA64_HOWTO (R_IA64_DIR32MSB, "DIR32MSB", 2, false, true),
+ IA64_HOWTO (R_IA64_DIR32LSB, "DIR32LSB", 2, false, true),
+ IA64_HOWTO (R_IA64_DIR64MSB, "DIR64MSB", 4, false, true),
+ IA64_HOWTO (R_IA64_DIR64LSB, "DIR64LSB", 4, false, true),
+
+ IA64_HOWTO (R_IA64_GPREL22, "GPREL22", 0, false, true),
+ IA64_HOWTO (R_IA64_GPREL64I, "GPREL64I", 0, false, true),
+ IA64_HOWTO (R_IA64_GPREL32MSB, "GPREL32MSB", 2, false, true),
+ IA64_HOWTO (R_IA64_GPREL32LSB, "GPREL32LSB", 2, false, true),
+ IA64_HOWTO (R_IA64_GPREL64MSB, "GPREL64MSB", 4, false, true),
+ IA64_HOWTO (R_IA64_GPREL64LSB, "GPREL64LSB", 4, false, true),
+
+ IA64_HOWTO (R_IA64_LTOFF22, "LTOFF22", 0, false, true),
+ IA64_HOWTO (R_IA64_LTOFF64I, "LTOFF64I", 0, false, true),
+
+ IA64_HOWTO (R_IA64_PLTOFF22, "PLTOFF22", 0, false, true),
+ IA64_HOWTO (R_IA64_PLTOFF64I, "PLTOFF64I", 0, false, true),
+ IA64_HOWTO (R_IA64_PLTOFF64MSB, "PLTOFF64MSB", 4, false, true),
+ IA64_HOWTO (R_IA64_PLTOFF64LSB, "PLTOFF64LSB", 4, false, true),
+
+ IA64_HOWTO (R_IA64_FPTR64I, "FPTR64I", 0, false, true),
+ IA64_HOWTO (R_IA64_FPTR32MSB, "FPTR32MSB", 2, false, true),
+ IA64_HOWTO (R_IA64_FPTR32LSB, "FPTR32LSB", 2, false, true),
+ IA64_HOWTO (R_IA64_FPTR64MSB, "FPTR64MSB", 4, false, true),
+ IA64_HOWTO (R_IA64_FPTR64LSB, "FPTR64LSB", 4, false, true),
+
+ IA64_HOWTO (R_IA64_PCREL60B, "PCREL60B", 0, true, true),
+ IA64_HOWTO (R_IA64_PCREL21B, "PCREL21B", 0, true, true),
+ IA64_HOWTO (R_IA64_PCREL21M, "PCREL21M", 0, true, true),
+ IA64_HOWTO (R_IA64_PCREL21F, "PCREL21F", 0, true, true),
+ IA64_HOWTO (R_IA64_PCREL32MSB, "PCREL32MSB", 2, true, true),
+ IA64_HOWTO (R_IA64_PCREL32LSB, "PCREL32LSB", 2, true, true),
+ IA64_HOWTO (R_IA64_PCREL64MSB, "PCREL64MSB", 4, true, true),
+ IA64_HOWTO (R_IA64_PCREL64LSB, "PCREL64LSB", 4, true, true),
+
+ IA64_HOWTO (R_IA64_LTOFF_FPTR22, "LTOFF_FPTR22", 0, false, true),
+ IA64_HOWTO (R_IA64_LTOFF_FPTR64I, "LTOFF_FPTR64I", 0, false, true),
+ IA64_HOWTO (R_IA64_LTOFF_FPTR64MSB, "LTOFF_FPTR64MSB", 4, false, true),
+ IA64_HOWTO (R_IA64_LTOFF_FPTR64LSB, "LTOFF_FPTR64LSB", 4, false, true),
+
+ IA64_HOWTO (R_IA64_SEGBASE, "SEGBASE", 4, false, true),
+ IA64_HOWTO (R_IA64_SEGREL32MSB, "SEGREL32MSB", 2, false, true),
+ IA64_HOWTO (R_IA64_SEGREL32LSB, "SEGREL32LSB", 2, false, true),
+ IA64_HOWTO (R_IA64_SEGREL64MSB, "SEGREL64MSB", 4, false, true),
+ IA64_HOWTO (R_IA64_SEGREL64LSB, "SEGREL64LSB", 4, false, true),
+
+ IA64_HOWTO (R_IA64_SECREL32MSB, "SECREL32MSB", 2, false, true),
+ IA64_HOWTO (R_IA64_SECREL32LSB, "SECREL32LSB", 2, false, true),
+ IA64_HOWTO (R_IA64_SECREL64MSB, "SECREL64MSB", 4, false, true),
+ IA64_HOWTO (R_IA64_SECREL64LSB, "SECREL64LSB", 4, false, true),
+
+ IA64_HOWTO (R_IA64_REL32MSB, "REL32MSB", 2, false, true),
+ IA64_HOWTO (R_IA64_REL32LSB, "REL32LSB", 2, false, true),
+ IA64_HOWTO (R_IA64_REL64MSB, "REL64MSB", 4, false, true),
+ IA64_HOWTO (R_IA64_REL64LSB, "REL64LSB", 4, false, true),
+
+ IA64_HOWTO (R_IA64_LTV32MSB, "LTV32MSB", 2, false, true),
+ IA64_HOWTO (R_IA64_LTV32LSB, "LTV32LSB", 2, false, true),
+ IA64_HOWTO (R_IA64_LTV64MSB, "LTV64MSB", 4, false, true),
+ IA64_HOWTO (R_IA64_LTV64LSB, "LTV64LSB", 4, false, true),
+
+ IA64_HOWTO (R_IA64_PCREL21BI, "PCREL21BI", 0, true, true),
+ IA64_HOWTO (R_IA64_PCREL22, "PCREL22", 0, true, true),
+ IA64_HOWTO (R_IA64_PCREL64I, "PCREL64I", 0, true, true),
+
+ IA64_HOWTO (R_IA64_IPLTMSB, "IPLTMSB", 4, false, true),
+ IA64_HOWTO (R_IA64_IPLTLSB, "IPLTLSB", 4, false, true),
+ IA64_HOWTO (R_IA64_EPLTMSB, "EPLTMSB", 4, false, true),
+ IA64_HOWTO (R_IA64_EPLTLSB, "EPLTLSB", 4, false, true),
+ IA64_HOWTO (R_IA64_COPY, "COPY", 4, false, true),
+ IA64_HOWTO (R_IA64_LTOFF22X, "LTOFF22X", 0, false, true),
+ IA64_HOWTO (R_IA64_LDXMOV, "LDXMOV", 0, false, true),
+
+ IA64_HOWTO (R_IA64_TPREL22, "TPREL22", 0, false, false),
+ IA64_HOWTO (R_IA64_TPREL64MSB, "TPREL64MSB", 8, false, false),
+ IA64_HOWTO (R_IA64_TPREL64LSB, "TPREL64LSB", 8, false, false),
+ IA64_HOWTO (R_IA64_LTOFF_TP22, "LTOFF_TP22", 0, false, false),
+ };
+
+static unsigned char elf_code_to_howto_index[R_IA64_MAX_RELOC_CODE + 1];
+
+/* Given a BFD reloc type, return the matching HOWTO structure. */
+
+static reloc_howto_type*
+lookup_howto (rtype)
+ unsigned int rtype;
+{
+ static int inited = 0;
+ int i;
+
+ if (!inited)
+ {
+ inited = 1;
+
+ memset (elf_code_to_howto_index, 0xff, sizeof (elf_code_to_howto_index));
+ for (i = 0; i < NELEMS (ia64_howto_table); ++i)
+ elf_code_to_howto_index[ia64_howto_table[i].type] = i;
+ }
+
+ BFD_ASSERT (rtype <= R_IA64_MAX_RELOC_CODE);
+ i = elf_code_to_howto_index[rtype];
+ if (i >= NELEMS (ia64_howto_table))
+ return 0;
+ return ia64_howto_table + i;
+}
+
+static reloc_howto_type*
+elf64_ia64_reloc_type_lookup (abfd, bfd_code)
+ bfd *abfd;
+ bfd_reloc_code_real_type bfd_code;
+{
+ unsigned int rtype;
+
+ switch (bfd_code)
+ {
+ case BFD_RELOC_NONE: rtype = R_IA64_NONE; break;
+
+ case BFD_RELOC_IA64_IMM14: rtype = R_IA64_IMM14; break;
+ case BFD_RELOC_IA64_IMM22: rtype = R_IA64_IMM22; break;
+ case BFD_RELOC_IA64_IMM64: rtype = R_IA64_IMM64; break;
+
+ case BFD_RELOC_IA64_DIR32MSB: rtype = R_IA64_DIR32MSB; break;
+ case BFD_RELOC_IA64_DIR32LSB: rtype = R_IA64_DIR32LSB; break;
+ case BFD_RELOC_IA64_DIR64MSB: rtype = R_IA64_DIR64MSB; break;
+ case BFD_RELOC_IA64_DIR64LSB: rtype = R_IA64_DIR64LSB; break;
+
+ case BFD_RELOC_IA64_GPREL22: rtype = R_IA64_GPREL22; break;
+ case BFD_RELOC_IA64_GPREL64I: rtype = R_IA64_GPREL64I; break;
+ case BFD_RELOC_IA64_GPREL32MSB: rtype = R_IA64_GPREL32MSB; break;
+ case BFD_RELOC_IA64_GPREL32LSB: rtype = R_IA64_GPREL32LSB; break;
+ case BFD_RELOC_IA64_GPREL64MSB: rtype = R_IA64_GPREL64MSB; break;
+ case BFD_RELOC_IA64_GPREL64LSB: rtype = R_IA64_GPREL64LSB; break;
+
+ case BFD_RELOC_IA64_LTOFF22: rtype = R_IA64_LTOFF22; break;
+ case BFD_RELOC_IA64_LTOFF64I: rtype = R_IA64_LTOFF64I; break;
+
+ case BFD_RELOC_IA64_PLTOFF22: rtype = R_IA64_PLTOFF22; break;
+ case BFD_RELOC_IA64_PLTOFF64I: rtype = R_IA64_PLTOFF64I; break;
+ case BFD_RELOC_IA64_PLTOFF64MSB: rtype = R_IA64_PLTOFF64MSB; break;
+ case BFD_RELOC_IA64_PLTOFF64LSB: rtype = R_IA64_PLTOFF64LSB; break;
+ case BFD_RELOC_IA64_FPTR64I: rtype = R_IA64_FPTR64I; break;
+ case BFD_RELOC_IA64_FPTR32MSB: rtype = R_IA64_FPTR32MSB; break;
+ case BFD_RELOC_IA64_FPTR32LSB: rtype = R_IA64_FPTR32LSB; break;
+ case BFD_RELOC_IA64_FPTR64MSB: rtype = R_IA64_FPTR64MSB; break;
+ case BFD_RELOC_IA64_FPTR64LSB: rtype = R_IA64_FPTR64LSB; break;
+
+ case BFD_RELOC_IA64_PCREL21B: rtype = R_IA64_PCREL21B; break;
+ case BFD_RELOC_IA64_PCREL21BI: rtype = R_IA64_PCREL21BI; break;
+ case BFD_RELOC_IA64_PCREL21M: rtype = R_IA64_PCREL21M; break;
+ case BFD_RELOC_IA64_PCREL21F: rtype = R_IA64_PCREL21F; break;
+ case BFD_RELOC_IA64_PCREL22: rtype = R_IA64_PCREL22; break;
+ case BFD_RELOC_IA64_PCREL60B: rtype = R_IA64_PCREL60B; break;
+ case BFD_RELOC_IA64_PCREL64I: rtype = R_IA64_PCREL64I; break;
+ case BFD_RELOC_IA64_PCREL32MSB: rtype = R_IA64_PCREL32MSB; break;
+ case BFD_RELOC_IA64_PCREL32LSB: rtype = R_IA64_PCREL32LSB; break;
+ case BFD_RELOC_IA64_PCREL64MSB: rtype = R_IA64_PCREL64MSB; break;
+ case BFD_RELOC_IA64_PCREL64LSB: rtype = R_IA64_PCREL64LSB; break;
+
+ case BFD_RELOC_IA64_LTOFF_FPTR22: rtype = R_IA64_LTOFF_FPTR22; break;
+ case BFD_RELOC_IA64_LTOFF_FPTR64I: rtype = R_IA64_LTOFF_FPTR64I; break;
+ case BFD_RELOC_IA64_LTOFF_FPTR64MSB: rtype = R_IA64_LTOFF_FPTR64MSB; break;
+ case BFD_RELOC_IA64_LTOFF_FPTR64LSB: rtype = R_IA64_LTOFF_FPTR64LSB; break;
+
+ case BFD_RELOC_IA64_SEGBASE: rtype = R_IA64_SEGBASE; break;
+ case BFD_RELOC_IA64_SEGREL32MSB: rtype = R_IA64_SEGREL32MSB; break;
+ case BFD_RELOC_IA64_SEGREL32LSB: rtype = R_IA64_SEGREL32LSB; break;
+ case BFD_RELOC_IA64_SEGREL64MSB: rtype = R_IA64_SEGREL64MSB; break;
+ case BFD_RELOC_IA64_SEGREL64LSB: rtype = R_IA64_SEGREL64LSB; break;
+
+ case BFD_RELOC_IA64_SECREL32MSB: rtype = R_IA64_SECREL32MSB; break;
+ case BFD_RELOC_IA64_SECREL32LSB: rtype = R_IA64_SECREL32LSB; break;
+ case BFD_RELOC_IA64_SECREL64MSB: rtype = R_IA64_SECREL64MSB; break;
+ case BFD_RELOC_IA64_SECREL64LSB: rtype = R_IA64_SECREL64LSB; break;
+
+ case BFD_RELOC_IA64_REL32MSB: rtype = R_IA64_REL32MSB; break;
+ case BFD_RELOC_IA64_REL32LSB: rtype = R_IA64_REL32LSB; break;
+ case BFD_RELOC_IA64_REL64MSB: rtype = R_IA64_REL64MSB; break;
+ case BFD_RELOC_IA64_REL64LSB: rtype = R_IA64_REL64LSB; break;
+
+ case BFD_RELOC_IA64_LTV32MSB: rtype = R_IA64_LTV32MSB; break;
+ case BFD_RELOC_IA64_LTV32LSB: rtype = R_IA64_LTV32LSB; break;
+ case BFD_RELOC_IA64_LTV64MSB: rtype = R_IA64_LTV64MSB; break;
+ case BFD_RELOC_IA64_LTV64LSB: rtype = R_IA64_LTV64LSB; break;
+
+ case BFD_RELOC_IA64_IPLTMSB: rtype = R_IA64_IPLTMSB; break;
+ case BFD_RELOC_IA64_IPLTLSB: rtype = R_IA64_IPLTLSB; break;
+ case BFD_RELOC_IA64_EPLTMSB: rtype = R_IA64_EPLTMSB; break;
+ case BFD_RELOC_IA64_EPLTLSB: rtype = R_IA64_EPLTLSB; break;
+ case BFD_RELOC_IA64_COPY: rtype = R_IA64_COPY; break;
+ case BFD_RELOC_IA64_LTOFF22X: rtype = R_IA64_LTOFF22X; break;
+ case BFD_RELOC_IA64_LDXMOV: rtype = R_IA64_LDXMOV; break;
+
+ case BFD_RELOC_IA64_TPREL22: rtype = R_IA64_TPREL22; break;
+ case BFD_RELOC_IA64_TPREL64MSB: rtype = R_IA64_TPREL64MSB; break;
+ case BFD_RELOC_IA64_TPREL64LSB: rtype = R_IA64_TPREL64LSB; break;
+ case BFD_RELOC_IA64_LTOFF_TP22: rtype = R_IA64_LTOFF_TP22; break;
+
+ default: return 0;
+ }
+ return lookup_howto (rtype);
+}
+
+/* Given a ELF reloc, return the matching HOWTO structure. */
+
+static void
+elf64_ia64_info_to_howto (abfd, bfd_reloc, elf_reloc)
+ bfd *abfd;
+ arelent *bfd_reloc;
+ Elf64_Internal_Rela *elf_reloc;
+{
+ bfd_reloc->howto = lookup_howto (ELF64_R_TYPE (elf_reloc->r_info));
+}
+
+#define PLT_HEADER_SIZE (3 * 16)
+#define PLT_MIN_ENTRY_SIZE (1 * 16)
+#define PLT_FULL_ENTRY_SIZE (2 * 16)
+#define PLT_RESERVED_WORDS 3
+
+static const bfd_byte plt_header[PLT_HEADER_SIZE] =
+{
+ 0x0b, 0x10, 0x00, 0x1c, 0x00, 0x21, /* [MMI] mov r2=r14;; */
+ 0xe0, 0x00, 0x08, 0x00, 0x48, 0x00, /* addl r14=0,r2 */
+ 0x00, 0x00, 0x04, 0x00, /* nop.i 0x0;; */
+ 0x0b, 0x80, 0x20, 0x1c, 0x18, 0x14, /* [MMI] ld8 r16=[r14],8;; */
+ 0x10, 0x41, 0x38, 0x30, 0x28, 0x00, /* ld8 r17=[r14],8 */
+ 0x00, 0x00, 0x04, 0x00, /* nop.i 0x0;; */
+ 0x11, 0x08, 0x00, 0x1c, 0x18, 0x10, /* [MIB] ld8 r1=[r14] */
+ 0x60, 0x88, 0x04, 0x80, 0x03, 0x00, /* mov b6=r17 */
+ 0x60, 0x00, 0x80, 0x00 /* br.few b6;; */
+};
+
+static const bfd_byte plt_min_entry[PLT_MIN_ENTRY_SIZE] =
+{
+ 0x11, 0x78, 0x00, 0x00, 0x00, 0x24, /* [MIB] mov r15=0 */
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* nop.i 0x0 */
+ 0x00, 0x00, 0x00, 0x40 /* br.few 0 <PLT0>;; */
+};
+
+static const bfd_byte plt_full_entry[PLT_FULL_ENTRY_SIZE] =
+{
+ 0x0b, 0x78, 0x00, 0x02, 0x00, 0x24, /* [MMI] addl r15=0,r1;; */
+ 0x00, 0x41, 0x3c, 0x30, 0x28, 0xc0, /* ld8 r16=[r15],8 */
+ 0x01, 0x08, 0x00, 0x84, /* mov r14=r1;; */
+ 0x11, 0x08, 0x00, 0x1e, 0x18, 0x10, /* [MIB] ld8 r1=[r15] */
+ 0x60, 0x80, 0x04, 0x80, 0x03, 0x00, /* mov b6=r16 */
+ 0x60, 0x00, 0x80, 0x00 /* br.few b6;; */
+};
+
+#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
+
+/* Select out of range branch fixup type. Note that Itanium does
+ not support brl, and so it gets emulated by the kernel. */
+#undef USE_BRL
+
+static const bfd_byte oor_brl[16] =
+{
+ 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, /* [MLX] nop.m 0 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* brl.sptk.few tgt;; */
+ 0x00, 0x00, 0x00, 0xc0
+};
+
+static const bfd_byte oor_ip[48] =
+{
+ 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, /* [MLX] nop.m 0 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, /* movl r15=0 */
+ 0x01, 0x00, 0x00, 0x60,
+ 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, /* [MII] nop.m 0 */
+ 0x00, 0x01, 0x00, 0x60, 0x00, 0x00, /* mov r16=ip;; */
+ 0xf2, 0x80, 0x00, 0x80, /* add r16=r15,r16;; */
+ 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, /* [MIB] nop.m 0 */
+ 0x60, 0x80, 0x04, 0x80, 0x03, 0x00, /* mov b6=r16 */
+ 0x60, 0x00, 0x80, 0x00 /* br b6;; */
+};
+
+/* These functions do relaxation for IA-64 ELF.
+
+ This is primarily to support branches to targets out of range;
+ relaxation of R_IA64_LTOFF22X and R_IA64_LDXMOV not yet supported. */
+
+static boolean
+elf64_ia64_relax_section (abfd, sec, link_info, again)
+ bfd *abfd;
+ asection *sec;
+ struct bfd_link_info *link_info;
+ boolean *again;
+{
+ struct one_fixup
+ {
+ struct one_fixup *next;
+ asection *tsec;
+ bfd_vma toff;
+ bfd_vma trampoff;
+ };
+
+ Elf_Internal_Shdr *symtab_hdr;
+ Elf_Internal_Rela *internal_relocs;
+ Elf_Internal_Rela *free_relocs;
+ Elf_Internal_Rela *irel, *irelend;
+ bfd_byte *contents;
+ bfd_byte *free_contents;
+ Elf64_External_Sym *extsyms;
+ Elf64_External_Sym *free_extsyms;
+ struct elf64_ia64_link_hash_table *ia64_info;
+ struct one_fixup *fixups = NULL;
+ boolean changed_contents = false;
+ boolean changed_relocs = false;
+
+ /* Assume we're not going to change any sizes, and we we'll only
+ need one pass. */
+ *again = false;
+
+ /* Nothing to do if there are no relocations. */
+ if ((sec->flags & SEC_RELOC) == 0
+ || sec->reloc_count == 0)
+ return true;
+
+ /* If this is the first time we have been called for this section,
+ initialize the cooked size. */
+ if (sec->_cooked_size == 0)
+ sec->_cooked_size = sec->_raw_size;
+
+ symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+
+ /* Load the relocations for this section. */
+ internal_relocs = (_bfd_elf64_link_read_relocs
+ (abfd, sec, (PTR) NULL, (Elf_Internal_Rela *) NULL,
+ link_info->keep_memory));
+ if (internal_relocs == NULL)
+ goto error_return;
+ free_relocs = NULL;
+ if (! link_info->keep_memory)
+ free_relocs = internal_relocs;
+
+ ia64_info = elf64_ia64_hash_table (link_info);
+ irelend = internal_relocs + sec->reloc_count;
+
+ for (irel = internal_relocs; irel < irelend; irel++)
+ if (ELF64_R_TYPE (irel->r_info) == (int) R_IA64_PCREL21B)
+ break;
+
+ /* No branch-type relocations. */
+ if (irel == irelend)
+ {
+ if (free_relocs != NULL)
+ free (free_relocs);
+ return true;
+ }
+
+ /* Get the section contents. */
+ free_contents = NULL;
+ if (elf_section_data (sec)->this_hdr.contents != NULL)
+ contents = elf_section_data (sec)->this_hdr.contents;
+ else
+ {
+ contents = (bfd_byte *) bfd_malloc (sec->_raw_size);
+ if (contents == NULL)
+ goto error_return;
+ free_contents = contents;
+
+ if (! bfd_get_section_contents (abfd, sec, contents,
+ (file_ptr) 0, sec->_raw_size))
+ goto error_return;
+ }
+
+ /* Read this BFD's symbols. */
+ free_extsyms = NULL;
+ if (symtab_hdr->contents != NULL)
+ extsyms = (Elf64_External_Sym *) symtab_hdr->contents;
+ else
+ {
+ extsyms = (Elf64_External_Sym *) bfd_malloc (symtab_hdr->sh_size);
+ if (extsyms == NULL)
+ goto error_return;
+ free_extsyms = extsyms;
+ if (bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0
+ || (bfd_read (extsyms, 1, symtab_hdr->sh_size, abfd)
+ != symtab_hdr->sh_size))
+ goto error_return;
+ }
+
+ for (; irel < irelend; irel++)
+ {
+ bfd_vma symaddr, reladdr, trampoff, toff, roff;
+ Elf_Internal_Sym isym;
+ asection *tsec;
+ struct one_fixup *f;
+
+ if (ELF64_R_TYPE (irel->r_info) != (int) R_IA64_PCREL21B)
+ continue;
+
+ /* Get the value of the symbol referred to by the reloc. */
+ if (ELF64_R_SYM (irel->r_info) < symtab_hdr->sh_info)
+ {
+ /* A local symbol. */
+ bfd_elf64_swap_symbol_in (abfd,
+ extsyms + ELF64_R_SYM (irel->r_info),
+ &isym);
+ if (isym.st_shndx == SHN_UNDEF)
+ continue; /* We can't do anthing with undefined symbols. */
+ else if (isym.st_shndx == SHN_ABS)
+ tsec = bfd_abs_section_ptr;
+ else if (isym.st_shndx == SHN_COMMON)
+ tsec = bfd_com_section_ptr;
+ else if (isym.st_shndx > 0 && isym.st_shndx < SHN_LORESERVE)
+ tsec = bfd_section_from_elf_index (abfd, isym.st_shndx);
+ else
+ continue; /* who knows. */
+
+ toff = isym.st_value;
+ }
+ else
+ {
+ unsigned long indx;
+ struct elf_link_hash_entry *h;
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+
+ indx = ELF64_R_SYM (irel->r_info) - symtab_hdr->sh_info;
+ h = elf_sym_hashes (abfd)[indx];
+ BFD_ASSERT (h != NULL);
+
+ 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;
+
+ dyn_i = get_dyn_sym_info (ia64_info, h, abfd, irel, false);
+
+ /* For branches to dynamic symbols, we're interested instead
+ in a branch to the PLT entry. */
+ if (dyn_i && dyn_i->want_plt2)
+ {
+ tsec = ia64_info->plt_sec;
+ toff = dyn_i->plt2_offset;
+ }
+ else
+ {
+ /* We can't do anthing with undefined symbols. */
+ if (h->root.type == bfd_link_hash_undefined
+ || h->root.type == bfd_link_hash_undefweak)
+ continue;
+
+ tsec = h->root.u.def.section;
+ toff = h->root.u.def.value;
+ }
+ }
+
+ symaddr = (tsec->output_section->vma
+ + tsec->output_offset
+ + toff
+ + irel->r_addend);
+
+ roff = irel->r_offset;
+ reladdr = (sec->output_section->vma
+ + sec->output_offset
+ + roff) & -4;
+
+ /* If the branch is in range, no need to do anything. */
+ if ((bfd_signed_vma) (symaddr - reladdr) >= -0x1000000
+ && (bfd_signed_vma) (symaddr - reladdr) <= 0x0FFFFF0)
+ continue;
+
+ /* If the branch and target are in the same section, you've
+ got one honking big section and we can't help you. You'll
+ get an error message later. */
+ if (tsec == sec)
+ continue;
+
+ /* Look for an existing fixup to this address. */
+ for (f = fixups; f ; f = f->next)
+ if (f->tsec == tsec && f->toff == toff)
+ break;
+
+ if (f == NULL)
+ {
+ /* Two alternatives: If it's a branch to a PLT entry, we can
+ make a copy of the FULL_PLT entry. Otherwise, we'll have
+ to use a `brl' insn to get where we're going. */
+
+ int size;
+
+ if (tsec == ia64_info->plt_sec)
+ size = sizeof (plt_full_entry);
+ else
+ {
+#ifdef USE_BRL
+ size = sizeof (oor_brl);
+#else
+ size = sizeof (oor_ip);
+#endif
+ }
+
+ /* Resize the current section to make room for the new branch. */
+ trampoff = (sec->_cooked_size + 15) & -16;
+ contents = (bfd_byte *) bfd_realloc (contents, trampoff + size);
+ if (contents == NULL)
+ goto error_return;
+ sec->_cooked_size = trampoff + size;
+
+ if (tsec == ia64_info->plt_sec)
+ {
+ memcpy (contents + trampoff, plt_full_entry, size);
+
+ /* Hijack the old relocation for use as the PLTOFF reloc. */
+ irel->r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info),
+ R_IA64_PLTOFF22);
+ irel->r_offset = trampoff;
+ }
+ else
+ {
+#ifdef USE_BRL
+ memcpy (contents + trampoff, oor_brl, size);
+ irel->r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info),
+ R_IA64_PCREL60B);
+ irel->r_offset = trampoff + 2;
+#else
+ memcpy (contents + trampoff, oor_ip, size);
+ irel->r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info),
+ R_IA64_PCREL64I);
+ irel->r_addend -= 16;
+ irel->r_offset = trampoff + 2;
+#endif
+ }
+
+ /* Record the fixup so we don't do it again this section. */
+ f = (struct one_fixup *) bfd_malloc (sizeof (*f));
+ f->next = fixups;
+ f->tsec = tsec;
+ f->toff = toff;
+ f->trampoff = trampoff;
+ fixups = f;
+ }
+ else
+ {
+ /* Nop out the reloc, since we're finalizing things here. */
+ irel->r_info = ELF64_R_INFO (0, R_IA64_NONE);
+ }
+
+ /* Fix up the existing branch to hit the trampoline. Hope like
+ hell this doesn't overflow too. */
+ if (elf64_ia64_install_value (abfd, contents + roff,
+ f->trampoff - (roff & -4),
+ R_IA64_PCREL21B) != bfd_reloc_ok)
+ goto error_return;
+
+ changed_contents = true;
+ changed_relocs = true;
+ }
+
+ /* Clean up and go home. */
+ while (fixups)
+ {
+ struct one_fixup *f = fixups;
+ fixups = fixups->next;
+ free (f);
+ }
+
+ if (changed_relocs)
+ elf_section_data (sec)->relocs = internal_relocs;
+ else if (free_relocs != NULL)
+ free (free_relocs);
+
+ if (changed_contents)
+ elf_section_data (sec)->this_hdr.contents = contents;
+ else if (free_contents != NULL)
+ {
+ if (! link_info->keep_memory)
+ free (free_contents);
+ else
+ {
+ /* Cache the section contents for elf_link_input_bfd. */
+ elf_section_data (sec)->this_hdr.contents = contents;
+ }
+ }
+
+ if (free_extsyms != NULL)
+ {
+ if (! link_info->keep_memory)
+ free (free_extsyms);
+ else
+ {
+ /* Cache the symbols for elf_link_input_bfd. */
+ symtab_hdr->contents = extsyms;
+ }
+ }
+
+ *again = changed_contents || changed_relocs;
+ return true;
+
+ error_return:
+ if (free_relocs != NULL)
+ free (free_relocs);
+ if (free_contents != NULL)
+ free (free_contents);
+ if (free_extsyms != NULL)
+ free (free_extsyms);
+ return false;
+}
+
+/* Handle an IA-64 specific section when reading an object file. This
+ is called when elfcode.h finds a section with an unknown type. */
+
+static boolean
+elf64_ia64_section_from_shdr (abfd, hdr, name)
+ bfd *abfd;
+ Elf64_Internal_Shdr *hdr;
+ char *name;
+{
+ asection *newsect;
+
+ /* There ought to be a place to keep ELF backend specific flags, but
+ at the moment there isn't one. We just keep track of the
+ sections by their name, instead. Fortunately, the ABI gives
+ suggested names for all the MIPS specific sections, so we will
+ probably get away with this. */
+ switch (hdr->sh_type)
+ {
+ case SHT_IA_64_UNWIND:
+ if (strcmp (name, ELF_STRING_ia64_unwind) != 0)
+ return false;
+ break;
+
+ case SHT_IA_64_EXT:
+ if (strcmp (name, ELF_STRING_ia64_archext) != 0)
+ return false;
+ break;
+
+ default:
+ return false;
+ }
+
+ if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name))
+ return false;
+ newsect = hdr->bfd_section;
+
+ if (hdr->sh_flags & SHF_IA_64_SHORT)
+ newsect->flags |= SEC_SMALL_DATA;
+
+ return true;
+}
+
+/* Set the correct type for an IA-64 ELF section. We do this by the
+ section name, which is a hack, but ought to work. */
+
+static boolean
+elf64_ia64_fake_sections (abfd, hdr, sec)
+ bfd *abfd;
+ Elf64_Internal_Shdr *hdr;
+ asection *sec;
+{
+ register const char *name;
+
+ name = bfd_get_section_name (abfd, sec);
+
+ if (strcmp (name, ELF_STRING_ia64_unwind) == 0)
+ hdr->sh_type = SHT_IA_64_UNWIND;
+ else if (strcmp (name, ELF_STRING_ia64_archext) == 0)
+ hdr->sh_type = SHT_IA_64_EXT;
+ else if (strcmp (name, ".reloc") == 0)
+ /*
+ * This is an ugly, but unfortunately necessary hack that is
+ * needed when producing EFI binaries on IA-64. It tells
+ * elf.c:elf_fake_sections() not to consider ".reloc" as a section
+ * containing ELF relocation info. We need this hack in order to
+ * be able to generate ELF binaries that can be translated into
+ * EFI applications (which are essentially COFF objects). Those
+ * files contain a COFF ".reloc" section inside an ELF64 object,
+ * which would normally cause BFD to segfault because it would
+ * attempt to interpret this section as containing relocation
+ * entries for section "oc". With this hack enabled, ".reloc"
+ * will be treated as a normal data section, which will avoid the
+ * segfault. However, you won't be able to create an ELF64 binary
+ * with a section named "oc" that needs relocations, but that's
+ * the kind of ugly side-effects you get when detecting section
+ * types based on their names... In practice, this limitation is
+ * unlikely to bite.
+ */
+ hdr->sh_type = SHT_PROGBITS;
+
+ if (sec->flags & SEC_SMALL_DATA)
+ hdr->sh_flags |= SHF_IA_64_SHORT;
+
+ return true;
+}
+
+/* Hook called by the linker routine which adds symbols from an object
+ file. We use it to put .comm items in .sbss, and not .bss. */
+
+static boolean
+elf64_ia64_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ const Elf_Internal_Sym *sym;
+ const char **namep;
+ flagword *flagsp;
+ asection **secp;
+ bfd_vma *valp;
+{
+ if (sym->st_shndx == SHN_COMMON
+ && !info->relocateable
+ && sym->st_size <= bfd_get_gp_size (abfd))
+ {
+ /* Common symbols less than or equal to -G nn bytes are
+ automatically put into .sbss. */
+
+ asection *scomm = bfd_get_section_by_name (abfd, ".scommon");
+
+ if (scomm == NULL)
+ {
+ scomm = bfd_make_section (abfd, ".scommon");
+ if (scomm == NULL
+ || !bfd_set_section_flags (abfd, scomm, (SEC_ALLOC
+ | SEC_IS_COMMON
+ | SEC_LINKER_CREATED)))
+ return false;
+ }
+
+ *secp = scomm;
+ *valp = sym->st_size;
+ }
+
+ return true;
+}
+
+/* Return the number of additional phdrs we will need. */
+
+static int
+elf64_ia64_additional_program_headers (abfd)
+ bfd *abfd;
+{
+ asection *s;
+ int ret = 0;
+
+ /* See if we need a PT_IA_64_ARCHEXT segment. */
+ s = bfd_get_section_by_name (abfd, ELF_STRING_ia64_archext);
+ if (s && (s->flags & SEC_LOAD))
+ ++ret;
+
+ /* See if we need a PT_IA_64_UNWIND segment. */
+ s = bfd_get_section_by_name (abfd, ELF_STRING_ia64_unwind);
+ if (s && (s->flags & SEC_LOAD))
+ ++ret;
+
+ return ret;
+}
+
+static boolean
+elf64_ia64_modify_segment_map (abfd)
+ bfd *abfd;
+{
+ struct elf_segment_map *m, **pm;
+ asection *s;
+
+ /* If we need a PT_IA_64_ARCHEXT segment, it must come before
+ all PT_LOAD segments. */
+ s = bfd_get_section_by_name (abfd, ELF_STRING_ia64_archext);
+ if (s && (s->flags & SEC_LOAD))
+ {
+ for (m = elf_tdata (abfd)->segment_map; m != NULL; m = m->next)
+ if (m->p_type == PT_IA_64_ARCHEXT)
+ break;
+ if (m == NULL)
+ {
+ m = (struct elf_segment_map *) bfd_zalloc (abfd, sizeof *m);
+ if (m == NULL)
+ return false;
+
+ m->p_type = PT_IA_64_ARCHEXT;
+ m->count = 1;
+ m->sections[0] = s;
+
+ /* We want to put it after the PHDR and INTERP segments. */
+ pm = &elf_tdata (abfd)->segment_map;
+ while (*pm != NULL
+ && ((*pm)->p_type == PT_PHDR
+ || (*pm)->p_type == PT_INTERP))
+ pm = &(*pm)->next;
+
+ m->next = *pm;
+ *pm = m;
+ }
+ }
+
+ /* Install the PT_IA_64_UNWIND segment, if needed. */
+ s = bfd_get_section_by_name (abfd, ELF_STRING_ia64_unwind);
+ if (s && (s->flags & SEC_LOAD))
+ {
+ for (m = elf_tdata (abfd)->segment_map; m != NULL; m = m->next)
+ if (m->p_type == PT_IA_64_UNWIND)
+ break;
+ if (m == NULL)
+ {
+ m = (struct elf_segment_map *) bfd_zalloc (abfd, sizeof *m);
+ if (m == NULL)
+ return false;
+
+ m->p_type = PT_IA_64_UNWIND;
+ m->count = 1;
+ m->sections[0] = s;
+ m->next = NULL;
+
+ /* We want to put it last. */
+ pm = &elf_tdata (abfd)->segment_map;
+ while (*pm != NULL)
+ pm = &(*pm)->next;
+ *pm = m;
+ }
+ }
+
+ /* Turn on PF_IA_64_NORECOV if needed. This involves traversing all of
+ the input sections for each output section in the segment and testing
+ for SHF_IA_64_NORECOV on each. */
+ for (m = elf_tdata (abfd)->segment_map; m != NULL; m = m->next)
+ if (m->p_type == PT_LOAD)
+ {
+ int i;
+ for (i = m->count - 1; i >= 0; --i)
+ {
+ struct bfd_link_order *order = m->sections[i]->link_order_head;
+ while (order)
+ {
+ if (order->type == bfd_indirect_link_order)
+ {
+ asection *is = order->u.indirect.section;
+ bfd_vma flags = elf_section_data(is)->this_hdr.sh_flags;
+ if (flags & SHF_IA_64_NORECOV)
+ {
+ m->p_flags |= PF_IA_64_NORECOV;
+ goto found;
+ }
+ }
+ order = order->next;
+ }
+ }
+ found:;
+ }
+
+ return true;
+}
+
+
+/* According to the Tahoe assembler spec, all labels starting with a
+ '.' are local. */
+
+static boolean
+elf64_ia64_is_local_label_name (abfd, name)
+ bfd *abfd;
+ const char *name;
+{
+ return name[0] == '.';
+}
+
+/* Should we do dynamic things to this symbol? */
+
+static boolean
+elf64_ia64_dynamic_symbol_p (h, info)
+ struct elf_link_hash_entry *h;
+ struct bfd_link_info *info;
+{
+ if (h == NULL)
+ return false;
+
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ if (h->dynindx == -1)
+ return false;
+
+ if (h->root.type == bfd_link_hash_undefweak
+ || h->root.type == bfd_link_hash_defweak)
+ return true;
+
+ if ((info->shared && !info->symbolic)
+ || ((h->elf_link_hash_flags
+ & (ELF_LINK_HASH_DEF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR))
+ == (ELF_LINK_HASH_DEF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR)))
+ return true;
+
+ return false;
+}
+
+static boolean
+elf64_ia64_local_hash_table_init (ht, abfd, new)
+ struct elf64_ia64_local_hash_table *ht;
+ bfd *abfd;
+ new_hash_entry_func new;
+{
+ memset (ht, 0, sizeof(*ht));
+ return bfd_hash_table_init (&ht->root, new);
+}
+
+static struct bfd_hash_entry*
+elf64_ia64_new_loc_hash_entry (entry, table, string)
+ struct bfd_hash_entry *entry;
+ struct bfd_hash_table *table;
+ const char *string;
+{
+ struct elf64_ia64_local_hash_entry *ret;
+ ret = (struct elf64_ia64_local_hash_entry *) entry;
+
+ /* Allocate the structure if it has not already been allocated by a
+ subclass. */
+ if (!ret)
+ ret = bfd_hash_allocate (table, sizeof (*ret));
+
+ if (!ret)
+ return 0;
+
+ /* Initialize our local data. All zeros, and definitely easier
+ than setting a handful of bit fields. */
+ memset (ret, 0, sizeof(*ret));
+
+ /* Call the allocation method of the superclass. */
+ ret = ((struct elf64_ia64_local_hash_entry *)
+ bfd_hash_newfunc ((struct bfd_hash_entry *) ret, table, string));
+
+ return (struct bfd_hash_entry *) ret;
+}
+
+static struct bfd_hash_entry*
+elf64_ia64_new_elf_hash_entry (entry, table, string)
+ struct bfd_hash_entry *entry;
+ struct bfd_hash_table *table;
+ const char *string;
+{
+ struct elf64_ia64_link_hash_entry *ret;
+ ret = (struct elf64_ia64_link_hash_entry *) entry;
+
+ /* Allocate the structure if it has not already been allocated by a
+ subclass. */
+ if (!ret)
+ ret = bfd_hash_allocate (table, sizeof (*ret));
+
+ if (!ret)
+ return 0;
+
+ /* Initialize our local data. All zeros, and definitely easier
+ than setting a handful of bit fields. */
+ memset (ret, 0, sizeof(*ret));
+
+ /* Call the allocation method of the superclass. */
+ ret = ((struct elf64_ia64_link_hash_entry *)
+ _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,
+ table, string));
+
+ return (struct bfd_hash_entry *) ret;
+}
+
+static void
+elf64_ia64_hash_copy_indirect (xdir, xind)
+ struct elf_link_hash_entry *xdir, *xind;
+{
+ struct elf64_ia64_link_hash_entry *dir, *ind;
+
+ dir = (struct elf64_ia64_link_hash_entry *)xdir;
+ ind = (struct elf64_ia64_link_hash_entry *)xind;
+
+ /* Copy down any references that we may have already seen to the
+ symbol which just became indirect. */
+
+ dir->root.elf_link_hash_flags |=
+ (ind->root.elf_link_hash_flags
+ & (ELF_LINK_HASH_REF_DYNAMIC
+ | ELF_LINK_HASH_REF_REGULAR
+ | ELF_LINK_HASH_REF_REGULAR_NONWEAK));
+
+ /* Copy over the got and plt data. This would have been done
+ by check_relocs. */
+
+ if (dir->info == NULL)
+ {
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+
+ dir->info = dyn_i = ind->info;
+ ind->info = NULL;
+
+ /* Fix up the dyn_sym_info pointers to the global symbol. */
+ for (; dyn_i; dyn_i = dyn_i->next)
+ dyn_i->h = &dir->root;
+ }
+ BFD_ASSERT (ind->info == NULL);
+
+ /* Copy over the dynindx. */
+
+ if (dir->root.dynindx == -1)
+ {
+ dir->root.dynindx = ind->root.dynindx;
+ dir->root.dynstr_index = ind->root.dynstr_index;
+ ind->root.dynindx = -1;
+ ind->root.dynstr_index = 0;
+ }
+ BFD_ASSERT (ind->root.dynindx == -1);
+}
+
+static void
+elf64_ia64_hash_hide_symbol (xh)
+ struct elf_link_hash_entry *xh;
+{
+ struct elf64_ia64_link_hash_entry *h;
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+
+ h = (struct elf64_ia64_link_hash_entry *)xh;
+
+ h->root.elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
+ h->root.dynindx = -1;
+
+ for (dyn_i = h->info; dyn_i; dyn_i = dyn_i->next)
+ dyn_i->want_plt2 = 0;
+}
+
+/* Create the derived linker hash table. The IA-64 ELF port uses this
+ derived hash table to keep information specific to the IA-64 ElF
+ linker (without using static variables). */
+
+static struct bfd_link_hash_table*
+elf64_ia64_hash_table_create (abfd)
+ bfd *abfd;
+{
+ struct elf64_ia64_link_hash_table *ret;
+
+ ret = bfd_alloc (abfd, sizeof (*ret));
+ if (!ret)
+ return 0;
+ if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
+ elf64_ia64_new_elf_hash_entry))
+ {
+ bfd_release (abfd, ret);
+ return 0;
+ }
+
+ if (!elf64_ia64_local_hash_table_init (&ret->loc_hash_table, abfd,
+ elf64_ia64_new_loc_hash_entry))
+ return 0;
+ return &ret->root.root;
+}
+
+/* Look up an entry in a Alpha ELF linker hash table. */
+
+static INLINE struct elf64_ia64_local_hash_entry *
+elf64_ia64_local_hash_lookup(table, string, create, copy)
+ struct elf64_ia64_local_hash_table *table;
+ const char *string;
+ boolean create, copy;
+{
+ return ((struct elf64_ia64_local_hash_entry *)
+ bfd_hash_lookup (&table->root, string, create, copy));
+}
+
+/* Traverse both local and global hash tables. */
+
+struct elf64_ia64_dyn_sym_traverse_data
+{
+ boolean (*func) PARAMS ((struct elf64_ia64_dyn_sym_info *, PTR));
+ PTR data;
+};
+
+static boolean
+elf64_ia64_global_dyn_sym_thunk (xentry, xdata)
+ struct bfd_hash_entry *xentry;
+ PTR xdata;
+{
+ struct elf64_ia64_link_hash_entry *entry
+ = (struct elf64_ia64_link_hash_entry *) xentry;
+ struct elf64_ia64_dyn_sym_traverse_data *data
+ = (struct elf64_ia64_dyn_sym_traverse_data *) xdata;
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+
+ for (dyn_i = entry->info; dyn_i; dyn_i = dyn_i->next)
+ if (! (*data->func) (dyn_i, data->data))
+ return false;
+ return true;
+}
+
+static boolean
+elf64_ia64_local_dyn_sym_thunk (xentry, xdata)
+ struct bfd_hash_entry *xentry;
+ PTR xdata;
+{
+ struct elf64_ia64_local_hash_entry *entry
+ = (struct elf64_ia64_local_hash_entry *) xentry;
+ struct elf64_ia64_dyn_sym_traverse_data *data
+ = (struct elf64_ia64_dyn_sym_traverse_data *) xdata;
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+
+ for (dyn_i = entry->info; dyn_i; dyn_i = dyn_i->next)
+ if (! (*data->func) (dyn_i, data->data))
+ return false;
+ return true;
+}
+
+static void
+elf64_ia64_dyn_sym_traverse (ia64_info, func, data)
+ struct elf64_ia64_link_hash_table *ia64_info;
+ boolean (*func) PARAMS ((struct elf64_ia64_dyn_sym_info *, PTR));
+ PTR data;
+{
+ struct elf64_ia64_dyn_sym_traverse_data xdata;
+
+ xdata.func = func;
+ xdata.data = data;
+
+ elf_link_hash_traverse (&ia64_info->root,
+ elf64_ia64_global_dyn_sym_thunk, &xdata);
+ bfd_hash_traverse (&ia64_info->loc_hash_table.root,
+ elf64_ia64_local_dyn_sym_thunk, &xdata);
+}
+
+static boolean
+elf64_ia64_create_dynamic_sections (abfd, info)
+ bfd *abfd;
+ struct bfd_link_info *info;
+{
+ struct elf64_ia64_link_hash_table *ia64_info;
+ struct elf_link_hash_entry *h;
+ asection *s;
+
+ if (! _bfd_elf_create_dynamic_sections (abfd, info))
+ return false;
+
+ ia64_info = elf64_ia64_hash_table (info);
+
+ ia64_info->plt_sec = bfd_get_section_by_name (abfd, ".plt");
+ ia64_info->got_sec = bfd_get_section_by_name (abfd, ".got");
+
+ {
+ flagword flags = bfd_get_section_flags (abfd, ia64_info->got_sec);
+ bfd_set_section_flags (abfd, ia64_info->got_sec, SEC_SMALL_DATA | flags);
+ }
+
+ if (!get_pltoff (abfd, info, ia64_info))
+ return false;
+
+ s = bfd_make_section(abfd, ".rela.IA_64.pltoff");
+ if (s == NULL
+ || !bfd_set_section_flags (abfd, s, (SEC_ALLOC | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED
+ | SEC_READONLY))
+ || !bfd_set_section_alignment (abfd, s, 3))
+ return false;
+ ia64_info->rel_pltoff_sec = s;
+
+ s = bfd_make_section(abfd, ".rela.got");
+ if (s == NULL
+ || !bfd_set_section_flags (abfd, s, (SEC_ALLOC | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED
+ | SEC_READONLY))
+ || !bfd_set_section_alignment (abfd, s, 3))
+ return false;
+ ia64_info->rel_got_sec = s;
+
+ return true;
+}
+
+/* Find and/or create a descriptor for dynamic symbol info. This will
+ vary based on global or local symbol, and the addend to the reloc. */
+
+static struct elf64_ia64_dyn_sym_info *
+get_dyn_sym_info (ia64_info, h, abfd, rel, create)
+ struct elf64_ia64_link_hash_table *ia64_info;
+ struct elf_link_hash_entry *h;
+ bfd *abfd;
+ const Elf_Internal_Rela *rel;
+ boolean create;
+{
+ struct elf64_ia64_dyn_sym_info **pp;
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ bfd_vma addend = rel ? rel->r_addend : 0;
+
+ if (h)
+ pp = &((struct elf64_ia64_link_hash_entry *)h)->info;
+ else
+ {
+ struct elf64_ia64_local_hash_entry *loc_h;
+ char *addr_name;
+ size_t len;
+
+ /* Construct a string for use in the elf64_ia64_local_hash_table.
+ The name describes what was once anonymous memory. */
+
+ len = sizeof(void*)*2 + 1 + sizeof(bfd_vma)*4 + 1 + 1;
+ len += 10; /* %p slop */
+
+ addr_name = alloca (len);
+ sprintf (addr_name, "%p:%lx", abfd, ELF64_R_SYM (rel->r_info));
+
+ /* Collect the canonical entry data for this address. */
+ loc_h = elf64_ia64_local_hash_lookup (&ia64_info->loc_hash_table,
+ addr_name, create, create);
+ BFD_ASSERT (loc_h);
+
+ pp = &loc_h->info;
+ }
+
+ for (dyn_i = *pp; dyn_i && dyn_i->addend != addend; dyn_i = *pp)
+ pp = &dyn_i->next;
+
+ if (dyn_i == NULL && create)
+ {
+ dyn_i = (struct elf64_ia64_dyn_sym_info *)
+ bfd_zalloc (abfd, sizeof *dyn_i);
+ *pp = dyn_i;
+ dyn_i->addend = addend;
+ }
+
+ return dyn_i;
+}
+
+static asection *
+get_got (abfd, info, ia64_info)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ struct elf64_ia64_link_hash_table *ia64_info;
+{
+ asection *got, *srel;
+ bfd *dynobj;
+
+ got = ia64_info->got_sec;
+ if (!got)
+ {
+ flagword flags;
+
+ dynobj = ia64_info->root.dynobj;
+ if (!dynobj)
+ ia64_info->root.dynobj = dynobj = abfd;
+ if (!_bfd_elf_create_got_section (dynobj, info))
+ return 0;
+
+ got = bfd_get_section_by_name (dynobj, ".got");
+ BFD_ASSERT (got);
+ ia64_info->got_sec = got;
+
+ flags = bfd_get_section_flags (abfd, got);
+ bfd_set_section_flags (abfd, got, SEC_SMALL_DATA | flags);
+ }
+
+ return got;
+}
+
+/* Create function descriptor section (.opd). This section is called .opd
+ because it contains "official prodecure descriptors". The "official"
+ refers to the fact that these descriptors are used when taking the address
+ of a procedure, thus ensuring a unique address for each procedure. */
+
+static asection *
+get_fptr (abfd, info, ia64_info)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ struct elf64_ia64_link_hash_table *ia64_info;
+{
+ asection *fptr;
+ bfd *dynobj;
+
+ fptr = ia64_info->fptr_sec;
+ if (!fptr)
+ {
+ dynobj = ia64_info->root.dynobj;
+ if (!dynobj)
+ ia64_info->root.dynobj = dynobj = abfd;
+
+ fptr = bfd_make_section (dynobj, ".opd");
+ if (!fptr
+ || !bfd_set_section_flags (dynobj, fptr,
+ (SEC_ALLOC
+ | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_READONLY
+ | SEC_LINKER_CREATED))
+ || !bfd_set_section_alignment (abfd, fptr, 4))
+ {
+ BFD_ASSERT (0);
+ return NULL;
+ }
+
+ ia64_info->fptr_sec = fptr;
+ }
+
+ return fptr;
+}
+
+static asection *
+get_pltoff (abfd, info, ia64_info)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ struct elf64_ia64_link_hash_table *ia64_info;
+{
+ asection *pltoff;
+ bfd *dynobj;
+
+ pltoff = ia64_info->pltoff_sec;
+ if (!pltoff)
+ {
+ dynobj = ia64_info->root.dynobj;
+ if (!dynobj)
+ ia64_info->root.dynobj = dynobj = abfd;
+
+ pltoff = bfd_make_section (dynobj, ELF_STRING_ia64_pltoff);
+ if (!pltoff
+ || !bfd_set_section_flags (dynobj, pltoff,
+ (SEC_ALLOC
+ | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_SMALL_DATA
+ | SEC_LINKER_CREATED))
+ || !bfd_set_section_alignment (abfd, pltoff, 4))
+ {
+ BFD_ASSERT (0);
+ return NULL;
+ }
+
+ ia64_info->pltoff_sec = pltoff;
+ }
+
+ return pltoff;
+}
+
+static asection *
+get_reloc_section (abfd, ia64_info, sec, create)
+ bfd *abfd;
+ struct elf64_ia64_link_hash_table *ia64_info;
+ asection *sec;
+ boolean create;
+{
+ const char *srel_name;
+ asection *srel;
+ bfd *dynobj;
+
+ srel_name = (bfd_elf_string_from_elf_section
+ (abfd, elf_elfheader(abfd)->e_shstrndx,
+ elf_section_data(sec)->rel_hdr.sh_name));
+ if (srel_name == NULL)
+ return NULL;
+
+ BFD_ASSERT ((strncmp (srel_name, ".rela", 5) == 0
+ && strcmp (bfd_get_section_name (abfd, sec),
+ srel_name+5) == 0)
+ || (strncmp (srel_name, ".rel", 4) == 0
+ && strcmp (bfd_get_section_name (abfd, sec),
+ srel_name+4) == 0));
+
+ dynobj = ia64_info->root.dynobj;
+ if (!dynobj)
+ ia64_info->root.dynobj = dynobj = abfd;
+
+ srel = bfd_get_section_by_name (dynobj, srel_name);
+ if (srel == NULL && create)
+ {
+ srel = bfd_make_section (dynobj, srel_name);
+ if (srel == NULL
+ || !bfd_set_section_flags (dynobj, srel,
+ (SEC_ALLOC
+ | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED
+ | SEC_READONLY))
+ || !bfd_set_section_alignment (dynobj, srel, 3))
+ return NULL;
+ }
+
+ return srel;
+}
+
+static boolean
+count_dyn_reloc (abfd, dyn_i, srel, type)
+ bfd *abfd;
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ asection *srel;
+ int type;
+{
+ struct elf64_ia64_dyn_reloc_entry *rent;
+
+ for (rent = dyn_i->reloc_entries; rent; rent = rent->next)
+ if (rent->srel == srel && rent->type == type)
+ break;
+
+ if (!rent)
+ {
+ rent = (struct elf64_ia64_dyn_reloc_entry *)
+ bfd_alloc (abfd, sizeof (*rent));
+ if (!rent)
+ return false;
+
+ rent->next = dyn_i->reloc_entries;
+ rent->srel = srel;
+ rent->type = type;
+ rent->count = 0;
+ dyn_i->reloc_entries = rent;
+ }
+ rent->count++;
+
+ return true;
+}
+
+static boolean
+elf64_ia64_check_relocs (abfd, info, sec, relocs)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ asection *sec;
+ const Elf_Internal_Rela *relocs;
+{
+ struct elf64_ia64_link_hash_table *ia64_info;
+ const Elf_Internal_Rela *relend;
+ Elf_Internal_Shdr *symtab_hdr;
+ const Elf_Internal_Rela *rel;
+ asection *got, *fptr, *srel;
+
+ if (info->relocateable)
+ return true;
+
+ symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+ ia64_info = elf64_ia64_hash_table (info);
+
+ got = fptr = srel = NULL;
+
+ relend = relocs + sec->reloc_count;
+ for (rel = relocs; rel < relend; ++rel)
+ {
+ enum {
+ NEED_GOT = 1,
+ NEED_FPTR = 2,
+ NEED_PLTOFF = 4,
+ NEED_MIN_PLT = 8,
+ NEED_FULL_PLT = 16,
+ NEED_DYNREL = 32,
+ NEED_LTOFF_FPTR = 64,
+ };
+
+ struct elf_link_hash_entry *h = NULL;
+ unsigned long r_symndx = ELF64_R_SYM (rel->r_info);
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ int need_entry;
+ boolean maybe_dynamic;
+ int dynrel_type;
+
+ if (r_symndx >= symtab_hdr->sh_info)
+ {
+ /* We're dealing with a global symbol -- find its hash entry
+ and mark it as being referenced. */
+ long indx = r_symndx - symtab_hdr->sh_info;
+ h = elf_sym_hashes (abfd)[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;
+
+ h->elf_link_hash_flags |= ELF_LINK_HASH_REF_REGULAR;
+ }
+
+ /* We can only get preliminary data on whether a symbol is
+ locally or externally defined, as not all of the input files
+ have yet been processed. Do something with what we know, as
+ this may help reduce memory usage and processing time later. */
+ maybe_dynamic = false;
+ if (h && ((info->shared && ! info->symbolic)
+ || ! (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)
+ || h->root.type == bfd_link_hash_defweak))
+ maybe_dynamic = true;
+
+ need_entry = 0;
+ switch (ELF64_R_TYPE (rel->r_info))
+ {
+ case R_IA64_TPREL22:
+ case R_IA64_TPREL64MSB:
+ case R_IA64_TPREL64LSB:
+ case R_IA64_LTOFF_TP22:
+ return false;
+
+ case R_IA64_LTOFF_FPTR22:
+ case R_IA64_LTOFF_FPTR64I:
+ case R_IA64_LTOFF_FPTR64MSB:
+ case R_IA64_LTOFF_FPTR64LSB:
+ need_entry = NEED_FPTR | NEED_GOT | NEED_LTOFF_FPTR;
+ break;
+
+ case R_IA64_FPTR64I:
+ case R_IA64_FPTR32MSB:
+ case R_IA64_FPTR32LSB:
+ case R_IA64_FPTR64MSB:
+ case R_IA64_FPTR64LSB:
+ if (info->shared || h)
+ need_entry = NEED_FPTR | NEED_DYNREL;
+ else
+ need_entry = NEED_FPTR;
+ dynrel_type = R_IA64_FPTR64LSB;
+ break;
+
+ case R_IA64_LTOFF22:
+ case R_IA64_LTOFF22X:
+ case R_IA64_LTOFF64I:
+ need_entry = NEED_GOT;
+ break;
+
+ case R_IA64_PLTOFF22:
+ case R_IA64_PLTOFF64I:
+ case R_IA64_PLTOFF64MSB:
+ case R_IA64_PLTOFF64LSB:
+ need_entry = NEED_PLTOFF;
+ if (h)
+ {
+ if (maybe_dynamic)
+ need_entry |= NEED_MIN_PLT;
+ }
+ else
+ {
+ (*info->callbacks->warning)
+ (info, _("@pltoff reloc against local symbol"), 0,
+ abfd, 0, 0);
+ }
+ break;
+
+ case R_IA64_PCREL21B:
+ case R_IA64_PCREL60B:
+ /* Depending on where this symbol is defined, we may or may not
+ need a full plt entry. Only skip if we know we'll not need
+ the entry -- static or symbolic, and the symbol definition
+ has already been seen. */
+ if (maybe_dynamic && rel->r_addend == 0)
+ need_entry = NEED_FULL_PLT;
+ break;
+
+ case R_IA64_IMM14:
+ case R_IA64_IMM22:
+ case R_IA64_IMM64:
+ case R_IA64_DIR32MSB:
+ case R_IA64_DIR32LSB:
+ case R_IA64_DIR64MSB:
+ case R_IA64_DIR64LSB:
+ /* Shared objects will always need at least a REL relocation. */
+ if (info->shared || maybe_dynamic)
+ need_entry = NEED_DYNREL;
+ dynrel_type = R_IA64_DIR64LSB;
+ break;
+
+ case R_IA64_PCREL22:
+ case R_IA64_PCREL64I:
+ case R_IA64_PCREL32MSB:
+ case R_IA64_PCREL32LSB:
+ case R_IA64_PCREL64MSB:
+ case R_IA64_PCREL64LSB:
+ if (maybe_dynamic)
+ need_entry = NEED_DYNREL;
+ dynrel_type = R_IA64_PCREL64LSB;
+ break;
+ }
+
+ if (!need_entry)
+ continue;
+
+ if ((need_entry & NEED_FPTR) != 0
+ && rel->r_addend)
+ {
+ (*info->callbacks->warning)
+ (info, _("non-zero addend in @fptr reloc"), 0,
+ abfd, 0, 0);
+ }
+
+ dyn_i = get_dyn_sym_info (ia64_info, h, abfd, rel, true);
+
+ /* Record whether or not this is a local symbol. */
+ dyn_i->h = h;
+
+ /* Create what's needed. */
+ if (need_entry & NEED_GOT)
+ {
+ if (!got)
+ {
+ got = get_got (abfd, info, ia64_info);
+ if (!got)
+ return false;
+ }
+ dyn_i->want_got = 1;
+ }
+ if (need_entry & NEED_FPTR)
+ {
+ if (!fptr)
+ {
+ fptr = get_fptr (abfd, info, ia64_info);
+ if (!fptr)
+ return false;
+ }
+
+ /* FPTRs for shared libraries are allocated by the dynamic
+ linker. Make sure this local symbol will appear in the
+ dynamic symbol table. */
+ if (!h && info->shared)
+ {
+ if (! (_bfd_elf64_link_record_local_dynamic_symbol
+ (info, abfd, r_symndx)))
+ return false;
+ }
+
+ dyn_i->want_fptr = 1;
+ }
+ if (need_entry & NEED_LTOFF_FPTR)
+ dyn_i->want_ltoff_fptr = 1;
+ if (need_entry & (NEED_MIN_PLT | NEED_FULL_PLT))
+ {
+ if (!ia64_info->root.dynobj)
+ ia64_info->root.dynobj = abfd;
+ h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT;
+ dyn_i->want_plt = 1;
+ }
+ if (need_entry & NEED_FULL_PLT)
+ dyn_i->want_plt2 = 1;
+ if (need_entry & NEED_PLTOFF)
+ dyn_i->want_pltoff = 1;
+ if ((need_entry & NEED_DYNREL) && (sec->flags & SEC_ALLOC))
+ {
+ if (!srel)
+ {
+ srel = get_reloc_section (abfd, ia64_info, sec, true);
+ if (!srel)
+ return false;
+ }
+ if (!count_dyn_reloc (abfd, dyn_i, srel, dynrel_type))
+ return false;
+ }
+ }
+
+ return true;
+}
+
+struct elf64_ia64_allocate_data
+{
+ struct bfd_link_info *info;
+ bfd_size_type ofs;
+};
+
+/* For cleanliness, and potentially faster dynamic loading, allocate
+ external GOT entries first. */
+
+static boolean
+allocate_global_data_got (dyn_i, data)
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ PTR data;
+{
+ struct elf64_ia64_allocate_data *x = (struct elf64_ia64_allocate_data *)data;
+
+ if (dyn_i->want_got
+ && ! dyn_i->want_fptr
+ && elf64_ia64_dynamic_symbol_p (dyn_i->h, x->info))
+ {
+ dyn_i->got_offset = x->ofs;
+ x->ofs += 8;
+ }
+ return true;
+}
+
+/* Next, allocate all the GOT entries used by LTOFF_FPTR relocs. */
+
+static boolean
+allocate_global_fptr_got (dyn_i, data)
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ PTR data;
+{
+ struct elf64_ia64_allocate_data *x = (struct elf64_ia64_allocate_data *)data;
+
+ if (dyn_i->want_got
+ && dyn_i->want_fptr
+ && elf64_ia64_dynamic_symbol_p (dyn_i->h, x->info))
+ {
+ dyn_i->got_offset = x->ofs;
+ x->ofs += 8;
+ }
+ return true;
+}
+
+/* Lastly, allocate all the GOT entries for local data. */
+
+static boolean
+allocate_local_got (dyn_i, data)
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ PTR data;
+{
+ struct elf64_ia64_allocate_data *x = (struct elf64_ia64_allocate_data *)data;
+
+ if (dyn_i->want_got
+ && ! elf64_ia64_dynamic_symbol_p (dyn_i->h, x->info))
+ {
+ dyn_i->got_offset = x->ofs;
+ x->ofs += 8;
+ }
+ return true;
+}
+
+/* Search for the index of a global symbol in it's defining object file. */
+
+static unsigned long
+global_sym_index (h)
+ struct elf_link_hash_entry *h;
+{
+ struct elf_link_hash_entry **p;
+ bfd *obj;
+
+ BFD_ASSERT (h->root.type == bfd_link_hash_defined
+ || h->root.type == bfd_link_hash_defweak);
+
+ obj = h->root.u.def.section->owner;
+ for (p = elf_sym_hashes (obj); *p != h; ++p)
+ continue;
+
+ return p - elf_sym_hashes (obj) + elf_tdata (obj)->symtab_hdr.sh_info;
+}
+
+/* Allocate function descriptors. We can do these for every function
+ in a main executable that is not exported. */
+
+static boolean
+allocate_fptr (dyn_i, data)
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ PTR data;
+{
+ struct elf64_ia64_allocate_data *x = (struct elf64_ia64_allocate_data *)data;
+
+ if (dyn_i->want_fptr)
+ {
+ struct elf_link_hash_entry *h = dyn_i->h;
+
+ if (h)
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ if (x->info->shared)
+ {
+ if (h && h->dynindx == -1)
+ {
+ BFD_ASSERT ((h->root.type == bfd_link_hash_defined)
+ || (h->root.type == bfd_link_hash_defweak));
+
+ if (!_bfd_elf64_link_record_local_dynamic_symbol
+ (x->info, h->root.u.def.section->owner,
+ global_sym_index (h)))
+ return false;
+ }
+
+ dyn_i->want_fptr = 0;
+ }
+ else if (h == NULL || h->dynindx == -1)
+ {
+ dyn_i->fptr_offset = x->ofs;
+ x->ofs += 16;
+ }
+ else
+ dyn_i->want_fptr = 0;
+ }
+ return true;
+}
+
+/* Allocate all the minimal PLT entries. */
+
+static boolean
+allocate_plt_entries (dyn_i, data)
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ PTR data;
+{
+ struct elf64_ia64_allocate_data *x = (struct elf64_ia64_allocate_data *)data;
+
+ if (dyn_i->want_plt)
+ {
+ struct elf_link_hash_entry *h = dyn_i->h;
+
+ if (h)
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ /* ??? Versioned symbols seem to lose ELF_LINK_HASH_NEEDS_PLT. */
+ if (elf64_ia64_dynamic_symbol_p (h, x->info))
+ {
+ bfd_size_type offset = x->ofs;
+ if (offset == 0)
+ offset = PLT_HEADER_SIZE;
+ dyn_i->plt_offset = offset;
+ x->ofs = offset + PLT_MIN_ENTRY_SIZE;
+
+ dyn_i->want_pltoff = 1;
+ }
+ else
+ {
+ dyn_i->want_plt = 0;
+ dyn_i->want_plt2 = 0;
+ }
+ }
+ return true;
+}
+
+/* Allocate all the full PLT entries. */
+
+static boolean
+allocate_plt2_entries (dyn_i, data)
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ PTR data;
+{
+ struct elf64_ia64_allocate_data *x = (struct elf64_ia64_allocate_data *)data;
+
+ if (dyn_i->want_plt2)
+ {
+ struct elf_link_hash_entry *h = dyn_i->h;
+ bfd_size_type ofs = x->ofs;
+
+ dyn_i->plt2_offset = ofs;
+ x->ofs = ofs + PLT_FULL_ENTRY_SIZE;
+
+ 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;
+ dyn_i->h->plt.offset = ofs;
+ }
+ return true;
+}
+
+/* Allocate all the PLTOFF entries requested by relocations and
+ plt entries. We can't share space with allocated FPTR entries,
+ because the latter are not necessarily addressable by the GP.
+ ??? Relaxation might be able to determine that they are. */
+
+static boolean
+allocate_pltoff_entries (dyn_i, data)
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ PTR data;
+{
+ struct elf64_ia64_allocate_data *x = (struct elf64_ia64_allocate_data *)data;
+
+ if (dyn_i->want_pltoff)
+ {
+ dyn_i->pltoff_offset = x->ofs;
+ x->ofs += 16;
+ }
+ return true;
+}
+
+/* Allocate dynamic relocations for those symbols that turned out
+ to be dynamic. */
+
+static boolean
+allocate_dynrel_entries (dyn_i, data)
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ PTR data;
+{
+ struct elf64_ia64_allocate_data *x = (struct elf64_ia64_allocate_data *)data;
+ struct elf64_ia64_link_hash_table *ia64_info;
+ struct elf64_ia64_dyn_reloc_entry *rent;
+ boolean dynamic_symbol, shared;
+
+ ia64_info = elf64_ia64_hash_table (x->info);
+ dynamic_symbol = elf64_ia64_dynamic_symbol_p (dyn_i->h, x->info);
+ shared = x->info->shared;
+
+ /* Take care of the normal data relocations. */
+
+ for (rent = dyn_i->reloc_entries; rent; rent = rent->next)
+ {
+ switch (rent->type)
+ {
+ case R_IA64_FPTR64LSB:
+ /* Allocate one iff !want_fptr, which by this point will
+ be true only if we're actually allocating one statically
+ in the main executable. */
+ if (dyn_i->want_fptr)
+ continue;
+ break;
+ case R_IA64_PCREL64LSB:
+ if (!dynamic_symbol)
+ continue;
+ break;
+ case R_IA64_DIR64LSB:
+ if (!dynamic_symbol && !shared)
+ continue;
+ break;
+ }
+ rent->srel->_raw_size += sizeof (Elf64_External_Rela) * rent->count;
+ }
+
+ /* Take care of the GOT and PLT relocations. */
+
+ if (((dynamic_symbol || shared) && dyn_i->want_got)
+ || (dyn_i->want_ltoff_fptr && dyn_i->h && dyn_i->h->dynindx != -1))
+ ia64_info->rel_got_sec->_raw_size += sizeof (Elf64_External_Rela);
+
+ if (dyn_i->want_pltoff)
+ {
+ bfd_size_type t = 0;
+
+ /* Dynamic symbols get one IPLT relocation. Local symbols in
+ shared libraries get two REL relocations. Local symbols in
+ main applications get nothing. */
+ if (dynamic_symbol)
+ t = sizeof (Elf64_External_Rela);
+ else if (shared)
+ t = 2 * sizeof (Elf64_External_Rela);
+
+ ia64_info->rel_pltoff_sec->_raw_size += t;
+ }
+
+ return true;
+}
+
+static boolean
+elf64_ia64_adjust_dynamic_symbol (info, h)
+ struct bfd_link_info *info;
+ struct elf_link_hash_entry *h;
+{
+ /* ??? Undefined symbols with PLT entries should be re-defined
+ to be the PLT entry. */
+
+ /* If this is a weak symbol, and there is a real definition, the
+ processor independent code will have arranged for us to see the
+ real definition first, and we can just use the same value. */
+ if (h->weakdef != NULL)
+ {
+ BFD_ASSERT (h->weakdef->root.type == bfd_link_hash_defined
+ || h->weakdef->root.type == bfd_link_hash_defweak);
+ h->root.u.def.section = h->weakdef->root.u.def.section;
+ h->root.u.def.value = h->weakdef->root.u.def.value;
+ return true;
+ }
+
+ /* If this is a reference to a symbol defined by a dynamic object which
+ is not a function, we might allocate the symbol in our .dynbss section
+ and allocate a COPY dynamic relocation.
+
+ But IA-64 code is canonically PIC, so as a rule we can avoid this sort
+ of hackery. */
+
+ return true;
+}
+
+static boolean
+elf64_ia64_size_dynamic_sections (output_bfd, info)
+ bfd *output_bfd;
+ struct bfd_link_info *info;
+{
+ struct elf64_ia64_allocate_data data;
+ struct elf64_ia64_link_hash_table *ia64_info;
+ asection *sec;
+ bfd *dynobj;
+ boolean reltext = false;
+ boolean relplt = false;
+
+ dynobj = elf_hash_table(info)->dynobj;
+ ia64_info = elf64_ia64_hash_table (info);
+ BFD_ASSERT(dynobj != NULL);
+ data.info = info;
+
+ /* Set the contents of the .interp section to the interpreter. */
+ if (ia64_info->root.dynamic_sections_created
+ && !info->shared)
+ {
+ sec = bfd_get_section_by_name (dynobj, ".interp");
+ BFD_ASSERT (sec != NULL);
+ sec->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
+ sec->_raw_size = strlen (ELF_DYNAMIC_INTERPRETER) + 1;
+ }
+
+ /* DT_INIT and DT_FINI get function descriptors not raw code addresses.
+ Force their symbols to have pltoff entries so we can use those. */
+ if (ia64_info->root.dynamic_sections_created)
+ {
+ struct elf_link_hash_entry *h;
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+
+ if (info->init_function
+ && (h = elf_link_hash_lookup (elf_hash_table (info),
+ info->init_function, false,
+ false, false))
+ && (h->elf_link_hash_flags & (ELF_LINK_HASH_REF_REGULAR
+ | ELF_LINK_HASH_DEF_REGULAR)) != 0)
+ {
+ dyn_i = get_dyn_sym_info (ia64_info, h, output_bfd, NULL, true);
+ dyn_i->want_pltoff = 1;
+ }
+
+ if (info->fini_function
+ && (h = elf_link_hash_lookup (elf_hash_table (info),
+ info->fini_function, false,
+ false, false))
+ && (h->elf_link_hash_flags & (ELF_LINK_HASH_REF_REGULAR
+ | ELF_LINK_HASH_DEF_REGULAR)) != 0)
+ {
+ dyn_i = get_dyn_sym_info (ia64_info, h, output_bfd, NULL, true);
+ dyn_i->want_pltoff = 1;
+ }
+ }
+
+ /* Allocate the GOT entries. */
+
+ if (ia64_info->got_sec)
+ {
+ data.ofs = 0;
+ elf64_ia64_dyn_sym_traverse (ia64_info, allocate_global_data_got, &data);
+ elf64_ia64_dyn_sym_traverse (ia64_info, allocate_global_fptr_got, &data);
+ elf64_ia64_dyn_sym_traverse (ia64_info, allocate_local_got, &data);
+ ia64_info->got_sec->_raw_size = data.ofs;
+ }
+
+ /* Allocate the FPTR entries. */
+
+ if (ia64_info->fptr_sec)
+ {
+ data.ofs = 0;
+ elf64_ia64_dyn_sym_traverse (ia64_info, allocate_fptr, &data);
+ ia64_info->fptr_sec->_raw_size = data.ofs;
+ }
+
+ /* Now that we've seen all of the input files, we can decide which
+ symbols need plt entries. Allocate the minimal PLT entries first.
+ We do this even though dynamic_sections_created may be false, because
+ this has the side-effect of clearing want_plt and want_plt2. */
+
+ data.ofs = 0;
+ elf64_ia64_dyn_sym_traverse (ia64_info, allocate_plt_entries, &data);
+
+ ia64_info->minplt_entries = 0;
+ if (data.ofs)
+ {
+ ia64_info->minplt_entries
+ = (data.ofs - PLT_HEADER_SIZE) / PLT_MIN_ENTRY_SIZE;
+ }
+
+ /* Align the pointer for the plt2 entries. */
+ data.ofs = (data.ofs + 31) & -32;
+
+ elf64_ia64_dyn_sym_traverse (ia64_info, allocate_plt2_entries, &data);
+ if (data.ofs != 0)
+ {
+ BFD_ASSERT (ia64_info->root.dynamic_sections_created);
+
+ ia64_info->plt_sec->_raw_size = data.ofs;
+
+ /* If we've got a .plt, we need some extra memory for the dynamic
+ linker. We stuff these in .got.plt. */
+ sec = bfd_get_section_by_name (dynobj, ".got.plt");
+ sec->_raw_size = 8 * PLT_RESERVED_WORDS;
+ }
+
+ /* Allocate the PLTOFF entries. */
+
+ if (ia64_info->pltoff_sec)
+ {
+ data.ofs = 0;
+ elf64_ia64_dyn_sym_traverse (ia64_info, allocate_pltoff_entries, &data);
+ ia64_info->pltoff_sec->_raw_size = data.ofs;
+ }
+
+ if (ia64_info->root.dynamic_sections_created)
+ {
+ /* Allocate space for the dynamic relocations that turned out to be
+ required. */
+
+ elf64_ia64_dyn_sym_traverse (ia64_info, allocate_dynrel_entries, &data);
+ }
+
+ /* We have now determined the sizes of the various dynamic sections.
+ Allocate memory for them. */
+ for (sec = dynobj->sections; sec != NULL; sec = sec->next)
+ {
+ boolean strip;
+
+ if (!(sec->flags & SEC_LINKER_CREATED))
+ continue;
+
+ /* If we don't need this section, strip it from the output file.
+ There were several sections primarily related to dynamic
+ linking that must be create before the linker maps input
+ sections to output sections. The linker does that before
+ bfd_elf_size_dynamic_sections is called, and it is that
+ function which decides whether anything needs to go into
+ these sections. */
+
+ strip = (sec->_raw_size == 0);
+
+ if (sec == ia64_info->got_sec)
+ strip = false;
+ else if (sec == ia64_info->rel_got_sec)
+ {
+ if (strip)
+ ia64_info->rel_got_sec = NULL;
+ else
+ /* We use the reloc_count field as a counter if we need to
+ copy relocs into the output file. */
+ sec->reloc_count = 0;
+ }
+ else if (sec == ia64_info->fptr_sec)
+ {
+ if (strip)
+ ia64_info->fptr_sec = NULL;
+ }
+ else if (sec == ia64_info->plt_sec)
+ {
+ if (strip)
+ ia64_info->plt_sec = NULL;
+ }
+ else if (sec == ia64_info->pltoff_sec)
+ {
+ if (strip)
+ ia64_info->pltoff_sec = NULL;
+ }
+ else if (sec == ia64_info->rel_pltoff_sec)
+ {
+ if (strip)
+ ia64_info->rel_pltoff_sec = NULL;
+ else
+ {
+ relplt = true;
+ /* We use the reloc_count field as a counter if we need to
+ copy relocs into the output file. */
+ sec->reloc_count = 0;
+ }
+ }
+ else
+ {
+ const char *name;
+
+ /* It's OK to base decisions on the section name, because none
+ of the dynobj section names depend upon the input files. */
+ name = bfd_get_section_name (dynobj, sec);
+
+ if (strcmp (name, ".got.plt") == 0)
+ strip = false;
+ else if (strncmp (name, ".rel", 4) == 0)
+ {
+ if (!strip)
+ {
+ const char *outname;
+ asection *target;
+
+ /* If this relocation section applies to a read only
+ section, then we probably need a DT_TEXTREL entry. */
+ outname = bfd_get_section_name (output_bfd,
+ sec->output_section);
+ if (outname[4] == 'a')
+ outname += 5;
+ else
+ outname += 4;
+
+ target = bfd_get_section_by_name (output_bfd, outname);
+ if (target != NULL
+ && (target->flags & SEC_READONLY) != 0
+ && (target->flags & SEC_ALLOC) != 0)
+ reltext = true;
+
+ /* We use the reloc_count field as a counter if we need to
+ copy relocs into the output file. */
+ sec->reloc_count = 0;
+ }
+ }
+ else
+ continue;
+ }
+
+ if (strip)
+ _bfd_strip_section_from_output (info, sec);
+ else
+ {
+ /* Allocate memory for the section contents. */
+ sec->contents = (bfd_byte *) bfd_zalloc(dynobj, sec->_raw_size);
+ if (sec->contents == NULL && sec->_raw_size != 0)
+ return false;
+ }
+ }
+
+ if (elf_hash_table (info)->dynamic_sections_created)
+ {
+ /* Add some entries to the .dynamic section. We fill in the values
+ later (in finish_dynamic_sections) but we must add the entries now
+ so that we get the correct size for the .dynamic section. */
+
+ if (!info->shared)
+ {
+ /* The DT_DEBUG entry is filled in by the dynamic linker and used
+ by the debugger. */
+ if (!bfd_elf64_add_dynamic_entry (info, DT_DEBUG, 0))
+ return false;
+ }
+
+ if (! bfd_elf64_add_dynamic_entry (info, DT_IA_64_PLT_RESERVE, 0))
+ return false;
+ if (! bfd_elf64_add_dynamic_entry (info, DT_PLTGOT, 0))
+ return false;
+
+ if (relplt)
+ {
+ if (! bfd_elf64_add_dynamic_entry (info, DT_PLTRELSZ, 0)
+ || ! bfd_elf64_add_dynamic_entry (info, DT_PLTREL, DT_RELA)
+ || ! bfd_elf64_add_dynamic_entry (info, DT_JMPREL, 0))
+ return false;
+ }
+
+ if (! bfd_elf64_add_dynamic_entry (info, DT_RELA, 0)
+ || ! bfd_elf64_add_dynamic_entry (info, DT_RELASZ, 0)
+ || ! bfd_elf64_add_dynamic_entry (info, DT_RELAENT,
+ sizeof(Elf64_External_Rela)))
+ return false;
+
+ if (reltext)
+ {
+ if (! bfd_elf64_add_dynamic_entry (info, DT_TEXTREL, 0))
+ return false;
+ }
+ }
+
+ /* ??? Perhaps force __gp local. */
+
+ return true;
+}
+
+static bfd_reloc_status_type
+elf64_ia64_install_value (abfd, hit_addr, val, r_type)
+ bfd *abfd;
+ bfd_byte *hit_addr;
+ bfd_vma val;
+ unsigned int r_type;
+{
+ const struct ia64_operand *op;
+ int bigendian = 0, shift = 0;
+ bfd_vma t0, t1, insn, dword;
+ enum ia64_opnd opnd;
+ const char *err;
+ size_t size = 8;
+
+ opnd = IA64_OPND_NIL;
+ switch (r_type)
+ {
+ case R_IA64_NONE:
+ case R_IA64_LDXMOV:
+ return bfd_reloc_ok;
+
+ /* Instruction relocations. */
+
+ case R_IA64_IMM14: opnd = IA64_OPND_IMM14; break;
+
+ case R_IA64_PCREL21F: opnd = IA64_OPND_TGT25; break;
+ case R_IA64_PCREL21M: opnd = IA64_OPND_TGT25b; break;
+ case R_IA64_PCREL60B: opnd = IA64_OPND_TGT64; break;
+ case R_IA64_PCREL21B:
+ case R_IA64_PCREL21BI:
+ opnd = IA64_OPND_TGT25c;
+ break;
+
+ case R_IA64_IMM22:
+ case R_IA64_GPREL22:
+ case R_IA64_LTOFF22:
+ case R_IA64_LTOFF22X:
+ case R_IA64_PLTOFF22:
+ case R_IA64_PCREL22:
+ case R_IA64_LTOFF_FPTR22:
+ opnd = IA64_OPND_IMM22;
+ break;
+
+ case R_IA64_IMM64:
+ case R_IA64_GPREL64I:
+ case R_IA64_LTOFF64I:
+ case R_IA64_PLTOFF64I:
+ case R_IA64_PCREL64I:
+ case R_IA64_FPTR64I:
+ case R_IA64_LTOFF_FPTR64I:
+ opnd = IA64_OPND_IMMU64;
+ break;
+
+ /* Data relocations. */
+
+ case R_IA64_DIR32MSB:
+ case R_IA64_GPREL32MSB:
+ case R_IA64_FPTR32MSB:
+ case R_IA64_PCREL32MSB:
+ case R_IA64_SEGREL32MSB:
+ case R_IA64_SECREL32MSB:
+ case R_IA64_LTV32MSB:
+ size = 4; bigendian = 1;
+ break;
+
+ case R_IA64_DIR32LSB:
+ case R_IA64_GPREL32LSB:
+ case R_IA64_FPTR32LSB:
+ case R_IA64_PCREL32LSB:
+ case R_IA64_SEGREL32LSB:
+ case R_IA64_SECREL32LSB:
+ case R_IA64_LTV32LSB:
+ size = 4; bigendian = 0;
+ break;
+
+ case R_IA64_DIR64MSB:
+ case R_IA64_GPREL64MSB:
+ case R_IA64_PLTOFF64MSB:
+ case R_IA64_FPTR64MSB:
+ case R_IA64_PCREL64MSB:
+ case R_IA64_LTOFF_FPTR64MSB:
+ case R_IA64_SEGREL64MSB:
+ case R_IA64_SECREL64MSB:
+ case R_IA64_LTV64MSB:
+ size = 8; bigendian = 1;
+ break;
+
+ case R_IA64_DIR64LSB:
+ case R_IA64_GPREL64LSB:
+ case R_IA64_PLTOFF64LSB:
+ case R_IA64_FPTR64LSB:
+ case R_IA64_PCREL64LSB:
+ case R_IA64_LTOFF_FPTR64LSB:
+ case R_IA64_SEGREL64LSB:
+ case R_IA64_SECREL64LSB:
+ case R_IA64_LTV64LSB:
+ size = 8; bigendian = 0;
+ break;
+
+ /* Unsupported / Dynamic relocations. */
+
+ case R_IA64_REL32MSB:
+ case R_IA64_REL32LSB:
+ case R_IA64_REL64MSB:
+ case R_IA64_REL64LSB:
+
+ case R_IA64_IPLTMSB:
+ case R_IA64_IPLTLSB:
+ case R_IA64_EPLTMSB:
+ case R_IA64_EPLTLSB:
+ case R_IA64_COPY:
+
+ case R_IA64_SEGBASE:
+
+ case R_IA64_TPREL22:
+ case R_IA64_TPREL64MSB:
+ case R_IA64_TPREL64LSB:
+ case R_IA64_LTOFF_TP22:
+
+ default:
+ return bfd_reloc_notsupported;
+ }
+
+ switch (opnd)
+ {
+ case IA64_OPND_IMMU64:
+ hit_addr -= (long) hit_addr & 0x3;
+ t0 = bfd_get_64 (abfd, hit_addr);
+ t1 = bfd_get_64 (abfd, hit_addr + 8);
+
+ /* tmpl/s: bits 0.. 5 in t0
+ slot 0: bits 5..45 in t0
+ slot 1: bits 46..63 in t0, bits 0..22 in t1
+ slot 2: bits 23..63 in t1 */
+
+ /* First, clear the bits that form the 64 bit constant. */
+ t0 &= ~(0x3ffffLL << 46);
+ t1 &= ~(0x7fffffLL
+ | (( (0x07fLL << 13) | (0x1ffLL << 27)
+ | (0x01fLL << 22) | (0x001LL << 21)
+ | (0x001LL << 36)) << 23));
+
+ t0 |= ((val >> 22) & 0x03ffffLL) << 46; /* 18 lsbs of imm41 */
+ t1 |= ((val >> 40) & 0x7fffffLL) << 0; /* 23 msbs of imm41 */
+ t1 |= ( (((val >> 0) & 0x07f) << 13) /* imm7b */
+ | (((val >> 7) & 0x1ff) << 27) /* imm9d */
+ | (((val >> 16) & 0x01f) << 22) /* imm5c */
+ | (((val >> 21) & 0x001) << 21) /* ic */
+ | (((val >> 63) & 0x001) << 36)) << 23; /* i */
+
+ bfd_put_64 (abfd, t0, hit_addr);
+ bfd_put_64 (abfd, t1, hit_addr + 8);
+ break;
+
+ case IA64_OPND_TGT64:
+ hit_addr -= (long) hit_addr & 0x3;
+ t0 = bfd_get_64 (abfd, hit_addr);
+ t1 = bfd_get_64 (abfd, hit_addr + 8);
+
+ /* tmpl/s: bits 0.. 5 in t0
+ slot 0: bits 5..45 in t0
+ slot 1: bits 46..63 in t0, bits 0..22 in t1
+ slot 2: bits 23..63 in t1 */
+
+ /* First, clear the bits that form the 64 bit constant. */
+ t0 &= ~(0x3ffffLL << 46);
+ t1 &= ~(0x7fffffLL
+ | ((1LL << 36 | 0xfffffLL << 13) << 23));
+
+ val >>= 4;
+ t0 |= ((val >> 20) & 0xffffLL) << 2 << 46; /* 16 lsbs of imm39 */
+ t1 |= ((val >> 36) & 0x7fffffLL) << 0; /* 23 msbs of imm39 */
+ t1 |= ((((val >> 0) & 0xfffffLL) << 13) /* imm20b */
+ | (((val >> 59) & 0x1LL) << 36)) << 23; /* i */
+
+ bfd_put_64 (abfd, t0, hit_addr);
+ bfd_put_64 (abfd, t1, hit_addr + 8);
+ break;
+
+ default:
+ switch ((long) hit_addr & 0x3)
+ {
+ case 0: shift = 5; break;
+ case 1: shift = 14; hit_addr += 3; break;
+ case 2: shift = 23; hit_addr += 6; break;
+ case 3: return bfd_reloc_notsupported; /* shouldn't happen... */
+ }
+ dword = bfd_get_64 (abfd, hit_addr);
+ insn = (dword >> shift) & 0x1ffffffffffLL;
+
+ op = elf64_ia64_operands + opnd;
+ err = (*op->insert) (op, val, &insn);
+ if (err)
+ return bfd_reloc_overflow;
+
+ dword &= ~(0x1ffffffffffLL << shift);
+ dword |= (insn << shift);
+ bfd_put_64 (abfd, dword, hit_addr);
+ break;
+
+ case IA64_OPND_NIL:
+ /* A data relocation. */
+ if (bigendian)
+ if (size == 4)
+ bfd_putb32 (val, hit_addr);
+ else
+ bfd_putb64 (val, hit_addr);
+ else
+ if (size == 4)
+ bfd_putl32 (val, hit_addr);
+ else
+ bfd_putl64 (val, hit_addr);
+ break;
+ }
+
+ return bfd_reloc_ok;
+}
+
+static void
+elf64_ia64_install_dyn_reloc (abfd, info, sec, srel, offset, type,
+ dynindx, addend)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ asection *sec;
+ asection *srel;
+ bfd_vma offset;
+ unsigned int type;
+ long dynindx;
+ bfd_vma addend;
+{
+ Elf_Internal_Rela outrel;
+
+ outrel.r_offset = (sec->output_section->vma
+ + sec->output_offset
+ + offset);
+
+ BFD_ASSERT (dynindx != -1);
+ outrel.r_info = ELF64_R_INFO (dynindx, type);
+ outrel.r_addend = addend;
+
+ if (elf_section_data (sec)->stab_info != NULL)
+ {
+ /* This may be NULL for linker-generated relocations, as it is
+ inconvenient to pass all the bits around. And this shouldn't
+ happen. */
+ BFD_ASSERT (info != NULL);
+
+ offset = (_bfd_stab_section_offset
+ (abfd, &elf_hash_table (info)->stab_info, sec,
+ &elf_section_data (sec)->stab_info, offset));
+ if (offset == (bfd_vma) -1)
+ {
+ /* Run for the hills. We shouldn't be outputting a relocation
+ for this. So do what everyone else does and output a no-op. */
+ outrel.r_info = ELF64_R_INFO (0, R_IA64_NONE);
+ outrel.r_addend = 0;
+ offset = 0;
+ }
+ outrel.r_offset = offset;
+ }
+
+ bfd_elf64_swap_reloca_out (abfd, &outrel,
+ ((Elf64_External_Rela *) srel->contents
+ + srel->reloc_count++));
+ BFD_ASSERT (sizeof(Elf64_External_Rela) * srel->reloc_count
+ <= srel->_cooked_size);
+}
+
+/* Store an entry for target address TARGET_ADDR in the linkage table
+ and return the gp-relative address of the linkage table entry. */
+
+static bfd_vma
+set_got_entry (abfd, info, dyn_i, dynindx, addend, value, dyn_r_type)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ long dynindx;
+ bfd_vma addend;
+ bfd_vma value;
+ unsigned int dyn_r_type;
+{
+ struct elf64_ia64_link_hash_table *ia64_info;
+ asection *got_sec;
+
+ ia64_info = elf64_ia64_hash_table (info);
+ got_sec = ia64_info->got_sec;
+
+ BFD_ASSERT ((dyn_i->got_offset & 7) == 0);
+
+ if (! dyn_i->got_done)
+ {
+ dyn_i->got_done = true;
+
+ /* Store the target address in the linkage table entry. */
+ bfd_put_64 (abfd, value, got_sec->contents + dyn_i->got_offset);
+
+ /* Install a dynamic relocation if needed. */
+ if (info->shared
+ || elf64_ia64_dynamic_symbol_p (dyn_i->h, info)
+ || (dynindx != -1 && dyn_r_type == R_IA64_FPTR64LSB))
+ {
+ if (dynindx == -1)
+ {
+ dyn_r_type = R_IA64_REL64LSB;
+ dynindx = 0;
+ addend = value;
+ }
+
+ if (bfd_big_endian (abfd))
+ {
+ switch (dyn_r_type)
+ {
+ case R_IA64_REL64LSB:
+ dyn_r_type = R_IA64_REL64MSB;
+ break;
+ case R_IA64_DIR64LSB:
+ dyn_r_type = R_IA64_DIR64MSB;
+ break;
+ case R_IA64_FPTR64LSB:
+ dyn_r_type = R_IA64_FPTR64MSB;
+ break;
+ default:
+ BFD_ASSERT (false);
+ break;
+ }
+ }
+
+ elf64_ia64_install_dyn_reloc (abfd, NULL, got_sec,
+ ia64_info->rel_got_sec,
+ dyn_i->got_offset, dyn_r_type,
+ dynindx, addend);
+ }
+ }
+
+ /* Return the address of the linkage table entry. */
+ value = (got_sec->output_section->vma
+ + got_sec->output_offset
+ + dyn_i->got_offset);
+
+ return value;
+}
+
+/* Fill in a function descriptor consisting of the function's code
+ address and its global pointer. Return the descriptor's address. */
+
+static bfd_vma
+set_fptr_entry (abfd, info, dyn_i, value)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ bfd_vma value;
+{
+ struct elf64_ia64_link_hash_table *ia64_info;
+ asection *fptr_sec;
+
+ ia64_info = elf64_ia64_hash_table (info);
+ fptr_sec = ia64_info->fptr_sec;
+
+ if (!dyn_i->fptr_done)
+ {
+ dyn_i->fptr_done = 1;
+
+ /* Fill in the function descriptor. */
+ bfd_put_64 (abfd, value, fptr_sec->contents + dyn_i->fptr_offset);
+ bfd_put_64 (abfd, _bfd_get_gp_value (abfd),
+ fptr_sec->contents + dyn_i->fptr_offset + 8);
+ }
+
+ /* Return the descriptor's address. */
+ value = (fptr_sec->output_section->vma
+ + fptr_sec->output_offset
+ + dyn_i->fptr_offset);
+
+ return value;
+}
+
+/* Fill in a PLTOFF entry consisting of the function's code address
+ and its global pointer. Return the descriptor's address. */
+
+static bfd_vma
+set_pltoff_entry (abfd, info, dyn_i, value, is_plt)
+ bfd *abfd;
+ struct bfd_link_info *info;
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ bfd_vma value;
+ boolean is_plt;
+{
+ struct elf64_ia64_link_hash_table *ia64_info;
+ asection *pltoff_sec;
+
+ ia64_info = elf64_ia64_hash_table (info);
+ pltoff_sec = ia64_info->pltoff_sec;
+
+ /* Don't do anything if this symbol uses a real PLT entry. In
+ that case, we'll fill this in during finish_dynamic_symbol. */
+ if ((! dyn_i->want_plt || is_plt)
+ && !dyn_i->pltoff_done)
+ {
+ /* Fill in the function descriptor. */
+ bfd_put_64 (abfd, value, pltoff_sec->contents + dyn_i->pltoff_offset);
+ bfd_put_64 (abfd, _bfd_get_gp_value (abfd),
+ pltoff_sec->contents + dyn_i->pltoff_offset + 8);
+
+ /* Install dynamic relocations if needed. */
+ if (!is_plt && info->shared)
+ {
+ unsigned int dyn_r_type;
+
+ if (bfd_big_endian (abfd))
+ dyn_r_type = R_IA64_REL64MSB;
+ else
+ dyn_r_type = R_IA64_REL64LSB;
+
+ elf64_ia64_install_dyn_reloc (abfd, NULL, pltoff_sec,
+ ia64_info->rel_pltoff_sec,
+ dyn_i->pltoff_offset,
+ dyn_r_type, 0, 0);
+ elf64_ia64_install_dyn_reloc (abfd, NULL, pltoff_sec,
+ ia64_info->rel_pltoff_sec,
+ dyn_i->pltoff_offset + 8,
+ dyn_r_type, 0, 0);
+ }
+
+ dyn_i->pltoff_done = 1;
+ }
+
+ /* Return the descriptor's address. */
+ value = (pltoff_sec->output_section->vma
+ + pltoff_sec->output_offset
+ + dyn_i->pltoff_offset);
+
+ return value;
+}
+
+static boolean
+elf64_ia64_final_link (abfd, info)
+ bfd *abfd;
+ struct bfd_link_info *info;
+{
+ struct elf64_ia64_link_hash_table *ia64_info;
+ ia64_info = elf64_ia64_hash_table (info);
+
+ /* Make sure we've got ourselves a nice fat __gp value. */
+ if (!info->relocateable)
+ {
+ bfd_vma min_vma = (bfd_vma) -1, max_vma = 0;
+ bfd_vma min_short_vma = min_vma, max_short_vma = 0;
+ struct elf_link_hash_entry *gp;
+ bfd_vma gp_val;
+ asection *os;
+
+ /* Find the min and max vma of all sections marked short. Also
+ collect min and max vma of any type, for use in selecting a
+ nice gp. */
+ for (os = abfd->sections; os ; os = os->next)
+ {
+ bfd_vma lo, hi;
+
+ if ((os->flags & SEC_ALLOC) == 0)
+ continue;
+
+ lo = os->vma;
+ hi = os->vma + os->_raw_size;
+ if (hi < lo)
+ hi = (bfd_vma) -1;
+
+ if (min_vma > lo)
+ min_vma = lo;
+ if (max_vma < hi)
+ max_vma = hi;
+ if (os->flags & SEC_SMALL_DATA)
+ {
+ if (min_short_vma > lo)
+ min_short_vma = lo;
+ if (max_short_vma < hi)
+ max_short_vma = hi;
+ }
+ }
+
+ /* See if the user wants to force a value. */
+ gp = elf_link_hash_lookup (elf_hash_table (info), "__gp", false,
+ false, false);
+
+ if (gp
+ && (gp->root.type == bfd_link_hash_defined
+ || gp->root.type == bfd_link_hash_defweak))
+ {
+ asection *gp_sec = gp->root.u.def.section;
+ gp_val = (gp->root.u.def.value
+ + gp_sec->output_section->vma
+ + gp_sec->output_offset);
+ }
+ else
+ {
+ /* Pick a sensible value. */
+
+ asection *got_sec = ia64_info->got_sec;
+
+ /* Start with just the address of the .got. */
+ if (got_sec)
+ gp_val = got_sec->output_section->vma;
+ else if (max_short_vma != 0)
+ gp_val = min_short_vma;
+ else
+ gp_val = min_vma;
+
+ /* If it is possible to address the entire image, but we
+ don't with the choice above, adjust. */
+ if (max_vma - min_vma < 0x400000
+ && max_vma - gp_val <= 0x200000
+ && gp_val - min_vma > 0x200000)
+ gp_val = min_vma + 0x200000;
+ else if (max_short_vma != 0)
+ {
+ /* If we don't cover all the short data, adjust. */
+ if (max_short_vma - gp_val >= 0x200000)
+ gp_val = min_short_vma + 0x200000;
+
+ /* If we're addressing stuff past the end, adjust back. */
+ if (gp_val > max_vma)
+ gp_val = max_vma - 0x200000 + 8;
+ }
+ }
+
+ /* Validate whether all SHF_IA_64_SHORT sections are within
+ range of the chosen GP. */
+
+ if (max_short_vma != 0)
+ {
+ if (max_short_vma - min_short_vma >= 0x400000)
+ {
+ (*_bfd_error_handler)
+ (_("%s: short data segment overflowed (0x%lx >= 0x400000)"),
+ bfd_get_filename (abfd),
+ (unsigned long)(max_short_vma - min_short_vma));
+ return false;
+ }
+ else if ((gp_val > min_short_vma
+ && gp_val - min_short_vma > 0x200000)
+ || (gp_val < max_short_vma
+ && max_short_vma - gp_val >= 0x200000))
+ {
+ (*_bfd_error_handler)
+ (_("%s: __gp does not cover short data segment"),
+ bfd_get_filename (abfd));
+ return false;
+ }
+ }
+
+ _bfd_set_gp_value (abfd, gp_val);
+ }
+
+ /* Tricky bits. DT_INIT and DT_FINI use a pltoff entry, which is
+ normally initialized in finish_dynamic_sections. Except that
+ we need all non-plt pltoff entries to be initialized before
+ finish_dynamic_symbols. This because the array of relocations
+ used for plt entries (aka DT_JMPREL) begins after all the
+ non-plt pltoff relocations. If the order gets confused, we
+ munge either the array or the array base. */
+ if (ia64_info->root.dynamic_sections_created)
+ {
+ struct elf_link_hash_entry *h;
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ bfd_vma addr;
+
+ if (info->init_function
+ && (h = elf_link_hash_lookup (elf_hash_table (info),
+ info->init_function, false,
+ false, false))
+ && (h->elf_link_hash_flags & (ELF_LINK_HASH_REF_REGULAR
+ | ELF_LINK_HASH_DEF_REGULAR)) != 0)
+ {
+ dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, false);
+ addr = (h->root.u.def.section->output_section->vma
+ + h->root.u.def.section->output_offset
+ + h->root.u.def.value);
+ (void) set_pltoff_entry (abfd, info, dyn_i, addr, false);
+ }
+
+ if (info->fini_function
+ && (h = elf_link_hash_lookup (elf_hash_table (info),
+ info->fini_function, false,
+ false, false))
+ && (h->elf_link_hash_flags & (ELF_LINK_HASH_REF_REGULAR
+ | ELF_LINK_HASH_DEF_REGULAR)) != 0)
+ {
+ dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, false);
+ addr = (h->root.u.def.section->output_section->vma
+ + h->root.u.def.section->output_offset
+ + h->root.u.def.value);
+ (void) set_pltoff_entry (abfd, info, dyn_i, addr, false);
+ }
+ }
+
+ /* Invoke the regular ELF backend linker to do all the work. */
+ return bfd_elf64_bfd_final_link (abfd, info);
+}
+
+static boolean
+elf64_ia64_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;
+{
+ struct elf64_ia64_link_hash_table *ia64_info;
+ Elf_Internal_Shdr *symtab_hdr;
+ Elf_Internal_Rela *rel;
+ Elf_Internal_Rela *relend;
+ asection *srel;
+ boolean ret_val = true; /* for non-fatal errors */
+ bfd_vma gp_val;
+
+ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
+ ia64_info = elf64_ia64_hash_table (info);
+
+ /* Infect various flags from the input section to the output section. */
+ if (info->relocateable)
+ {
+ bfd_vma flags;
+
+ flags = elf_section_data(input_section)->this_hdr.sh_flags;
+ flags &= SHF_IA_64_NORECOV;
+
+ elf_section_data(input_section->output_section)
+ ->this_hdr.sh_flags |= flags;
+ }
+
+ gp_val = _bfd_get_gp_value (output_bfd);
+ srel = get_reloc_section (input_bfd, ia64_info, input_section, false);
+
+ rel = relocs;
+ relend = relocs + input_section->reloc_count;
+ for (; rel < relend; ++rel)
+ {
+ struct elf_link_hash_entry *h;
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ bfd_reloc_status_type r;
+ reloc_howto_type *howto;
+ unsigned long r_symndx;
+ Elf_Internal_Sym *sym;
+ unsigned int r_type;
+ bfd_vma value;
+ asection *sym_sec;
+ bfd_byte *hit_addr;
+ boolean dynamic_symbol_p;
+ boolean undef_weak_ref;
+
+ r_type = ELF64_R_TYPE (rel->r_info);
+ if (r_type > R_IA64_MAX_RELOC_CODE)
+ {
+ (*_bfd_error_handler)
+ (_("%s: unknown relocation type %d"),
+ bfd_get_filename (input_bfd), (int)r_type);
+ bfd_set_error (bfd_error_bad_value);
+ ret_val = false;
+ continue;
+ }
+ howto = lookup_howto (r_type);
+ r_symndx = ELF64_R_SYM (rel->r_info);
+
+ if (info->relocateable)
+ {
+ /* This is a relocateable link. We don't have to change
+ anything, unless the reloc is against a section symbol,
+ in which case we have to adjust according to where the
+ section symbol winds up in the output section. */
+ if (r_symndx < symtab_hdr->sh_info)
+ {
+ sym = local_syms + r_symndx;
+ if (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
+ {
+ sym_sec = local_sections[r_symndx];
+ rel->r_addend += sym_sec->output_offset;
+ }
+ }
+ continue;
+ }
+
+ /* This is a final link. */
+
+ h = NULL;
+ sym = NULL;
+ sym_sec = NULL;
+ undef_weak_ref = false;
+
+ if (r_symndx < symtab_hdr->sh_info)
+ {
+ /* Reloc against local symbol. */
+ sym = local_syms + r_symndx;
+ sym_sec = local_sections[r_symndx];
+ value = (sym_sec->output_section->vma
+ + sym_sec->output_offset
+ + sym->st_value);
+ }
+ else
+ {
+ long indx;
+
+ /* 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;
+
+ 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 (info->shared && !info->symbolic
+ && !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;
+ ret_val = false;
+ continue;
+ }
+ }
+
+ hit_addr = contents + rel->r_offset;
+ value += rel->r_addend;
+ dynamic_symbol_p = elf64_ia64_dynamic_symbol_p (h, info);
+
+ switch (r_type)
+ {
+ case R_IA64_NONE:
+ case R_IA64_LDXMOV:
+ continue;
+
+ case R_IA64_IMM14:
+ case R_IA64_IMM22:
+ case R_IA64_IMM64:
+ case R_IA64_DIR32MSB:
+ case R_IA64_DIR32LSB:
+ case R_IA64_DIR64MSB:
+ case R_IA64_DIR64LSB:
+ /* Install a dynamic relocation for this reloc. */
+ if ((dynamic_symbol_p || info->shared)
+ && (input_section->flags & SEC_ALLOC) != 0)
+ {
+ unsigned int dyn_r_type;
+ long dynindx;
+
+ BFD_ASSERT (srel != NULL);
+
+ /* If we don't need dynamic symbol lookup, find a
+ matching RELATIVE relocation. */
+ dyn_r_type = r_type;
+ if (dynamic_symbol_p)
+ dynindx = h->dynindx;
+ else
+ {
+ switch (r_type)
+ {
+ case R_IA64_DIR32MSB:
+ dyn_r_type = R_IA64_REL32MSB;
+ break;
+ case R_IA64_DIR32LSB:
+ dyn_r_type = R_IA64_REL32LSB;
+ break;
+ case R_IA64_DIR64MSB:
+ dyn_r_type = R_IA64_REL64MSB;
+ break;
+ case R_IA64_DIR64LSB:
+ dyn_r_type = R_IA64_REL64LSB;
+ break;
+
+ default:
+ /* We can't represent this without a dynamic symbol.
+ Adjust the relocation to be against an output
+ section symbol, which are always present in the
+ dynamic symbol table. */
+ /* ??? People shouldn't be doing non-pic code in
+ shared libraries. Hork. */
+ (*_bfd_error_handler)
+ (_("%s: linking non-pic code in a shared library"),
+ bfd_get_filename (input_bfd));
+ ret_val = false;
+ continue;
+ }
+ dynindx = 0;
+ }
+
+ elf64_ia64_install_dyn_reloc (output_bfd, info, input_section,
+ srel, rel->r_offset, dyn_r_type,
+ dynindx, rel->r_addend);
+ }
+ /* FALLTHRU */
+
+ case R_IA64_LTV32MSB:
+ case R_IA64_LTV32LSB:
+ case R_IA64_LTV64MSB:
+ case R_IA64_LTV64LSB:
+ r = elf64_ia64_install_value (output_bfd, hit_addr, value, r_type);
+ break;
+
+ case R_IA64_GPREL22:
+ case R_IA64_GPREL64I:
+ case R_IA64_GPREL32MSB:
+ case R_IA64_GPREL32LSB:
+ case R_IA64_GPREL64MSB:
+ case R_IA64_GPREL64LSB:
+ if (dynamic_symbol_p)
+ {
+ (*_bfd_error_handler)
+ (_("%s: @gprel relocation against dynamic symbol %s"),
+ bfd_get_filename (input_bfd), h->root.root.string);
+ ret_val = false;
+ continue;
+ }
+ value -= gp_val;
+ r = elf64_ia64_install_value (output_bfd, hit_addr, value, r_type);
+ break;
+
+ case R_IA64_LTOFF22:
+ case R_IA64_LTOFF22X:
+ case R_IA64_LTOFF64I:
+ dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false);
+ value = set_got_entry (input_bfd, info, dyn_i, (h ? h->dynindx : -1),
+ rel->r_addend, value, R_IA64_DIR64LSB);
+ value -= gp_val;
+ r = elf64_ia64_install_value (output_bfd, hit_addr, value, r_type);
+ break;
+
+ case R_IA64_PLTOFF22:
+ case R_IA64_PLTOFF64I:
+ case R_IA64_PLTOFF64MSB:
+ case R_IA64_PLTOFF64LSB:
+ dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false);
+ value = set_pltoff_entry (output_bfd, info, dyn_i, value, false);
+ value -= gp_val;
+ r = elf64_ia64_install_value (output_bfd, hit_addr, value, r_type);
+ break;
+
+ case R_IA64_FPTR64I:
+ case R_IA64_FPTR32MSB:
+ case R_IA64_FPTR32LSB:
+ case R_IA64_FPTR64MSB:
+ case R_IA64_FPTR64LSB:
+ dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false);
+ if (dyn_i->want_fptr)
+ {
+ if (!undef_weak_ref)
+ value = set_fptr_entry (output_bfd, info, dyn_i, value);
+ }
+ else
+ {
+ long dynindx;
+
+ /* Otherwise, we expect the dynamic linker to create
+ the entry. */
+
+ if (h)
+ {
+ if (h->dynindx != -1)
+ dynindx = h->dynindx;
+ else
+ dynindx = (_bfd_elf_link_lookup_local_dynindx
+ (info, h->root.u.def.section->owner,
+ global_sym_index (h)));
+ }
+ else
+ {
+ dynindx = (_bfd_elf_link_lookup_local_dynindx
+ (info, input_bfd, r_symndx));
+ }
+
+ elf64_ia64_install_dyn_reloc (output_bfd, info, input_section,
+ srel, rel->r_offset, r_type,
+ dynindx, rel->r_addend);
+ value = 0;
+ }
+
+ r = elf64_ia64_install_value (output_bfd, hit_addr, value, r_type);
+ break;
+
+ case R_IA64_LTOFF_FPTR22:
+ case R_IA64_LTOFF_FPTR64I:
+ case R_IA64_LTOFF_FPTR64MSB:
+ case R_IA64_LTOFF_FPTR64LSB:
+ {
+ long dynindx;
+
+ dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false);
+ if (dyn_i->want_fptr)
+ {
+ BFD_ASSERT (h == NULL || h->dynindx == -1)
+ if (!undef_weak_ref)
+ value = set_fptr_entry (output_bfd, info, dyn_i, value);
+ dynindx = -1;
+ }
+ else
+ {
+ /* Otherwise, we expect the dynamic linker to create
+ the entry. */
+ if (h)
+ {
+ if (h->dynindx != -1)
+ dynindx = h->dynindx;
+ else
+ dynindx = (_bfd_elf_link_lookup_local_dynindx
+ (info, h->root.u.def.section->owner,
+ global_sym_index (h)));
+ }
+ else
+ dynindx = (_bfd_elf_link_lookup_local_dynindx
+ (info, input_bfd, r_symndx));
+ value = 0;
+ }
+
+ value = set_got_entry (output_bfd, info, dyn_i, dynindx,
+ rel->r_addend, value, R_IA64_FPTR64LSB);
+ value -= gp_val;
+ r = elf64_ia64_install_value (output_bfd, hit_addr, value, r_type);
+ }
+ break;
+
+ case R_IA64_PCREL32MSB:
+ case R_IA64_PCREL32LSB:
+ case R_IA64_PCREL64MSB:
+ case R_IA64_PCREL64LSB:
+ /* Install a dynamic relocation for this reloc. */
+ if (dynamic_symbol_p)
+ {
+ BFD_ASSERT (srel != NULL);
+
+ elf64_ia64_install_dyn_reloc (output_bfd, info, input_section,
+ srel, rel->r_offset, r_type,
+ h->dynindx, rel->r_addend);
+ }
+ goto finish_pcrel;
+
+ case R_IA64_PCREL21BI:
+ case R_IA64_PCREL21F:
+ case R_IA64_PCREL21M:
+ /* ??? These two are only used for speculation fixup code.
+ They should never be dynamic. */
+ if (dynamic_symbol_p)
+ {
+ (*_bfd_error_handler)
+ (_("%s: dynamic relocation against speculation fixup"),
+ bfd_get_filename (input_bfd));
+ ret_val = false;
+ continue;
+ }
+ if (undef_weak_ref)
+ {
+ (*_bfd_error_handler)
+ (_("%s: speculation fixup against undefined weak symbol"),
+ bfd_get_filename (input_bfd));
+ ret_val = false;
+ continue;
+ }
+ goto finish_pcrel;
+
+ case R_IA64_PCREL21B:
+ case R_IA64_PCREL60B:
+ /* We should have created a PLT entry for any dynamic symbol. */
+ dyn_i = NULL;
+ if (h)
+ dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, false);
+
+ if (dyn_i && dyn_i->want_plt2)
+ {
+ /* Should have caught this earlier. */
+ BFD_ASSERT (rel->r_addend == 0);
+
+ value = (ia64_info->plt_sec->output_section->vma
+ + ia64_info->plt_sec->output_offset
+ + dyn_i->plt2_offset);
+ }
+ else
+ {
+ /* Since there's no PLT entry, Validate that this is
+ locally defined. */
+ BFD_ASSERT (undef_weak_ref || sym_sec->output_section != NULL);
+
+ /* If the symbol is undef_weak, we shouldn't be trying
+ to call it. There's every chance that we'd wind up
+ with an out-of-range fixup here. Don't bother setting
+ any value at all. */
+ if (undef_weak_ref)
+ continue;
+ }
+ goto finish_pcrel;
+
+ case R_IA64_PCREL22:
+ case R_IA64_PCREL64I:
+ finish_pcrel:
+ /* Make pc-relative. */
+ value -= (input_section->output_section->vma
+ + input_section->output_offset
+ + rel->r_offset) & ~ (bfd_vma) 0x3;
+ r = elf64_ia64_install_value (output_bfd, hit_addr, value, r_type);
+ break;
+
+ case R_IA64_SEGREL32MSB:
+ case R_IA64_SEGREL32LSB:
+ case R_IA64_SEGREL64MSB:
+ case R_IA64_SEGREL64LSB:
+ {
+ struct elf_segment_map *m;
+ Elf_Internal_Phdr *p;
+
+ /* Find the segment that contains the output_section. */
+ for (m = elf_tdata (output_bfd)->segment_map,
+ p = elf_tdata (output_bfd)->phdr;
+ m != NULL;
+ m = m->next, p++)
+ {
+ int i;
+ for (i = m->count - 1; i >= 0; i--)
+ if (m->sections[i] == sym_sec->output_section)
+ break;
+ if (i >= 0)
+ break;
+ }
+
+ if (m == NULL)
+ {
+ /* If the input section was discarded from the output, then
+ do nothing. */
+
+ if (bfd_is_abs_section (sym_sec->output_section))
+ r = bfd_reloc_ok;
+ else
+ r = bfd_reloc_notsupported;
+ }
+ else
+ {
+ /* The VMA of the segment is the vaddr of the associated
+ program header. */
+ if (value > p->p_vaddr)
+ value -= p->p_vaddr;
+ else
+ value = 0;
+ r = elf64_ia64_install_value (output_bfd, hit_addr, value,
+ r_type);
+ }
+ break;
+ }
+
+ case R_IA64_SECREL32MSB:
+ case R_IA64_SECREL32LSB:
+ case R_IA64_SECREL64MSB:
+ case R_IA64_SECREL64LSB:
+ /* Make output-section relative. */
+ if (value > input_section->output_section->vma)
+ value -= input_section->output_section->vma;
+ else
+ value = 0;
+ r = elf64_ia64_install_value (output_bfd, hit_addr, value, r_type);
+ break;
+
+ case R_IA64_SEGBASE:
+
+ case R_IA64_REL32MSB:
+ case R_IA64_REL32LSB:
+ case R_IA64_REL64MSB:
+ case R_IA64_REL64LSB:
+
+ case R_IA64_IPLTMSB:
+ case R_IA64_IPLTLSB:
+ case R_IA64_EPLTMSB:
+ case R_IA64_EPLTLSB:
+ case R_IA64_COPY:
+
+ case R_IA64_TPREL22:
+ case R_IA64_TPREL64MSB:
+ case R_IA64_TPREL64LSB:
+ case R_IA64_LTOFF_TP22:
+ default:
+ r = bfd_reloc_notsupported;
+ break;
+ }
+
+ switch (r)
+ {
+ case bfd_reloc_ok:
+ break;
+
+ case bfd_reloc_undefined:
+ /* This can happen for global table relative relocs if
+ __gp is undefined. This is a panic situation so we
+ don't try to continue. */
+ (*info->callbacks->undefined_symbol)
+ (info, "__gp", input_bfd, input_section, rel->r_offset, 1);
+ return false;
+
+ case bfd_reloc_notsupported:
+ {
+ const char *name;
+
+ if (h)
+ name = h->root.root.string;
+ else
+ {
+ name = bfd_elf_string_from_elf_section (input_bfd,
+ symtab_hdr->sh_link,
+ sym->st_name);
+ if (name == NULL)
+ return false;
+ if (*name == '\0')
+ name = bfd_section_name (input_bfd, input_section);
+ }
+ if (!(*info->callbacks->warning) (info, _("unsupported reloc"),
+ name, input_bfd,
+ input_section, rel->r_offset))
+ return false;
+ ret_val = false;
+ }
+ break;
+
+ case bfd_reloc_dangerous:
+ case bfd_reloc_outofrange:
+ case bfd_reloc_overflow:
+ default:
+ {
+ const char *name;
+
+ if (h)
+ name = h->root.root.string;
+ else
+ {
+ name = bfd_elf_string_from_elf_section (input_bfd,
+ symtab_hdr->sh_link,
+ sym->st_name);
+ if (name == NULL)
+ return false;
+ if (*name == '\0')
+ name = bfd_section_name (input_bfd, input_section);
+ }
+ if (!(*info->callbacks->reloc_overflow) (info, name,
+ howto->name, 0,
+ input_bfd,
+ input_section,
+ rel->r_offset))
+ return false;
+ ret_val = false;
+ }
+ break;
+ }
+ }
+
+ return ret_val;
+}
+
+static boolean
+elf64_ia64_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 elf64_ia64_link_hash_table *ia64_info;
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+
+ ia64_info = elf64_ia64_hash_table (info);
+ dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, false);
+
+ /* Fill in the PLT data, if required. */
+ if (dyn_i && dyn_i->want_plt)
+ {
+ Elf_Internal_Rela outrel;
+ bfd_byte *loc;
+ asection *plt_sec;
+ bfd_vma plt_addr, pltoff_addr, gp_val, index;
+ Elf64_External_Rela *rel;
+
+ gp_val = _bfd_get_gp_value (output_bfd);
+
+ /* Initialize the minimal PLT entry. */
+
+ index = (dyn_i->plt_offset - PLT_HEADER_SIZE) / PLT_MIN_ENTRY_SIZE;
+ plt_sec = ia64_info->plt_sec;
+ loc = plt_sec->contents + dyn_i->plt_offset;
+
+ memcpy (loc, plt_min_entry, PLT_MIN_ENTRY_SIZE);
+ elf64_ia64_install_value (output_bfd, loc, index, R_IA64_IMM22);
+ elf64_ia64_install_value (output_bfd, loc+2, -dyn_i->plt_offset,
+ R_IA64_PCREL21B);
+
+ plt_addr = (plt_sec->output_section->vma
+ + plt_sec->output_offset
+ + dyn_i->plt_offset);
+ pltoff_addr = set_pltoff_entry (output_bfd, info, dyn_i, plt_addr, true);
+
+ /* Initialize the FULL PLT entry, if needed. */
+ if (dyn_i->want_plt2)
+ {
+ loc = plt_sec->contents + dyn_i->plt2_offset;
+
+ memcpy (loc, plt_full_entry, PLT_FULL_ENTRY_SIZE);
+ elf64_ia64_install_value (output_bfd, loc, pltoff_addr - gp_val,
+ R_IA64_IMM22);
+
+ /* Mark the symbol as undefined, rather than as defined in the
+ plt section. Leave the value alone. */
+ /* ??? We didn't redefine it in adjust_dynamic_symbol in the
+ first place. But perhaps elflink.h did some for us. */
+ if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
+ sym->st_shndx = SHN_UNDEF;
+ }
+
+ /* Create the dynamic relocation. */
+ outrel.r_offset = pltoff_addr;
+ if (bfd_little_endian (output_bfd))
+ outrel.r_info = ELF64_R_INFO (h->dynindx, R_IA64_IPLTLSB);
+ else
+ outrel.r_info = ELF64_R_INFO (h->dynindx, R_IA64_IPLTMSB);
+ outrel.r_addend = 0;
+
+ /* This is fun. In the .IA_64.pltoff section, we've got entries
+ that correspond both to real PLT entries, and those that
+ happened to resolve to local symbols but need to be created
+ to satisfy @pltoff relocations. The .rela.IA_64.pltoff
+ relocations for the real PLT should come at the end of the
+ section, so that they can be indexed by plt entry at runtime.
+
+ We emitted all of the relocations for the non-PLT @pltoff
+ entries during relocate_section. So we can consider the
+ existing sec->reloc_count to be the base of the array of
+ PLT relocations. */
+
+ rel = (Elf64_External_Rela *)ia64_info->rel_pltoff_sec->contents;
+ rel += ia64_info->rel_pltoff_sec->reloc_count;
+
+ bfd_elf64_swap_reloca_out (output_bfd, &outrel, rel + index);
+ }
+
+ /* Mark some specially defined symbols as absolute. */
+ if (strcmp (h->root.root.string, "_DYNAMIC") == 0
+ || strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0
+ || strcmp (h->root.root.string, "_PROCEDURE_LINKAGE_TABLE_") == 0)
+ sym->st_shndx = SHN_ABS;
+
+ return true;
+}
+
+static boolean
+elf64_ia64_finish_dynamic_sections (abfd, info)
+ bfd *abfd;
+ struct bfd_link_info *info;
+{
+ struct elf64_ia64_link_hash_table *ia64_info;
+ bfd *dynobj;
+
+ ia64_info = elf64_ia64_hash_table (info);
+ dynobj = ia64_info->root.dynobj;
+
+ if (elf_hash_table (info)->dynamic_sections_created)
+ {
+ Elf64_External_Dyn *dyncon, *dynconend;
+ asection *sdyn, *sgotplt;
+ bfd_vma gp_val;
+
+ sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
+ sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
+ BFD_ASSERT (sdyn != NULL);
+ dyncon = (Elf64_External_Dyn *) sdyn->contents;
+ dynconend = (Elf64_External_Dyn *) (sdyn->contents + sdyn->_raw_size);
+
+ gp_val = _bfd_get_gp_value (abfd);
+
+ for (; dyncon < dynconend; dyncon++)
+ {
+ Elf_Internal_Dyn dyn;
+ const char *name;
+ asection *s;
+
+ bfd_elf64_swap_dyn_in (dynobj, dyncon, &dyn);
+
+ switch (dyn.d_tag)
+ {
+ case DT_PLTGOT:
+ dyn.d_un.d_ptr = gp_val;
+ break;
+
+ case DT_PLTRELSZ:
+ dyn.d_un.d_val = (ia64_info->minplt_entries
+ * sizeof (Elf64_External_Rela));
+ break;
+
+ case DT_JMPREL:
+ /* See the comment above in finish_dynamic_symbol. */
+ dyn.d_un.d_ptr = (ia64_info->rel_pltoff_sec->output_section->vma
+ + ia64_info->rel_pltoff_sec->output_offset
+ + (ia64_info->rel_pltoff_sec->reloc_count
+ * sizeof (Elf64_External_Rela)));
+ break;
+
+ case DT_IA_64_PLT_RESERVE:
+ dyn.d_un.d_ptr = (sgotplt->output_section->vma
+ + sgotplt->output_offset);
+ break;
+
+ case DT_RELASZ:
+ /* Do not have RELASZ include JMPREL. This makes things
+ easier on ld.so. This is not what the rest of BFD set up. */
+ dyn.d_un.d_val -= (ia64_info->minplt_entries
+ * sizeof (Elf64_External_Rela));
+ break;
+
+ case DT_INIT:
+ case DT_FINI:
+ {
+ struct elf_link_hash_entry *h;
+ struct elf64_ia64_dyn_sym_info *dyn_i;
+ const char *which;
+
+ if (dyn.d_tag == DT_INIT)
+ which = info->init_function;
+ else
+ which = info->fini_function;
+
+ h = elf_link_hash_lookup (elf_hash_table (info), which,
+ false, false, false);
+ dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, false);
+ dyn.d_un.d_ptr = set_pltoff_entry (abfd, info, dyn_i,
+ dyn.d_un.d_ptr, 0);
+ }
+ }
+
+ bfd_elf64_swap_dyn_out (abfd, &dyn, dyncon);
+ }
+
+ /* Initialize the PLT0 entry */
+ if (ia64_info->plt_sec)
+ {
+ bfd_byte *loc = ia64_info->plt_sec->contents;
+ bfd_vma pltres;
+
+ memcpy (loc, plt_header, PLT_HEADER_SIZE);
+
+ pltres = (sgotplt->output_section->vma
+ + sgotplt->output_offset
+ - gp_val);
+
+ elf64_ia64_install_value (abfd, loc+1, pltres, R_IA64_GPREL22);
+ }
+ }
+
+ return true;
+}
+
+/* ELF file flag handling: */
+
+/* Function to keep IA-64 specific file flags. */
+static boolean
+elf64_ia64_set_private_flags (abfd, flags)
+ bfd *abfd;
+ flagword flags;
+{
+ BFD_ASSERT (!elf_flags_init (abfd)
+ || elf_elfheader (abfd)->e_flags == flags);
+
+ elf_elfheader (abfd)->e_flags = flags;
+ elf_flags_init (abfd) = true;
+ return true;
+}
+
+/* Copy backend specific data from one object module to another */
+static boolean
+elf64_ia64_copy_private_bfd_data (ibfd, obfd)
+ bfd *ibfd, *obfd;
+{
+ if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour
+ || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+ return true;
+
+ BFD_ASSERT (!elf_flags_init (obfd)
+ || (elf_elfheader (obfd)->e_flags
+ == elf_elfheader (ibfd)->e_flags));
+
+ elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
+ elf_flags_init (obfd) = true;
+ return true;
+}
+
+/* Merge backend specific data from an object file to the output
+ object file when linking. */
+static boolean
+elf64_ia64_merge_private_bfd_data (ibfd, obfd)
+ bfd *ibfd, *obfd;
+{
+ flagword out_flags;
+ flagword in_flags;
+ boolean ok = true;
+
+ /* Don't even pretend to support mixed-format linking. */
+ if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
+ || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+ return false;
+
+ in_flags = elf_elfheader (ibfd)->e_flags;
+ out_flags = elf_elfheader (obfd)->e_flags;
+
+ if (! elf_flags_init (obfd))
+ {
+ elf_flags_init (obfd) = true;
+ elf_elfheader (obfd)->e_flags = in_flags;
+
+ if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
+ && bfd_get_arch_info (obfd)->the_default)
+ {
+ return bfd_set_arch_mach (obfd, bfd_get_arch (ibfd),
+ bfd_get_mach (ibfd));
+ }
+
+ return true;
+ }
+
+ /* Check flag compatibility. */
+ if (in_flags == out_flags)
+ return true;
+
+ if ((in_flags & EF_IA_64_TRAPNIL) != (out_flags & EF_IA_64_TRAPNIL))
+ {
+ (*_bfd_error_handler)
+ (_("%s: linking trap-on-NULL-dereference with non-trapping files"),
+ bfd_get_filename (ibfd));
+
+ bfd_set_error (bfd_error_bad_value);
+ ok = false;
+ }
+ if ((in_flags & EF_IA_64_BE) != (out_flags & EF_IA_64_BE))
+ {
+ (*_bfd_error_handler)
+ (_("%s: linking big-endian files with little-endian files"),
+ bfd_get_filename (ibfd));
+
+ bfd_set_error (bfd_error_bad_value);
+ ok = false;
+ }
+ if ((in_flags & EF_IA_64_ABI64) != (out_flags & EF_IA_64_ABI64))
+ {
+ (*_bfd_error_handler)
+ (_("%s: linking 64-bit files with 32-bit files"),
+ bfd_get_filename (ibfd));
+
+ bfd_set_error (bfd_error_bad_value);
+ ok = false;
+ }
+
+ return ok;
+}
+
+static boolean
+elf64_ia64_print_private_bfd_data (abfd, ptr)
+ bfd *abfd;
+ PTR ptr;
+{
+ FILE *file = (FILE *) ptr;
+ flagword flags = elf_elfheader (abfd)->e_flags;
+
+ BFD_ASSERT (abfd != NULL && ptr != NULL);
+
+ fprintf (file, "private flags = %s%s%s%s\n",
+ (flags & EF_IA_64_TRAPNIL) ? "TRAPNIL, " : "",
+ (flags & EF_IA_64_EXT) ? "EXT, " : "",
+ (flags & EF_IA_64_BE) ? "BE, " : "LE, ",
+ (flags & EF_IA_64_ABI64) ? "ABI64" : "ABI32");
+ _bfd_elf_print_private_bfd_data (abfd, ptr);
+ return true;
+}
+
+#define TARGET_LITTLE_SYM bfd_elf64_ia64_little_vec
+#define TARGET_LITTLE_NAME "elf64-ia64-little"
+#define TARGET_BIG_SYM bfd_elf64_ia64_big_vec
+#define TARGET_BIG_NAME "elf64-ia64-big"
+#define ELF_ARCH bfd_arch_ia64
+#define ELF_MACHINE_CODE EM_IA_64
+#define ELF_MACHINE_ALT1 1999 /* EAS2.3 */
+#define ELF_MACHINE_ALT2 1998 /* EAS2.2 */
+#define ELF_MAXPAGESIZE 0x10000 /* 64KB */
+
+#define elf_backend_section_from_shdr \
+ elf64_ia64_section_from_shdr
+#define elf_backend_fake_sections \
+ elf64_ia64_fake_sections
+#define elf_backend_add_symbol_hook \
+ elf64_ia64_add_symbol_hook
+#define elf_backend_additional_program_headers \
+ elf64_ia64_additional_program_headers
+#define elf_backend_modify_segment_map \
+ elf64_ia64_modify_segment_map
+#define elf_info_to_howto \
+ elf64_ia64_info_to_howto
+
+#define bfd_elf64_bfd_reloc_type_lookup \
+ elf64_ia64_reloc_type_lookup
+#define bfd_elf64_bfd_is_local_label_name \
+ elf64_ia64_is_local_label_name
+#define bfd_elf64_bfd_relax_section \
+ elf64_ia64_relax_section
+
+/* Stuff for the BFD linker: */
+#define bfd_elf64_bfd_link_hash_table_create \
+ elf64_ia64_hash_table_create
+#define elf_backend_create_dynamic_sections \
+ elf64_ia64_create_dynamic_sections
+#define elf_backend_check_relocs \
+ elf64_ia64_check_relocs
+#define elf_backend_adjust_dynamic_symbol \
+ elf64_ia64_adjust_dynamic_symbol
+#define elf_backend_size_dynamic_sections \
+ elf64_ia64_size_dynamic_sections
+#define elf_backend_relocate_section \
+ elf64_ia64_relocate_section
+#define elf_backend_finish_dynamic_symbol \
+ elf64_ia64_finish_dynamic_symbol
+#define elf_backend_finish_dynamic_sections \
+ elf64_ia64_finish_dynamic_sections
+#define bfd_elf64_bfd_final_link \
+ elf64_ia64_final_link
+
+#define bfd_elf64_bfd_copy_private_bfd_data \
+ elf64_ia64_copy_private_bfd_data
+#define bfd_elf64_bfd_merge_private_bfd_data \
+ elf64_ia64_merge_private_bfd_data
+#define bfd_elf64_bfd_set_private_flags \
+ elf64_ia64_set_private_flags
+#define bfd_elf64_bfd_print_private_bfd_data \
+ elf64_ia64_print_private_bfd_data
+
+#define elf_backend_plt_readonly 1
+#define elf_backend_want_plt_sym 0
+#define elf_backend_plt_alignment 5
+#define elf_backend_got_header_size 0
+#define elf_backend_plt_header_size PLT_HEADER_SIZE
+#define elf_backend_want_got_plt 1
+#define elf_backend_may_use_rel_p 1
+#define elf_backend_may_use_rela_p 1
+#define elf_backend_default_use_rela_p 1
+#define elf_backend_want_dynbss 0
+#define elf_backend_copy_indirect_symbol elf64_ia64_hash_copy_indirect
+#define elf_backend_hide_symbol elf64_ia64_hash_hide_symbol
+
+#include "elf64-target.h"
diff --git a/bfd/elf64-sparc.c b/bfd/elf64-sparc.c
index 46e777552f2..ca2e7c1d2f4 100644
--- a/bfd/elf64-sparc.c
+++ b/bfd/elf64-sparc.c
@@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "sysdep.h"
#include "libbfd.h"
#include "elf-bfd.h"
+#include "opcode/sparc.h"
/* This is defined if one wants to build upward compatible binaries
with the original sparc64-elf toolchain. The support is kept in for
@@ -65,6 +66,8 @@ static void sparc64_elf_symbol_processing
static boolean sparc64_elf_merge_private_bfd_data
PARAMS ((bfd *, bfd *));
+static boolean sparc64_elf_relax_section
+ PARAMS ((bfd *, asection *, struct bfd_link_info *, boolean *));
static boolean sparc64_elf_relocate_section
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
@@ -212,7 +215,7 @@ static CONST struct elf_reloc_map sparc_reloc_map[] =
static reloc_howto_type *
sparc64_elf_reloc_type_lookup (abfd, code)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
bfd_reloc_code_real_type code;
{
unsigned int i;
@@ -226,7 +229,7 @@ sparc64_elf_reloc_type_lookup (abfd, code)
static void
sparc64_elf_info_to_howto (abfd, cache_ptr, dst)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
arelent *cache_ptr;
Elf64_Internal_Rela *dst;
{
@@ -240,7 +243,7 @@ sparc64_elf_info_to_howto (abfd, cache_ptr, dst)
static long
sparc64_elf_get_reloc_upper_bound (abfd, sec)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
asection *sec;
{
return (sec->reloc_count * 2 + 1) * sizeof (arelent *);
@@ -266,7 +269,6 @@ sparc64_elf_slurp_one_reloc_table (abfd, asect, rel_hdr, symbols, dynamic)
asymbol **symbols;
boolean dynamic;
{
- struct elf_backend_data * const ebd = get_elf_backend_data (abfd);
PTR allocated = NULL;
bfd_byte *native_relocs;
arelent *relent;
@@ -501,7 +503,6 @@ sparc64_elf_write_relocs (abfd, sec, data)
for (idx = 0; idx < sec->reloc_count; idx++)
{
bfd_vma addr;
- unsigned int i;
++count;
@@ -723,13 +724,13 @@ sparc_elf_notsup_reloc (abfd,
input_section,
output_bfd,
error_message)
- bfd *abfd;
- arelent *reloc_entry;
- asymbol *symbol;
- PTR data;
- asection *input_section;
- bfd *output_bfd;
- char **error_message;
+ bfd *abfd ATTRIBUTE_UNUSED;
+ arelent *reloc_entry ATTRIBUTE_UNUSED;
+ asymbol *symbol ATTRIBUTE_UNUSED;
+ PTR data ATTRIBUTE_UNUSED;
+ asection *input_section ATTRIBUTE_UNUSED;
+ bfd *output_bfd ATTRIBUTE_UNUSED;
+ char **error_message ATTRIBUTE_UNUSED;
{
return bfd_reloc_notsupported;
}
@@ -745,7 +746,7 @@ sparc_elf_wdisp16_reloc (abfd, reloc_entry, symbol, data, input_section,
PTR data;
asection *input_section;
bfd *output_bfd;
- char **error_message;
+ char **error_message ATTRIBUTE_UNUSED;
{
bfd_vma relocation;
bfd_vma insn;
@@ -783,7 +784,7 @@ sparc_elf_hix22_reloc (abfd,
PTR data;
asection *input_section;
bfd *output_bfd;
- char **error_message;
+ char **error_message ATTRIBUTE_UNUSED;
{
bfd_vma relocation;
bfd_vma insn;
@@ -820,7 +821,7 @@ sparc_elf_lox10_reloc (abfd,
PTR data;
asection *input_section;
bfd *output_bfd;
- char **error_message;
+ char **error_message ATTRIBUTE_UNUSED;
{
bfd_vma relocation;
bfd_vma insn;
@@ -1265,9 +1266,9 @@ sparc64_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
struct bfd_link_info *info;
const Elf_Internal_Sym *sym;
const char **namep;
- flagword *flagsp;
- asection **secp;
- bfd_vma *valp;
+ flagword *flagsp ATTRIBUTE_UNUSED;
+ asection **secp ATTRIBUTE_UNUSED;
+ bfd_vma *valp ATTRIBUTE_UNUSED;
{
static char *stt_types[] = { "NOTYPE", "OBJECT", "FUNCTION" };
@@ -1387,7 +1388,7 @@ sparc64_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
static boolean
sparc64_elf_output_arch_syms (output_bfd, info, finfo, func)
- bfd *output_bfd;
+ bfd *output_bfd ATTRIBUTE_UNUSED;
struct bfd_link_info *info;
PTR finfo;
boolean (*func) PARAMS ((PTR, const char *,
@@ -1460,7 +1461,7 @@ sparc64_elf_get_symbol_type (elf_sym, type)
static void
sparc64_elf_symbol_processing (abfd, asym)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
asymbol *asym;
{
elf_symbol_type *elfsym;
@@ -1855,6 +1856,22 @@ sparc64_elf_size_dynamic_sections (output_bfd, info)
return true;
}
+#define SET_SEC_DO_RELAX(section) do { elf_section_data(section)->tdata = (void *)1; } while (0)
+#define SEC_DO_RELAX(section) (elf_section_data(section)->tdata == (void *)1)
+
+/*ARGSUSED*/
+static boolean
+sparc64_elf_relax_section (abfd, section, link_info, again)
+ bfd *abfd ATTRIBUTE_UNUSED;
+ asection *section ATTRIBUTE_UNUSED;
+ struct bfd_link_info *link_info ATTRIBUTE_UNUSED;
+ boolean *again;
+{
+ *again = false;
+ SET_SEC_DO_RELAX (section);
+ return true;
+}
+
/* Relocate a SPARC64 ELF section. */
static boolean
@@ -1898,7 +1915,7 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
{
int r_type;
reloc_howto_type *howto;
- long r_symndx;
+ unsigned long r_symndx;
struct elf_link_hash_entry *h;
Elf_Internal_Sym *sym;
asection *sec;
@@ -2049,14 +2066,17 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
}
else if (h->root.type == bfd_link_hash_undefweak)
relocation = 0;
- else if (info->shared && !info->symbolic && !info->no_undefined)
+ 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))))
+ (!info->shared || info->no_undefined
+ || ELF_ST_VISIBILITY (h->other)))))
return false;
relocation = 0;
}
@@ -2393,6 +2413,8 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
relocation = (splt->output_section->vma
+ splt->output_offset
+ sparc64_elf_plt_entry_offset (h->plt.offset));
+ if (r_type == R_SPARC_WPLT30)
+ goto do_wplt30;
goto do_default;
case R_SPARC_OLO10:
@@ -2468,6 +2490,97 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
}
break;
+ case R_SPARC_WDISP30:
+ do_wplt30:
+ if (SEC_DO_RELAX (input_section)
+ && rel->r_offset + 4 < input_section->_raw_size)
+ {
+#define G0 0
+#define O7 15
+#define XCC (2 << 20)
+#define COND(x) (((x)&0xf)<<25)
+#define CONDA COND(0x8)
+#define INSN_BPA (F2(0,1) | CONDA | BPRED | XCC)
+#define INSN_BA (F2(0,2) | CONDA)
+#define INSN_OR F3(2, 0x2, 0)
+#define INSN_NOP F2(0,4)
+
+ bfd_vma x, y;
+
+ /* If the instruction is a call with either:
+ restore
+ arithmetic instruction with rd == %o7
+ where rs1 != %o7 and rs2 if it is register != %o7
+ then we can optimize if the call destination is near
+ by changing the call into a branch always. */
+ x = bfd_get_32 (input_bfd, contents + rel->r_offset);
+ y = bfd_get_32 (input_bfd, contents + rel->r_offset + 4);
+ if ((x & OP(~0)) == OP(1) && (y & OP(~0)) == OP(2))
+ {
+ if (((y & OP3(~0)) == OP3(0x3d) /* restore */
+ || ((y & OP3(0x28)) == 0 /* arithmetic */
+ && (y & RD(~0)) == RD(O7)))
+ && (y & RS1(~0)) != RS1(O7)
+ && ((y & F3I(~0))
+ || (y & RS2(~0)) != RS2(O7)))
+ {
+ bfd_vma reloc;
+
+ reloc = relocation + rel->r_addend - rel->r_offset;
+ reloc -= (input_section->output_section->vma
+ + input_section->output_offset);
+ if (reloc & 3)
+ goto do_default;
+
+ /* Ensure the branch fits into simm22. */
+ if ((reloc & ~(bfd_vma)0x7fffff)
+ && ((reloc | 0x7fffff) != MINUS_ONE))
+ goto do_default;
+ reloc >>= 2;
+
+ /* Check whether it fits into simm19. */
+ if ((reloc & 0x3c0000) == 0
+ || (reloc & 0x3c0000) == 0x3c0000)
+ x = INSN_BPA | (reloc & 0x7ffff); /* ba,pt %xcc */
+ else
+ x = INSN_BA | (reloc & 0x3fffff); /* ba */
+ bfd_put_32 (input_bfd, x, contents + rel->r_offset);
+ r = bfd_reloc_ok;
+ if (rel->r_offset >= 4
+ && (y & (0xffffffff ^ RS1(~0)))
+ == (INSN_OR | RD(O7) | RS2(G0)))
+ {
+ bfd_vma z;
+ unsigned int reg;
+
+ z = bfd_get_32 (input_bfd,
+ contents + rel->r_offset - 4);
+ if ((z & (0xffffffff ^ RD(~0)))
+ != (INSN_OR | RS1(O7) | RS2(G0)))
+ break;
+
+ /* The sequence was
+ or %o7, %g0, %rN
+ call foo
+ or %rN, %g0, %o7
+
+ If call foo was replaced with ba, replace
+ or %rN, %g0, %o7 with nop. */
+
+ reg = (y & RS1(~0)) >> 14;
+ if (reg != ((z & RD(~0)) >> 25)
+ || reg == G0 || reg == O7)
+ break;
+
+ bfd_put_32 (input_bfd, INSN_NOP,
+ contents + rel->r_offset + 4);
+ }
+ break;
+ }
+ }
+ }
+ /* FALLTHROUGH */
+
default:
do_default:
r = _bfd_final_link_relocate (howto, input_bfd, input_section,
@@ -2806,8 +2919,8 @@ sparc64_elf_merge_private_bfd_data (ibfd, obfd)
/* We don't want dynamic objects memory ordering and
architecture to have any role. That's what dynamic linker
should do. */
- old_flags &= ~(EF_SPARCV9_MM | EF_SPARC_SUN_US1 | EF_SPARC_HAL_R1);
- old_flags |= (new_flags
+ new_flags &= ~(EF_SPARCV9_MM | EF_SPARC_SUN_US1 | EF_SPARC_HAL_R1);
+ new_flags |= (old_flags
& (EF_SPARCV9_MM
| EF_SPARC_SUN_US1
| EF_SPARC_HAL_R1));
@@ -2860,7 +2973,7 @@ sparc64_elf_merge_private_bfd_data (ibfd, obfd)
static const char *
sparc64_elf_print_symbol_all (abfd, filep, symbol)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
PTR filep;
asymbol *symbol;
{
@@ -2960,6 +3073,8 @@ const struct elf_size_info sparc64_elf_size_info =
sparc64_elf_canonicalize_dynamic_reloc
#define bfd_elf64_bfd_reloc_type_lookup \
sparc64_elf_reloc_type_lookup
+#define bfd_elf64_bfd_relax_section \
+ sparc64_elf_relax_section
#define elf_backend_create_dynamic_sections \
_bfd_elf_create_dynamic_sections
diff --git a/bfd/elfcode.h b/bfd/elfcode.h
index c5edf9b8250..b1ce9d820fd 100644
--- a/bfd/elfcode.h
+++ b/bfd/elfcode.h
@@ -118,6 +118,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define elf_add_dynamic_entry NAME(bfd_elf,add_dynamic_entry)
#define elf_write_shdrs_and_ehdr NAME(bfd_elf,write_shdrs_and_ehdr)
#define elf_write_out_phdrs NAME(bfd_elf,write_out_phdrs)
+#define elf_write_relocs NAME(bfd_elf,write_relocs)
+#define elf_slurp_reloc_table NAME(bfd_elf,slurp_reloc_table)
#define elf_link_create_dynamic_sections \
NAME(bfd_elf,link_create_dynamic_sections)
#define elf_link_record_dynamic_symbol _bfd_elf_link_record_dynamic_symbol
@@ -168,10 +170,6 @@ static void elf_swap_shdr_out
static boolean elf_slurp_reloc_table_from_section
PARAMS ((bfd *, asection *, Elf_Internal_Shdr *, bfd_size_type,
arelent *, asymbol **, boolean));
-static boolean elf_slurp_reloc_table
- PARAMS ((bfd *, asection *, asymbol **, boolean));
-
-static void write_relocs PARAMS ((bfd *, asection *, PTR));
static boolean elf_file_p PARAMS ((Elf_External_Ehdr *));
@@ -746,8 +744,8 @@ elf_object_p (abfd)
/* Write out the relocs. */
-static void
-write_relocs (abfd, sec, data)
+void
+elf_write_relocs (abfd, sec, data)
bfd *abfd;
asection *sec;
PTR data;
@@ -1325,7 +1323,7 @@ elf_slurp_reloc_table_from_section (abfd, asect, rel_hdr, reloc_count,
/* Read in and swap the external relocs. */
-static boolean
+boolean
elf_slurp_reloc_table (abfd, asect, symbols, dynamic)
bfd *abfd;
asection *asect;
@@ -1533,7 +1531,7 @@ const struct elf_size_info NAME(_bfd_elf,size_info) = {
ELFCLASS, EV_CURRENT,
elf_write_out_phdrs,
elf_write_shdrs_and_ehdr,
- write_relocs,
+ elf_write_relocs,
elf_swap_symbol_out,
elf_slurp_reloc_table,
elf_slurp_symbol_table,
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 6534d84b18a..8039b4fe35b 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -226,20 +226,13 @@ _bfd_elf_link_record_dynamic_symbol (info, h)
{
case STV_INTERNAL:
case STV_HIDDEN:
- /* This symbol must be defined in the shared object or
- executable. */
- if (h->root.type == bfd_link_hash_undefined)
+ if (h->root.type != bfd_link_hash_undefined
+ && h->root.type != bfd_link_hash_undefweak)
{
- bfd * abfd = h->root.u.undef.abfd;
- const char * name = h->root.root.string;
-
- (*info->callbacks->undefined_symbol)
- (info, name, abfd, bfd_und_section_ptr, 0, true);
+ h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL;
+ return true;
}
-
- h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL;
- break;
-
+
default:
break;
}
diff --git a/bfd/elflink.h b/bfd/elflink.h
index bddf2907119..898d6b3a9cb 100644
--- a/bfd/elflink.h
+++ b/bfd/elflink.h
@@ -357,7 +357,6 @@ elf_link_add_archive_symbols (abfd, info)
}
/* We need to include this archive member. */
-
element = _bfd_get_elt_at_filepos (abfd, symdef->file_offset);
if (element == (bfd *) NULL)
goto error_return;
@@ -1852,6 +1851,18 @@ elf_link_add_object_symbols (abfd, info)
goto error_return;
}
}
+ else if (dynsym && h->dynindx != -1)
+ /* If the symbol already has a dynamic index, but
+ visibility says it should not be visible, turn it into
+ a local symbol. */
+ switch (ELF_ST_VISIBILITY (h->other))
+ {
+ case STV_INTERNAL:
+ case STV_HIDDEN:
+ h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL;
+ (*bed->elf_backend_hide_symbol) (h);
+ break;
+ }
}
}
@@ -3278,6 +3289,9 @@ elf_fix_symbol_flags (h, eif)
an ELF dynamic object. */
if ((h->elf_link_hash_flags & ELF_LINK_NON_ELF) != 0)
{
+ while (h->root.type == bfd_link_hash_indirect)
+ 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)
h->elf_link_hash_flags |= (ELF_LINK_HASH_REF_REGULAR
@@ -3339,10 +3353,12 @@ elf_fix_symbol_flags (h, eif)
/* If -Bsymbolic was used (which means to bind references to global
symbols to the definition within the shared object), and this
symbol was defined in a regular object, then it actually doesn't
- need a PLT entry. */
+ need a PLT entry. Likewise, if the symbol has any kind of
+ visibility (internal, hidden, or protected), it doesn't need a
+ PLT. */
if ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0
&& eif->info->shared
- && eif->info->symbolic
+ && (eif->info->symbolic || ELF_ST_VISIBILITY (h->other))
&& (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0)
{
h->elf_link_hash_flags &=~ ELF_LINK_HASH_NEEDS_PLT;
@@ -4086,7 +4102,7 @@ elf_bfd_final_link (abfd, info)
the linker has decided to not include. */
sec->linker_mark = true;
- if (info->relocateable)
+ if (info->relocateable || info->emitrelocations)
o->reloc_count += sec->reloc_count;
if (sec->_raw_size > max_contents_size)
@@ -4154,7 +4170,7 @@ elf_bfd_final_link (abfd, info)
/* Figure out how many relocations we will have in each section.
Just using RELOC_COUNT isn't good enough since that doesn't
maintain a separate value for REL vs. RELA relocations. */
- if (info->relocateable)
+ if (info->relocateable || info->emitrelocations)
for (sub = info->input_bfds; sub != NULL; sub = sub->link_next)
for (o = sub->sections; o != NULL; o = o->next)
{
@@ -4262,7 +4278,7 @@ elf_bfd_final_link (abfd, info)
/* Start writing out the symbol table. The first symbol is always a
dummy symbol. */
- if (info->strip != strip_all || info->relocateable)
+ if (info->strip != strip_all || info->relocateable || info->emitrelocations)
{
elfsym.st_value = 0;
elfsym.st_size = 0;
@@ -4295,7 +4311,7 @@ elf_bfd_final_link (abfd, info)
symbols have no names. We store the index of each one in the
index field of the section, so that we can find it again when
outputting relocs. */
- if (info->strip != strip_all || info->relocateable)
+ if (info->strip != strip_all || info->relocateable || info->emitrelocations)
{
elfsym.st_size = 0;
elfsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION);
@@ -5017,12 +5033,9 @@ elf_link_output_extsym (h, data)
symbol foo@@GNU_1.2 is the default, which should be used when
foo is used with no version, then we add an indirect symbol
foo which points to foo@@GNU_1.2. We ignore these symbols,
- since the indirected symbol is already in the hash table. If
- the indirect symbol is non-ELF, fall through and output it. */
- if ((h->elf_link_hash_flags & ELF_LINK_NON_ELF) == 0)
- return true;
+ since the indirected symbol is already in the hash table. */
+ return true;
- /* Fall through. */
case bfd_link_hash_warning:
/* We can't represent these symbols in ELF, although a warning
symbol may have come from a .gnu.warning.SYMBOL section. We
@@ -5072,6 +5085,11 @@ elf_link_output_extsym (h, data)
sym.st_info = ELF_ST_INFO (bindtype, ELF_ST_TYPE (sym.st_info));
}
+ /* If a symbol is not defined locally, we clear the visibility
+ field. */
+ if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
+ sym.st_other ^= ELF_ST_VISIBILITY(sym.st_other);
+
/* If this symbol should be put in the .dynsym section, then put it
there now. We have already know the symbol index. We also fill
in the entry in the .hash section. */
@@ -5474,7 +5492,7 @@ elf_link_input_bfd (finfo, input_bfd)
finfo->sections))
return false;
- if (finfo->info->relocateable)
+ if (finfo->info->relocateable || finfo->info->emitrelocations)
{
Elf_Internal_Rela *irela;
Elf_Internal_Rela *irelaend;
@@ -5497,6 +5515,10 @@ elf_link_input_bfd (finfo, input_bfd)
irela->r_offset += o->output_offset;
+ /* Relocs in an executable have to be virtual addresses. */
+ if (finfo->info->emitrelocations)
+ irela->r_offset += o->output_section->vma;
+
r_symndx = ELF_R_SYM (irela->r_info);
if (r_symndx == 0)
@@ -6403,7 +6425,7 @@ elf_gc_sections (abfd, info)
struct elf_link_hash_entry *h, Elf_Internal_Sym *));
if (!get_elf_backend_data (abfd)->can_gc_sections
- || info->relocateable
+ || info->relocateable || info->emitrelocations
|| elf_hash_table (info)->dynamic_sections_created)
return true;
@@ -6615,7 +6637,8 @@ elf_gc_common_finalize_got_offsets (abfd, info)
}
}
- /* Then the global .got and .plt entries. */
+ /* Then the global .got entries. .plt refcounts are handled by
+ adjust_dynamic_symbol */
elf_link_hash_traverse (elf_hash_table (info),
elf_gc_allocate_got_offsets,
(PTR) &gotoff);
diff --git a/bfd/ieee.c b/bfd/ieee.c
index 82b3bac8367..71b967ac418 100644
--- a/bfd/ieee.c
+++ b/bfd/ieee.c
@@ -1009,8 +1009,17 @@ ieee_get_symtab (abfd, location)
ieee_symbol_type *symp;
static bfd dummy_bfd;
static asymbol empty_symbol =
- /* the_bfd, name, value, attr, section */
- {&dummy_bfd, " ieee empty", (symvalue) 0, BSF_DEBUGGING, bfd_abs_section_ptr, { 0 }};
+ {
+ &dummy_bfd,
+ " ieee empty",
+ (symvalue) 0,
+ BSF_DEBUGGING,
+ bfd_abs_section_ptr
+#ifdef __STDC__
+ /* K&R compilers can't initialise unions. */
+ , { 0 }
+#endif
+ };
if (abfd->symcount)
{
diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h
index 79a176d063c..aece1e15a51 100644
--- a/bfd/libbfd-in.h
+++ b/bfd/libbfd-in.h
@@ -1,6 +1,6 @@
/* libbfd.h -- Declarations used by bfd library *implementation*.
(This include file is not for users of the library.)
- Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
Written by Cygnus Support.
@@ -506,8 +506,8 @@ void bfd_assert PARAMS ((const char*,int));
extern void _bfd_abort PARAMS ((const char *, int, const char *))
ATTRIBUTE_NORETURN;
-/* if gcc, we can give a function name, too */
-#if !defined (__GNUC__) || __GNUC_MINOR__ <= 5
+/* if gcc >= 2.6, we can give a function name, too */
+#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
#define __PRETTY_FUNCTION__ ((char *) NULL)
#endif
diff --git a/bfd/libbfd.c b/bfd/libbfd.c
index 881af73239f..1bc0f33ee12 100644
--- a/bfd/libbfd.c
+++ b/bfd/libbfd.c
@@ -1306,13 +1306,17 @@ _bfd_generic_verify_endian_match (ibfd, obfd)
bfd *obfd;
{
if (ibfd->xvec->byteorder != obfd->xvec->byteorder
+ && ibfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN
&& obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN)
{
- (*_bfd_error_handler)
- ("%s: compiled for a %s endian system and target is %s endian",
- bfd_get_filename (ibfd),
- bfd_big_endian (ibfd) ? "big" : "little",
- bfd_big_endian (obfd) ? "big" : "little");
+ const char *msg;
+
+ if (bfd_big_endian (ibfd))
+ msg = _("%s: compiled for a big endian system and target is little endian");
+ else
+ msg = _("%s: compiled for a little endian system and target is big endian");
+
+ (*_bfd_error_handler) (msg, bfd_get_filename (ibfd));
bfd_set_error (bfd_error_wrong_format);
return false;
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index 20ffcdc73b4..effb0e819b0 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -1,6 +1,6 @@
/* libbfd.h -- Declarations used by bfd library *implementation*.
(This include file is not for users of the library.)
- Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
Written by Cygnus Support.
@@ -506,8 +506,8 @@ void bfd_assert PARAMS ((const char*,int));
extern void _bfd_abort PARAMS ((const char *, int, const char *))
ATTRIBUTE_NORETURN;
-/* if gcc, we can give a function name, too */
-#if !defined (__GNUC__) || __GNUC_MINOR__ <= 5
+/* if gcc >= 2.6, we can give a function name, too */
+#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
#define __PRETTY_FUNCTION__ ((char *) NULL)
#endif
@@ -898,6 +898,73 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_AVR_CALL",
"BFD_RELOC_VTABLE_INHERIT",
"BFD_RELOC_VTABLE_ENTRY",
+ "BFD_RELOC_IA64_IMM14",
+ "BFD_RELOC_IA64_IMM22",
+ "BFD_RELOC_IA64_IMM64",
+ "BFD_RELOC_IA64_DIR32MSB",
+ "BFD_RELOC_IA64_DIR32LSB",
+ "BFD_RELOC_IA64_DIR64MSB",
+ "BFD_RELOC_IA64_DIR64LSB",
+ "BFD_RELOC_IA64_GPREL22",
+ "BFD_RELOC_IA64_GPREL64I",
+ "BFD_RELOC_IA64_GPREL32MSB",
+ "BFD_RELOC_IA64_GPREL32LSB",
+ "BFD_RELOC_IA64_GPREL64MSB",
+ "BFD_RELOC_IA64_GPREL64LSB",
+ "BFD_RELOC_IA64_LTOFF22",
+ "BFD_RELOC_IA64_LTOFF64I",
+ "BFD_RELOC_IA64_PLTOFF22",
+ "BFD_RELOC_IA64_PLTOFF64I",
+ "BFD_RELOC_IA64_PLTOFF64MSB",
+ "BFD_RELOC_IA64_PLTOFF64LSB",
+ "BFD_RELOC_IA64_FPTR64I",
+ "BFD_RELOC_IA64_FPTR32MSB",
+ "BFD_RELOC_IA64_FPTR32LSB",
+ "BFD_RELOC_IA64_FPTR64MSB",
+ "BFD_RELOC_IA64_FPTR64LSB",
+ "BFD_RELOC_IA64_PCREL21B",
+ "BFD_RELOC_IA64_PCREL21BI",
+ "BFD_RELOC_IA64_PCREL21M",
+ "BFD_RELOC_IA64_PCREL21F",
+ "BFD_RELOC_IA64_PCREL22",
+ "BFD_RELOC_IA64_PCREL60B",
+ "BFD_RELOC_IA64_PCREL64I",
+ "BFD_RELOC_IA64_PCREL32MSB",
+ "BFD_RELOC_IA64_PCREL32LSB",
+ "BFD_RELOC_IA64_PCREL64MSB",
+ "BFD_RELOC_IA64_PCREL64LSB",
+ "BFD_RELOC_IA64_LTOFF_FPTR22",
+ "BFD_RELOC_IA64_LTOFF_FPTR64I",
+ "BFD_RELOC_IA64_LTOFF_FPTR64MSB",
+ "BFD_RELOC_IA64_LTOFF_FPTR64LSB",
+ "BFD_RELOC_IA64_SEGBASE",
+ "BFD_RELOC_IA64_SEGREL32MSB",
+ "BFD_RELOC_IA64_SEGREL32LSB",
+ "BFD_RELOC_IA64_SEGREL64MSB",
+ "BFD_RELOC_IA64_SEGREL64LSB",
+ "BFD_RELOC_IA64_SECREL32MSB",
+ "BFD_RELOC_IA64_SECREL32LSB",
+ "BFD_RELOC_IA64_SECREL64MSB",
+ "BFD_RELOC_IA64_SECREL64LSB",
+ "BFD_RELOC_IA64_REL32MSB",
+ "BFD_RELOC_IA64_REL32LSB",
+ "BFD_RELOC_IA64_REL64MSB",
+ "BFD_RELOC_IA64_REL64LSB",
+ "BFD_RELOC_IA64_LTV32MSB",
+ "BFD_RELOC_IA64_LTV32LSB",
+ "BFD_RELOC_IA64_LTV64MSB",
+ "BFD_RELOC_IA64_LTV64LSB",
+ "BFD_RELOC_IA64_IPLTMSB",
+ "BFD_RELOC_IA64_IPLTLSB",
+ "BFD_RELOC_IA64_EPLTMSB",
+ "BFD_RELOC_IA64_EPLTLSB",
+ "BFD_RELOC_IA64_COPY",
+ "BFD_RELOC_IA64_TPREL22",
+ "BFD_RELOC_IA64_TPREL64MSB",
+ "BFD_RELOC_IA64_TPREL64LSB",
+ "BFD_RELOC_IA64_LTOFF_TP22",
+ "BFD_RELOC_IA64_LTOFF22X",
+ "BFD_RELOC_IA64_LDXMOV",
"@@overflow: BFD_RELOC_UNUSED@@",
};
#endif
diff --git a/bfd/libcoff.h b/bfd/libcoff.h
index bee4ce9e858..c72ffdbe103 100644
--- a/bfd/libcoff.h
+++ b/bfd/libcoff.h
@@ -713,6 +713,8 @@ typedef struct
boolean _bfd_coff_long_filenames;
boolean _bfd_coff_long_section_names;
unsigned int _bfd_coff_default_section_alignment_power;
+ boolean _bfd_coff_force_symnames_in_strings;
+ unsigned int _bfd_coff_debug_string_prefix_length;
void (*_bfd_coff_swap_filehdr_in) PARAMS ((
bfd *abfd,
PTR ext,
@@ -910,6 +912,12 @@ typedef struct
#define bfd_coff_symname_in_debug(abfd, sym)\
((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
+#define bfd_coff_force_symnames_in_strings(abfd)\
+ (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
+
+#define bfd_coff_debug_string_prefix_length(abfd)\
+ (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
+
#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
((coff_backend_info (abfd)->_bfd_coff_print_aux)\
(abfd, file, base, symbol, aux, indaux))
diff --git a/bfd/libhppa.h b/bfd/libhppa.h
index c32eabe4457..7a8af9a385d 100644
--- a/bfd/libhppa.h
+++ b/bfd/libhppa.h
@@ -1,5 +1,5 @@
/* HP PA-RISC SOM object file format: definitions internal to BFD.
- Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 98, 1999
+ Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 98, 99, 2000
Free Software Foundation, Inc.
Contributed by the Center for Software Science at the
@@ -35,53 +35,8 @@
#endif /* GNU C? */
#endif /* INLINE */
-#if __GNUC__ >= 2 && __GNUC_MINOR__ >= 7
-/* Declare the functions with the unused attribute to avoid warnings. */
-static INLINE unsigned int assemble_3 (unsigned int)
- __attribute__ ((__unused__));
-static INLINE void dis_assemble_3 (unsigned int, unsigned int *)
- __attribute__ ((__unused__));
-static INLINE unsigned int assemble_12 (unsigned int, unsigned int)
- __attribute__ ((__unused__));
-static INLINE void dis_assemble_12 (unsigned int, unsigned int *,
- unsigned int *)
- __attribute__ ((__unused__));
-static INLINE unsigned long assemble_17 (unsigned int, unsigned int,
- unsigned int)
- __attribute__ ((__unused__));
-static INLINE void dis_assemble_17 (unsigned int, unsigned int *,
- unsigned int *, unsigned int *)
- __attribute__ ((__unused__));
-static INLINE void dis_assemble_22 (unsigned int, unsigned int *,
- unsigned int *, unsigned int *,
- unsigned int *)
- __attribute__ ((__unused__));
-static INLINE unsigned long assemble_21 (unsigned int)
- __attribute ((__unused__));
-static INLINE void dis_assemble_21 (unsigned int, unsigned int *)
- __attribute__ ((__unused__));
-static INLINE unsigned long sign_extend (unsigned int, unsigned int)
- __attribute__ ((__unused__));
-static INLINE unsigned int ones (int) __attribute ((__unused__));
-static INLINE void sign_unext (unsigned int, unsigned int, unsigned int *)
- __attribute__ ((__unused__));
-static INLINE unsigned long low_sign_extend (unsigned int, unsigned int)
- __attribute__ ((__unused__));
-static INLINE void low_sign_unext (unsigned int, unsigned int, unsigned int *)
- __attribute__ ((__unused__));
-static INLINE unsigned long hppa_field_adjust (unsigned long, unsigned long,
- unsigned short)
- __attribute__ ((__unused__));
-static INLINE int bfd_hppa_insn2fmt (unsigned long)
- __attribute__ ((__unused__));
-static INLINE unsigned long hppa_rebuild_insn (bfd *, unsigned long,
- unsigned long, unsigned long)
- __attribute__ ((__unused__));
-#endif /* gcc 2.7 or higher */
-
-
/* The PA instruction set variants. */
-enum pa_arch {pa10 = 10, pa11 = 11, pa20 = 20};
+enum pa_arch {pa10 = 10, pa11 = 11, pa20 = 20, pa20w = 25};
/* HP PA-RISC relocation types */
@@ -197,10 +152,13 @@ enum hppa_reloc_expr_type_alt
The high order 10 bits contain parameter relocation information,
the low order 22 bits contain the constant offset. */
-
-#define HPPA_R_ARG_RELOC(a) (((a) >> 22) & 0x3FF)
-#define HPPA_R_CONSTANT(a) ((((int)(a)) << 10) >> 10)
-#define HPPA_R_ADDEND(r,c) (((r) << 22) + ((c) & 0x3FFFFF))
+
+#define HPPA_R_ARG_RELOC(a) \
+ (((a) >> 22) & 0x3ff)
+#define HPPA_R_CONSTANT(a) \
+ ((((bfd_signed_vma)(a)) << (BFD_ARCH_SIZE-22)) >> (BFD_ARCH_SIZE-22))
+#define HPPA_R_ADDEND(r, c) \
+ (((r) << 22) + ((c) & 0x3fffff))
#define HPPA_WIDE (0) /* PSW W-bit, need to check! FIXME */
/* These macros get bit fields using HP's numbering (MSB = 0),
@@ -210,54 +168,110 @@ enum hppa_reloc_expr_type_alt
#ifndef GET_FIELD
#define GET_FIELD(X, FROM, TO) \
((X) >> (31 - (TO)) & ((1 << ((TO) - (FROM) + 1)) - 1))
-#endif
+#endif
#define GET_BIT(X, WHICH) \
GET_FIELD (X, WHICH, WHICH)
#define MASK(SIZE) \
(~((-1) << SIZE))
-
+
#define CATENATE(X, XSIZE, Y, YSIZE) \
(((X & MASK (XSIZE)) << YSIZE) | (Y & MASK (YSIZE)))
#define ELEVEN(X) \
CATENATE (GET_BIT (X, 10), 1, GET_FIELD (X, 0, 9), 10)
-
+
/* Some functions to manipulate PA instructions. */
-/* NOTE: these use the HP convention that f{1} is the _left_ most
+/* NOTE: these use the HP convention that f{0} is the _left_ most
* bit (MSB) of f; they sometimes have to impose an assumption
* about the size of a field; and as far as I can tell, most
* aren't used.
*/
-static INLINE unsigned long
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+/* Declare the functions with the unused attribute to avoid warnings. */
+static INLINE unsigned int sign_extend (unsigned int, unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int low_sign_extend (unsigned int, unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int assemble_3 (unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int assemble_6 (unsigned int, unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int assemble_12 (unsigned int, unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int assemble_16 (unsigned int, unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int assemble_16a (unsigned int, unsigned int,
+ unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int assemble_17 (unsigned int, unsigned int,
+ unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int assemble_21 (unsigned int)
+ __attribute ((__unused__));
+
+static INLINE unsigned int sign_unext (unsigned int, unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int low_sign_unext (unsigned int, unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int re_assemble_3 (unsigned int, unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int re_assemble_12 (unsigned int, unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int re_assemble_16 (unsigned int, unsigned int, int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int re_assemble_17 (unsigned int, unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int re_assemble_22 (unsigned int, unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int re_assemble_21 (unsigned int, unsigned int)
+ __attribute__ ((__unused__));
+static INLINE bfd_signed_vma hppa_field_adjust (bfd_signed_vma, bfd_signed_vma,
+ enum hppa_reloc_field_selector_type_alt)
+ __attribute__ ((__unused__));
+static INLINE int bfd_hppa_insn2fmt (unsigned int)
+ __attribute__ ((__unused__));
+static INLINE unsigned int hppa_rebuild_insn (bfd *, unsigned int,
+ unsigned int, unsigned int)
+ __attribute__ ((__unused__));
+#endif /* gcc 2.7 or higher */
+
+
+/* The *sign_extend and assemble_* functions are used to assemble
+ various bitfields taken from an instruction and return the
+ resulting immediate value. They correspond to functions by the
+ same name in HP's PA-RISC 2.0 Architecture Reference Manual. */
+
+static INLINE unsigned int
sign_extend (x, len)
unsigned int x, len;
{
- return (int)(x >> (len - 1) ? (-1 << len) | x : x);
+ unsigned int signbit = (1 << (len - 1));
+ unsigned int mask = (signbit << 1) - 1;
+ return ((x & mask) ^ signbit) - signbit;
}
static INLINE unsigned int
-assemble_3 (x)
- unsigned int x;
+low_sign_extend (x, len)
+ unsigned int x, len;
{
- return CATENATE (GET_BIT (x, 2), 1, GET_FIELD (x, 0, 1), 2);
+ return (x >> 1) - ((x & 1) << (len - 1));
}
-static INLINE void
-dis_assemble_3 (x, r)
+static INLINE unsigned int
+assemble_3 (x)
unsigned int x;
- unsigned int *r;
{
- *r = (((x & 4) >> 2) | ((x & 3) << 1)) & 7;
+ return CATENATE (GET_BIT (x, 2), 1, GET_FIELD (x, 0, 1), 2);
}
static INLINE unsigned int
assemble_6 (x, y)
unsigned int x, y;
{
- return (((x & 0x1) << 5) + (32 - (y & 0x1f)));
+ return (((x & 1) << 5) + (32 - (y & 0x1f)));
}
static INLINE unsigned int
@@ -268,16 +282,7 @@ assemble_12 (x, y)
GET_FIELD (x, 0, 9), 9);
}
-static INLINE void
-dis_assemble_12 (as12, x, y)
- unsigned int as12;
- unsigned int *x, *y;
-{
- *y = (as12 & 0x800) >> 11;
- *x = ((as12 & 0x3ff) << 1) | ((as12 & 0x400) >> 10);
-}
-
-static INLINE unsigned long
+static INLINE unsigned int
assemble_16 (x, y)
unsigned int x, y;
{
@@ -296,8 +301,7 @@ assemble_16 (x, y)
return sign_extend (temp, 16);
}
-
-static INLINE unsigned long
+static INLINE unsigned int
assemble_16a (x, y, z)
unsigned int x, y, z;
{
@@ -307,223 +311,252 @@ assemble_16a (x, y, z)
if (HPPA_WIDE)
temp = CATENATE (CATENATE (z, 1, (z ^ GET_BIT (x, 0)), 1), 2,
CATENATE ((z ^ GET_BIT (x, 1)), 1, y, 11), 12);
- else
- temp = CATENATE (CATENATE (z, 1, z, 1), 2, CATENATE (z, 1, y, 11), 12);
+ else
+ temp = CATENATE (CATENATE (z, 1, z, 1), 2, CATENATE (z, 1, y, 11), 12);
return sign_extend ((temp << 2), 16);
}
-static INLINE unsigned long
+static INLINE unsigned int
assemble_17 (x, y, z)
unsigned int x, y, z;
{
- unsigned long temp;
+ unsigned int temp;
temp = CATENATE (CATENATE (z, 1, x, 5), 6,
CATENATE (GET_BIT (y, 10), 1, GET_FIELD (y, 0, 9), 10), 11);
-
- return temp;
-}
-
-static INLINE void
-dis_assemble_17 (as17, x, y, z)
- unsigned int as17;
- unsigned int *x, *y, *z;
-{
- *z = (as17 & 0x10000) >> 16;
- *x = (as17 & 0x0f800) >> 11;
- *y = (((as17 & 0x00400) >> 10) | ((as17 & 0x3ff) << 1)) & 0x7ff;
-}
-
-static INLINE void
-dis_assemble_22 (as22, a, b, c, d)
- unsigned int as22;
- unsigned int *a, *b, *c, *d;
-{
-
- *d = (as22 & 0x200000) >> 21;
- *a = (as22 & 0x1f0000) >> 16;
- *b = (as22 & 0x0f800) >> 11;
- *c = (((as22 & 0x00400) >> 10) | ((as22 & 0x3ff) << 1)) & 0x7ff;
+ return temp;
}
-static INLINE unsigned long
+static INLINE unsigned int
assemble_21 (x)
unsigned int x;
{
- unsigned long temp;
-
- temp = ((x & 1) << 20) |
- ((x & 0xffe) << 8) |
- ((x & 0xc000) >> 7) |
- ((x & 0x1f0000) >> 14) |
- ((x & 0x003000) >> 12);
- return temp & 0x1fffff;
+ unsigned int temp;
+
+ temp = (( (x & 0x000001) << 20)
+ | ((x & 0x000ffe) << 8)
+ | ((x & 0x003000) >> 12)
+ | ((x & 0x00c000) >> 7)
+ | ((x & 0x1f0000) >> 14));
+ return temp;
}
-static INLINE unsigned long
+static INLINE unsigned int
assemble_22 (a,b,c,d)
unsigned int a,b,c,d;
{
- unsigned long temp;
-
+ unsigned int temp;
+
temp = CATENATE (CATENATE (d, 1, a, 5), 6,
CATENATE (b, 5, ELEVEN (c), 11), 16);
return sign_extend (temp, 22);
}
-static INLINE void
-dis_assemble_21 (as21, x)
- unsigned int as21, *x;
-{
- unsigned long temp;
-
- temp = (as21 & 0x100000) >> 20;
- temp |= (as21 & 0x0ffe00) >> 8;
- temp |= (as21 & 0x000180) << 7;
- temp |= (as21 & 0x00007c) << 14;
- temp |= (as21 & 0x000003) << 12;
- *x = temp;
-}
+/* The re_assemble_* functions splice together an opcode and an
+ immediate value. pa-risc uses all sorts of weird bitfields in the
+ instruction to hold the value. */
static INLINE unsigned int
-ones (n)
- int n;
+sign_unext (x, len)
+ unsigned int x, len;
{
unsigned int len_ones;
- int i;
- i = 0;
- len_ones = 0;
- while (i < n)
- {
- len_ones = (len_ones << 1) | 1;
- i++;
- }
+ len_ones = ((unsigned int) 1 << len) - 1;
- return len_ones;
+ return x & len_ones;
}
-static INLINE void
-sign_unext (x, len, result)
+static INLINE unsigned int
+low_sign_unext (x, len)
unsigned int x, len;
- unsigned int *result;
{
- unsigned int len_ones;
+ unsigned int temp;
+ unsigned int sign;
- len_ones = ones (len);
+ sign = (x >> (len-1)) & 1;
- *result = x & len_ones;
+ temp = sign_unext (x, len-1);
+
+ return (temp << 1) | sign;
}
-static INLINE unsigned long
-low_sign_extend (x, len)
- unsigned int x, len;
+static INLINE unsigned int
+re_assemble_3 (insn, as3)
+ unsigned int insn;
+ unsigned int as3;
{
- return (int)((x & 0x1 ? (-1 << (len - 1)) : 0) | x >> 1);
+ return (insn
+ | ((as3 & 4) << (13-2))
+ | ((as3 & 3) << (13+1)));
}
-static INLINE void
-low_sign_unext (x, len, result)
- unsigned int x, len;
- unsigned int *result;
+static INLINE unsigned int
+re_assemble_12 (insn, as12)
+ unsigned int insn;
+ unsigned int as12;
{
- unsigned int temp;
- unsigned int sign;
- unsigned int rest;
- unsigned int one_bit_at_len;
- unsigned int len_ones;
+ return (insn
+ | ((as12 & 0x800) >> 11)
+ | ((as12 & 0x400) >> (10 - 2))
+ | ((as12 & 0x3ff) << (1 + 2)));
+}
- len_ones = ones (len);
- one_bit_at_len = 1 << (len - 1);
+static INLINE unsigned int
+re_assemble_16 (insn, as16, wide)
+ unsigned int insn;
+ unsigned int as16;
+ int wide;
+{
+ unsigned int s, t;
- sign_unext (x, len, &temp);
- sign = temp & one_bit_at_len;
- sign >>= (len - 1);
+ if (wide)
+ {
+ /* Unusual 16-bit encoding. */
+ t = (as16 << 1) & 0xffff;
+ s = (as16 & 0x8000);
+ return insn | (t ^ s ^ (s >> 1)) | (s >> 15);
+ }
+ else
+ {
+ /* Standard 14-bit encoding. */
+ t = (as16 << 1) & 0x3fff;
+ s = (as16 & 0x2000);
+ return insn | t | (s >> 13);
+ }
+}
+
+static INLINE unsigned int
+re_assemble_17 (insn, as17)
+ unsigned int insn;
+ unsigned int as17;
+{
+ return (insn
+ | ((as17 & 0x10000) >> 16)
+ | ((as17 & 0x0f800) << (16 - 11))
+ | ((as17 & 0x00400) >> (10 - 2))
+ | ((as17 & 0x003ff) << (1 + 2)));
+}
- rest = temp & (len_ones ^ one_bit_at_len);
- rest <<= 1;
+static INLINE unsigned int
+re_assemble_21 (insn, as21)
+ unsigned int insn;
+ unsigned int as21;
+{
+ return (insn
+ | ((as21 & 0x100000) >> 20)
+ | ((as21 & 0x0ffe00) >> 8)
+ | ((as21 & 0x000180) << 7)
+ | ((as21 & 0x00007c) << 14)
+ | ((as21 & 0x000003) << 12));
+}
- *result = rest | sign;
+static INLINE unsigned int
+re_assemble_22 (insn, as22)
+ unsigned int insn;
+ unsigned int as22;
+{
+ return (insn
+ | ((as22 & 0x200000) >> 21)
+ | ((as22 & 0x1f0000) << (21 - 16))
+ | ((as22 & 0x00f800) << (16 - 11))
+ | ((as22 & 0x000400) >> (10 - 2))
+ | ((as22 & 0x0003ff) << (1 + 2)));
}
-/* Handle field selectors for PA instructions. */
-static INLINE unsigned long
-hppa_field_adjust (value, constant_value, r_field)
- unsigned long value;
- unsigned long constant_value;
- unsigned short r_field;
+/* Handle field selectors for PA instructions.
+ The L and R (and LS, RS etc.) selectors are used in pairs to form a
+ full 32 bit address. eg.
+
+ LDIL L'start,%r1 ; put left part into r1
+ LDW R'start(%r1),%r2 ; add r1 and right part to form address
+
+ This function returns sign extended values in all cases.
+*/
+
+static INLINE bfd_signed_vma
+hppa_field_adjust (sym_val, addend, r_field)
+ bfd_signed_vma sym_val;
+ bfd_signed_vma addend;
+ enum hppa_reloc_field_selector_type_alt r_field;
{
+ bfd_signed_vma value;
+
+ value = sym_val + addend;
switch (r_field)
{
- case e_fsel: /* F : no change */
- case e_nsel: /* N : no change */
- value += constant_value;
+ case e_fsel:
+ case e_nsel:
+ /* F: No change. */
break;
- case e_lssel: /* LS : if (bit 21) then add 0x800
- arithmetic shift right 11 bits */
- value += constant_value;
- if (value & 0x00000400)
- value += 0x800;
- value = (value & 0xfffff800) >> 11;
+ case e_lsel:
+ case e_nlsel:
+ /* L: Select top 21 bits. */
+ value = value >> 11;
break;
- case e_rssel: /* RS : Sign extend from bit 21 */
- value += constant_value;
- if (value & 0x00000400)
- value |= 0xfffff800;
- else
- value &= 0x7ff;
+ case e_rsel:
+ /* R: Select bottom 11 bits. */
+ value = value & 0x7ff;
break;
- case e_lsel: /* L : Arithmetic shift right 11 bits */
- case e_nlsel: /* NL : Arithmetic shift right 11 bits */
- value += constant_value;
- value = (value & 0xfffff800) >> 11;
+ case e_lssel:
+ /* LS: Round to nearest multiple of 2048 then select top 21 bits. */
+ value = value + 0x400;
+ value = value >> 11;
break;
- case e_rsel: /* R : Set bits 0-20 to zero */
- value += constant_value;
- value = value & 0x7ff;
+ case e_rssel:
+ /* RS: Select bottom 11 bits for LS.
+ We need to return a value such that 2048 * LS'x + RS'x == x.
+ ie. RS'x = x - ((x + 0x400) & -0x800)
+ this is just a sign extension from bit 21. */
+ value = ((value & 0x7ff) ^ 0x400) - 0x400;
break;
- case e_ldsel: /* LD : Add 0x800, arithmetic shift
- right 11 bits */
- value += constant_value;
- value += 0x800;
- value = (value & 0xfffff800) >> 11;
+ case e_ldsel:
+ /* LD: Round to next multiple of 2048 then select top 21 bits.
+ Yes, if we are already on a multiple of 2048, we go up to the
+ next one. RD in this case will be -2048. */
+ value = value + 0x800;
+ value = value >> 11;
break;
- case e_rdsel: /* RD : Set bits 0-20 to one */
- value += constant_value;
- value |= 0xfffff800;
+ case e_rdsel:
+ /* RD: Set bits 0-20 to one. */
+ value = value | -0x800;
break;
- case e_lrsel: /* LR : L with "rounded" constant */
- case e_nlrsel: /* NLR : NL with "rounded" constant */
- value = value + ((constant_value + 0x1000) & 0xffffe000);
- value = (value & 0xfffff800) >> 11;
+ case e_lrsel:
+ case e_nlrsel:
+ /* LR: L with rounding of the addend to nearest 8k. */
+ value = sym_val + ((addend + 0x1000) & -0x2000);
+ value = value >> 11;
break;
- case e_rrsel: /* RR : R with "rounded" constant */
- value = value + ((constant_value + 0x1000) & 0xffffe000);
- value = (value & 0x7ff) + constant_value - ((constant_value + 0x1000) & 0xffffe000);
+ case e_rrsel:
+ /* RR: R with rounding of the addend to nearest 8k.
+ We need to return a value such that 2048 * LR'x + RR'x == x
+ ie. RR'x = s+a - (s + (((a + 0x1000) & -0x2000) & -0x800))
+ . = s+a - ((s & -0x800) + ((a + 0x1000) & -0x2000))
+ . = (s & 0x7ff) + a - ((a + 0x1000) & -0x2000) */
+ value = (sym_val & 0x7ff) + (((addend & 0x1fff) ^ 0x1000) - 0x1000);
break;
default:
abort ();
}
return value;
-
}
/* PA-RISC OPCODES */
-#define get_opcode(insn) ((insn) & 0xfc000000) >> 26
+#define get_opcode(insn) (((insn) >> 26) & 0x3f)
/* FIXME: this list is incomplete. It should also be an enumerated
type rather than #defines. */
@@ -571,9 +604,9 @@ hppa_field_adjust (value, constant_value, r_field)
#define STD 0x1c
#define LDWL 0x17
#define STWL 0x1f
-#define FDLW 0x16
+#define FLDW 0x16
#define FSTW 0x1e
-
+
/* Given a machine instruction, return its format.
FIXME: opcodes which do not map to a known format
@@ -581,18 +614,17 @@ hppa_field_adjust (value, constant_value, r_field)
static INLINE int
bfd_hppa_insn2fmt (insn)
- unsigned long insn;
+ unsigned int insn;
{
- int fmt = -1;
unsigned char op = get_opcode (insn);
-
+
switch (op)
{
case ADDI:
case ADDIT:
case SUBI:
- fmt = 11;
- break;
+ return 11;
+
case MOVB:
case MOVIB:
case COMBT:
@@ -608,8 +640,8 @@ bfd_hppa_insn2fmt (insn)
case CMPBDT:
case CMPBDF:
case CMPIBD:
- fmt = 12;
- break;
+ return 12;
+
case LDO:
case LDB:
case LDH:
@@ -619,106 +651,57 @@ bfd_hppa_insn2fmt (insn)
case STH:
case STW:
case STWM:
- fmt = 14;
- break;
+ return 14;
+
case LDWL:
case STWL:
- case FDLW:
+ case FLDW:
case FSTW:
/* This is a hack. Unfortunately, format 11 is already taken
and we're using integers rather than an enum, so it's hard
- to describe the 10a format. */
- fmt = -11;
- break;
+ to describe the 11a format. */
+ return -11;
+
case LDD:
case STD:
- fmt = 10;
- break;
+ return 10;
+
case BL:
case BE:
case BLE:
- if ((insn & 0x00008000) == 0x00008000)
+ if ((insn & 0x00008000) != 0)
return 22;
- fmt = 17;
- break;
+ return 17;
+
case LDIL:
case ADDIL:
- fmt = 21;
- break;
+ return 21;
+
default:
- fmt = 32;
break;
}
- return fmt;
+ return 32;
}
/* Insert VALUE into INSN using R_FORMAT to determine exactly what
bits to change. */
-
-static INLINE unsigned long
+
+static INLINE unsigned int
hppa_rebuild_insn (abfd, insn, value, r_format)
bfd *abfd ATTRIBUTE_UNUSED;
- unsigned long insn;
- unsigned long value;
- unsigned long r_format;
+ unsigned int insn;
+ unsigned int value;
+ unsigned int r_format;
{
- unsigned long const_part;
- unsigned long rebuilt_part;
-
switch (r_format)
{
- case 11:
- {
- unsigned w1, w;
-
- const_part = insn & 0xffffe002;
- dis_assemble_12 (value, &w1, &w);
- rebuilt_part = (w1 << 2) | w;
- return const_part | rebuilt_part;
- }
-
- case 12:
- {
- unsigned w1, w;
-
- const_part = insn & 0xffffe002;
- dis_assemble_12 (value, &w1, &w);
- rebuilt_part = (w1 << 2) | w;
- return const_part | rebuilt_part;
- }
-
- case 14:
- {
- unsigned int ext;
-
- const_part = insn & 0xffffc000;
- low_sign_unext (value, 14, &ext);
- return const_part | ext;
- }
-
- case 17:
- {
- unsigned w1, w2, w;
-
- const_part = insn & 0xffe0e002;
- dis_assemble_17 (value, &w1, &w2, &w);
- rebuilt_part = (w2 << 2) | (w1 << 16) | w;
- return const_part | rebuilt_part;
- }
-
- case 21:
- {
- unsigned int w;
-
- const_part = insn & 0xffe00000;
- dis_assemble_21 (value, &w);
- return const_part | w;
- }
-
- case 32:
- const_part = 0;
- return value;
+ case 11: return (insn & ~ 0x7ff) | low_sign_unext (value, 11);
+ case 12: return re_assemble_12 (insn & ~ 0x1ffd, value);
+ case 14: return (insn & ~ 0x3fff) | low_sign_unext (value, 14);
+ case 17: return re_assemble_17 (insn & ~ 0x1f1ffd, value);
+ case 21: return re_assemble_21 (insn & ~ 0x1fffff, value);
+ case 32: return value;
default:
abort ();
diff --git a/bfd/libpei.h b/bfd/libpei.h
index 88f9f738229..db47e374818 100644
--- a/bfd/libpei.h
+++ b/bfd/libpei.h
@@ -192,6 +192,36 @@ PE/PEI rearrangement (and code added): Donn Terry
#define PUT_SCNHDR_LNNOPTR bfd_h_put_32
#endif
+#ifdef COFF_WITH_PEP64
+
+#define GET_OPTHDR_IMAGE_BASE bfd_h_get_64
+#define PUT_OPTHDR_IMAGE_BASE bfd_h_put_64
+#define GET_OPTHDR_SIZE_OF_STACK_RESERVE bfd_h_get_64
+#define PUT_OPTHDR_SIZE_OF_STACK_RESERVE bfd_h_put_64
+#define GET_OPTHDR_SIZE_OF_STACK_COMMIT bfd_h_get_64
+#define PUT_OPTHDR_SIZE_OF_STACK_COMMIT bfd_h_put_64
+#define GET_OPTHDR_SIZE_OF_HEAP_RESERVE bfd_h_get_64
+#define PUT_OPTHDR_SIZE_OF_HEAP_RESERVE bfd_h_put_64
+#define GET_OPTHDR_SIZE_OF_HEAP_COMMIT bfd_h_get_64
+#define PUT_OPTHDR_SIZE_OF_HEAP_COMMIT bfd_h_put_64
+#define GET_PDATA_ENTRY bfd_get_64
+
+#else /* !COFF_WITH_PEP64 */
+
+#define GET_OPTHDR_IMAGE_BASE bfd_h_get_32
+#define PUT_OPTHDR_IMAGE_BASE bfd_h_put_32
+#define GET_OPTHDR_SIZE_OF_STACK_RESERVE bfd_h_get_32
+#define PUT_OPTHDR_SIZE_OF_STACK_RESERVE bfd_h_put_32
+#define GET_OPTHDR_SIZE_OF_STACK_COMMIT bfd_h_get_32
+#define PUT_OPTHDR_SIZE_OF_STACK_COMMIT bfd_h_put_32
+#define GET_OPTHDR_SIZE_OF_HEAP_RESERVE bfd_h_get_32
+#define PUT_OPTHDR_SIZE_OF_HEAP_RESERVE bfd_h_put_32
+#define GET_OPTHDR_SIZE_OF_HEAP_COMMIT bfd_h_get_32
+#define PUT_OPTHDR_SIZE_OF_HEAP_COMMIT bfd_h_put_32
+#define GET_PDATA_ENTRY bfd_get_32
+
+#endif /* !COFF_WITH_PEP64 */
+
/* These functions are architecture dependent, and are in peicode.h:
coff_swap_reloc_in
int coff_swap_reloc_out
diff --git a/bfd/opncls.c b/bfd/opncls.c
index 8f10135d267..57ca0d0a259 100644
--- a/bfd/opncls.c
+++ b/bfd/opncls.c
@@ -486,7 +486,7 @@ bfd_close_all_done (abfd)
int mask = umask (0);
umask (mask);
chmod (abfd->filename,
- (0x777
+ (0777
& (buf.st_mode | ((S_IXUSR | S_IXGRP | S_IXOTH) &~ mask))));
}
}
diff --git a/bfd/peicode.h b/bfd/peicode.h
index 7238c7802e8..1c58ad0800c 100644
--- a/bfd/peicode.h
+++ b/bfd/peicode.h
@@ -905,8 +905,8 @@ pe_ILF_build_a_bfd (bfd * abfd,
/* XXX - treat as IMPORT_NAME ??? */
abort ();
- * (unsigned int *) id4->contents = ordinal | 0x80000000UL;
- * (unsigned int *) id5->contents = ordinal | 0x80000000UL;
+ * (unsigned int *) id4->contents = ordinal | 0x80000000;
+ * (unsigned int *) id5->contents = ordinal | 0x80000000;
}
else
{
diff --git a/bfd/peigen.c b/bfd/peigen.c
index 639ea892565..6c983caad7b 100644
--- a/bfd/peigen.c
+++ b/bfd/peigen.c
@@ -1,5 +1,5 @@
/* Support for the generic parts of PE/PEI; the common executable parts.
- Copyright 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+ Copyright 1995, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
Written by Cygnus Solutions.
This file is part of BFD, the Binary File Descriptor library.
@@ -434,11 +434,14 @@ _bfd_pei_swap_aouthdr_in (abfd, aouthdr_ext1, aouthdr_int1)
GET_AOUTHDR_ENTRY (abfd, (bfd_byte *) aouthdr_ext->entry);
aouthdr_int->text_start =
GET_AOUTHDR_TEXT_START (abfd, (bfd_byte *) aouthdr_ext->text_start);
+#ifndef COFF_WITH_PEP64
+ /* PE32+ does not have data_start member! */
aouthdr_int->data_start =
GET_AOUTHDR_DATA_START (abfd, (bfd_byte *) aouthdr_ext->data_start);
+#endif
a = &aouthdr_int->pe;
- a->ImageBase = bfd_h_get_32 (abfd, (bfd_byte *)src->ImageBase);
+ a->ImageBase = GET_OPTHDR_IMAGE_BASE (abfd, (bfd_byte *)src->ImageBase);
a->SectionAlignment = bfd_h_get_32 (abfd, (bfd_byte *)src->SectionAlignment);
a->FileAlignment = bfd_h_get_32 (abfd, (bfd_byte *)src->FileAlignment);
a->MajorOperatingSystemVersion =
@@ -455,10 +458,10 @@ _bfd_pei_swap_aouthdr_in (abfd, aouthdr_ext1, aouthdr_int1)
a->CheckSum = bfd_h_get_32 (abfd, (bfd_byte *)src->CheckSum);
a->Subsystem = bfd_h_get_16 (abfd, (bfd_byte *)src->Subsystem);
a->DllCharacteristics = bfd_h_get_16 (abfd, (bfd_byte *)src->DllCharacteristics);
- a->SizeOfStackReserve = bfd_h_get_32 (abfd, (bfd_byte *)src->SizeOfStackReserve);
- a->SizeOfStackCommit = bfd_h_get_32 (abfd, (bfd_byte *)src->SizeOfStackCommit);
- a->SizeOfHeapReserve = bfd_h_get_32 (abfd, (bfd_byte *)src->SizeOfHeapReserve);
- a->SizeOfHeapCommit = bfd_h_get_32 (abfd, (bfd_byte *)src->SizeOfHeapCommit);
+ a->SizeOfStackReserve = GET_OPTHDR_SIZE_OF_STACK_RESERVE (abfd, (bfd_byte *)src->SizeOfStackReserve);
+ a->SizeOfStackCommit = GET_OPTHDR_SIZE_OF_STACK_COMMIT (abfd, (bfd_byte *)src->SizeOfStackCommit);
+ a->SizeOfHeapReserve = GET_OPTHDR_SIZE_OF_HEAP_RESERVE (abfd, (bfd_byte *)src->SizeOfHeapReserve);
+ a->SizeOfHeapCommit = GET_OPTHDR_SIZE_OF_HEAP_COMMIT (abfd, (bfd_byte *)src->SizeOfHeapCommit);
a->LoaderFlags = bfd_h_get_32 (abfd, (bfd_byte *)src->LoaderFlags);
a->NumberOfRvaAndSizes = bfd_h_get_32 (abfd, (bfd_byte *)src->NumberOfRvaAndSizes);
@@ -476,18 +479,25 @@ _bfd_pei_swap_aouthdr_in (abfd, aouthdr_ext1, aouthdr_int1)
if (aouthdr_int->entry)
{
aouthdr_int->entry += a->ImageBase;
+#ifndef COFF_WITH_PEP64
aouthdr_int->entry &= 0xffffffff;
+#endif
}
if (aouthdr_int->tsize)
{
aouthdr_int->text_start += a->ImageBase;
+#ifndef COFF_WITH_PEP64
aouthdr_int->text_start &= 0xffffffff;
+#endif
}
+#ifndef COFF_WITH_PEP64
+ /* PE32+ does not have data_start member! */
if (aouthdr_int->dsize)
{
aouthdr_int->data_start += a->ImageBase;
aouthdr_int->data_start &= 0xffffffff;
}
+#endif
#ifdef POWERPC_LE_PE
/* These three fields are normally set up by ppc_relocate_section.
@@ -532,10 +542,28 @@ _bfd_pei_swap_aouthdr_out (abfd, in, out)
struct internal_aouthdr *aouthdr_in = (struct internal_aouthdr *)in;
struct internal_extra_pe_aouthdr *extra = &pe_data (abfd)->pe_opthdr;
PEAOUTHDR *aouthdr_out = (PEAOUTHDR *)out;
+ bfd_vma sa, fa, ib;
+
+ /* The following definitely is required for EFI applications.
+ Perhaps it's needed for other PEI targets as well, but I don't
+ know that for a fact, so we play it safe here and tweak the
+ alignments only if PEI_FORCE_MINIMUM_ALIGNMENT is
+ defined. --davidm */
+#ifdef PEI_FORCE_MINIMUM_ALIGNMENT
+ if (!extra->FileAlignment)
+ extra->FileAlignment = PE_DEF_FILE_ALIGNMENT;
+ if (!extra->SectionAlignment)
+ extra->SectionAlignment = PE_DEF_SECTION_ALIGNMENT;
+#endif
+
+#ifdef PEI_DEFAULT_TARGET_SUBSYSTEM
+ if (extra->Subsystem == IMAGE_SUBSYSTEM_UNKNOWN)
+ extra->Subsystem = PEI_DEFAULT_TARGET_SUBSYSTEM;
+#endif
- bfd_vma sa = extra->SectionAlignment;
- bfd_vma fa = extra->FileAlignment;
- bfd_vma ib = extra->ImageBase ;
+ sa = extra->SectionAlignment;
+ fa = extra->FileAlignment;
+ ib = extra->ImageBase;
if (aouthdr_in->tsize)
{
@@ -566,7 +594,7 @@ _bfd_pei_swap_aouthdr_out (abfd, in, out)
/* first null out all data directory entries .. */
memset (extra->DataDirectory, sizeof (extra->DataDirectory), 0);
- add_data_entry (abfd, extra, 0, ".edata", 0);
+ add_data_entry (abfd, extra, 0, ".edata", ib);
/* Don't call add_data_entry for .idata$2 or .idata$5. It's done in
bfd_coff_final_link where all the required information is
@@ -574,11 +602,11 @@ _bfd_pei_swap_aouthdr_out (abfd, in, out)
/* However, until other .idata fixes are made (pending patch), the
entry for .idata is needed for backwards compatability. FIXME. */
- add_data_entry (abfd, extra, 1, ".idata" ,0);
+ add_data_entry (abfd, extra, 1, ".idata" , ib);
- add_data_entry (abfd, extra, 2, ".rsrc" ,0);
+ add_data_entry (abfd, extra, 2, ".rsrc" , ib);
- add_data_entry (abfd, extra, 3, ".pdata", 0);
+ add_data_entry (abfd, extra, 3, ".pdata", ib);
/* For some reason, the virtual size (which is what's set by
add_data_entry) for .reloc is not the same as the size recorded
@@ -586,7 +614,7 @@ _bfd_pei_swap_aouthdr_out (abfd, in, out)
but since it's the best we've got, use it. It does do the right
thing for .pdata. */
if (pe_data (abfd)->has_reloc_section)
- add_data_entry (abfd, extra, 5, ".reloc", 0);
+ add_data_entry (abfd, extra, 5, ".reloc", ib);
{
asection *sec;
@@ -633,12 +661,14 @@ _bfd_pei_swap_aouthdr_out (abfd, in, out)
PUT_AOUTHDR_TEXT_START (abfd, aouthdr_in->text_start,
(bfd_byte *) aouthdr_out->standard.text_start);
+#ifndef COFF_WITH_PEP64
+ /* PE32+ does not have data_start member! */
PUT_AOUTHDR_DATA_START (abfd, aouthdr_in->data_start,
(bfd_byte *) aouthdr_out->standard.data_start);
+#endif
-
- bfd_h_put_32 (abfd, extra->ImageBase,
- (bfd_byte *) aouthdr_out->ImageBase);
+ PUT_OPTHDR_IMAGE_BASE (abfd, extra->ImageBase,
+ (bfd_byte *) aouthdr_out->ImageBase);
bfd_h_put_32 (abfd, extra->SectionAlignment,
(bfd_byte *) aouthdr_out->SectionAlignment);
bfd_h_put_32 (abfd, extra->FileAlignment,
@@ -667,14 +697,14 @@ _bfd_pei_swap_aouthdr_out (abfd, in, out)
(bfd_byte *) aouthdr_out->Subsystem);
bfd_h_put_16 (abfd, extra->DllCharacteristics,
(bfd_byte *) aouthdr_out->DllCharacteristics);
- bfd_h_put_32 (abfd, extra->SizeOfStackReserve,
- (bfd_byte *) aouthdr_out->SizeOfStackReserve);
- bfd_h_put_32 (abfd, extra->SizeOfStackCommit,
- (bfd_byte *) aouthdr_out->SizeOfStackCommit);
- bfd_h_put_32 (abfd, extra->SizeOfHeapReserve,
- (bfd_byte *) aouthdr_out->SizeOfHeapReserve);
- bfd_h_put_32 (abfd, extra->SizeOfHeapCommit,
- (bfd_byte *) aouthdr_out->SizeOfHeapCommit);
+ PUT_OPTHDR_SIZE_OF_STACK_RESERVE (abfd, extra->SizeOfStackReserve,
+ (bfd_byte *) aouthdr_out->SizeOfStackReserve);
+ PUT_OPTHDR_SIZE_OF_STACK_COMMIT (abfd, extra->SizeOfStackCommit,
+ (bfd_byte *) aouthdr_out->SizeOfStackCommit);
+ PUT_OPTHDR_SIZE_OF_HEAP_RESERVE (abfd, extra->SizeOfHeapReserve,
+ (bfd_byte *) aouthdr_out->SizeOfHeapReserve);
+ PUT_OPTHDR_SIZE_OF_HEAP_COMMIT (abfd, extra->SizeOfHeapCommit,
+ (bfd_byte *) aouthdr_out->SizeOfHeapCommit);
bfd_h_put_32 (abfd, extra->LoaderFlags,
(bfd_byte *) aouthdr_out->LoaderFlags);
bfd_h_put_32 (abfd, extra->NumberOfRvaAndSizes,
@@ -973,7 +1003,7 @@ static char * dir_names[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] =
N_ ("Load Configuration Directory"),
N_ ("Bound Import Directory"),
N_ ("Import Address Table Directory"),
- N_ ("Reserved"),
+ N_ ("Delay Import Directory"),
N_ ("Reserved"),
N_ ("Reserved")
};
@@ -994,63 +1024,61 @@ pe_print_idata (abfd, vfile)
PTR vfile;
{
FILE *file = (FILE *) vfile;
- bfd_byte *data = 0;
- asection *section = bfd_get_section_by_name (abfd, ".idata");
- unsigned long adj;
+ bfd_byte *data;
+ asection *section;
+ bfd_signed_vma adj;
#ifdef POWERPC_LE_PE
asection *rel_section = bfd_get_section_by_name (abfd, ".reldata");
#endif
- bfd_size_type datasize;
+ bfd_size_type datasize = 0;
bfd_size_type dataoff;
- bfd_size_type secsize;
bfd_size_type i;
int onaline = 20;
pe_data_type *pe = pe_data (abfd);
struct internal_extra_pe_aouthdr *extra = &pe->pe_opthdr;
- if (section != NULL)
+ bfd_vma addr;
+
+ addr = extra->DataDirectory[1].VirtualAddress;
+
+ if (addr == 0 && extra->DataDirectory[1].Size == 0)
{
- datasize = bfd_section_size (abfd, section);
- dataoff = 0;
+ /* Maybe the extra header isn't there. Look for the section. */
+ section = bfd_get_section_by_name (abfd, ".idata");
+ if (section == NULL)
+ return true;
+ addr = section->vma;
+ datasize = bfd_section_size (abfd, section);
if (datasize == 0)
return true;
-
- fprintf (file, _("\nThe import table is the .idata section\n"));
}
else
{
- /* idata buried in some other section: e.g. KERNEL32.DLL. */
- bfd_vma addr, size;
-
- addr = extra->DataDirectory[1].VirtualAddress;
- size = extra->DataDirectory[1].Size;
-
- if (addr == 0 || size == 0)
- return true;
-
+ addr += extra->ImageBase;
for (section = abfd->sections; section != NULL; section = section->next)
{
- if (addr >= section->vma
- && addr < section->vma + bfd_section_size(abfd,section))
- break;
+ datasize = bfd_section_size (abfd, section);
+ if (addr >= section->vma && addr < section->vma + datasize)
+ break;
}
+
if (section == NULL)
{
- fprintf (file,
- _("\nThere is an import table, but the section containing it could not be found\n"));
- return true;
+ fprintf (file,
+ _("\nThere is an import table, but the section containing it could not be found\n"));
+ return true;
}
+ }
- fprintf (file, _("\nThere is an import table in %s at 0x%lx\n"),
- section->name, (unsigned long)addr);
+ fprintf (file, _("\nThere is an import table in %s at 0x%lx\n"),
+ section->name, (unsigned long) addr);
- dataoff = addr - section->vma;
- datasize = size;
- }
+ dataoff = addr - section->vma;
+ datasize -= dataoff;
#ifdef POWERPC_LE_PE
if (rel_section != 0 && bfd_section_size (abfd, rel_section) != 0)
@@ -1067,13 +1095,12 @@ pe_print_idata (abfd, vfile)
bfd_vma start_address;
bfd_byte *data = 0;
int offset;
+
data = (bfd_byte *) bfd_malloc ((size_t) bfd_section_size (abfd,
rel_section));
if (data == NULL && bfd_section_size (abfd, rel_section) != 0)
return false;
- datasize = bfd_section_size (abfd, rel_section);
-
bfd_get_section_contents (abfd,
rel_section,
(PTR) data, 0,
@@ -1081,8 +1108,8 @@ pe_print_idata (abfd, vfile)
offset = abfd->start_address - rel_section->vma;
- start_address = bfd_get_32(abfd, data+offset);
- loadable_toc_address = bfd_get_32(abfd, data+offset+4);
+ start_address = bfd_get_32 (abfd, data + offset);
+ loadable_toc_address = bfd_get_32 (abfd, data + offset + 4);
toc_address = loadable_toc_address - 32768;
fprintf(file,
@@ -1100,21 +1127,23 @@ pe_print_idata (abfd, vfile)
#endif
fprintf(file,
- _("\nThe Import Tables (interpreted .idata section contents)\n"));
+ _("\nThe Import Tables (interpreted %s section contents)\n"),
+ section->name);
fprintf(file,
_(" vma: Hint Time Forward DLL First\n"));
fprintf(file,
_(" Table Stamp Chain Name Thunk\n"));
- secsize = bfd_section_size (abfd, section);
- data = (bfd_byte *) bfd_malloc (secsize);
- if (data == NULL && secsize != 0)
+ data = (bfd_byte *) bfd_malloc (dataoff + datasize);
+ if (data == NULL)
return false;
- if (! bfd_get_section_contents (abfd, section, (PTR) data, 0, secsize))
+ /* Read the whole section. Some of the fields might be before dataoff. */
+ if (! bfd_get_section_contents (abfd, section, (PTR) data,
+ 0, dataoff + datasize))
return false;
- adj = - section->vma;
+ adj = section->vma - extra->ImageBase;
for (i = 0; i < datasize; i += onaline)
{
@@ -1127,10 +1156,9 @@ pe_print_idata (abfd, vfile)
bfd_size_type j;
char *dll;
- fprintf (file,
- " %08lx\t",
- (unsigned long int) (i + section->vma + dataoff));
-
+ /* print (i + extra->DataDirectory[1].VirtualAddress) */
+ fprintf (file, " %08lx\t", (unsigned long) (i + adj + dataoff));
+
if (i + 20 > datasize)
{
/* check stuff */
@@ -1144,23 +1172,23 @@ pe_print_idata (abfd, vfile)
first_thunk = bfd_get_32 (abfd, data + i + 16 + dataoff);
fprintf (file, "%08lx %08lx %08lx %08lx %08lx\n",
- hint_addr,
- time_stamp,
- forward_chain,
- dll_name,
- first_thunk);
+ (unsigned long) hint_addr,
+ (unsigned long) time_stamp,
+ (unsigned long) forward_chain,
+ (unsigned long) dll_name,
+ (unsigned long) first_thunk);
if (hint_addr == 0 && first_thunk == 0)
break;
- dll = (char *) data + dll_name - section->vma + dataoff;
+ dll = (char *) data + dll_name - adj;
fprintf(file, _("\n\tDLL Name: %s\n"), dll);
if (hint_addr != 0)
{
fprintf (file, _("\tvma: Hint/Ord Member-Name\n"));
- idx = hint_addr + adj;
+ idx = hint_addr - adj;
for (j = 0; j < datasize; j += 4)
{
@@ -1176,8 +1204,8 @@ pe_print_idata (abfd, vfile)
int ordinal;
char *member_name;
- ordinal = bfd_get_16 (abfd, data + member + adj);
- member_name = (char *) data + member + adj + 2;
+ ordinal = bfd_get_16 (abfd, data + member - adj);
+ member_name = (char *) data + member - adj + 2;
fprintf (file, "\t%04lx\t %4d %s",
member, ordinal, member_name);
}
@@ -1188,7 +1216,7 @@ pe_print_idata (abfd, vfile)
&& first_thunk != 0
&& first_thunk != hint_addr)
fprintf (file, "\t%04lx",
- bfd_get_32 (abfd, data + first_thunk + adj + j));
+ (long) bfd_get_32 (abfd, data + first_thunk - adj + j));
fprintf (file, "\n");
}
@@ -1199,7 +1227,7 @@ pe_print_idata (abfd, vfile)
int differ = 0;
int idx2;
- idx2 = first_thunk + adj;
+ idx2 = first_thunk - adj;
for (j = 0; j < datasize; j += 4)
{
@@ -1231,11 +1259,12 @@ pe_print_idata (abfd, vfile)
}
else
{
- ordinal = bfd_get_16(abfd,
- data + iat_member + adj);
- member_name = (char *) data + iat_member + adj + 2;
+ ordinal = bfd_get_16 (abfd, data + iat_member - adj);
+ member_name = (char *) data + iat_member - adj + 2;
fprintf(file, "\t%04lx\t %4d %s\n",
- iat_member, ordinal, member_name);
+ (unsigned long) iat_member,
+ ordinal,
+ member_name);
}
}
@@ -1264,14 +1293,14 @@ pe_print_edata (abfd, vfile)
PTR vfile;
{
FILE *file = (FILE *) vfile;
- bfd_byte *data = 0;
- asection *section = bfd_get_section_by_name (abfd, ".edata");
+ bfd_byte *data;
+ asection *section;
- bfd_size_type datasize;
+ bfd_size_type datasize = 0;
bfd_size_type dataoff;
bfd_size_type i;
- int adj;
+ bfd_signed_vma adj;
struct EDT_type
{
long export_flags; /* reserved - should be zero */
@@ -1290,45 +1319,48 @@ pe_print_edata (abfd, vfile)
pe_data_type *pe = pe_data (abfd);
struct internal_extra_pe_aouthdr *extra = &pe->pe_opthdr;
- if (section != NULL)
+ bfd_vma addr;
+
+ addr = extra->DataDirectory[0].VirtualAddress;
+
+ if (addr == 0 && extra->DataDirectory[0].Size == 0)
{
+ /* Maybe the extra header isn't there. Look for the section. */
+ section = bfd_get_section_by_name (abfd, ".edata");
+ if (section == NULL)
+ return true;
+
+ addr = section->vma;
datasize = bfd_section_size (abfd, section);
- dataoff = 0;
- fprintf (file, _("\nThe export table is the .edata section\n"));
+ if (datasize == 0)
+ return true;
}
else
{
- /* edata is buried in some other section: e.g. NTDLL.DLL. */
- bfd_vma addr, size;
-
- addr = extra->DataDirectory[0].VirtualAddress;
- size = extra->DataDirectory[0].Size;
-
- if (addr == 0 || size == 0)
- return true;
-
+ addr += extra->ImageBase;
for (section = abfd->sections; section != NULL; section = section->next)
{
- if (addr >= section->vma
- && addr < section->vma + bfd_section_size (abfd, section))
- break;
+ datasize = bfd_section_size (abfd, section);
+ if (addr >= section->vma && addr < section->vma + datasize)
+ break;
}
+
if (section == NULL)
{
- fprintf (file,
- _("\nThere is an export table, but the section containing it could not be found\n"));
- return true;
+ fprintf (file,
+ _("\nThere is an export table, but the section containing it could not be found\n"));
+ return true;
}
+ }
- fprintf (file, _("\nThere is an export table in %s at 0x%lx\n"),
- section->name, (unsigned long) addr);
+ fprintf (file, _("\nThere is an export table in %s at 0x%lx\n"),
+ section->name, (unsigned long) addr);
- datasize = size;
- dataoff = addr - section->vma;
- }
+ dataoff = addr - section->vma;
+ datasize -= dataoff;
data = (bfd_byte *) bfd_malloc (datasize);
- if (data == NULL && datasize != 0)
+ if (data == NULL)
return false;
if (! bfd_get_section_contents (abfd, section, (PTR) data, dataoff,
@@ -1348,11 +1380,12 @@ pe_print_edata (abfd, vfile)
edt.npt_addr = bfd_get_32(abfd, data+32);
edt.ot_addr = bfd_get_32(abfd, data+36);
- adj = - (section->vma + dataoff);
+ adj = section->vma - extra->ImageBase + dataoff;
/* Dump the EDT first first */
fprintf(file,
- _("\nThe Export Tables (interpreted .edata section contents)\n\n"));
+ _("\nThe Export Tables (interpreted %s section contents)\n\n"),
+ section->name);
fprintf(file,
_("Export Flags \t\t\t%lx\n"), (unsigned long) edt.export_flags);
@@ -1367,7 +1400,7 @@ pe_print_edata (abfd, vfile)
_("Name \t\t\t\t"));
fprintf_vma (file, edt.name);
fprintf (file,
- " %s\n", data + edt.name + adj);
+ " %s\n", data + edt.name - adj);
fprintf(file,
_("Ordinal Base \t\t\t%ld\n"), edt.base);
@@ -1376,11 +1409,11 @@ pe_print_edata (abfd, vfile)
_("Number in:\n"));
fprintf(file,
- _("\tExport Address Table \t\t%lx\n"),
+ _("\tExport Address Table \t\t%08lx\n"),
edt.num_functions);
fprintf(file,
- _("\t[Name Pointer/Ordinal] Table\t%lu\n"), edt.num_names);
+ _("\t[Name Pointer/Ordinal] Table\t%08lx\n"), edt.num_names);
fprintf(file,
_("Table Addresses\n"));
@@ -1418,29 +1451,30 @@ pe_print_edata (abfd, vfile)
for (i = 0; i < edt.num_functions; ++i)
{
bfd_vma eat_member = bfd_get_32 (abfd,
- data + edt.eat_addr + (i * 4) + adj);
- bfd_vma eat_actual = eat_member;
- bfd_vma edata_start = bfd_get_section_vma (abfd, section);
- bfd_vma edata_end = edata_start + datasize;
-
+ data + edt.eat_addr + (i * 4) - adj);
if (eat_member == 0)
continue;
- if (edata_start < eat_actual && eat_actual < edata_end)
+ if (eat_member - adj <= datasize)
{
- /* this rva is to a name (forwarding function) in our section */
+ /* This rva is to a name (forwarding function) in our section. */
/* Should locate a function descriptor */
fprintf (file,
"\t[%4ld] +base[%4ld] %04lx %s -- %s\n",
- (long) i, (long) (i + edt.base), eat_member,
- _("Forwarder RVA"), data + eat_member + adj);
+ (long) i,
+ (long) (i + edt.base),
+ (unsigned long) eat_member,
+ _("Forwarder RVA"),
+ data + eat_member - adj);
}
else
{
/* Should locate a function descriptor in the reldata section */
fprintf (file,
"\t[%4ld] +base[%4ld] %04lx %s\n",
- (long) i, (long) (i + edt.base), eat_member,
+ (long) i,
+ (long) (i + edt.base),
+ (unsigned long) eat_member,
_("Export RVA"));
}
}
@@ -1455,14 +1489,14 @@ pe_print_edata (abfd, vfile)
bfd_vma name_ptr = bfd_get_32(abfd,
data +
edt.npt_addr
- + (i*4) + adj);
+ + (i*4) - adj);
- char *name = (char *) data + name_ptr + adj;
+ char *name = (char *) data + name_ptr - adj;
bfd_vma ord = bfd_get_16(abfd,
data +
edt.ot_addr
- + (i*2) + adj);
+ + (i*2) - adj);
fprintf(file,
"\t[%4ld] %s\n", (long) ord, name);
@@ -1473,18 +1507,27 @@ pe_print_edata (abfd, vfile)
return true;
}
+/* This really is architecture dependent. On IA-64, a .pdata entry
+ consists of three dwords containing relative virtual addresses that
+ specify the start and end address of the code range the entry
+ covers and the address of the corresponding unwind info data. */
static boolean
pe_print_pdata (abfd, vfile)
bfd *abfd;
PTR vfile;
{
+#ifdef COFF_WITH_PEP64
+# define PDATA_ROW_SIZE (3*8)
+#else
+# define PDATA_ROW_SIZE (5*4)
+#endif
FILE *file = (FILE *) vfile;
bfd_byte *data = 0;
asection *section = bfd_get_section_by_name (abfd, ".pdata");
bfd_size_type datasize = 0;
bfd_size_type i;
bfd_size_type start, stop;
- int onaline = 20;
+ int onaline = PDATA_ROW_SIZE;
if (section == NULL
|| coff_section_data (abfd, section) == NULL
@@ -1498,10 +1541,15 @@ pe_print_pdata (abfd, vfile)
fprintf (file,
_("\nThe Function Table (interpreted .pdata section contents)\n"));
+#ifdef COFF_WITH_PEP64
+ fprintf(file,
+ _(" vma:\t\t\tBegin Address End Address Unwind Info\n"));
+#else
fprintf (file,
_(" vma:\t\tBegin End EH EH PrologEnd Exception\n"));
fprintf (file,
_(" \t\tAddress Address Handler Data Address Mask\n"));
+#endif
if (bfd_section_size (abfd, section) == 0)
return true;
@@ -1527,14 +1575,14 @@ pe_print_pdata (abfd, vfile)
bfd_vma prolog_end_addr;
int em_data;
- if (i + 20 > stop)
+ if (i + PDATA_ROW_SIZE > stop)
break;
- begin_addr = bfd_get_32(abfd, data+i);
- end_addr = bfd_get_32(abfd, data+i+4);
- eh_handler = bfd_get_32(abfd, data+i+8);
- eh_data = bfd_get_32(abfd, data+i+12);
- prolog_end_addr = bfd_get_32(abfd, data+i+16);
+ begin_addr = GET_PDATA_ENTRY(abfd, data+i);
+ end_addr = GET_PDATA_ENTRY(abfd, data+i+4);
+ eh_handler = GET_PDATA_ENTRY(abfd, data+i+8);
+ eh_data = GET_PDATA_ENTRY(abfd, data+i+12);
+ prolog_end_addr = GET_PDATA_ENTRY(abfd, data+i+16);
if (begin_addr == 0 && end_addr == 0 && eh_handler == 0
&& eh_data == 0 && prolog_end_addr == 0)
@@ -1543,21 +1591,21 @@ pe_print_pdata (abfd, vfile)
break;
}
- fprintf (file,
- " %08lx\t",
- (unsigned long int) (i + section->vma));
-
em_data = ((eh_handler & 0x1) << 2) | (prolog_end_addr & 0x3);
- eh_handler &= 0xfffffffc;
- prolog_end_addr &= 0xfffffffc;
-
- fprintf (file, "%08lx %08lx %08lx %08lx %08lx %x",
- begin_addr,
- end_addr,
- eh_handler,
- eh_data,
- prolog_end_addr,
- em_data);
+ eh_handler &= ~ (bfd_vma) 0x3;
+ prolog_end_addr &= ~ (bfd_vma) 0x3;
+
+ fputc (' ', file);
+ fprintf_vma (file, i + section->vma); fputc ('\t', file);
+ fprintf_vma (file, begin_addr); fputc (' ', file);
+ fprintf_vma (file, end_addr); fputc (' ', file);
+ fprintf_vma (file, eh_handler);
+#ifndef COFF_WITH_PEP64
+ fputc (' ', file);
+ fprintf_vma (file, eh_data); fputc (' ', file);
+ fprintf_vma (file, prolog_end_addr);
+ fprintf (file, " %x", em_data);
+#endif
#ifdef POWERPC_LE_PE
if (eh_handler == 0 && eh_data != 0)
@@ -1603,6 +1651,12 @@ static const char * const tbl[] =
"HIGHLOW",
"HIGHADJ",
"MIPS_JMPADDR",
+"SECTION",
+"REL32",
+"RESERVED1",
+"MIPS_JMPADDR16",
+"DIR64",
+"HIGH3ADJ"
"UNKNOWN", /* MUST be last */
};
@@ -1661,7 +1715,7 @@ pe_print_reloc (abfd, vfile)
fprintf (file,
_("\nVirtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n"),
- virtual_address, size, size, number);
+ (unsigned long) virtual_address, size, size, number);
for (j = 0; j < number; ++j)
{
@@ -1707,6 +1761,7 @@ _bfd_pe_print_private_bfd_data_common (abfd, vfile)
int j;
pe_data_type *pe = pe_data (abfd);
struct internal_extra_pe_aouthdr *i = &pe->pe_opthdr;
+ const char *subsystem_name = NULL;
/* The MS dumpbin program reportedly ands with 0xff0f before
printing the characteristics field. Not sure why. No reason to
@@ -1740,12 +1795,44 @@ _bfd_pe_print_private_bfd_data_common (abfd, vfile)
fprintf (file,"MinorImageVersion\t%d\n", i->MinorImageVersion);
fprintf (file,"MajorSubsystemVersion\t%d\n", i->MajorSubsystemVersion);
fprintf (file,"MinorSubsystemVersion\t%d\n", i->MinorSubsystemVersion);
- fprintf (file,"Reserved1\t\t%08lx\n", i->Reserved1);
+ fprintf (file,"Win32Version\t\t%08lx\n", i->Reserved1);
fprintf (file,"SizeOfImage\t\t%08lx\n", i->SizeOfImage);
fprintf (file,"SizeOfHeaders\t\t%08lx\n", i->SizeOfHeaders);
fprintf (file,"CheckSum\t\t%08lx\n", i->CheckSum);
- fprintf (file,"Subsystem\t\t%08x\n", i->Subsystem);
- fprintf (file,"DllCharacteristics\t%08x\n", i->DllCharacteristics);
+ switch (i->Subsystem)
+ {
+ case IMAGE_SUBSYSTEM_UNKNOWN:
+ subsystem_name = "unspecified";
+ break;
+ case IMAGE_SUBSYSTEM_NATIVE:
+ subsystem_name = "NT native";
+ break;
+ case IMAGE_SUBSYSTEM_WINDOWS_GUI:
+ subsystem_name = "Windows GUI";
+ break;
+ case IMAGE_SUBSYSTEM_WINDOWS_CUI:
+ subsystem_name = "Windows CUI";
+ break;
+ case IMAGE_SUBSYSTEM_POSIX_CUI:
+ subsystem_name = "POSIX CUI";
+ break;
+ case IMAGE_SUBSYSTEM_WINDOWS_CE_GUI:
+ subsystem_name = "Wince CUI";
+ break;
+ case IMAGE_SUBSYSTEM_EFI_APPLICATION:
+ subsystem_name = "EFI application";
+ break;
+ case IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER:
+ subsystem_name = "EFI boot service driver";
+ break;
+ case IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER:
+ subsystem_name = "EFI runtime driver";
+ break;
+ }
+ fprintf (file,"Subsystem\t\t%08x", i->Subsystem);
+ if (subsystem_name)
+ fprintf (file, "\t(%s)", subsystem_name);
+ fprintf (file,"\nDllCharacteristics\t%08x\n", i->DllCharacteristics);
fprintf (file,"SizeOfStackReserve\t");
fprintf_vma (file, i->SizeOfStackReserve);
fprintf (file,"\nSizeOfStackCommit\t");
diff --git a/bfd/po/POTFILES.in b/bfd/po/POTFILES.in
index 51a980bf710..94b82823eed 100644
--- a/bfd/po/POTFILES.in
+++ b/bfd/po/POTFILES.in
@@ -119,6 +119,8 @@ elf32-v850.c
elf32.c
elf64-alpha.c
elf64-gen.c
+elf64-hppa.c
+elf64-hppa.h
elf64-mips.c
elf64-sparc.c
elf64.c
diff --git a/bfd/ppcboot.c b/bfd/ppcboot.c
index d9db8268d47..9441848b3d3 100644
--- a/bfd/ppcboot.c
+++ b/bfd/ppcboot.c
@@ -64,7 +64,11 @@ typedef struct ppcboot_hdr {
bfd_byte os_id; /* OS_ID */
char partition_name[32]; /* partition name */
bfd_byte reserved1[470]; /* reserved */
-} ppcboot_hdr_t;
+}
+#ifdef __GNUC__
+ __attribute__ ((packed))
+#endif
+ppcboot_hdr_t;
/* Signature bytes for last 2 bytes of the 512 byte record */
#define SIGNATURE0 0x55
diff --git a/bfd/reloc.c b/bfd/reloc.c
index 8823c6ce53e..7b86e37be30 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -25,7 +25,7 @@ SECTION
BFD maintains relocations in much the same way it maintains
symbols: they are left alone until required, then read in
- en-mass and translated into an internal form. A common
+ en-masse and translated into an internal form. A common
routine <<bfd_perform_relocation>> acts upon the
canonical form to do the fixup.
@@ -729,6 +729,7 @@ bfd_perform_relocation (abfd, reloc_entry, data, input_section, output_bfd,
/* WTF?? */
if (abfd->xvec->flavour == bfd_target_coff_flavour
&& strcmp (abfd->xvec->name, "aixcoff-rs6000") != 0
+ && strcmp (abfd->xvec->name, "aixcoff64-rs6000") != 0
&& strcmp (abfd->xvec->name, "xcoff-powermac") != 0
&& strcmp (abfd->xvec->name, "coff-Intel-little") != 0
&& strcmp (abfd->xvec->name, "coff-Intel-big") != 0)
@@ -1125,6 +1126,7 @@ bfd_install_relocation (abfd, reloc_entry, data_start, data_start_offset,
/* WTF?? */
if (abfd->xvec->flavour == bfd_target_coff_flavour
&& strcmp (abfd->xvec->name, "aixcoff-rs6000") != 0
+ && strcmp (abfd->xvec->name, "aixcoff64-rs6000") != 0
&& strcmp (abfd->xvec->name, "xcoff-powermac") != 0
&& strcmp (abfd->xvec->name, "coff-Intel-little") != 0
&& strcmp (abfd->xvec->name, "coff-Intel-big") != 0)
@@ -1498,11 +1500,9 @@ _bfd_relocate_contents (howto, input_bfd, relocation, location)
trouble; we would need to verify that B is in range, as
we do for A above. */
signmask = ((~ howto->src_mask) >> 1) & howto->src_mask;
- if ((b & signmask) != 0)
- {
- /* Set all the bits above the sign bit. */
- b -= signmask << 1;
- }
+
+ /* Set all the bits above the sign bit. */
+ b = (b ^ signmask) - signmask;
b = (b & addrmask) >> bitpos;
@@ -1545,7 +1545,7 @@ _bfd_relocate_contents (howto, input_bfd, relocation, location)
case complain_overflow_bitfield:
/* Much like the signed check, but for a field one bit
- wider, and no trimming with addrmask. We allow a
+ wider, and no trimming inputs with addrmask. We allow a
bitfield to represent numbers in the range -2**n to
2**n-1, where n is the number of bits in the field.
Note that when bfd_vma is 32 bits, a 32-bit reloc can't
@@ -1558,15 +1558,19 @@ _bfd_relocate_contents (howto, input_bfd, relocation, location)
flag = bfd_reloc_overflow;
signmask = ((~ howto->src_mask) >> 1) & howto->src_mask;
- if ((b & signmask) != 0)
- b -= signmask << 1;
+ b = (b ^ signmask) - signmask;
b >>= bitpos;
sum = a + b;
+ /* We mask with addrmask here to explicitly allow an address
+ wrap-around. The Linux kernel relies on it, and it is
+ the only way to write assembler code which can run when
+ loaded at a location 0x80000000 away from the location at
+ which it is linked. */
signmask = fieldmask + 1;
- if (((~ (a ^ b)) & (a ^ sum)) & signmask)
+ if (((~ (a ^ b)) & (a ^ sum)) & signmask & addrmask)
flag = bfd_reloc_overflow;
break;
@@ -2747,6 +2751,142 @@ ENUMDOC
is stored in the reloc's addend. For Rel hosts, we are forced to put
this offset in the reloc's section offset.
+ENUM
+ BFD_RELOC_IA64_IMM14
+ENUMX
+ BFD_RELOC_IA64_IMM22
+ENUMX
+ BFD_RELOC_IA64_IMM64
+ENUMX
+ BFD_RELOC_IA64_DIR32MSB
+ENUMX
+ BFD_RELOC_IA64_DIR32LSB
+ENUMX
+ BFD_RELOC_IA64_DIR64MSB
+ENUMX
+ BFD_RELOC_IA64_DIR64LSB
+ENUMX
+ BFD_RELOC_IA64_GPREL22
+ENUMX
+ BFD_RELOC_IA64_GPREL64I
+ENUMX
+ BFD_RELOC_IA64_GPREL32MSB
+ENUMX
+ BFD_RELOC_IA64_GPREL32LSB
+ENUMX
+ BFD_RELOC_IA64_GPREL64MSB
+ENUMX
+ BFD_RELOC_IA64_GPREL64LSB
+ENUMX
+ BFD_RELOC_IA64_LTOFF22
+ENUMX
+ BFD_RELOC_IA64_LTOFF64I
+ENUMX
+ BFD_RELOC_IA64_PLTOFF22
+ENUMX
+ BFD_RELOC_IA64_PLTOFF64I
+ENUMX
+ BFD_RELOC_IA64_PLTOFF64MSB
+ENUMX
+ BFD_RELOC_IA64_PLTOFF64LSB
+ENUMX
+ BFD_RELOC_IA64_FPTR64I
+ENUMX
+ BFD_RELOC_IA64_FPTR32MSB
+ENUMX
+ BFD_RELOC_IA64_FPTR32LSB
+ENUMX
+ BFD_RELOC_IA64_FPTR64MSB
+ENUMX
+ BFD_RELOC_IA64_FPTR64LSB
+ENUMX
+ BFD_RELOC_IA64_PCREL21B
+ENUMX
+ BFD_RELOC_IA64_PCREL21BI
+ENUMX
+ BFD_RELOC_IA64_PCREL21M
+ENUMX
+ BFD_RELOC_IA64_PCREL21F
+ENUMX
+ BFD_RELOC_IA64_PCREL22
+ENUMX
+ BFD_RELOC_IA64_PCREL60B
+ENUMX
+ BFD_RELOC_IA64_PCREL64I
+ENUMX
+ BFD_RELOC_IA64_PCREL32MSB
+ENUMX
+ BFD_RELOC_IA64_PCREL32LSB
+ENUMX
+ BFD_RELOC_IA64_PCREL64MSB
+ENUMX
+ BFD_RELOC_IA64_PCREL64LSB
+ENUMX
+ BFD_RELOC_IA64_LTOFF_FPTR22
+ENUMX
+ BFD_RELOC_IA64_LTOFF_FPTR64I
+ENUMX
+ BFD_RELOC_IA64_LTOFF_FPTR64MSB
+ENUMX
+ BFD_RELOC_IA64_LTOFF_FPTR64LSB
+ENUMX
+ BFD_RELOC_IA64_SEGBASE
+ENUMX
+ BFD_RELOC_IA64_SEGREL32MSB
+ENUMX
+ BFD_RELOC_IA64_SEGREL32LSB
+ENUMX
+ BFD_RELOC_IA64_SEGREL64MSB
+ENUMX
+ BFD_RELOC_IA64_SEGREL64LSB
+ENUMX
+ BFD_RELOC_IA64_SECREL32MSB
+ENUMX
+ BFD_RELOC_IA64_SECREL32LSB
+ENUMX
+ BFD_RELOC_IA64_SECREL64MSB
+ENUMX
+ BFD_RELOC_IA64_SECREL64LSB
+ENUMX
+ BFD_RELOC_IA64_REL32MSB
+ENUMX
+ BFD_RELOC_IA64_REL32LSB
+ENUMX
+ BFD_RELOC_IA64_REL64MSB
+ENUMX
+ BFD_RELOC_IA64_REL64LSB
+ENUMX
+ BFD_RELOC_IA64_LTV32MSB
+ENUMX
+ BFD_RELOC_IA64_LTV32LSB
+ENUMX
+ BFD_RELOC_IA64_LTV64MSB
+ENUMX
+ BFD_RELOC_IA64_LTV64LSB
+ENUMX
+ BFD_RELOC_IA64_IPLTMSB
+ENUMX
+ BFD_RELOC_IA64_IPLTLSB
+ENUMX
+ BFD_RELOC_IA64_EPLTMSB
+ENUMX
+ BFD_RELOC_IA64_EPLTLSB
+ENUMX
+ BFD_RELOC_IA64_COPY
+ENUMX
+ BFD_RELOC_IA64_TPREL22
+ENUMX
+ BFD_RELOC_IA64_TPREL64MSB
+ENUMX
+ BFD_RELOC_IA64_TPREL64LSB
+ENUMX
+ BFD_RELOC_IA64_LTOFF_TP22
+ENUMX
+ BFD_RELOC_IA64_LTOFF22X
+ENUMX
+ BFD_RELOC_IA64_LDXMOV
+ENUMDOC
+ Intel IA64 Relocations.
ENDSENUM
BFD_RELOC_UNUSED
CODE_FRAGMENT
diff --git a/bfd/som.c b/bfd/som.c
index cd61cc6c4bb..542b69f7380 100644
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -5365,6 +5365,8 @@ som_decode_symclass (symbol)
return 'U';
if (bfd_is_ind_section (symbol->section))
return 'I';
+ if (symbol->flags & BSF_WEAK)
+ return 'W';
if (!(symbol->flags & (BSF_GLOBAL|BSF_LOCAL)))
return '?';
diff --git a/bfd/sysdep.h b/bfd/sysdep.h
index 0a58983fa2d..bf3eac03ccb 100644
--- a/bfd/sysdep.h
+++ b/bfd/sysdep.h
@@ -1,5 +1,5 @@
/* sysdep.h -- handle host dependencies for the BFD library
- Copyright 1995, 96, 97, 98, 1999 Free Software Foundation, Inc.
+ Copyright 1995, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
@@ -102,6 +102,8 @@ extern char *strrchr ();
#define SEEK_CUR 1
#endif
+#include "filenames.h"
+
#ifdef NEED_DECLARATION_STRSTR
extern char *strstr ();
#endif
@@ -124,6 +126,18 @@ extern char *getenv ();
#ifdef ENABLE_NLS
#include <libintl.h>
+/* Note the use of dgetext() and PACKAGE here, rather than gettext().
+
+ This is because the code in this directory is used to build a library which
+ will be linked with code in other directories to form programs. We want to
+ maintain a seperate translation file for this directory however, rather
+ than being forced to merge it with that of any program linked to libbfd.
+ This is a library, so it cannot depend on the catalog currently loaded.
+
+ In order to do this, we have to make sure that when we extract messages we
+ use the OPCODES domain rather than the domain of the program that included
+ the bfd library, (eg OBJDUMP). Hence we use dgettext (PACKAGE, String)
+ and define PACKAGE to be 'bfd'. (See the code in configure). */
#define _(String) dgettext (PACKAGE, String)
#ifdef gettext_noop
#define N_(String) gettext_noop (String)
@@ -131,14 +145,13 @@ extern char *getenv ();
#define N_(String) (String)
#endif
#else
-/* Stubs that do something close enough. */
-#define textdomain(String) (String)
-#define gettext(String) (String)
-#define dgettext(Domain,Message) (Message)
-#define dcgettext(Domain,Message,Type) (Message)
-#define bindtextdomain(Domain,Directory) (Domain)
-#define _(String) (String)
-#define N_(String) (String)
+# define gettext(Msgid) (Msgid)
+# define dgettext(Domainname, Msgid) (Msgid)
+# define dcgettext(Domainname, Msgid, Category) (Msgid)
+# define textdomain(Domainname) while (0) /* nothing */
+# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */
+# define _(String) (String)
+# define N_(String) (String)
#endif
#endif /* ! defined (BFD_SYSDEP_H) */
diff --git a/bfd/targets.c b/bfd/targets.c
index e54eb29a717..14215529403 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -505,7 +505,12 @@ extern const bfd_target arm_epoc_pei_little_vec;
extern const bfd_target arm_epoc_pei_big_vec;
extern const bfd_target b_out_vec_big_host;
extern const bfd_target b_out_vec_little_host;
+extern const bfd_target bfd_efi_app_ia32_vec;
+extern const bfd_target bfd_efi_app_ia64_vec;
extern const bfd_target bfd_elf64_alpha_vec;
+extern const bfd_target bfd_elf64_hppa_vec;
+extern const bfd_target bfd_elf64_ia64_little_vec;
+extern const bfd_target bfd_elf64_ia64_big_vec;
extern const bfd_target bfd_elf32_avr_vec;
extern const bfd_target bfd_elf32_bigarc_vec;
extern const bfd_target bfd_elf32_bigarm_vec;
@@ -609,6 +614,7 @@ extern const bfd_target ppcboot_vec;
extern const bfd_target riscix_vec;
extern const bfd_target pmac_xcoff_vec;
extern const bfd_target rs6000coff_vec;
+extern const bfd_target rs6000coff64_vec;
extern const bfd_target shcoff_vec;
extern const bfd_target shlcoff_vec;
extern const bfd_target shcoff_small_vec;
@@ -689,6 +695,11 @@ const bfd_target * const bfd_target_vector[] = {
&b_out_vec_big_host,
&b_out_vec_little_host,
+ &bfd_efi_app_ia32_vec,
+#ifdef BFD64
+ &bfd_efi_app_ia64_vec,
+#endif
+
/* This, and other vectors, may not be used in any *.mt configuration.
But that does not mean they are unnecessary. If configured with
--enable-targets=all, objdump or gdb should be able to examine
@@ -696,6 +707,9 @@ const bfd_target * const bfd_target_vector[] = {
&bfd_elf32_big_generic_vec,
#ifdef BFD64
&bfd_elf64_alpha_vec,
+ &bfd_elf64_hppa_vec,
+ &bfd_elf64_ia64_little_vec,
+ &bfd_elf64_ia64_big_vec,
#endif
&bfd_elf32_avr_vec,
&bfd_elf32_bigarc_vec,
@@ -707,9 +721,7 @@ const bfd_target * const bfd_target_vector[] = {
#endif
&bfd_elf32_d10v_vec,
&bfd_elf32_d30v_vec,
-#if 0
&bfd_elf32_hppa_vec,
-#endif
&bfd_elf32_i370_vec,
&bfd_elf32_i386_vec,
&bfd_elf32_i860_vec,
@@ -854,6 +866,9 @@ const bfd_target * const bfd_target_vector[] = {
&pmac_xcoff_vec,
#endif
&rs6000coff_vec,
+#ifdef BFD64
+ &rs6000coff64_vec,
+#endif
&ppcboot_vec,
&shcoff_vec,
&shlcoff_vec,
diff --git a/bfd/trad-core.c b/bfd/trad-core.c
index 633c53d9838..9cd12c04aee 100644
--- a/bfd/trad-core.c
+++ b/bfd/trad-core.c
@@ -25,7 +25,19 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "libaout.h" /* BFD a.out internal data structures */
#include <sys/param.h>
-#include <sys/dir.h>
+#ifdef HAVE_DIRENT_H
+# include <dirent.h>
+#else
+# ifdef HAVE_SYS_NDIR_H
+# include <sys/ndir.h>
+# endif
+# ifdef HAVE_SYS_DIR_H
+# include <sys/dir.h>
+# endif
+# ifdef HAVE_NDIR_H
+# include <ndir.h>
+# endif
+#endif
#include <signal.h>
#include <sys/user.h> /* After a.out.h */
@@ -112,7 +124,7 @@ trad_unix_core_file_p (abfd)
+ u.u_ssize))
> (unsigned long) statbuf.st_size)
{
- bfd_set_error (bfd_error_file_truncated);
+ bfd_set_error (bfd_error_wrong_format);
return 0;
}
#ifndef TRAD_CORE_ALLOW_ANY_EXTRA_SIZE
diff --git a/bfd/versados.c b/bfd/versados.c
index 27f4f882088..d3ebda4c595 100644
--- a/bfd/versados.c
+++ b/bfd/versados.c
@@ -1,5 +1,5 @@
/* BFD back-end for VERSAdos-E objects.
- Copyright 1995, 96, 97, 98, 1999 Free Software Foundation, Inc.
+ Copyright 1995, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
Written by Steve Chamberlain of Cygnus Support <sac@cygnus.com>.
Versados is a Motorola trademark.
@@ -483,10 +483,12 @@ versados_scan (abfd)
int j;
int nsecs = 0;
+ VDATA (abfd)->stringlen = 0;
VDATA (abfd)->nrefs = 0;
VDATA (abfd)->ndefs = 0;
VDATA (abfd)->ref_idx = 0;
VDATA (abfd)->def_idx = 0;
+ VDATA (abfd)->pass_2_done = 0;
while (loop)
{
diff --git a/bfd/vms.c b/bfd/vms.c
index f0ea63ff92d..5f91ba42037 100644
--- a/bfd/vms.c
+++ b/bfd/vms.c
@@ -1,6 +1,6 @@
/* vms.c -- BFD back-end for VAX (openVMS/VAX) and
EVAX (openVMS/Alpha) files.
- Copyright 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+ Copyright 1996, 97, 98, 99, 2000 Free Software Foundation, Inc.
Written by Klaus K"ampf (kkaempf@rmi.de)
@@ -1045,7 +1045,7 @@ vms_openr_next_archived_file (arch, prev)
#if VMS_DEBUG
vms_debug (1, "vms_openr_next_archived_file(%p, %p)\n", arch, prev);
#endif
- return false;
+ return NULL;
}
diff --git a/bfd/xcoff-target.h b/bfd/xcoff-target.h
new file mode 100644
index 00000000000..a103ac9c8a6
--- /dev/null
+++ b/bfd/xcoff-target.h
@@ -0,0 +1,198 @@
+/* Common definitions for backends based on IBM RS/6000 "XCOFF64" files.
+ Copyright 2000
+ Free Software Foundation, Inc.
+ Contributed by Cygnus Support.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+/* Internalcoff.h and coffcode.h modify themselves based on this flag. */
+#define RS6000COFF_C 1
+
+#define SELECT_RELOC(internal, howto) \
+ { \
+ internal.r_type = howto->type; \
+ internal.r_size = \
+ ((howto->complain_on_overflow == complain_overflow_signed \
+ ? 0x80 \
+ : 0) \
+ | (howto->bitsize - 1)); \
+ }
+
+#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (3)
+
+#define COFF_LONG_FILENAMES
+
+#define NO_COFF_SYMBOLS
+
+#define RTYPE2HOWTO(cache_ptr, dst) _bfd_xcoff_rtype2howto (cache_ptr, dst)
+
+#define coff_mkobject _bfd_xcoff_mkobject
+#define coff_bfd_copy_private_bfd_data _bfd_xcoff_copy_private_bfd_data
+#define coff_bfd_is_local_label_name _bfd_xcoff_is_local_label_name
+#define coff_bfd_reloc_type_lookup _bfd_xcoff_reloc_type_lookup
+#define coff_relocate_section _bfd_ppc_xcoff_relocate_section
+
+#define CORE_FILE_P _bfd_dummy_target
+
+#define coff_core_file_failing_command _bfd_nocore_core_file_failing_command
+#define coff_core_file_failing_signal _bfd_nocore_core_file_failing_signal
+#define coff_core_file_matches_executable_p \
+ _bfd_nocore_core_file_matches_executable_p
+
+#ifdef AIX_CORE
+#undef CORE_FILE_P
+#define CORE_FILE_P rs6000coff_core_p
+extern const bfd_target * rs6000coff_core_p ();
+extern boolean rs6000coff_get_section_contents ();
+extern boolean rs6000coff_core_file_matches_executable_p ();
+
+#undef coff_core_file_matches_executable_p
+#define coff_core_file_matches_executable_p \
+ rs6000coff_core_file_matches_executable_p
+
+extern char *rs6000coff_core_file_failing_command PARAMS ((bfd *abfd));
+#undef coff_core_file_failing_command
+#define coff_core_file_failing_command rs6000coff_core_file_failing_command
+
+extern int rs6000coff_core_file_failing_signal PARAMS ((bfd *abfd));
+#undef coff_core_file_failing_signal
+#define coff_core_file_failing_signal rs6000coff_core_file_failing_signal
+
+#undef coff_get_section_contents
+#define coff_get_section_contents rs6000coff_get_section_contents
+#endif /* AIX_CORE */
+
+#ifdef LYNX_CORE
+
+#undef CORE_FILE_P
+#define CORE_FILE_P lynx_core_file_p
+extern const bfd_target *lynx_core_file_p PARAMS ((bfd *abfd));
+
+extern boolean lynx_core_file_matches_executable_p PARAMS ((bfd *core_bfd,
+ bfd *exec_bfd));
+#undef coff_core_file_matches_executable_p
+#define coff_core_file_matches_executable_p lynx_core_file_matches_executable_p
+
+extern char *lynx_core_file_failing_command PARAMS ((bfd *abfd));
+#undef coff_core_file_failing_command
+#define coff_core_file_failing_command lynx_core_file_failing_command
+
+extern int lynx_core_file_failing_signal PARAMS ((bfd *abfd));
+#undef coff_core_file_failing_signal
+#define coff_core_file_failing_signal lynx_core_file_failing_signal
+
+#endif /* LYNX_CORE */
+
+#define _bfd_xcoff_bfd_get_relocated_section_contents \
+ coff_bfd_get_relocated_section_contents
+#define _bfd_xcoff_bfd_relax_section coff_bfd_relax_section
+#define _bfd_xcoff_bfd_gc_sections coff_bfd_gc_sections
+#define _bfd_xcoff_bfd_link_split_section coff_bfd_link_split_section
+
+/* XCOFF archives do not have anything which corresponds to an
+ extended name table. */
+
+#define _bfd_xcoff_slurp_extended_name_table bfd_false
+#define _bfd_xcoff_construct_extended_name_table \
+ ((boolean (*) PARAMS ((bfd *, char **, bfd_size_type *, const char **))) \
+ bfd_false)
+#define _bfd_xcoff_truncate_arname bfd_dont_truncate_arname
+
+/* We can use the standard get_elt_at_index routine. */
+
+#define _bfd_xcoff_get_elt_at_index _bfd_generic_get_elt_at_index
+
+/* XCOFF archives do not have a timestamp. */
+
+#define _bfd_xcoff_update_armap_timestamp bfd_true
+
+extern boolean _bfd_xcoff_mkobject PARAMS ((bfd *));
+extern boolean _bfd_xcoff_copy_private_bfd_data PARAMS ((bfd *, bfd *));
+extern boolean _bfd_xcoff_is_local_label_name PARAMS ((bfd *, const char *));
+extern void _bfd_xcoff_rtype2howto
+ PARAMS ((arelent *, struct internal_reloc *));
+extern reloc_howto_type *_bfd_xcoff_reloc_type_lookup
+ PARAMS ((bfd *, bfd_reloc_code_real_type));
+extern boolean _bfd_xcoff_slurp_armap PARAMS ((bfd *));
+extern const bfd_target *_bfd_xcoff_archive_p PARAMS ((bfd *));
+extern PTR _bfd_xcoff_read_ar_hdr PARAMS ((bfd *));
+extern bfd *_bfd_xcoff_openr_next_archived_file PARAMS ((bfd *, bfd *));
+extern int _bfd_xcoff_generic_stat_arch_elt PARAMS ((bfd *, struct stat *));
+extern boolean _bfd_xcoff_write_armap
+ PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int));
+extern boolean _bfd_xcoff_write_archive_contents PARAMS ((bfd *));
+extern int _bfd_xcoff_sizeof_headers PARAMS ((bfd *, boolean));
+extern void _bfd_xcoff_swap_sym_in PARAMS ((bfd *, PTR, PTR));
+extern unsigned int _bfd_xcoff_swap_sym_out PARAMS ((bfd *, PTR, PTR));
+extern void _bfd_xcoff_swap_aux_in PARAMS ((bfd *, PTR, int, int, int, int, PTR));
+extern unsigned int _bfd_xcoff_swap_aux_out PARAMS ((bfd *, PTR, int, int, int, int, PTR));
+
+#ifndef coff_SWAP_sym_in
+#define coff_SWAP_sym_in _bfd_xcoff_swap_sym_in
+#define coff_SWAP_sym_out _bfd_xcoff_swap_sym_out
+#define coff_SWAP_aux_in _bfd_xcoff_swap_aux_in
+#define coff_SWAP_aux_out _bfd_xcoff_swap_aux_out
+#endif
+
+#include "coffcode.h"
+
+/* The transfer vector that leads the outside world to all of the above. */
+
+const bfd_target TARGET_SYM =
+{
+ TARGET_NAME,
+ bfd_target_coff_flavour,
+ BFD_ENDIAN_BIG, /* data byte order is big */
+ BFD_ENDIAN_BIG, /* header byte order is big */
+
+ (HAS_RELOC | EXEC_P | /* object flags */
+ HAS_LINENO | HAS_DEBUG | DYNAMIC |
+ HAS_SYMS | HAS_LOCALS | WP_TEXT),
+
+ (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
+ 0, /* leading char */
+ '/', /* ar_pad_char */
+ 15, /* ar_max_namelen??? FIXMEmgo */
+
+ bfd_getb64, bfd_getb_signed_64, bfd_putb64,
+ bfd_getb32, bfd_getb_signed_32, bfd_putb32,
+ bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
+ bfd_getb64, bfd_getb_signed_64, bfd_putb64,
+ bfd_getb32, bfd_getb_signed_32, bfd_putb32,
+ bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
+
+ {_bfd_dummy_target, coff_object_p, /* bfd_check_format */
+ _bfd_xcoff_archive_p, CORE_FILE_P},
+ {bfd_false, coff_mkobject, /* bfd_set_format */
+ _bfd_generic_mkarchive, bfd_false},
+ {bfd_false, coff_write_object_contents, /* bfd_write_contents */
+ _bfd_xcoff_write_archive_contents, bfd_false},
+
+ BFD_JUMP_TABLE_GENERIC (coff),
+ BFD_JUMP_TABLE_COPY (coff),
+ BFD_JUMP_TABLE_CORE (coff),
+ BFD_JUMP_TABLE_ARCHIVE (_bfd_xcoff),
+ BFD_JUMP_TABLE_SYMBOLS (coff),
+ BFD_JUMP_TABLE_RELOCS (coff),
+ BFD_JUMP_TABLE_WRITE (coff),
+ BFD_JUMP_TABLE_LINK (_bfd_xcoff),
+ BFD_JUMP_TABLE_DYNAMIC (_bfd_xcoff),
+
+ NULL,
+
+ COFF_SWAP_TABLE
+};
diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
index 3f488d7f382..17517b08b2f 100644
--- a/bfd/xcofflink.c
+++ b/bfd/xcofflink.c
@@ -35,6 +35,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
whole approach. */
#define XCOFF_XVECP(xv) \
(strcmp ((xv)->name, "aixcoff-rs6000") == 0 \
+ || strcmp ((xv)->name, "aixcoff64-rs6000") == 0 \
|| strcmp ((xv)->name, "xcoff-powermac") == 0)
/* Get the XCOFF hash table entries for a BFD. */
diff --git a/config.guess b/config.guess
index 20c971aae9a..b4faaedca09 100755
--- a/config.guess
+++ b/config.guess
@@ -2,7 +2,9 @@
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
# Free Software Foundation, Inc.
-#
+
+version='2000-05-30'
+
# 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
@@ -36,6 +38,46 @@
# (but try to keep the structure clean).
#
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of this system.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit"
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case "$1" in
+ --version | --vers* | -V )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ exec >&2
+ echo "$me: invalid option $1"
+ echo "$help"
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
# Use $HOST_CC if defined. $CC may point to a cross-compiler
if test x"$CC_FOR_BUILD" = x; then
if test x"$HOST_CC" != x; then
@@ -266,7 +308,7 @@ EOF
exit 0 ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
+ # "atarist" or "atariste" at least should have a processor
# > m68000). The system name ranges from "MiNT" over "FreeMiNT"
# to the lowercase version "mint" (or "freemint"). Finally
# the system name "TOS" denotes a system which is actually not
@@ -360,7 +402,7 @@ EOF
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110]
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
[ ${TARGET_BINARY_INTERFACE}x = x ]
@@ -458,6 +500,8 @@ EOF
9000/[34]?? ) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
#include <stdlib.h>
#include <unistd.h>
@@ -588,7 +632,7 @@ EOF
echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
CRAY-2:*:*:*)
echo cray2-cray-unicos
@@ -604,7 +648,7 @@ EOF
hp300:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
- i?86:BSD/386:*:* | i?86:BSD/OS:*:*)
+ i?86:BSD/386:*:* | i?86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit 0 ;;
sparc*:BSD/OS:*:*)
@@ -614,12 +658,6 @@ EOF
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit 0 ;;
*:FreeBSD:*:*)
- if test -x /usr/bin/objformat; then
- if test "elf" = "`/usr/bin/objformat`"; then
- echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
- exit 0
- fi
- fi
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit 0 ;;
*:OpenBSD:*:*)
@@ -670,6 +708,10 @@ EOF
echo "${UNAME_MACHINE}-pc-linux-gnuaout"
exit 0
;;
+ elf_i?86)
+ echo "${UNAME_MACHINE}-pc-linux"
+ exit 0
+ ;;
i?86coff)
echo "${UNAME_MACHINE}-pc-linux-gnucoff"
exit 0
@@ -721,11 +763,15 @@ EOF
if test "$?" = 0 ; then
LIBC="libc1"
fi
- fi
+ fi
rm -f $dummy.c $dummy
echo powerpc-unknown-linux-gnu${LIBC}
exit 0
;;
+ shelf_linux)
+ echo "${UNAME_MACHINE}-unknown-linux-gnu"
+ exit 0
+ ;;
esac
if test "${UNAME_MACHINE}" = "alpha" ; then
@@ -1018,14 +1064,26 @@ EOF
*:Rhapsody:*:*)
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
exit 0 ;;
- Power*:Mac*OS:*:*)
- echo powerpc-apple-macos${UNAME_RELEASE}
+ *:Darwin:*:*)
+ echo `uname -p`-apple-darwin${UNAME_RELEASE}
exit 0 ;;
- *:Mac*OS:*:*)
- echo ${UNAME_MACHINE}-apple-macos${UNAME_RELEASE}
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ if test "${UNAME_MACHINE}" = "x86pc"; then
+ UNAME_MACHINE=pc
+ fi
+ echo `uname -p`-${UNAME_MACHINE}-nto-qnx
exit 0 ;;
*:QNX:*:4*)
- echo i386-qnx-qnx${UNAME_VERSION}
+ echo i386-pc-qnx
+ exit 0 ;;
+ NSR-W:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit 0 ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit 0 ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
exit 0 ;;
esac
@@ -1166,6 +1224,47 @@ then
esac
fi
-#echo '(Unable to guess system type)' 1>&2
+cat >&2 <<EOF
+$0: unable to guess system type
+
+The $version version of this script cannot recognize your system type.
+Please download the most up to date version of the config scripts:
+
+ ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess version = $version
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "version='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/config.sub b/config.sub
index 5d756240452..f414a431e81 100755
--- a/config.sub
+++ b/config.sub
@@ -2,7 +2,9 @@
# Configuration validation subroutine script, version 1.1.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
# Free Software Foundation, Inc.
-#
+
+version='2000-05-30'
+
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
# can handle that machine. It does not imply ALL GNU software can.
@@ -50,30 +52,61 @@
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
-if [ x$1 = x ]
-then
- echo Configuration name missing. 1>&2
- echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
- echo "or $0 ALIAS" 1>&2
- echo where ALIAS is a recognized configuration type. 1>&2
- exit 1
-fi
+me=`echo "$0" | sed -e 's,.*/,,'`
-# First pass through any local machine types.
-case $1 in
- *local*)
- echo $1
- exit 0
- ;;
- *)
- ;;
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit"
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case "$1" in
+ --version | --vers* | -V )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ exec >&2
+ echo "$me: invalid option $1"
+ echo "$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit 0;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
esac
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- linux-gnu*)
+ nto-qnx* | linux-gnu*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@@ -174,7 +207,9 @@ case $basic_machine in
tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
| arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
| 580 | i960 | h8300 \
+ | x86 | ppcbe | mipsbe | mipsle | shbe | shle | armbe | armle \
| hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
+ | hppa64 \
| alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
| alphaev6[78] \
| we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \
@@ -207,7 +242,9 @@ case $basic_machine in
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
| power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
| xmp-* | ymp-* \
- | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* | hppa2.0n-* \
+ | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* | armbe-* | armle-* \
+ | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
+ | hppa2.0n-* | hppa64-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
| alphaev6[78]-* \
| we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
@@ -219,7 +256,8 @@ case $basic_machine in
| mipstx39-* | mipstx39el-* | mcore-* \
| f301-* | armv*-* | s390-* | sv1-* | t3e-* \
| m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
- | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* )
+ | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* \
+ | bs2000-*)
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
@@ -471,9 +509,6 @@ case $basic_machine in
basic_machine=i386-unknown
os=-mingw32
;;
- i386-qnx | qnx)
- basic_machine=i386-qnx
- ;;
iris | iris4d)
basic_machine=mips-sgi
case $os in
@@ -596,6 +631,9 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
op50n-* | op60c-*)
basic_machine=hppa1.1-oki
os=-proelf
@@ -933,9 +971,22 @@ case $os in
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -rhapsody* | -opened* | -openstep* | -oskit*)
+ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i[34567]86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto*)
+ os=-nto-qnx
+ ;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
| -windows* | -osx | -abug | -netware* | -os9* | -beos* \
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
@@ -982,6 +1033,9 @@ case $os in
-ns2 )
os=-nextstep2
;;
+ -nsk)
+ os=-nsk
+ ;;
# Preserve the version number of sinix5.
-sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
@@ -995,9 +1049,6 @@ case $os in
-oss*)
os=-sysv3
;;
- -qnx)
- os=-qnx4
- ;;
-svr4)
os=-sysv4
;;
@@ -1248,3 +1299,11 @@ case $basic_machine in
esac
echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "version='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/configure.in b/configure.in
index ca1b04f9dc8..c14f135056e 100644
--- a/configure.in
+++ b/configure.in
@@ -656,7 +656,8 @@ case "${target}" in
;;
hppa*-*-*elf* | \
hppa*-*-linux-gnu* | \
- hppa*-*-lites*)
+ hppa*-*-lites* | \
+ hppa*64*-*-*)
# Do configure ld/binutils/gas for the above cases.
;;
hppa*-*-*)
@@ -669,6 +670,10 @@ case "${target}" in
esac
noconfigdirs="$noconfigdirs ld shellutils"
;;
+ ia64*-*-elf*)
+ # No gdb support yet.
+ noconfigdirs="$noconfigdirs tix readline mmalloc libgui itcl gdb"
+ ;;
i[3456]86-*-coff | i[3456]86-*-elf)
if [ x${is_cross_compiler} != xno ] ; then
target_configdirs="${target_configdirs} target-libstub target-cygmon"
@@ -1047,6 +1052,9 @@ if [ x${shared} = xyes ]; then
i[3456]86-*)
target_makefile_frag="${target_makefile_frag} config/mt-x86pic"
;;
+ powerpc*-*-aix*)
+ # We don't want -fPIC on AIX.
+ ;;
powerpc*-*)
target_makefile_frag="${target_makefile_frag} config/mt-ppcpic"
;;
diff --git a/djunpack.bat b/djunpack.bat
new file mode 100755
index 00000000000..f09f5ed3251
--- /dev/null
+++ b/djunpack.bat
@@ -0,0 +1,52 @@
+@echo off
+Rem
+Rem WARNING WARNING WARNING: This file needs to have DOS CRLF end-of-line
+Rem format, or else stock DOS/Windows shells will refuse to run it.
+Rem
+Rem This batch file unpacks the GDB distribution while simultaneously
+Rem renaming some of the files whose names are invalid on DOS or conflict
+Rem with other file names after truncation to DOS 8+3 namespace.
+Rem
+Rem Invoke like this:
+Rem
+Rem djunpack gdb-XYZ.tar
+Rem
+Rem where XYZ is the version number. If the argument includes leading
+Rem directories, it MUST use backslashes, not forward slashes.
+Rem
+Rem The following 2 lines need to be changed with each new GDB release, to
+Rem be identical to the name of the top-level directory where the GDB
+Rem distribution unpacks itself.
+set GDBVER=gdb-5.0
+if "%GDBVER%"=="gdb-5.0" GoTo EnvOk
+Rem If their environment space is too small, re-exec with a larger one
+command.com /e:4096 /c %0 %1
+GoTo End
+:EnvOk
+if not exist %1 GoTo NoArchive
+djtar -x -p -o %GDBVER%/gdb/config/djgpp/fnchange.lst %1 > fnchange.tmp
+Rem The following uses a feature of COPY whereby it does not copy
+Rem empty files. We need that because the previous line will create
+Rem an empty fnchange.tmp even if the command failed for some reason.
+copy fnchange.tmp junk.tmp > nul
+if not exist junk.tmp GoTo NoDjTar
+del junk.tmp
+sed -e 's,@V@,%GDBVER%,g' < fnchange.tmp > fnchange.lst
+Rem See the comment above about the reason for using COPY.
+copy fnchange.lst junk.tmp > nul
+if not exist junk.tmp GoTo NoSed
+del junk.tmp
+djtar -x -n fnchange.lst %1
+GoTo End
+:NoSed
+echo FAIL: Sed is not available.
+GoTo End
+:NoDjTar
+echo FAIL: DJTAR is not available or no fnchange.lst file in %1.
+GoTo End
+:NoArchive
+echo FAIL: the file %1 does not seem to exist.
+echo Remember that %1 cannot use forward slashes, only backslashes.
+GoTo End
+:End
+set GDBVER=
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 6be0e9b7cb2..6b51c40aa62 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,1814 @@
+2000-06-05 Daniel Berlin <dan@cgsoftware.com>
+
+ * c-exp.y (yylex): template handling fixes.
+
+2000-06-03 Daniel Berlin <dan@cgsoftware.com>
+
+ * symtab.h (VTBL_PREFIX_P): Add newer g++ vtbl prefix to prefix list.
+
+ * symtab.c (lookup_partial_symbol): Change to stop forcing linear searches
+ on C++ when we fail the binary search, by doing the binary search right.
+
+2000-05-30 Daniel Berlin <dan@cgsoftware.com>
+
+ * buildsym.c (hashname): Change to use hash function from bcache.c/.h
+
+ * bcache.c (hash): Change to newer hash function.
+
+ * bcache.h (hash): Prototype for hash function
+
+ * dwarf2read.c (TYPE_HASH_SIZE): New define for controlling size
+ of type hash.
+ (dwarf2_cached_types): New variable that is the cached types.
+ (tag_type_to_type): Do the actual caching of types here.
+
+2000-06-05 Mark Kettenis <kettenis@gnu.org>
+
+ * acconfig.h, configure.in, i386bsd.c (HAVE_STRUCT_REG_R_FS):
+ Renamed from HAVE_R_FS.
+ (HAVE_STRUCT_REG_GS): Renamed from HAVE_R_GS.
+ * configure, config.in: Regenerated.
+
+Sun Jun 4 14:00:01 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * TODO: Update. Mention GNU/Linux/SPARC problems.
+
+Wed May 31 21:41:37 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * gdbarch.sh (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Change buf
+ to a void pointer. Update initial values.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+ * findvar.c (address_to_signed_pointer,
+ signed_pointer_to_address): New functions.
+ * inferior.h (signed_pointer_to_address,
+ signed_address_to_pointer): Declare.
+
+ * inferior.h, findvar.c (unsigned_pointer_to_address,
+ address_to_unsigned_pointer): Rename generic_address_to_pointer
+ and generic_pointer_to_address. Update signatures to match
+ gdbarch changes.
+
+ * config/mips/tm-mips.h (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER):
+ Define. MIPS has signed pointers.
+
+ * defs.h, utils.c (host_pointer_to_address,
+ address_to_host_pointer): New functions.
+ * irix5-nat.c (next_link_map_member, first_link_map_member),
+ procfs.c (proc_set_watchpoint, proc_iterate_over_mappings): Use.
+
+ * irix5-nat.c (solib_map_sections, symbol_add_stub): Change
+ function signature to match catch_errors_ftype.
+
+ * TODO: Update. GDB builds using the IRIX native compiler.
+
+Sat Jun 3 20:43:59 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * defs.h (strsignal, safe_strsignal): Delete declarations.
+ * utils.c (safe_strsignal): Delete.
+ * corelow.c (core_open): Replace save_strsignal with
+ target_signal_to_string + target_signal_from_host.
+ * TODO: Document problems with target_signal_from_host.
+
+2000-06-03 Kevin Buettner <kevinb@redhat.com>
+
+ * annotate.c, annotate.h, breakpoint.c, command.c, command.h,
+ config/rs6000/tm-rs6000.h, corefile.c, d10v-tdep.c,
+ d30v-tdep.c, dbxread.c, dcache.c, dcache.h, dsrec.c,
+ dve3900-rom.c, exec.c, fork-child.c, gdbcore.h, hpux-thread.c,
+ language.h, linux-thread.c, mdebugread.c, monitor.h, ocd.c,
+ procfs.c, ptx4-nat.c, remote-sim.c, remote-utils.h, remote.c,
+ rs6000-tdep.c, ser-ocd.c, sol-thread.c, sparcl-tdep.c,
+ stabsread.h, stack.c, symfile.c, symfile.h, symtab.h,
+ target.c, target.h, top.c, tracepoint.c, tracepoint.h,
+ tui/tui.h, tui/tuiIO.c, utils.c, v850ice.c, varobj.c,
+ win32-nat.c, wince.c, xcoffsolib.c, xcoffsolib.h: Eliminate
+ PARAMS from function pointer declarations.
+
+2000-06-03 Christopher Faylor <cgf@cygnus.com>
+
+ * win32-nat.c (safe_symbol_file_add_cleanup): Ensure that gdb_stderr is
+ flushed before deleting and restoring it.
+ (safe_symbol_file_add): Ensure that gdb_stderr is flushed before
+ reassigning it.
+ (handle_load_dll): Split into two functions so that WFI can handle
+ shared library events.
+ (child_solib_loaded_library_pathname): New function.
+ (child_clear_solibs): New function. Clears shared library list.
+ (child_solib_add): New function. Adds shared library symbols.
+ (dll_symbol_command): New function. Handles "dll-symbol" command.
+ (info_dll_command): New function. Handles info
+ "sharedlibrary" command.
+ (handle_exceptions): Eliminate 'ignore_trap' argument.
+ (get_child_debug_event): Eliminate two arguments. Return "pid" when
+ appropriate. Break out on most events to allow WFI to handle stuff.
+ (child_wait): Accomodate get_child_debug_event changes.
+ (child_attach): Clear thread list and list of loaded dlls.
+ (child_create_inferior): Clear list of loaded dlls. Use
+ wait_for_inferior in a loop to look for first "trap".
+ (child_resume): Avoid accessing a possibly-freed thread pointer.
+ (_initialize_inftarg): Add "dll-symbols", "sharedlibrary", and "info
+ sharedlibrary" commands.
+ * config/i386/tm-cygwin.h: Add some shared library (aka DLL) hooks.
+
+2000-06-02 Christopher Faylor <cgf@cygnus.com>
+
+ * win32-nat.c: Fix up gcc warnings throughout.
+ (handle_load_dll): Change DLL name to lower case.
+ (handle_exception): Add a second argument indicating whether a
+ breakpoint should be ignored. Return a 0 if the breakpoint was
+ ignored.
+ (get_child_debug_event): Pass argument to handle_exception to control
+ whether a breakpoint should be ignored.
+ (child_create_inferior): Use modern cygwin API. Explicitly clear
+ last_sig. Pass FIRST_EXCEPTION to get_child_debug_event for detection
+ of first breakpoint.
+
+2000-06-02 Christopher Faylor <cgf@cygnus.com>
+
+ * configure.in: Detect correct versions of dlltool and windres when
+ cross-compiling.
+ * configure: Regenerate.
+
+2000-06-02 J.T. Conklin <jtc@redback.com>
+
+ * configure.tgt: Add pattern for i[3456]86-*-netbsdelf*.
+ * config/i386/nbsdelf.mt: New file.
+ * config/i386/tm-nbsdelf.h: New file.
+
+ * config/i386/tm-nbsd.h: change include of tm-nbsd.h to
+ the more explicit config/tm-nbsd.h.
+
+2000-06-02 Mark Kettenis <kettenis@gnu.org>
+
+ * alphabsd-nat.c (supply_fpregset): Substract FP0_REGNUM from
+ register number when used as index into fpr_regs array.
+
+Tue May 30 13:31:57 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * defs.h (TARGET_FLOAT_FORMAT, TARGET_DOUBLE_FORMAT,
+ TARGET_LONG_DOUBLE_FORMAT): Delete.
+
+ * gdbarch.sh: Add support for parameterized expressions.
+ (TARGET_FLOAT_FORMAT, TARGET_DOUBLE_FORMAT,
+ TARGET_LONG_DOUBLE_FORMAT): Add. Include "floatformat.h".
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+ * arch-utils.c (default_single_format, default_double_format,
+ default_long_double_format): New functions. Include
+ "floatformat.h"
+ * arch-utils.h: Declare.
+
+ * d10v-tdep.c (d10v_gdbarch_init): Set floating point format.
+ Note that long double is 64 bit, the rest are 32 bit. Include
+ "floatformat.h".
+
+2000-06-02 Mark Kettenis <kettenis@gnu.org>
+
+ * config/alpha/nm-fbsd.h (CANNOT_STEP_BREAKPOINT): Define.
+
+2000-06-01 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * sol-thread.c (rw_common): Circumstances (eg. a bug in Sun's
+ thread_db library) may cause this function to be called with an
+ illegal address, in which case procfs_to_xfer_memory will
+ return zero. Return an error code instead of looping forever.
+
+Thu Jun 1 20:05:26 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * TODO: More suggestions added.
+
+2000-05-31 J.T. Conklin <jtc@redback.com>
+
+ * configure.host: Add patterns for i[3456]86-*-netbsdaout*
+ and i[3456]86-*-netbsdelf*.
+ * config/i386/nm-nbsdelf.h: New file.
+ * config/i386/nbsdelf.mh: New file.
+
+ * config/i386/nm-nbsd.h: change include of nm-nbsd.h to
+ the more explicit config/nm-nbsd.h.
+ * config/i386/tm-nbsd.h: change include of tm-i386bsd.h to
+ tm-i386.h.
+ (SIGTRAMP_START, SIGTRAMP_END, SIGCONTEXT_PC_OFFSET): Define.
+
+2000-06-01 Mark Kettenis <kettenis@gnu.org>
+
+ * NEWS: Mention FreeBSD/Alpha and FreeBSD/i386 3.x and up as new
+ native configurations.
+
+ * i386bsd-nat.c: Include "gregset.h".
+ (CANNOT_STORE_REGISTER): Define to cannot_fetch_register instead
+ of CANNOT_FETCH_REGISTER, if not already defined.
+ (supply_gregset): Call supply_register with NULL as its second
+ argument instead of supplying our own zeroed out buffer.
+ (fill_gregset): Copy contents of correct registers instead of the
+ contents of register REGNO.
+
+2000-05-31 Kevin Buettner <kevinb@redhat.com>
+
+ * gnu-regex.c (re_match_2_internal): Revert 2000-05-27
+ patch which removed use of PARAMS from declaration. This
+ file should not have been touched as it is supposed to track
+ the version in glibc.
+
+2000-05-31 Mark Kettenis <kettenis@gnu.org>
+
+ Add support for FreeBSD/Alpha.
+ * configure.host, configure.tgt (alpha*-*-freebsd*): New entry.
+ * alphabsd-nat.c, config/alpha/fbsd.mh, config/alpha/fbsd.mt,
+ config/alpha/nm-fbsd.h, config/alpha/tm-fbsd.h,
+ config/alpha/xm-fbsd.h: New files.
+
+2000-05-31 Pierre Muller <muller@sourceware.cygnus.com>
+
+ * MAINTAINERS: Add myself to "Write After Approval" list.
+
+Tue May 30 18:48:33 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * TODO: Re-organize.
+
+Tue May 30 11:22:28 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * gdbarch.sh: Add field ``postdefault''. Rename fields
+ ``startup'' and ``default'' to ``staticdefault'' and
+ ``predefault''. Fix initialization of valid_p. Create/compare
+ gdbarch.log.
+
+Mon May 29 22:47:16 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * config/sparc/nm-sun4sol2.h (GDB_GREGSET_T, GDB_FPREGSET_T):
+ Define.
+ * config/sparc/xm-sun4sol2.h: (GDB_GREGSET_TYPE,
+ GDB_FPREGSET_TYPE): Delete.
+
+Mon May 29 15:41:10 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * symtab.h (make_cleanup_free_search_symbols): Add declaration.
+ * symtab.c (make_cleanup_free_search_symbols,
+ do_free_search_symbols_cleanup): New functions.
+ (search_symbols, symtab_symbol_info, rbreak_command): Update.
+ (search_symbols): Pass ``sr'', and not its address, to
+ make_cleanup_free_search_symbols.
+
+2000-05-28 Kevin Buettner <kevinb@redhat.com>
+
+ * config/nm-linux.h (GDB_GREGSET_T, GDB_FPREGSET_T): Fix typos.
+
+2000-05-27 Kevin Buettner <kevinb@redhat.com>
+
+ * abug-rom.c, alpha-nat.c, alpha-tdep.c, annotate.c,
+ annotate.h, arc-tdep.c, ax-gdb.c, ax-gdb.h, ax-general.c,
+ ax.h, breakpoint.c, breakpoint.h, c-exp.y, c-lang.c, c-lang.h,
+ call-cmds.h, ch-exp.c, ch-lang.c, ch-lang.h, cli-out.c,
+ coff-solib.h, coffread.c, command.c, command.h, complaints.c,
+ complaints.h, config/a29k/tm-a29k.h, config/a29k/tm-vx29k.h,
+ config/alpha/nm-linux.h, config/alpha/nm-osf.h,
+ config/alpha/nm-osf2.h, config/alpha/tm-alpha.h,
+ config/alpha/tm-alphalinux.h, config/arc/tm-arc.h,
+ config/arm/tm-embed.h, config/d30v/tm-d30v.h,
+ config/fr30/tm-fr30.h, config/h8300/tm-h8300.h,
+ config/h8500/tm-h8500.h, config/i386/nm-i386bsd.h,
+ config/i386/nm-i386sco.h, config/i386/nm-i386sol2.h,
+ config/i386/nm-i386v.h, config/i386/nm-linux.h,
+ config/i386/nm-nbsd.h, config/i386/nm-ptx4.h,
+ config/i386/nm-symmetry.h, config/i386/tm-cygwin.h,
+ config/i386/tm-i386.h, config/i386/tm-i386nw.h,
+ config/i386/tm-i386sol2.h, config/i386/tm-i386v.h,
+ config/i386/tm-i386v4.h, config/i386/tm-nbsd.h,
+ config/i386/tm-ptx.h, config/i386/tm-sun386.h,
+ config/i960/tm-mon960.h, config/i960/tm-nindy960.h,
+ config/m32r/tm-m32r.h, config/m68k/nm-dpx2.h,
+ config/m68k/nm-linux.h, config/m68k/tm-cisco.h,
+ config/m68k/tm-delta68.h, config/m68k/tm-es1800.h,
+ config/m68k/tm-isi.h, config/m68k/tm-linux.h,
+ config/m68k/tm-m68k.h, config/m68k/tm-m68kv4.h,
+ config/m68k/tm-news.h, config/m68k/tm-sun3.h,
+ config/m68k/tm-vx68.h, config/m68k/xm-hp300bsd.h,
+ config/m88k/tm-m88k.h, config/mcore/tm-mcore.h,
+ config/mips/nm-irix3.h, config/mips/nm-irix4.h,
+ config/mips/nm-irix5.h, config/mips/nm-mips.h,
+ config/mips/tm-embed.h, config/mips/tm-mips.h,
+ config/mn10200/tm-mn10200.h, config/mn10300/tm-mn10300.h,
+ config/nm-linux.h, config/nm-lynx.h, config/ns32k/nm-nbsd.h,
+ config/ns32k/tm-merlin.h, config/ns32k/tm-umax.h,
+ config/pa/nm-hppah.h, config/pa/tm-hppa.h,
+ config/pa/tm-hppa64.h, config/pa/xm-hppah.h,
+ config/powerpc/nm-linux.h, config/powerpc/tm-linux.h,
+ config/powerpc/tm-ppc-eabi.h, config/powerpc/tm-solaris.h,
+ config/powerpc/xm-aix.h, config/rs6000/nm-rs6000.h,
+ config/rs6000/tm-rs6000.h, config/rs6000/xm-rs6000.h,
+ config/sh/tm-sh.h, config/sparc/nm-linux.h,
+ config/sparc/nm-sun4os4.h, config/sparc/nm-sun4sol2.h,
+ config/sparc/tm-sp64.h, config/sparc/tm-sp64sim.h,
+ config/sparc/tm-sparc.h, config/sparc/tm-sparclet.h,
+ config/sparc/tm-spc-em.h, config/sparc/tm-sun4os4.h,
+ config/sparc/tm-sun4sol2.h, config/tic80/tm-tic80.h,
+ config/tm-sysv4.h, config/v850/tm-v850.h, config/vax/tm-vax.h,
+ config/w65/tm-w65.h, config/xm-aix4.h, config/z8k/tm-z8k.h,
+ copying.c, core-aout.c, core-regset.c, core-sol2.c,
+ corefile.c, corelow.c, cp-valprint.c, cpu32bug-rom.c,
+ d10v-tdep.c, d30v-tdep.c, dbug-rom.c, dbxread.c, dcache.c,
+ dcache.h, demangle.c, dink32-rom.c, dsrec.c, dstread.c,
+ dve3900-rom.c, dwarf2read.c, dwarfread.c, elfread.c,
+ environ.h, eval.c, exec.c, expprint.c, expression.h, f-exp.y,
+ f-lang.c, f-lang.h, f-valprint.c, findvar.c, fr30-tdep.c,
+ frame.h, gdb_string.h, gdbcmd.h, gdbcore.h,
+ gdbserver/server.h, gdbtypes.c, gdbtypes.h, gnu-regex.c,
+ h8300-tdep.c, hp-psymtab-read.c, hp-symtab-read.c,
+ hp300ux-nat.c, hppa-tdep.c, hppah-nat.c, hpread.c, hpread.h,
+ hpux-thread.c, i386-tdep.c, i386aix-nat.c, i386mach-nat.c,
+ i386v-nat.c, i386v4-nat.c, i387-tdep.c, i960-tdep.c, infcmd.c,
+ inferior.h, inflow.c, infptrace.c, inftarg.c, irix4-nat.c,
+ irix5-nat.c, jv-exp.y, jv-lang.c, jv-lang.h, language.c,
+ language.h, lynx-nat.c, m2-exp.y, m2-lang.c, m2-lang.h,
+ m32r-rom.c, mac-nat.c, main.c, maint.c, mdebugread.c,
+ mi/mi-out.c, minsyms.c, mips-nat.c, mips-tdep.c, mipsread.c,
+ mn10300-tdep.c, mon960-rom.c, monitor.c, monitor.h, nlmread.c,
+ objfiles.c, objfiles.h, ocd.c, ocd.h, op50-rom.c, os9kread.c,
+ osfsolib.c, pa64solib.c, pa64solib.h, parse.c, parser-defs.h,
+ ppc-bdm.c, printcmd.c, procfs.c, remote-array.c, remote-bug.c,
+ remote-e7000.c, remote-es.c, remote-est.c, remote-hms.c,
+ remote-mips.c, remote-nindy.c, remote-nrom.c, remote-rdi.c,
+ remote-rdp.c, remote-sds.c, remote-sim.c, remote-udi.c,
+ remote-utils.c, remote-utils.h, remote-vx.c, remote.c,
+ rom68k-rom.c, rs6000-nat.c, rs6000-tdep.c, scm-exp.c,
+ scm-lang.c, scm-lang.h, ser-e7kpc.c, ser-mac.c, sh3-rom.c,
+ sol-thread.c, solib.c, solib.h, somread.c, somsolib.c,
+ somsolib.h, source.c, sparc-nat.c, sparcl-tdep.c,
+ sparclet-rom.c, srec.h, stabsread.c, stabsread.h, stack.c,
+ sun3-nat.c, symfile.c, symfile.h, symmisc.c, symtab.c,
+ symtab.h, target.c, target.h, terminal.h, thread.c, top.c,
+ top.h, tracepoint.c, tracepoint.h, tui/tui-file.c, tui/tui.c,
+ tui/tui.h, tui/tuiCommand.h, tui/tuiData.c, tui/tuiData.h,
+ tui/tuiDataWin.h, tui/tuiDisassem.c, tui/tuiDisassem.h,
+ tui/tuiGeneralWin.c, tui/tuiGeneralWin.h, tui/tuiIO.c,
+ tui/tuiIO.h, tui/tuiLayout.c, tui/tuiLayout.h, tui/tuiRegs.c,
+ tui/tuiRegs.h, tui/tuiSource.c, tui/tuiSource.h,
+ tui/tuiSourceWin.h, tui/tuiStack.c, tui/tuiStack.h,
+ tui/tuiWin.c, tui/tuiWin.h, typeprint.c, ui-file.c, ui-out.h,
+ ultra3-nat.c, utils.c, v850-tdep.c, v850ice.c, valarith.c,
+ valops.c, valprint.c, value.h, values.c, varobj.c, w89k-rom.c,
+ win32-nat.c, wince.c, wrapper.c, wrapper.h, xcoffread.c,
+ xcoffsolib.c, xmodem.h, z8k-tdep.c: Remove PARAMS from function
+ declarations.
+
+2000-05-26 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * gregset.h: New file. Typedefs for gdb_gregset_t and
+ gdb_fpregset_t, prototypes for supply_gregset and friends.
+ * procfs.c: Include gregset.h. Delete local prototypes for
+ supply_gregset etc., and local typedef gdb_gregset_t etc.
+ * sol-thread.c: Include gregset.h, delete local prototypes,
+ add appropriate casts to gdb_gregset_t.
+ * uw-thread.c, lin-thread.c, core-sol2.c, core-regset.c,
+ sparc-tdep.c, ptx4-nat.c, ppc-linux-nat.c, mipsv4-nat.c,
+ m88k-nat.c, m68klinux-nat.c, m68k-tdep.c, irix5-nat.c,
+ irix4-nat.c, ia64-linux-nat.c, i386v4-nat.c, cxux-nat.c,
+ arm-linux-nat.c, alpha-nat.c: Include gregset.h.
+ * config/nm-linux.h: Define GDB_GREGSET_T, GDB_FPREGET_T.
+ * config/sparc/nm-sun4sol2.h: Ditto.
+ * config/sparc/xm-sun4sol2.h: (GDB_GREGSET_TYPE,
+ GDB_FPREGSET_TYPE): Delete (replaced by GDB_GREGSET_T etc.)
+
+Thu May 25 16:56:05 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure.in (AC_CHECK_HEADERS): Check for ncurses.h.
+ * config.in, configure: Re-generate.
+
+2000-05-25 Scott Bambrough <scottb@netwinder.org>
+
+ * arm-linux-tdep.c (find_minsym_and_objfile): New.
+ (skip_hurd_resolver): New.
+ (arm_linux_skip_solib_resolver): New.
+ (arm_skip_solib_resolver): Removed.
+
+ * config/arm/tm-linux.h (SKIP_SOLIB_RESOLVER): Changed to use
+ arm_linux_skip_solib_resolver.
+
+2000-05-25 Mark Kettenis <kettenis@gnu.org>
+
+ * acconfig.h (HAVE_R_FS, HAVE_R_GS): Add.
+ * configure.in: Add checks for r_fs and r_gs members of
+ `struct reg'.
+ * config.in, configure: Regenerated.
+
+2000-05-25 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * ser-go32.c: Remove PARAMS.
+
+Thu May 25 15:22:12 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure.in (AC_CHECK_HEADERS): Check for <dirent.h>,
+ <sys/ndir.h>, <sys/dir.h> and <ndir.h>.
+ * config.in, configure: Re-generate.
+ * gdb_dirent.h: New file
+
+ * infptrace.c: Include "gdb_dirent.h" instead of <sys/dir.h>.
+ * core-aout.c: Ditto.
+ * procfs.c: Include "gdb_dirent.h" instead of <dirent.h>.
+
+Thu May 25 14:43:30 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * config.in: Regenerate.
+
+Thu May 25 13:49:17 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ From Fri 19 May 2000 Eli Zaretskii <eliz@is.elta.co.il>: *
+ config/djgpp/fnchange.lst: Fix bfd/coff-tic54x.c, bfd/coff-tc54x.c
+ and gdb/testsuite/gdb.mi/mi-var-cmd.exp.
+
+Thu May 25 11:09:50 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure.in (AC_OUTPUT): Do not generate tui/Makefile.
+ (enable-tui): Convert Makefile configury to use the same mechanism
+ as MI.
+
+ * Makefile.in (BUILD_TUI, TUI_LIBRARY, TUI_DIR, TUI_SRC,
+ TUI_CFLAGS): Delete
+ (all-tui): Delete target.
+ (tuiWin.o, tuiStack.o, tuiSourceWin.o, tuiSource.o, tuiRegs.o,
+ tuiLayout.o, tuiIO.o, tuiGeneralWin.o, tuiDisassem.o,
+ tuiDataWin.o, tuiData.o, tuiCommand.o, tui.o): New targets.
+ (SUBDIR_TUI_OBS, SUBDIR_TUI_SRCS, SUBDIR_TUI_DEPS,
+ SUBDIR_TUI_INITS, SUBDIR_TUI_LDFLAGS, SUBDIR_TUI_CFLAGS,
+ SUBDIR_TUI_ALL, SUBDIR_TUI_CLEAN, SUBDIR_TUI_INSTALL,
+ SUBDIR_TUI_UNINSTALL): Define.
+
+ * TODO: Update.
+
+Thu May 25 11:02:24 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * TODO: Update. Mark Kettenis fixed FreeBSD >2.2 support.
+ * MAINTAINERS: Update Jim Ingham's address.
+
+2000-05-25 Mark Kettenis <kettenis@gnu.org>
+
+ Add support for FreeBSD/i386 ELF.
+ * i386bsd-nat.c: New file.
+ * config/i386/tm-fbsd.h (HAVE_I387_REGS): Define.
+ Include "i386/tm-i386.h" instead of "i386/tm-i386b.h".
+ (NUM_REGS): Remove redefinition.
+ (USE_STRUCT_CONVENTION): Define.
+ (i386_float_info): Remove prototype.
+ (FLOAT_INFO): Remove define.
+ (JB_ELEMENT_SIZE): Define to 4.
+ (JB_PC): Define to 0.
+ (GET_LONGJMP_TARGET): Define.
+ (SIGTRAMP_START, SIGTRAMP_END): Define.
+ (SIGCONTEXT_PC_OFFSET): Define.
+ (IN_SOLIB_CALL_TRAMPOLINE): Only define if !SVR4_SHARED_LIBS
+ * config/i386/nm-fbsd.h (PTRACE_ARG3_TYPE): Define to caddr_t.
+ (FETCH_INFERIOR_REGISTERS): Define.
+ (ATTACH_DETACH): Define.
+ (kernel_u_size): Remove PARAMS.
+ (register_u_addr): Use CORE_ADDR in prototype where appropriate.
+ Remove PARAMS.
+ (SVR4_SHARED_LIBS) [FREEBSD_ELF || __ELF__ && !FREEBSD_AOUT]:
+ Define.
+ [SVR4_SHARED_LIBS]: Include "elf/common.h".
+ Only define aliases for struct members from <link.h> if
+ !SVR4_SHARED_LIBS.
+ * config/i386/xm-fbsd.h: New file.
+ * config/i386/fbsd.mt (TDEPFILES): Remove solib.o.
+ * config/i386/fbsd.mh (NATDEPFILES): Remove i386b-nat.o. Add
+ core-regset.o i387-nat.o i386bsd-nat.o.
+
+2000-05-24 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * findvar.c (value_from_register): Factor code, simplify logic.
+
+2000-05-23 J.T. Conklin <jtc@redback.com>
+
+ * config/i386/nbsd.mt (TDEPFILES): Move solib.o from here...
+ * config/i386/nbsd.mh (NATDEPFILES): ...to here.
+ * config/m68k/nbsd.mt (TDEPFILES): Move solib.o from here...
+ * config/m68k/nbsd.mh (NATDEPFILES): ...to here.
+ * config/ns32k/nbsd.mt (TDEPFILES): Move solib.o from here...
+ * config/ns32k/nbsd.mh (NATDEPFILES): ...to here.
+
+ * config/powerpc/nbsd.mt (GDBSERVER_DEPFILES): Add low-nbsd.o.
+ * configure.tgt (powerpc-*-netbsd*): add gdbserver to configdirs.
+ * gdbserver/low-nbsd.c (initialize_arch): Define for PPC.
+ (fetch_inferior_registers): Likewise.
+ (store_inferior_registers): Likewise.
+
+ * gdbserver/low-nbsd.c (fetch_inferior_registers): Handle X86
+ floating point registers.
+ (store_inferior_registers): Likewise.
+
+2000-05-24 Mark Kettenis <kettenis@gnu.org>
+
+ * i387-nat.h, i387-nat.c: New files.
+
+Tue May 23 17:21:24 2000 Alexandre Oliva <aoliva@cygnus.com>
+
+ * config/sparc/nm-linux.h: Include config/nm-linux.h.
+ * config/powerpc/nm-linux.h: Likewise.
+
+Tue May 23 13:20:00 1999 Gregory Lielens <info@fft.be>
+
+ * f-valprint.c : Corrected f_val_print function for TYPE_CODE
+ (type) = TYPE_CODE_COMPLEX
+
+Wed May 24 00:38:09 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * utils.c (make_cleanup_close, do_close_cleanup): New functions.
+ * defs.h (make_cleanup_close): Add declaration.
+
+Tue May 23 20:47:50 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure.in (build_warnings): Add -Wuninitialized.
+ * configure: Regenerate.
+
+Tue May 23 17:44:18 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ From Mon May 8 14:49:51 2000 Andrew Cagney <cagney@b1.cygnus.com>
+ (gdb 5.0): From Michael Paddon <mmpp@esec.com.au>:
+ * configure.in (AC_CHECK_HEADERS): Check for <sys/user.h>.
+
+ * configure: Re-generate.
+ * proc-api.c: Only include <sys/user.h> when available.
+ (ioctl_table): Check that PIOCGETPR and PIOCGETU are defined.
+
+ * TODO: Update.
+
+2000-05-17 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * config/sparc/tm-sun4sol2.h: Turn on multi-arch.
+ * sparc-tdep.c (gdb_print_insn_sparc): Remove temp. multi-arch hack.
+
+2000-05-17 Andrew Cagney <cagney@sourceware.cygnus.com>
+
+ * GDB 5.0 released.
+ * Makefile.in (VERSION): Set to 5.0.
+
+Mon May 22 16:20:31 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * inferior.h (make_cleanup_restore_inferior_status):
+ * infrun.c (make_cleanup_restore_inferior_status,
+ do_restore_inferior_status_cleanup): New functions.
+ * valops.c (hand_function_call): Use.
+ * infcmd.c (disable_longjmp_breakpoint_cleanup): New function.
+ (step_1): Use.
+ * symfile.c (clear_symtab_users_cleanup): New function.
+ (syms_from_objfile, reread_symbols): Use.
+ * objfiles.c (make_cleanup_free_objfile, do_free_objfile_cleanup):
+ New functions.
+ * objfiles.h (make_cleanup_free_objfile): Add declaration.
+ * symfile.c (syms_from_objfile, reread_symbols), hpread.c
+ (hpread_build_psymtabs), hp-psymtab-read.c
+ (hpread_build_psymtabs): Use.
+ * dwarf2read.c (make_cleanup_free_die_list,
+ do_free_die_list_cleanup): New functions.
+ (psymtab_to_symtab_1): Use.
+ * tracepoint.c (make_cleanup_free_actions,
+ do_free_actions_cleanup): New functions.
+ (read_actions): Use.
+ * corelow.c (core_close_cleanup): New function.
+ (core_open): Use.
+ * dbxread.c (make_cleanup_free_bincl_list,
+ do_free_bincl_list_cleanup): New function.
+ (read_dbx_symtab): Use.
+ * coffread.c (free_linetab_cleanup, free_stringtab_cleanup): New
+ functions.
+ (coff_symfile_read): Use.
+ * varobj.c (make_cleanup_free_variable, do_free_variable_cleanup):
+ New function.
+ (varobj_create): Use.
+ * sparcl-tdep.c (close_tty), infrun.c (resume_cleanups), parse.c
+ (free_funcalls): Change signature to match make_cleanup_ftype.
+ * infrun.c (resume), tracepoint.c (encode_actions), remote-udi.c
+ (download), solib.c (open_symbol_file_object), sparcl-tdep.c
+ (sparclite_open), parse.c (parse_exp_1): Remove cast using
+ make_cleanup_func.
+
+Mon May 22 15:49:13 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * procfs.c (info_proc_cmd): Use make_cleanup_freeargv.
+ (proc_iterate_over_mappings): Use make_cleanup_close.
+ (proc_get_LDT_entry): Ditto.
+ (do_closedir_cleanup): New function.
+ (proc_update_threads): Use.
+ (do_destroy_procinfo_cleanup): New function.
+ (info_proc_cmd): Use.
+
+Mon May 22 15:21:38 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * top.h (command_loop_marker): Change signature to match
+ make_cleanup_ftype.
+ * top.c (command_loop_marker): Update.
+ (command_loop, simplified_command_loop), event-top.c
+ (command_handler): Remove cast using make_cleanup_func.
+ * event-top.c (command_handler): Ditto.
+
+ * top.c (do_chdir_cleanup): New function.
+ (gdb_init): Use. Use xstrdup instead of strsave.
+ * top.c (do_fclose_cleanup): New function.
+ (source_command): Use.
+ * top.c (do_restore_instream_cleanup): Rename
+ source_cleanup. Change signature to match make_cleanup.
+ (read_command_filem execute_user_command): Update. Remove cast
+ using make_cleanup_func.
+ * top.c (do_free_command_lines_cleanup,
+ make_cleanup_free_command_lines): New funtions.
+ (get_command_line, read_command_lines): Use.
+ * top.c (arg_cleanup): Change signature to match make_cleanup.
+ (setup_user_args): Remove cast using make_cleanup_func.
+
+Mon May 22 12:05:13 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * defs.h (t_reg): Delete typedef.
+ (preg, preg_nz): Delete function. Replaced by phex and phex_nz.
+ * utils.c (phex, phex_nz): New functions.
+ (paddr, paddr_nz): Use.
+
+ * monitor.c (monitor_store_register): Replace preg with phex.
+
+Mon May 22 11:46:01 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * TODO: Add note on typecast using catch_errors_ftype.
+
+2000-05-21 Mark Kettenis <kettenis@gnu.org>
+
+ * i387-tdep.c (print_i387_value): Cast &value to (char *) in
+ pointer arithmetic. Fixes a bug which manifested itself on
+ FreeBSD.
+
+2000-05-20 J.T. Conklin <jtc@redback.com>
+
+ * target.h (target_memory_bfd_section): Removed declaration.
+ * target.c (target_memory_bfd_section): Removed.
+ * exec.c (xfer_memory): Removed #if'ed-out code which referenced
+ target_memory_bfd_section.
+
+ * target.h (target_read_memory_section): Removed declaration.
+ * target.c (target_read_memory_section): Removed.
+ (target_xfer_memory): Update, removed bfd_section argument.
+ (target_read_string, target_read_memory, target_write_memory):
+ Update for above change.
+
+ * gdbcore.h (read_memory_section): Removed declaration.
+ * corefile.c (read_memory_section): Removed.
+ * jv-lang.c (get_java_utf8_name): Changed calls to
+ read_memory_section to read_memory.
+ * printcmd.c (printf_command): Likewise.
+ * valops.c (value_at, value_fetch_lazy): Likewise.
+
+2000-05-18 J.T. Conklin <jtc@redback.com>
+
+ * configure.host, configure.tgt (powerpc-*-netbsd*): New entry.
+ * config/powerpc/nbsd.mh, config/powerpc/nbsd.mt,
+ config/powerpc/tm-nbsd.h, config/powerpc/nm-nbsd.h,
+ config/powerpc/xm-nbsd.h: New files.
+
+2000-05-17 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * gdb/config/djgpp/README: Fine-tune installation instructions
+ based on user reports.
+
+Wed May 17 18:27:45 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure.in (build_warnings): List possible warnings.
+ * configure: Regenerate.
+ * TODO: More updates.
+ * MAINTAINERS: Add Gary Thomas and Joern Renneck to Write After
+ Approval.
+
+Wed May 17 16:48:36 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ From 2000-04-14 Gary Thomas <gthomas@redhat.com>:
+ * config/v850/tm-v850.h: Change breakpoint sequence to be
+ 'br *' since there is no 16bit "illegal" instruction on this
+ processor.
+
+Tue May 16 18:57:14 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * TODO: Review. Delete anything that is no longer applicable.
+
+Tue May 16 14:17:20 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * utils.c (free_current_contents): Make more robust.
+
+Tue May 16 13:30:08 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * symtab.h (make_cleanup_discard_minimal_symbols): Replace
+ discard_minimal_symbols.
+ * minsyms.c (make_cleanup_discard_minimal_symbols):
+ (do_discard_minimal_symbols_cleanup): New functions.
+
+ * xcoffread.c (xcoff_initial_scan), somread.c (som_symfile_read),
+ solib.c (solib_add_common_symbols), os9kread.c
+ (os9k_symfile_read), nlmread.c (nlm_symfile_read), mipsread.c
+ (mipscoff_symfile_read), elfread.c (elf_symfile_read), dstread.c
+ (dst_symfile_read), dbxread.c (dbx_symfile_read), coffread.c
+ (coff_symfile_read): Replace make_cleanup.
+
+Mon May 15 09:32:31 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * command.h (add_set_cmd): Change VAR parameter to void pointer.
+ (add_set_enum_cmd): Change VAR parameter to char pointer pointer.
+ (struct command): Change member VAR to void pointer.
+ * command.c (add_set_cmd, add_set_enum_cmd): Update.
+
+ * remote.c (add_packet_config_cmd), mips-tdep.c
+ (_initialize_mips_tdep), infrun.c (_initialize_infrun),
+ i386-tdep.c (_initialize_i386_tdep), arm-tdep.c
+ (_initialize_arm_tdep): Update VAR parameter to add_set_enum_cmd.
+
+Tue May 16 12:46:04 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * wrapper.h (wrap_value_subscript): Delete declaration.
+
+Tue May 16 10:54:55 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * defs.h (make_cleanup_bfd_close): Add declaration.
+ * utils.c (do_bfd_close_cleanup, make_cleanup_bfd_close): New
+ functions.
+
+ * symfile.c (generic_load), sparcl-tdep.c (download), remote-udi.c
+ (download), remote-e7000.c (e7000_load), corelow.c (core_open,
+ core_file_to_sym_file): Replace calls to make_cleanup.
+
+Mon May 15 16:50:45 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * TODO: Add notes on register cache.
+
+Mon May 15 21:27:27 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * sh-tdep.c (sh_dsp_reg_names, sh3_dsp_reg_names): New arrays.
+ (sh_processor_type_table): Add entries for bfd_mach_sh_dsp and
+ bfd_mach_sh3_dsp.
+ (sh_show_regs): Floating point registers are called fr0-fr15.
+ For sh4, display fpul, fpscr and fr0-fr15 / dr0-dr14 as appropriate.
+ Handle sh-dsp and sh3-dsp.
+ config/sh/tm-sh.h (REGISTER_VIRTUAL_TYPE): sh-dsp / sh3-dsp
+ don't have floating point registers.
+ (DSR_REGNUM, A0G_REGNUM, A0_REGNUM, A1G_REGNUM, A1_REGNUM): Define.
+ (M0_REGNUM, M1_REGNUM, X0_REGNUM, X1_REGNUM, Y0_REGNUM): Likewise.
+ (Y1_REGNUM, MOD_REGNUM, RS_REGNUM, RE_REGNUM, R0B_REGNUM): Likewise.
+
+2000-05-15 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * Makefile.in (gdbtypes.o, varobj.o): Depend on wrapper.h.
+
+ * wrapper.h (gdb_value_subscript, wrap_value_subscript): Add
+ prototypes.
+
+Mon May 15 15:31:30 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * valops.c (hand_function_call): Replace #ifdef
+ SAVE_DUMMY_FRAME_TOS with if SAVE_DUMMY_FRAME_TOS_P.
+
+ * gdbarch.sh (SAVE_DUMMY_FRAME_TOS): Add.
+ * gdbarch.h, gdbarch.c: Regenerate.
+
+Mon May 15 16:05:46 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * ax.h (make_cleanup_free_agent_expr): Add declaration.
+ * ax-general.c (do_free_agent_expr_cleanup):
+ (make_cleanup_free_agent_expr): New functions.
+
+ * tracepoint.c (validate_actionline, encode_actions), ax-gdb.c
+ (expr_to_agent, gen_trace_for_expr, agent_command): Replace calls
+ to make_cleanup.
+
+Mon May 15 14:06:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * breakpoint.h (make_cleanup_delete_breakpoint,
+ make_exec_cleanup_delete_breakpoint): Declare.
+ * breakpoint.c (make_cleanup_delete_breakpoint,
+ make_exec_cleanup_delete_breakpoint,
+ do_delete_breakpoint_cleanup): New fuctions.
+
+ * infcmd.c (finish_command), hppa-tdep.c (hppa_pop_frame),
+ breakpoint.c (until_break_command, until_break_command): Replace
+ call to make_cleanup / make_exec_cleanup.
+
+Mon May 15 13:25:57 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * defs.h (core_addr_greaterthan, core_addr_lessthan), utils.c
+ (core_addr_greaterthan, core_addr_lessthan): Move from here.
+ * arch-utils.h (core_addr_greaterthan, core_addr_lessthan),
+ arch-utils.c (core_addr_greaterthan, core_addr_lessthan): To here.
+
+Mon May 15 12:07:55 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * printcmd.c (print_frame_args), stack.c (print_frame), command.c
+ (do_setshow_command), breakpoint.c (print_it_typical, mention):
+ Use make_cleanup_ui_out_stream_delete.
+
+Mon May 15 11:23:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * proc-events.c (init_syscall_table): Delete stray ``;''.
+ * ui-out.c (ui_out_set_flags, ui_out_clear_flags): Return old
+ value.
+ * mdebugread.c (START_PSYMTAB): Add paren to avoid x=x=x.
+
+2000-05-12 Michael Snyder <msnyder@.cygnus.com>
+
+ * config/i386/tm-i386sol2.h (COERCE_FLOAT_TO_DOUBLE): Define.
+
+2000-05-12 Kevin Buettner <kevinb@redhat.com>
+
+ * dwarf2read.c (dwarf2_const_value_data): Fix typo in sign
+ extension code.
+
+Fri May 12 20:38:55 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * TODO: Mention weak symbol problem. Mention UnixWare thread
+ problem.
+
+Fri May 12 14:12:17 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * README: Update section on kernel debugging.
+
+Fri May 12 19:13:15 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * mips-tdep.c (mips_get_saved_register): New function. Handle
+ case of 32 ABI saving 32 bit registers on stack when target has 64
+ bit ISA.
+ (mips_gdbarch_init): Update.
+
+Fri May 12 14:46:52 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * mips-tdep.c (MIPS_EABI): Fix typo. Test for MIPS_ABI_EABI64.
+
+Thu May 11 21:52:55 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure.in (WERROR_CFLAGS): Check that GCC accepts a -W
+ options before using them. Report result.
+ * configure: Regenerate.
+
+2000-05-11 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
+
+ * coffread.c (coff_symtab_read): In the case of C_THUMBEXT |
+ C_THUMBEXTFUNC | C_EXT, sec will never ever be the index for
+ .rodata, because cs_to_section doesn't deal with .rodata. Fix test
+ accordingly.
+
+Thu May 11 21:33:59 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * gdbarch.sh (gdbarch_dump): Print the value of GDB_MULTI_ARCH.
+ Always check that a macro is defined before printing it.
+ * gdbarch.c: Re-generate.
+
+Thu May 11 17:22:36 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * README: Update for GDB 5.0.
+
+Thu May 11 13:24:52 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * mips-tdep.c (MIPS_DEFAULT_STACK_ARGSIZE): Fix typo.
+
+ * config/mips/tm-irix5.h (GDB_MULTI_ARCH): Add
+ definition. Disable. Document known problems.
+ (MIPS_DEFAULT_ABI): Define.
+
+ * mips-tdep.c (enum mips_abi): Define.
+ (struct gdbarch_tdep): Replace mips_eabi with mips_abi.
+ (MIPS_EABI): Update.
+ (mips_gdbarch_init): Add preliminary support for IRIX N32 ABI.
+ Determine ABI from either ELF_FLAGS or MIPS_DEFAULT_ABI. When
+ looking for a matching architecture require a matching MIPS_ABI.
+ (mips_gdbarch_init): Cleanup arch_debug information.
+
+2000-05-10 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
+
+ * solib.c (symbol_add_stub): Remember the index and the name of
+ the section with the lowest address. Use this data (instead of
+ data from .text) to pass info into symbol_file_add.
+
+ * elfread.c (record_minimal_symbol_and_info): Use the section
+ where the symbol lives to get the index, instead of guessing.
+
+2000-05-10 Michael Snyder <msnyder@.cygnus.com>
+
+ Make Sparc a Multi-Arch target. Discard PARAMS macro (require ANSI).
+ * sparc-tdep.c: include arch-utils.h.
+ (SPARC_HAS_FPU, FP_REGISTER_BYTES, FP_MAX_REG NUM, SPARC_INTREG_SIZE,
+ DUMMY_REG_SAVE_OFFSET): provide multi-arch-compatible definitions.
+ (GDB_TARGET_IS_SPARC64): make into a runtime test.
+ (struct frame_extra_info): Define, use instead of the macro.
+ (Many places): Use alloca instead of statically allocated buffers
+ that depend on a multi-arch variable such as MAX_REGISTER_RAW_SIZE.
+ (sparc_extract_struct_value_address): Accept a pointer arg instead
+ of an array sized by REGISTER_BYTES.
+ (examine_prologue): Accept a pointer to an array of CORE_ADDR,
+ instead of the defunct struct frame_saved_regs. Recognize new
+ Sparc64 store instructions as part of the prologue. Ignore the
+ destination of a frame store when parsing the prologue (so long
+ as it's on the stack).
+ (sparc_push_dummy_frame): Fix incorrect buffer offset for PSTATE.
+ (sparc_frame_find_saved_regs): Accept a ptr to an array of CORE_ADDR
+ instead of the defunct struct frame_saved_regs.
+ (supply_gregset): Discard unnecessary 'zerobuf': just send NULL to
+ supply_register. Provide 4-byte offset to compensate for diff
+ between size of the prgreg_t elements on a 64-bit host and size
+ of the registers for a 32-bit target. Fill all inaccessible regs
+ with zero so they won't keep being requested again and again.
+ (fill_gregset): Handle 32/64 size difference between registers
+ and prgreg_t. Handle as many new 64-bit regs as possible.
+ (supply_fpregset, fill_fpregset): Attempt to handle 64-bit world.
+ (sparc_push_arguments): Rename to sparc32_push_arguments.
+ Copy arguments into registers as well as onto stack, so that the
+ CALL_DUMMY (code pushed onto the target stack) is not required.
+ (sparc_extract_return_value): Rename to sparc32_extract_return_value.
+ (sparc_store_return_value): Use memset instead of bzero.
+ Use write_register_gen instead of write_register_bytes.
+ (sparclet_store_return_value): New function.
+ (_initialize_sparc_tdep): Call register_gdbarch_init to activate
+ the gdbarch multi-architecture system.
+ (sp64_push_arguments): Rename to sparc64_push_arguments.
+ Extend to store arguments in general registers as well as on stack.
+ (sparc64_extract_return_value): Rename to sp64_extract_return_value.
+ Use as a private function, to be called by the new external function
+ sparc64_extract_return_value.
+ (sparclet_extract_return_value): New function.
+ (sparc32_stack_align, sparc64_stack_align, sparc32_register_name,
+ sparc64_register_name, sparc_print_extra_frame_info,
+ sparclite_register_name, sparclet_register_name,
+ sparc_push_return_address, sparc64_use_struct_convention,
+ sparc32_store_struct_return, sparc64_store_struct_return,
+ sparc32_register_virtual_type, sparc64_register_virtual_type,
+ sparc32_register_size, sparc64_register_size,
+ sparc32_register_byte, sparc64_register_byte,
+ sparc_gdbarch_skip_prologue, sparc_convert_to_virtual,
+ sparc_convert_to_raw, sparc_frame_init_saved_regs,
+ sparc_frame_address, sparc_gdbarch_fix_call_dummy,
+ sparc_coerce_float_to_double, sparc_call_dummy_address,
+ sparc_y_regnum, sparc_reg_struct_has_addr, sparc_intreg_size,
+ sparc_return_value_on_stack): New functions supporting multi-arch.
+ (sparc_gdbarch_init): New function; initialize multi-arch.
+ (struct gdbarch_tdep): Define, use for private multi-arch data.
+ * config/sparc/tm-sparc.h: Move definitions around, enclose with
+ #ifdef GDB_MULTI_ARCH tests, provide some multi-arch alternate
+ definitions. Add enums for register names, to help debugging gdb.
+ This header file must work for non-multi-arch and for multi-arch.
+ * config/sparc/tm-sp64.h: Add GDB_MULTI_ARCH configuration. Also add
+ AT_ENTRY_POINT definitions for CALL_DUMMY, for non-multi-arch case.
+ Define GDB_MULTI_ARCH.
+ * config/sparc/tm-sparclet.h: Add GDB_MULTI_ARCH configuration.
+ Do not define GDB_MULTI_ARCH (bfd does not correctly identify target).
+ * config/sparc/tm-sparclite.h: Ditto.
+ * config/sparc/tm-sun4sol2.h: Define GDB_MULTI_ARCH.
+ * sparclet-rom.c (sparclet_regnames): Initialize explicitly, to
+ avoid using deprecated REGISTER_NAMES macro.
+ * Makefile.in: Let sparc-tdep.c depend on arch-utils.h.
+
+2000-05-08 Michael Snyder <msnyder@.cygnus.com>
+
+ * gdbarch.sh: Add FP0_REGNUM to list of multi-arched register numbers.
+ * gdbarch.c, gdbarch.h: Regenerate.
+ * core-regset.c: Change FP0_REGNUM to a runtime test.
+ * procfs.c: Ditto.
+ * sun3-nat.c: Ditto.
+ * sparc-tdep.c: Ditto.
+
+ * i386mach-nat.c: Remove unnecessary ifdef for FP0_REGNUM.
+ * ptx4-nat.c: Ditto.
+
+ * sol-thread.c (sol_thread_create_inferior): only add the thread
+ to the thread list if it is not already in there.
+ (prototypes for thread_db func ptrs): pretty up formatting.
+
+2000-05-08 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * config/djgpp/djconfig.sh: Use more warning switches.
+
+ * config/djgpp/fnchange.lst: Replace the leading gdb-0222 with the
+ @V@ placebo. djunpack.bat changed accordingly.
+
+Mon May 8 11:19:47 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * mips-tdep.c (size_auto, size_32, size_64, size_enums): Rename
+ saved_gpreg_size_auto, saved_gpreg_size_32, saved_gpreg_size_64
+ and saved_gpreg_size_enums.
+ (mips_stack_argsize): Update. Cleanup.
+
+ * mips-tdep.c (STACK_ARGSIZE): Delete macro. Replaced by
+ MIPS_STACK_ARGSIZE.
+ (MIPS_NABI32): Delete macro. Replaced by
+ MIPS_REGS_HAVE_STACK_HOME_P.
+ (mips_push_arguments): Update.
+ (mips_push_arguments): Replace check for MIPS_EABI or MIPS_NABI32
+ with test for MIPS_REGS_HAVE_STACK_HOME_P.
+ (MIPS_REGS_HAVE_STACK_HOME_P): Define. Provide non- multi-arch
+ default.
+ (struct gdbarch_tdep): Add mips_regs_have_stack_home_p and
+ mips_default_stack_argsize.
+ (MIPS_STACK_ARGSIZE): Define as mips_stack_argsize.
+ (mips_stack_argsize_string): New static variable.
+ (mips_stack_argsize): New function, handle default case.
+ (__initialize_mips_tdep): Add command ``set mips stack-arg-size''
+ implemented as an enum using size_auto et.al.
+ (mips_gdbarch_init): Initialize mips_default_stack_argsize and
+ mips_regs_have_stack_home_p.
+
+ * config/mips/tm-irix5.h (MIPS_DEFAULT_SAVED_REGSIZE): Define as 8
+ for n32.
+ (MIPS_REGS_HAVE_STACK_HOME_P): Define as 0 for n32.
+
+Mon May 8 00:49:32 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * procfs.c (PROCFS_TRACE): Delete definition.
+ * proc-utils.h (PROCFS_NOTE, PROC_PRETTYFPRINT_STATUS): Always
+ define.
+
+2000-05-05 Michael Snyder <msnyder@.cygnus.com>
+
+ * procfs.c: Cleanup of procfs tracing. Move defines and
+ prototypes to proc-utils.h
+ * proc-utils.h: Define tracing macros. Declare trace functions.
+ * proc-api.c: Make procfs tracing a runtime option.
+ (prepare_to_trace): New function, abstracted out of several
+ places. Open a trace file if one is required.
+ (ioctl_with_trace, write_with_trace, open_with_trace,
+ close_with_trace, wait_with_trace, lseek_with_trace):
+ Report errno if an error occurs in a system call.
+ (write_with_trace): Make 2nd arg void *, to agree with write.
+
+2000-05-05 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
+
+ * elfread.c (elf_symtab_read): The calculation of 'offset'
+ must be done for each symbol, not just once. The index
+ used must be the index of the section where 'sym' resides,
+ not .text.
+
+2000-05-05 Michael Snyder <msnyder@.cygnus.com>
+
+ * procfs.c (many functions): change int cmd; to long cmd;
+ Solaris /proc API calls this parameter a long, and requires it
+ for 64-bit hosts (where sizeof(long) != sizeof(int)). UnixWare
+ calls it an int, but on existing UnixWare hosts, int and long
+ are the same size. So long it must be. If a future UnixWare
+ version has problems with this, we'll have to use autoconf.
+ * proc-api.c (write_with_trace): use long instead of int.
+
+2000-05-04 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-linux-nat.c: Define PT_READ_U and PT_WRITE_U if they're not
+ already defined.
+
+2000-05-01 Mark Kettenis <kettenis@gnu.org>
+
+ * infrun.c (handle_inferior_event): Add missing call to keep_going
+ and missing return when handling an ordinary signal from the
+ inferior.
+
+2000-05-04 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
+
+ * objfiles.h (SECT_OFF_DATA, SECT_OFF_TEXT, SECT_OFF_BSS,
+ SECT_OFF_RODATA): Define as functions of OBJFILE. Add
+ sect_index_text, sect_index_data, sect_index_rodata,
+ sect_index_bss to objfile structure.
+ * gdb-stabs.h (SECT_OFF_DATA, SECT_OFF_TEXT, SECT_OFF_BSS,
+ SECT_OFF_RODATA): Remove.
+ * objfiles.c (allocate_objfile): Initialize
+ sect_index_{text,data,bss,rodata} to -1, for error detection.
+
+ * symfile.c (default_symfile_offsets): Initialize
+ sect_index_{text,data,bss,rodata} from bfd information.
+ * xcoffread.c (xcoff_symfile_offsets): Ditto.
+ * somread.c (som_symfile_offsets): Initialize
+ sect_index_{text,data,bss,rodata}.
+
+ * coffread.c, dbxread.c, elfread.c, hp-psymtab-read.c,
+ hp-symtab-read.c, hpread.c, mdebugread.c, minsyms.c,
+ mipsread.c, objfiles.c, os9kread.c, pa64solib.c, partial-stab.h,
+ remote-os9k.c, remote-vx.c, remote.c, rs6000-nat.c, somsolib.c,
+ stabsread.c, symfile.c, xcoffread.c:
+ Update use of SECT_OFF_{TEXT,DATA,BSS,RODATA} to depend on the
+ current objfile.
+
+ * xcoffread.c: Add new field objfile to find_targ_sec_arg.
+
+Thu May 4 20:54:00 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * config/mips/tm-mipsv4.h (Dest_Reg), config/mips/tm-irix5.h
+ (MIPS_NUM_ARG_REGS, Dest_Reg), config/mips/tm-mips.h
+ (MIPS_NUM_ARG_REGS), config/mips/tm-mips.h (MIPS_NUM_FP_ARG_REGS):
+ Delete unused macros.
+
+2000-05-03 Michael Snyder <msnyder@.cygnus.com>
+
+ * solib.c (elf_locate_base, info_sharedlibrary_command):
+ Look at the bfd to determine if it is elf32 or elf64, rather
+ than using an ifdef. This makes it runtime teststable and
+ multi-arch.
+
+2000-05-01 Mark Kettenis <kettenis@gnu.org>
+
+ * infrun.c (handle_inferior_event): When doing a "next", and
+ stepping out of a signal handler into its calling trampoline
+ ignore the value of step_frame_address.
+ (step_over_function): Only modify step_resume_breakpoint->frame if
+ the value of step_frame_address is non-zero.
+
+2000-05-03 Michael Snyder <msnyder@cygnus.com>
+
+ * monitor.c (monitor_fetch_register): MAX_REGISTER_RAW_SIZE
+ is not static in the MULTI_ARCH world, so don't use it in a
+ static array declaration.
+
+2000-05-03 Elena Zannoni <ezannoni@makita.cygnus.com>
+
+ * symtab.c (in_prologue): From Jim Blandy. Rewrite, more
+ intelligently, making sure we use the information from the
+ symbol tables fully.
+
+2000-05-02 H.J. Lu <hjl@gnu.org>
+
+ * ia64-tdep.c (ia64_gdbarch_init): Reference to ELFOSABI_NONE
+ instead of ELFOSABI_SYSV.
+
+Tue May 2 19:07:20 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * gdbarch.sh (NPC_REGNUM, NNPC_REGNUM): Add.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+ * gdbserver/remote-utils.c (prepare_resume_reply): Change #ifdef
+ NPC_REGNUM to run-time test.
+ * findvar.c (generic_target_write_pc): Change #ifdef NPC_REGNUM
+ and NNPC_REGNUM to run-time test.
+ * procfs.c (procfs_fetch_registers): Change #ifdef NPC_REGNUM to
+ run-time test.
+ (procfs_store_registers): Ditto.
+
+Tue May 2 18:48:57 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * gdbarch.sh: Provide non- multi-arch defaults by direct
+ definition in "gdbarch.h" instead of going through "gdbarch.c".
+ * gdbarch.h, gdbarch.c: Re-generate.
+ * defs.h: When non- multi-arch, include "arch-utils.h" so that
+ legacy definitions are globally visible.
+
+Tue May 2 16:32:06 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * MAINTAINERS: Add Syd Polk to gdbtk maintainers.
+ (symtabs): Add Elena to symtabs maintainers list.
+ (Blanket Write Privs): Add Jim Blandy.
+
+2000-05-01 Stan Shebs <shebs@apple.com>
+
+ Remove obsolete Gould configuration:
+ * configure.host, configure.tgt: Remove Gould configs.
+ * Makefile.in: Remove Gould-related actions.
+ * gould-xdep.c, gould-tdep.c, config/gould/*: Remove files.
+ * NEWS: Mention removal.
+
+Mon May 1 15:37:58 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ From 2000-04-28 Andreas Jaeger <aj@suse.de>:
+ * defs.h: Properly check for GCC version number.
+
+2000-04-30 Mark Kettenis <kettenis@gnu.org>
+
+ Fix single-stepping out of signal trampolines.
+ * config/i386/nm-linux.h (CHILD_RESUME): Define.
+ * i386-linux-nat.c (child_resume): New function.
+
+Fri Apr 28 16:22:34 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * blockframe.c (frameless_look_for_prologue): Use
+ PROLOG_FRAMELESS_P instead of SKIP_PROLOGUE_FRAMELESS_P.
+ * gdbarch.sh (PROLOG_FRAMELESS_P): Define.
+ * gdbarch.h, gdbarch.c: Re-generate.
+ * arch-utils.h, arch-utils.c (generic_prologue_frameless_p): New
+ function.
+
+Fri Apr 28 15:31:10 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ From "Serge Nikulin" <nikulin@actsw.amat.com>:
+ * m68k-tdep.c (delta68_in_sigtramp): Return 0 when the function
+ name is unknow.
+
+2000-04-27 Michael Snyder <msnyder@cygnus.com>
+
+ * gdbarch.sh (d10v_daddr_p, d10v_iaddr_p, d10v_convert_daddr_to_raw,
+ d10v_convert_iaddr_to_raw): make these multi-arch functions optional.
+ * gdbarch.c, gdbarch.h: regenerate
+
+Fri Apr 28 12:21:28 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ From Tim Mooney <mooney@dogbert.cc.ndsu.nodak.edu>:
+ * target.c (do_monitor_command): Cast tcomplain to correct
+ function type in comparison.
+
+Fri Apr 28 11:43:05 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ From 2000-04-25 Guy Harris <guy@netapp.com>:
+ * config/alpha/alpha-osf3.mh (XDEPFILES): Add ser-tcp.o and
+ ser-pipe.o
+
+2000-04-27 Michael Snyder <msnyder@cygnus.com>
+
+ * jv-valprint.c (java_val_print): Add arg declaration,
+ fix compiler warning.
+ * corelow.c (core_open): Call set_gdbarch_from_file so that
+ gdbarch becomes aware of the architecture encoded in the
+ corefile.
+ * findvar.c (write_register_gen): Export this useful interface.
+ * value.h (write_register_gen): Declare.
+
+2000-04-27 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
+
+ * cxux-nat.c (add_shared_symbol_files): Don't treat .text section
+ as special in the section_addr_info structure.
+ * pa64solib.c (pa64_solib_add_solib_objfile): Ditto.
+ * osfsolib.c (symbol_add_stub): Ditto.
+ * irix5-nat.c (symbol_add_stub): Ditto.
+
+Thu Apr 27 14:07:16 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * mips-tdep.c, d10v-tdep.c: Include "arch-utils.h".
+
+Thu Apr 27 10:06:42 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * TODO: Document IRIX X ARM cross compile problems.
+
+2000-04-26 Michael Snyder <msnyder@cygnus.com>
+
+ * utils.c (internal_verror): Call target_terminal_ours.
+ * wrapper.h: Fix minor comment typo.
+ * proc-api.c (write_with_trace): Change 'arg' from long to int.
+ Treat 'off_t' and 'size_t' as unsigned long in printfs.
+ (lseek_with_trace): Treat 'off_t' as unsigned long in printf.
+ * procfs.c (comments): Eliminate "???" in comments, which GCC
+ wants to interpret as a trigraph. (fill_gregset, supply_gregset,
+ fill_fpregset, supply_fpregset): Declare.
+ (procfs_wait): Sysargs is a long, change printf format to match.
+ (test-mapping, mapping_test, test_mapping_cmd) Remove (test only).
+
+2000-04-26 Kevin Buettner <kevinb@redhat.com>
+
+ * config/djgpp/fnchange.lst (ia64-linux-nat.c): Map to
+ ia64linux-nat.c.
+
+Wed Apr 26 13:50:35 2000 Philippe De Muyter <phdm@macqel.be>
+
+ * ax-gdb.c (agent_command): Remove now useless cast of
+ `free_current_contents' when passed to `make_cleanup'.
+ * coffread.c (coff_symfile_read): Ditto.
+ * dwarf2read.c (dwarf2_add_member_fn, read_array_type): Ditto.
+ (dwarf_decode_lines): Ditto.
+ * eval.c (parse_and_eval_address, parse_and_eval_address_1): Ditto.
+ (parse_and_eval, parse_to_comma_and_eval): Ditto.
+ * parse.c (parse_exp_1): Ditto.
+ * printcmd.c (print_command_1, output_command, set_command): Ditto.
+ (x_command, print_frame_args, printf_command): Ditto.
+ * top.c (execute_control_command): Ditto.
+ * tracepoint.c (validate_actionline): Ditto.
+ * typeprint.c (whatis_exp, ptype_command): Ditto.
+ (maintenance_print_type): Ditto.
+
+2000-04-26 Kevin Buettner <kevinb@redhat.com>
+
+ * Makefile.in (ALLDEPFILES): Add ia64-linux-tdep.c.
+ (ia64-linux-tdep.o): Add dependencies.
+ (ia64-tdep.o): Add dependency for arch-utils.h.
+ * ia64-linux-tdep.c, ia64-tdep.c (arch-utils.h): Include.
+
+2000-04-25 Michael Snyder <msnyder@cygnus.com>
+
+ * blockframe.c: Fix a minor typo in a comment.
+
+2000-04-25 Kevin Buettner <kevinb@redhat.com>
+
+ * ia64-tdep.c (examine_prologue): Recognize store instructions;
+ those whose source operands are input registers which haven't
+ been seen before are considered to be part of the prologue.
+
+Tue Apr 25 13:51:58 2000 glen mccready <gkm@pobox.com>
+
+ * rs6000-nat.c (xcoff_relocate_symtam): Recover from the wrong
+ patch being applied `Fri Apr 7 13:44:38 2000'.
+
+2000-04-24 Kevin Buettner <kevinb@redhat.com>
+
+ * ia64-linux-tdep.c: New file.
+ * ia64-tdep.c (elf-bfd.h): Include.
+ (ia64_linux_sigcontext_register_address): New extern declaration.
+ (struct gdbarch_tdep): New struct.
+ (SIGCONTEXT_REGISTER_ADDRESS): New define.
+ (read_sigcontext_register): New static function.
+ (extract_bit_field, replace_bit_field, slotN_contents,
+ replace_slotN_contents): Made static.
+ (ia64_frame_chain, ia64_frame_saved_pc, ia64_init_extra_frame_info):
+ Added new code for signal handler frames and call dummy frames.
+ (ia64_frame_init_saved_regs): Handle signal handler frames.
+ (ia64_find_saved_register): Removed.
+ (ia64_get_saved_register): Handle call dummy frames; reorganized
+ to call generic_get_saved_register() to find registers saved
+ in previous frames.
+ (process_note_abi_tag_sections): New static function.
+ (ia64_gdbarch_init): Attempt to determine the ABI/OS of the
+ executable. Based upon this information, set target dependent
+ field sigcontext_register_address appropriately. Also set
+ FRAME_CHAIN_VALID to be generic_func_frame_chain_valid.
+ * config/ia64/linux.mt (TDEPFILES): Add ia64-linux-tdep.o.
+ * config/ia64/tm-linux.h (IN_SIGTRAMP): Define.
+ (ia64_linux_in_sigtramp): New declaration.
+
+2000-04-23 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * TODO, NEWS: Update due to inclusion of gdbmi.texinfo in the GDB
+ manual.
+
+2000-04-23 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * config/djgpp/README: Explain how to unpack using djunpack.bat.
+
+Fri Apr 21 15:23:13 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * stabsread.c (REG_STRUCT_HAS_ADDR): Delete default.
+ (define_symbol): Check REG_STRUCT_HAS_ADDR_P before using
+ REG_STRUCT_HAS_ADDR.
+ (define_symbol): Ditto.
+
+ * valops.c (hand_function_call): Replace #ifdef
+ REG_STRUCT_HAS_ADDR with if REG_STRUCT_HAS_ADDR_P. Re-indent
+ affected code.
+
+ * gdbarch.sh (REG_STRUCT_HAS_ADDR): Add along with the predicate
+ function REG_STRUCT_HAS_ADDR_P.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+2000-04-21 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
+
+ * gdb-stabs.h (SECT_OFF_MAX): Increase to 40.
+
+2000-04-21 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
+
+ * win32-nat.c (handle_load_dll): Don't treat .text as a special
+ section anymore.
+ * somread.c (som_symfile_offsets): Ditto.
+ * somsolib.c (som_solib_add_solib_objfile): Ditto.
+
+Fri Apr 21 16:14:38 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * MAINTAINERS: Make Jimmy Guo TUI maintainer.
+
+Fri Apr 21 14:37:40 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * command.h (help_all): Delete declaration.
+ * command.c (help_all): Add declaration. Convert function
+ argument list to ISO-C.
+
+Thu Apr 20 18:15:08 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * d10v-tdep.c (d10v_gdbarch_init): Initialize stack_align.
+ (d10v_stack_align): Make static.
+ * config/d10v/tm-d10v.h (STACK_ALIGN): Delete.
+
+Thu Apr 20 14:35:46 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * valops.c (hand_function_call): Replace #ifdef STACK_ALIGN with
+ run-time test for STACK_ALIGN_P.
+ * gdbarch.sh: Add support for function and variable predicates.
+ (STACK_ALIGN): Add. Implement with predicate - STACK_ALIGN_P.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+Thu Apr 20 17:39:11 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * defs.h, utils.c (free_current_contents): Change parameter to
+ void*.
+
+ From Philippe De Muyter <phdm@macqel.be>:
+ * printcmd.c (print_address_symbolic): Call `make_cleanup' with
+ `(free_current_contents, &x)', not `(free, x)'.
+ * utils.c (free_current_contents): Do not `free (NULL)'.
+
+ * printcmd.c (print_address_symbolic): Cleanup after a failed
+ call to build_address_symbolic.
+
+2000-04-20 Christopher Faylor <cgf@cygnus.com>
+
+ * wince-stub.c (FREE): New macro.
+ (mempool): Just free any buffer prior to reuse. Don't bother with
+ realloc.
+ (flag_single_step): New function.
+ (skip_message): Detect "helpful" Windows CE messages and skip sending
+ them to the host.
+ (wait_for_debug_event): Use skip_message to avoid sending debug
+ messages to the host.
+ (dispatch): Prelimary implementation of single step detection.
+ * wince.c: Rework SH single stepping code to be more consistent with
+ other wince targets.
+ (handle_output_debug_string): Allow first chance exceptions to come
+ through since they seem to be all that we get on some versions of
+ Windows CE.
+ (check_for_step): New function, conditionally compiled based on target.
+ (regptr): Delete obsolete function.
+ (handle_exception): Detect illegal instructions.
+ (get_child_debug_event): Return success only if event code matches
+ target.
+ (child_create_inferior): Reflect change to get_child_debug_event
+ arguments.
+
+2000-04-20 Christopher Faylor <cgf@cygnus.com>
+
+ * win32-nat.c (thread_rec): Be more defensive about suspending already
+ suspended threads.
+ (safe_symbol_file_add_stub): New function.
+ (safe_symbole_file_add_cleanup): New function.
+ (safe_symbol_file_add): New function.
+ (handle_load_dll): Use wrapper to add DLL symbol information to avoid
+ bogus errors from non-stabs DLLs.
+ (handle_exception): Add work around for detection of first exception
+ breakpoint which does not seem to occur on W2K. Detect more "signals"
+ that can be effectively passed to the debuggee. Reorganize to eliminate
+ continue_status global.
+ (child_continue): Reorganize to eliminate continue_status global.
+ (child_wait): Ditto.
+ (child_resume): Ditto.
+ (get_child_debug_event): Ditto. Recognize when an a breakpoint
+ exception should be ignored. Change method for signalling when an
+ important event has occured to the caller.
+ (child_create_inferior): Use new method for noticing when
+ get_child_debug_event has found something interesting.
+
+Fri Apr 7 13:44:38 2000 glen mccready <gkm@pobox.com>
+
+ * rs6000-nat.c (xcoff_relocate_symtab): Grow buffer if ptrace()
+ fails due to lack of space.
+
+Fri Mar 24 12:10:38 2000 glen mccready <gkm@pobox.com>
+
+ * command.c, command.h (help_all): Add functionality to display
+ a complete listing of available commands.
+
+2000-04-20 Scott Bambrough <scottb@netwinder.org>
+
+ * arm-linux-nat.c (PIDGET, TIDGET): New.
+ (get_thread_id, GET_THREAD_ID): New.
+ (fetch_nwfpe_register, store_nwfpe_register): New.
+ (fetch_register, store_register): New.
+ (fetch_fpregister, store_fpregister): New.
+ (fill_gregset, supply_gregset): New.
+ (fill_fpregset, supply_fpregset): New.
+ (fetch_fpregs): Modified to use thread id's.
+ (store_fpregs): Modified to use thread id's and
+ fetch_nwfpe_register.
+ (fetch_regs): Modified to use thread id's.
+ (store_regs): Modified to use thread id's.
+ (fetch_inferior_registers): Modified to handle single register
+ fetches.
+ (store_inferior_registers): Modified to handle single register
+ stores.
+ (arm_linux_register_u_addr): Removed.
+
+ * configure.tgt: Added gdbserver to configdirs for arm*-*-linux*.
+
+ * config/arm/linux.mh
+ (NATDEPFILES): Removed core-aout.o. Added core-regset.o.
+ (LOADLIBES): Define.
+
+ * config/arm/nm-linux.h: Include config/nm-linux.h.
+ (ATTACH_DETACH): Removed. Defined in config/nm-linux.h.
+ (REGISTER_U_ADDR): Removed.
+ (SVR4_SHARED_LIBS): Removed. Defined in config/nm-linux.h.
+ (#include "solib.h"): Removed. Included via config/nm-linux.h.
+
+Thu Apr 20 18:54:15 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ From Daniel Berlin <dan@cgsoftware.com> and Tim Mooney
+ <mooney@dogbert.cc.ndsu.nodak.edu>:
+ * infrun.c (follow_fork_mode_kind_names): NULL terminate
+ array. Re-indent.
+ (scheduler_enums): Ditto.
+
+Mon Apr 17 13:37:10 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * gdbarch.sh: Make multi-arch variable defaults, defaults for non-
+ multi-arch targets.
+ (TARGET_BFD_VMA_BIT, IEEE_FLOAT, CALL_DUMMY_WORDS,
+ SIZEOF_CALL_DUMMY_WORDS): Update.
+
+ * inferior.h (CALL_DUMMY_WORDS, SIZEOF_CALL_DUMMY_WORDS): Default
+ provided by gdbarch.
+ (CALL_DUMMY_P): Add FIXME. gdbarch should provide default.
+
+ * valprint.c (IEEE_FLOAT): Default provided by gdbarch.
+
+2000-04-19 Jim Blandy <jimb@redhat.com>
+
+ Bring RETURN_VALUE_ON_STACK under gdbarch's control.
+ * gdbarch.sh (RETURN_VALUE_ON_STACK): New entry.
+ * gdbarch.c, gdbarch.h: Regenerated.
+ * arch-utils.c (default_return_value_on_stack): New function.
+ * arch-utils.h (default_return_value_on_stack): New declaration.
+ * values.c (RETURN_VALUE_ON_STACK): Delete default definition.
+
+ * i386v-nat.c (i386_insert_nonaligned_watchpoint): Use a
+ two-dimensional array, instead of faking it with explicit index
+ arithmetic.
+
+ * minsyms.c (prim_record_minimal_symbol_and_info): Doc fix.
+ (Thanks to Guy Harris.)
+
+2000-04-19 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
+
+ * xcoffsolib.c (solib_add): Fix call to vmap_symtab().
+
+2000-04-19 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * TODO: Update.
+
+Wed Apr 19 19:10:07 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * TODO: Document -Wreturn-type problem.
+
+2000-03-27 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * maint.c (_initialize_maint_cmds): Add `mt i' alias for `mt info'.
+
+2000-03-27 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * infcmd.c (_initialize_infcmd): Add `info r' alias for
+ `info registers'.
+
+Wed Apr 19 17:03:07 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ From Philippe De Muyter <phdm@macqel.be>:
+ * bcache.c (free_bcache): Do not free NULL.
+
+Wed Apr 19 16:37:47 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * TODO: Cleanup.
+ * NEWS: Update GDB version. Duplicate paragraph explaining
+ obsolete.
+
+Wed Apr 19 13:06:55 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * Makefile.in (distclean): Delete tui/Makefile.
+ * TODO: Add deletion of tui/Makefile.in to list.
+
+2000-04-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
+
+ * symfile.h (struct section_addr_info ): Remove fields for special
+ treatment of .text, .data and .bss sections.
+
+ * solib.c (symbol_add_stub): The special field text_addr is not
+ available anymore. Search for the .text field the hard way.
+
+ * symfile.c (build_section_addr_info_from_section_table): Don't
+ fill in {text, data, bss}_addr any more.
+ (default_symfile_offsets): Don't use {text, data, bss}_addr fields
+ to fill in section_offsets for objfile.
+ (syms_from_objfile): Don't deal with {text, data, bss}_addr as a
+ special case anymore.
+ (add_symbol_file_command): Ditto.
+
+2000-04-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
+
+ symfile.c: (symbol_file_command): Remove support for rombug, to
+ simplify code.
+
+2000-04-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
+
+ * symfile.c (add_symbol_file_command): Rewrite the arguments
+ processing part. Simplify syntax of command. Remove support for
+ rombug.
+ (_initialize_symfile): Update help message for add-symbol-file
+ command.
+
+Mon Apr 17 15:53:38 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * gdbarch.sh (IEEE_FLOAT): Only dump when defined.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+Mon Apr 17 11:26:01 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * remote.c (REMOTE_TRANSLATE_XFER_ADDRESS), mem-break.c
+ (MEMORY_INSERT_BREAKPOINT, MEMORY_REMOVE_BREAKPOINT), target.h
+ (BREAKPOINT_FROM_PC), valops.c (COERCE_FLOAT_TO_DOUBLE),
+ gdbarch.sh (D10V_MAKE_DADDR, D10V_MAKE_IADDR,
+ FRAMELESS_FUNCTION_INVOCATION, REGISTER_CONVERTIBLE,
+ REGISTER_CONVERT_TO_VIRTUAL, REGISTER_CONVERT_TO_RAW,
+ REGISTER_NAME), findvar.c (POINTER_TO_ADDRESS,
+ ADDRESS_TO_POINTER): Delete default definition. Handled by
+ gdbarch.
+
+ * gdbarch.sh: Make multi-arch defaults, defaults for non-
+ multi-arch targets.
+ (REGISTER_NAME, COERCE_FLOAT_TO_DOUBLE, REGISTER_CONVERTIBLE,
+ REGISTER_CONVERT_TO_VIRTUAL, REGISTER_CONVERT_TO_RAW,
+ D10V_MAKE_DADDR, D10V_MAKE_IADDR, BREAKPOINT_FROM_PC,
+ MEMORY_INSERT_BREAKPOINT, MEMORY_REMOVE_BREAKPOINT,
+ REMOTE_TRANSLATE_XFER_ADDRESS, FRAMELESS_FUNCTION_INVOCATION):
+ Provide default/legacy implementation.
+ (REGISTER_NAMES, CALL_DUMMY): Allow legacy definition.
+ * gdbarch.h, gdbarch.c: Re-generate.
+
+2000-04-16 Jim Blandy <jimb@redhat.com>
+
+ * findvar.c (store_typed_address, extract_typed_address): Fix
+ function names in error messages.
+
+2000-04-16 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * config/djgpp/config.sed: Fix the lines which edit clean: and
+ uninstall-info: targets.
+
+2000-04-14 Jim Blandy <jimb@redhat.com>
+
+ Bring IEEE_FLOAT under gdbarch's control.
+ * gdbarch.sh (IEEE_FLOAT): New entry.
+ * gdbarch.c, gdbarch.h: Regenerated.
+ * valprint.c (IEEE_FLOAT): Provide a default #definition for this.
+ (print_floating): Use IEEE_FLOAT as if it were an expression; use
+ the code specific to IEEE-format numbers whenever the value of
+ IEEE_FLOAT is non-zero.
+ * config/a29k/tm-a29k.h, config/alpha/tm-alpha.h,
+ config/arc/tm-arc.h, config/arm/tm-arm.h, config/fr30/tm-fr30.h,
+ config/h8300/tm-h8300.h, config/i386/tm-i386.h,
+ config/i960/tm-i960.h, config/m88k/tm-m88k.h,
+ config/mips/tm-mips.h, config/pa/tm-hppa.h,
+ config/sparc/tm-sparc.h, config/delta/tm-delta.h,
+ config/frv/tm-frv.h (IEEE_FLOAT): For all ports that #define
+ IEEE_FLOAT, make sure they give it the value (1).
+
+ Provide the hooks needed to support architectures on which
+ pointers are not always simple byte addresses.
+
+ * gdbarch.sh (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Two new
+ functions which architectures can redefine, defaulting to
+ generic_pointer_to_address and generic_address_to_pointer.
+ * findvar.c (extract_typed_address, store_typed_address,
+ generic_pointer_to_address, generic_address_to_pointer): New
+ functions.
+ (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Provide default
+ definitions.
+ (extract_address, store_address): Doc fixes.
+ * values.c (value_as_pointer): Doc fix.
+ (value_from_pointer): New function.
+ * defs.h (extract_typed_address, store_typed_address): New
+ declarations.
+ * inferior.h (generic_address_to_pointer,
+ generic_pointer_to_address): New declarations.
+ * value.h (value_from_pointer): New declaration.
+
+ The following changes are all of the general form "Use these
+ functions instead of these other functions." In each case, the
+ change is because the new calls provide enough information to do
+ the appropriate address / pointer conversions, where the old calls
+ did not, or because the new functions are more appropriately named
+ for the operation being performed.
+
+ * ax-gdb.c (const_var_ref): Use value_from_pointer, not
+ value_from_longest.
+ * blockframe.c (generic_push_dummy_frame): Use read_pc and
+ read_sp, not read_register.
+ * c-valprint.c (c_val_print): Use extract_typed_address instead of
+ extract_address to extract vtable entries and references.
+ * cp-valprint.c (cp_print_value_fields): Use value_from_pointer
+ instead of value_from_longest to extract the vtable's address.
+ * eval.c (evaluate_subexp_standard): Use value_from_pointer
+ instead of value_from_longest to compute `this', and for doing
+ pointer-to-member dereferencing.
+ * findvar.c (read_register): Use extract_unsigned_integer, not
+ extract_address.
+ (read_var_value): Use store_typed_address instead of store_address
+ for building label values.
+ (locate_var_value): Use value_from_pointer instead of
+ value_from_longest.
+ * hppa-tdep.c (find_stub_with_shl_get): Use value_from_pointer,
+ instead of value_from_longest, to build arguments to __d_shl_get.
+ * printcmd.c (set_next_address): Use value_from_pointer, not
+ value_from_longest.
+ (x_command): Use value_from_pointer, not value_from_longest.
+ * tracepoint.c (set_traceframe_context): Use value_from_pointer,
+ not value_from_longest.
+ * valarith.c (value_add, value_sub): Use value_from_pointer, not
+ value_from_longest.
+ * valops.c (find_function_in_inferior, value_coerce_array,
+ value_coerce_function, value_addr, hand_function_call): Same.
+ * value.h (COERCE_REF): Use unpack_pointer, not unpack_long.
+ * values.c (unpack_long): Use extract_typed_address to produce
+ addresses from pointers and references, not extract_address.
+ (value_from_longest): Use store_typed_address instead of
+ store_address to produce pointer and reference values.
+
+2000-04-13 Mark Kettenis <kettenis@gnu.org>
+
+ * acconfig.h (HAVE_PRGREGSET_T, HAVE_PRFPREGSET_T, HAVE_LWPID_T,
+ HAVE_PSADDR_T): Add them here instead of in config.in.
+
+ * acconfig.h (PRFPREGSET_T_BROKEN): New define.
+ * configure.in: Add check for broken prfpregset_t type.
+ * lin-thread.c (gdb_prfpregset): New typedef, depends on
+ definition of PRFPREGSET_T_BROKEN.
+ (ps_lgetfpregs, ps_lsetfpregs, p_td_thr_getfpregs,
+ p_td_thr_setfpregs, thread_db_fetch_registers,
+ thread_db_store_registers): Use gdb_prfpregset_t instead of
+ prfpregset_t.
+ * config.in: Regenerated.
+ * configure: Regenerated.
+
+2000-04-13 DJ Delorie <dj@cygnus.com>
+
+ * mips-tdep.c (do_fp_register_row): copy the number of bytes
+ allocated, not the size of the pointer.
+
+2000-04-13 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * config/i386/nm-i386sol2.h (CANNOT_STEP_HW_WATCHPOINTS): Define.
+ * config/i386/tm-i386sol2.h (HAVE_I387_REGS): Define.
+ * i386v4-nat.c (supply_fpregset, fill_fpregset): Add code
+ to handle floating point registers if NUM_FREGS is not zero.
+
+2000-04-13 Nick Duffek <nsd@cygnus.com>
+
+ * sol-thread.c (init_sol_core_ops): Initialize to_thread_alive
+ and document to_find_new_threads bug.
+
+2000-04-13 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * infrun.c (proceed, normal_stop): Change the error message about
+ failure to insert breakpoints/watchpoints so that it makes sense
+ even if ptrace is not used or no other processes can be active.
+
+Thu Apr 13 13:24:27 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure.in: Add --enable-maintainer-mode.
+ * aclocal.m4, configure: Re-generate.
+
+ * Makefile.in ($(srcdir)/copying.c): Enable dependencies only when
+ on maintainer-mode. Update copying.c in source directory.
+ (copying.txt): Delete rule.
+ (copying.o): Add explict paths to $(srcdir) and explicit make
+ rule.
+
+2000-04-12 Kevin Buettner <kevinb@redhat.com>
+
+ * ia64-linux-nat.c (IA64_PSR_DB, IA64_PSR_DD): Define.
+ (fetch_debug_register, fetch_debug_register_pair,
+ store_debug_register, store_debug_register_pair, is_power_of_2,
+ enable_watchpoints_in_psr, ia64_linux_insert_watchpoint,
+ ia64_linux_remove_watchpoint, ia64_linux_stopped_by_watchpoint):
+ New functions.
+ * config/ia64/nm-linux.h (TARGET_HAS_HARDWARE_WATCHPOINTS,
+ TARGET_CAN_USE_HARDWARE_WATCHPOINT, HAVE_STEPPABLE_WATCHPOINT,
+ STOPPED_BY_WATCHPOINT, target_insert_watchpoint,
+ target_remove_watchpoint): Define.
+ (ia64_linux_stopped_by_watchpoint, ia64_linux_insert_watchpoint,
+ ia64_linux_remove_watchpoint): Declare.
+
+2000-04-12 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * go32-nat.c (go32_insert_hw_breakpoint): When there are no more
+ hardware breakpoint resources, return EBUSY.
+ (go32_handle_nonaligned_watchpoint): If the argument WHAT is not
+ one of the enumerated values, return EINVAL.
+
+2000-04-12 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * README: Mention special build instructions for DJGPP.
+ * NEWS: Update with FP features on x87 platforms, and
+ DJGPP-related changes.
+
+2000-04-12 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * top.c (gdb_completer_file_name_break_characters): New variable.
+ (line_completion_function): When completing on file names, use
+ gdb_completer_file_name_break_characters as word break
+ characters for the readline library.
+
+2000-04-12 Mark Kettenis <kettenis@gnu.org>
+
+ * i387-tdep.c (print_i387_value): Avoid call to
+ floatformat_to_doublest if long double type is the same on host
+ and target.
+
+2000-04-11 Fernando Nasser <fnasser@cygnus.com>
+
+ * wrapper.h: Remove definitions of internal functions.
+ * wrapper.c: Remove definitions of exported functions (which are
+ already in wrapper.h) and make static all internal wrap_* functions.
+
+Mon Apr 10 21:58:36 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * acconfig.h (USE_INCLUDED_REGEX): Add.
+ * Makefile.in (REGEX_CFLAGS): Delete
+ * configure.in (REGEX_CFLAGS): Delete. Use AC_DEFINE instead.
+ * configure, config.in: Re-generate.
+
+2000-04-10 Philip Blundell <philb@gnu.org>
+
+ * arm-linux-nat.c (arm_skip_solib_resolver): Remove and move to
+ arm-linux-tdep.c.
+ * arm-linux-tdep.c (arm_skip_solib_resolver): New.
+
+2000-04-10 Fernando Nasser <fnasser@cygnus.com>
+
+ From 2000-04-10 Rodney Brown <rdb@redhat.com>:
+ * command.h (enum command_class): Remove trailing "," to placate
+ AIX xlc.
+
+Mon Apr 10 20:17:32 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * TODO, NEWS: Update. Mention MI.
+
Mon Apr 10 00:21:09 2000 Andrew Cagney <cagney@b1.cygnus.com>
* gdbarch-utils.h, gdbarch-utils.c: Delete.
@@ -345,7 +2156,7 @@ Fri Mar 31 08:59:58 2000 Andrew Cagney <cagney@b1.cygnus.com>
Safe version of value_subscript.
* varobj.c (): Use gdb_value_subscript() to get an array element value.
-2000-03-30 Michael Snyder <msnyder@cleaver.cygnus.com>
+2000-03-30 Michael Snyder <msnyder@cygnus.com>
* ui-file.c: Include "gdb_string.h"
* cli-out.c: Include gdb_string.h to avoid compiler warnings.
@@ -354,7 +2165,7 @@ Fri Mar 31 08:59:58 2000 Andrew Cagney <cagney@b1.cygnus.com>
at various times. Casting pointer to int and vice versa gives
warnings (and is not safe) if they are not the same size.
-2000-03-30 Michael Snyder <msnyder@cleaver.cygnus.com>
+2000-03-30 Michael Snyder <msnyder@cygnus.com>
* defs.h (struct continuation_arg): Make 'data' a union, to avoid
casting problems when int and pointer are not the same size.
@@ -415,7 +2226,7 @@ Wed Mar 29 10:16:35 2000 Andrew Cagney <cagney@b1.cygnus.com>
infrun.c (resume): Remove hardware watchpoints before stepping
when CANNOT_STEP_HW_WATCHPOINTS is nonzero.
-2000-03-28 Michael Snyder <msnyder@cleaver.cygnus.com>
+2000-03-28 Michael Snyder <msnyder@cygnus.com>
* Makefile.in: Anchor tui-file.h dependency to $srcdir.
@@ -608,7 +2419,7 @@ Fri Mar 24 13:44:57 2000 Andrew Cagney <cagney@b1.cygnus.com>
* MAINTAINERS: Add Fernando Nasser to testsuite maintainers.
-2000-03-23 Michael Snyder <msnyder@cleaver.cygnus.com>
+2000-03-23 Michael Snyder <msnyder@cygnus.com>
* solib.c (open_symbol_file_object): To sneak an int argument
past catch_errors, instead of casting it to a pointer, simply
@@ -655,7 +2466,7 @@ Fri Mar 24 13:44:57 2000 Andrew Cagney <cagney@b1.cygnus.com>
names/documentation for regular expressions.
(_initialize_command): Add the apropos command.
-2000-03-23 Michael Snyder <msnyder@cleaver.cygnus.com>
+2000-03-23 Michael Snyder <msnyder@cygnus.com>
* sol-thread.c (ps_pglobal_lookup): Change argument type from
paddr_t to psaddr_t. This mistake appears to date from an
@@ -785,7 +2596,7 @@ Wed Mar 22 11:18:59 2000 Andrew Cagney <cagney@b1.cygnus.com>
* values.c (value_primitive_field): Set the offset in struct value
we return when the field is a packed bitfield.
-2000-03-20 Michael Snyder <msnyder@cleaver.cygnus.com>
+2000-03-20 Michael Snyder <msnyder@cygnus.com>
* remote.c (remote_threads_extra_info): New function.
Implement the extra thread info query for "info threads".
@@ -942,7 +2753,7 @@ Fri Mar 17 11:06:59 2000 Philippe De Muyter <phdm@macqel.be>
* Makefile.in (go32-nat.o): Add prerequisites.
(ALLDEPFILES): Add go32-nat.c.
-2000-03-15 Michael Snyder <msnyder@cleaver.cygnus.com>
+2000-03-15 Michael Snyder <msnyder@cygnus.com>
From "Peter.Schauer" <Peter.Schauer@regent.e-technik.tu-muenchen.de>
* symfile.c (reread_symbols): Clear msymbol hash table.
@@ -1078,6 +2889,10 @@ Mon Mar 13 18:54:42 2000 Andrew Cagney <cagney@b1.cygnus.com>
(rank_one_type): Change #if 0 to #ifdef DEBUG_OLOAD.
* gdbtypes.h: Add REFERENCE_CONVERSION_BADNESS for "badness"
associated with converting a non-reference to a reference.
+ * eval.c (evaluate_subexp_standard): for OP_VAR_VALUE, always
+ return full value object; for STRUCTOP_PTR, use pointer to
+ rtti type to get member / method if objectprint is set and
+ target type of pointer is class.
* gdbtypes.c (rank_one_type): Add comment on how to eliminate the
#ifdef DEBUG_OLOAD.
@@ -2420,7 +4235,7 @@ Thu Jan 13 23:34:17 EST 2000 Nicholas Duffek <nsd@cygnus.com>
* coffread.c (coff_symfile_read): Reinstate ability to recognize "pe"
type.
-2000-01-07 Michael Snyder <msnyder@cleaver.cygnus.com>
+2000-01-07 Michael Snyder <msnyder@cygnus.com>
* uw-thread.c: New file to support UnixWare user-mode threads:
contributed by Nickolas Duffek <nsd@cygnus.com>.
diff --git a/gdb/MAINTAINERS b/gdb/MAINTAINERS
index 1e06710026f..2eafd6786bf 100644
--- a/gdb/MAINTAINERS
+++ b/gdb/MAINTAINERS
@@ -3,6 +3,7 @@
Blanket Write Privs
+Jim Blandy jimb@cygnus.com
Andrew Cagney ac131313@cygnus.com
Stan Shebs shebs@apple.com
Michael Snyder msnyder@cygnus.com
@@ -36,7 +37,7 @@ mn10300 target Andrew Cagney cagney@cygnus.com
powerpc target Kevin Buettner kevinb@cygnus.com
Elena Zannoni ezannoni@cygnus.com
arm target Fernando Nasser fnasser@cygnus.com
- Jim Ingham jingham@cygnus.com
+ Jim Ingham jingham@apple.com
Scott Bambrough scottb@netwinder.org
m32r target Michael Snyder msnyder@cygnus.com
IA-64 target Kevin Buettner kevinb@cygnus.com
@@ -60,8 +61,8 @@ djgpp native Eli Zaretskii eliz@gnu.org
MS Windows (N.T., CE, '00) host & native
Chris Faylor cgf@cygnus.com
GNU/Linux/x86 native & host
- Jim Blandy jimb@cygnus.com
Mark Kettenis kettenis@gnu.org
+ Jim Blandy jimb@cygnus.com
GNU/Linux PPC native Kevin Buettner kevinb@cygnus.com
hurd native Mark Kettenis kettenis@gnu.org
macos host & native Stan Shebs shebs@apple.com
@@ -75,17 +76,26 @@ Solaris/x86 native & host
Peter Schauer Peter.Schauer@regent.e-technik.tu-muenchen.de
Solaris/SPARC native & host
David Taylor taylor@cygnus.com
+Mac OS X Klee Dienes kdienes@apple.com
+ Jim Ingham jingham@apple.com
Core: Generic components used by all of GDB
generic arch support Andrew Cagney cagney@cygnus.com
+ Any host/target maintainer can add to
+ gdbarch.{c,h,sh}. Send tricky ones to cagney.
target vector Andrew Cagney cagney@cygnus.com
main (main.c, top.c) Elena Zannoni ezannoni@cygnus.com
event loop Elena Zannoni ezannoni@cygnus.com
generic symtabs Jim Blandy jimb@cygnus.com
-dwarf readers Jim Blandy jimb@cygnus.com
-elf reader Jim Blandy jimb@cygnus.com
-stabs reader Jim Blandy jimb@cygnus.com
+ Elena Zannoni ezannoni@cygnus.com
+ dwarf readers Jim Blandy jimb@cygnus.com
+ Elena Zannoni ezannoni@cygnus.com
+ elf reader Jim Blandy jimb@cygnus.com
+ Elena Zannoni ezannoni@cygnus.com
+ stabs reader Jim Blandy jimb@cygnus.com
+ Elena Zannoni ezannoni@cygnus.com
+ coff reader Philippe De Muyter phdm@macqel.be
tracing bytecode stuff Jim Blandy jimb@cygnus.com
tracing Michael Snyder msnyder@cygnus.com
threads Michael Snyder msnyder@cygnus.com
@@ -94,20 +104,22 @@ breakpoint.c Michael Snyder msnyder@cygnus.com
language support David Taylor taylor@cygnus.com
C++ support Daniel Berlin dan@cgsoftware.com
Java support Anthony Green green@cygnus.com
+ Objective-C/C++ Klee Dienes kdienes@apple.com
+ Jim Ingham jimgham@apple.com
+ Pascal support Pierre Muller muller@sourceware.cygnus.com
expression eval David Taylor taylor@cygnus.com
defs.h David Taylor taylor@cygnus.com
utils.c David Taylor taylor@cygnus.com
Scheme support Jim Blandy jimb@cygnus.com
svr4 shlibs (solib.c) Jim Blandy jimb@cygnus.com
-coff reader Philippe De Muyter phdm@macqel.be
remote.c Andrew Cagney cagney@cygnus.com
J.T. Conklin jtc@redback.com
include/remote-sim.h, remote-sim.c
Andrew Cagney cagney@cygnus.com
sds protocol Fernando Nasser fnasser@cygnus.com
- Jim Ingham jingham@cygnus.com
+ Jim Ingham jingham@apple.com
rdi/adp protocol Fernando Nasser fnasser@cygnus.com
- Jim Ingham jingham@cygnus.com
+ Jim Ingham jingham@apple.com
gdbserver Stan Shebs shebs@apple.com
documentation Stan Shebs shebs@apple.com
Eli Zaretskii eliz@gnu.org
@@ -121,11 +133,15 @@ Kernel Object Display Fernando Nasser fnasser@cygnus.com
UI: External (user) interfaces.
command interpreter Fernando Nasser fnasser@cygnus.com
-gdbtk (c & tcl) Jim Ingham jingham@cygnus.com
-libgui (w/foundry, sn) Jim Ingham jingham@cygnus.com
+gdbtk (c & tcl) Syd Polk spolk@cygnus.com
+ Jim Ingham jingham@apple.com
+libgui (w/foundry, sn) Syd Polk spolk@cygnus.com
+ Jim Ingham jingham@apple.com
mi (gdb/mi) Andrew Cagney cagney@cygnus.com
Elena Zannoni ezannoni@cygnus.com
Fernando Nasser fnasser@cygnus.com
+tui Technical Contact Point wdb@cup.hp.com
+ Jimmy Guo guo@cup.hp.com
Misc:
@@ -155,6 +171,8 @@ H.J. Lu hjl@lucon.org
Nick Clifton nickc@cygnus.com
Jonathan Larmour jlarmour@redhat.co.uk
Glen McCready gkm@cygnus.com
+Gary Thomas gthomas@redhat.com
+Pierre Muller muller@sourceware.cygnus.com
* Indicates folks we need to get Kerberos/SSH accounts ready so they
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 2684542d7be..32a1d21fc20 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -62,14 +62,6 @@ DLLTOOL = @DLLTOOL@
WINDRES = @WINDRES@
MIG = @MIG@
-# If the user configured GDB to include the TUI, the name of the tui
-# library goes here.
-TUI_LIBRARY = @TUI_LIBRARY@
-
-# If the user configured GDB to include the TUI, the all-tui
-# target goes here.
-BUILD_TUI = @BUILD_TUI@
-
# Flags that describe where you can find the termcap library.
# This can be overridden in the host Makefile fragment file.
TERMCAP = @TERM_LIB@
@@ -117,7 +109,6 @@ MMALLOC_CFLAGS = @MMALLOC_CFLAGS@
# We are using our own version of REGEX now to be consistent across
# machines.
REGEX = @REGEX@
-REGEX_CFLAGS = @REGEX_CFLAGS@
# Where is the BFD library? Typically in ../bfd.
BFD_DIR = ../bfd
@@ -143,11 +134,6 @@ INTL_DEPS = @INTLDEPS@
INTL_SRC = $(srcdir)/$(INTL_DIR)
INTL_CFLAGS = -I$(INTL_DIR) -I$(INTL_SRC)
-# Where is the TUI library? Typically in tui/.
-TUI_DIR=tui
-TUI_SRC = $(srcdir)/$(TUI_DIR)
-TUI_CFLAGS= -I$(TUI_SRC)
-
#
# MI sub directory definitons
#
@@ -173,6 +159,33 @@ SUBDIR_MI_CLEAN=
SUBDIR_MI_INSTALL=
SUBDIR_MI_UNINSTALL=
+#
+# TUI sub directory definitions
+#
+SUBDIR_TUI_OBS = \
+ tui.o tuiData.o tuiSource.o tuiStack.o tuiIO.o \
+ tuiGeneralWin.o tuiLayout.o tuiWin.o tuiCommand.o \
+ tuiDisassem.o tuiSourceWin.o tuiRegs.o tuiDataWin.o
+SUBDIR_TUI_SRCS = \
+ tui/tui.c tui/tuiData.c tui/tuiSource.c \
+ tui/tuiStack.c tui/tuiIO.c \
+ tui/tuiGeneralWin.c tui/tuiLayout.c \
+ tui/tuiWin.c tui/tuiCommand.c \
+ tui/tuiDisassem.c tui/tuiSourceWin.c \
+ tui/tuiRegs.c tui/tuiDataWin.c
+SUBDIR_TUI_DEPS =
+SUBDIR_TUI_INITS = \
+ $(SUBDIR_TUI_SRCS)
+SUBDIR_TUI_LDFLAGS=
+SUBDIR_TUI_CFLAGS= \
+ -DTUI=1 -I${srcdir}/tui
+SUBDIR_TUI_ALL=
+SUBDIR_TUI_CLEAN=
+SUBDIR_TUI_INSTALL=
+SUBDIR_TUI_UNINSTALL=
+
+
+
# Opcodes currently live in one of two places. Either they are in the
# opcode library, typically ../opcodes, or they are in a header file
# in INCLUDE_DIR.
@@ -276,8 +289,8 @@ INTERNAL_WARN_CFLAGS = \
$(CFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \
$(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) \
$(BFD_CFLAGS) $(MMALLOC_CFLAGS) $(INCLUDE_CFLAGS) \
- $(INTL_CFLAGS) $(TUI_CFLAGS) $(ENABLE_CFLAGS) \
- $(REGEX_CFLAGS) $(GDB_WARN_CFLAGS)
+ $(INTL_CFLAGS) $(ENABLE_CFLAGS) \
+ $(GDB_WARN_CFLAGS)
INTERNAL_CFLAGS = $(INTERNAL_WARN_CFLAGS) $(GDB_WERROR_CFLAGS)
# LDFLAGS is specifically reserved for setting from the command line
@@ -311,7 +324,7 @@ CDEPS = $(XM_CDEPS) $(TM_CDEPS) $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE) \
ADD_FILES = $(REGEX) $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES)
ADD_DEPS = $(REGEX) $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES)
-VERSION = 20000204
+VERSION = 5.0
DIST=gdb
LINT=/usr/5bin/lint
@@ -838,13 +851,6 @@ kdb: $(NTSSTART) $(OBS) $(NTSOBS) $(ADD_DEPS) $(CDEPS)
ld -o kdb $(NTSSTART) $(OBS) $(NTSOBS) init.o $(ADD_FILES) \
-lc $(CLIBS)
-# Have the TUI library depend on a phony target, so we'll always
-# recurse and make sure it's up to date. If it is, then the file will
-# be unchanged, and we won't rebuild it.
-# .PHONY: check-tui
-all-tui:
- @(cd tui; ${MAKE} ${FLAGS_TO_PASS} all)
-
# Put the proper machine-specific files first, so M-. on a machine
# specific routine gets the one for the correct machine. (FIXME: those
# files go in twice; we should be removing them from the main list).
@@ -942,19 +948,12 @@ doc/gdb.dvi:
doc/gdb.info:
cd doc; $(MAKE) gdb.info $(FLAGS_TO_PASS)
-# When DJGPP Make runs on MS-DOS, it downcases all file names, so
-# it doesn't find COPYING, and wants to make it...
-copying.txt:
- test -f copying.txt || \
- (test "$$LN_S" = "ln -s" && \
- ln -s $(srcdir)/COPYING copying.txt;) || \
- cp -p $(srcdir)/COPYING copying.txt 2>/dev/null || \
- ln $(srcdir)/COPYING copying.txt 2>/dev/null || \
- cp $(srcdir)/COPYING copying.txt
-
# Make copying.c from COPYING
-copying.c: copying.txt copying.awk
- awk -f $(srcdir)/copying.awk < $(srcdir)/copying.txt > copying.c
+$(srcdir)/copying.c: @MAINTAINER_MODE_TRUE@ \
+ $(srcdir)/COPYING $(srcdir)/copying.awk
+ awk -f $(srcdir)/copying.awk \
+ < $(srcdir)/COPYING > $(srcdir)/copying.tmp
+ mv $(srcdir)/copying.tmp $(srcdir)/copying.c
version.c: Makefile
rm -f version.c
@@ -1070,7 +1069,7 @@ ALLDEPFILES = 29k-share/udi/udip2soc.c 29k-share/udi/udr.c \
coff-solib.c convex-tdep.c convex-xdep.c \
core-sol2.c core-regset.c core-aout.c corelow.c \
dcache.c delta68-nat.c dpx2-nat.c dstread.c exec.c fork-child.c \
- go32-nat.c gould-tdep.c gould-xdep.c h8300-tdep.c h8500-tdep.c \
+ go32-nat.c h8300-tdep.c h8500-tdep.c \
hp300ux-nat.c hppa-tdep.c hppab-nat.c hppah-nat.c \
hp-psymtab-read.c hp-symtab-read.c \
i386-tdep.c i386b-nat.c i386mach-nat.c i386v-nat.c i386-linux-nat.c \
@@ -1078,7 +1077,7 @@ ALLDEPFILES = 29k-share/udi/udip2soc.c 29k-share/udi/udr.c \
i387-tdep.c \
i386-linux-tdep.c \
i960-tdep.c \
- ia64-linux-nat.c ia64-tdep.c \
+ ia64-linux-nat.c ia64-linux-tdep.c ia64-tdep.c \
infptrace.c inftarg.c irix4-nat.c irix5-nat.c isi-xdep.c \
lynx-nat.c m3-nat.c \
m68k-tdep.c \
@@ -1201,7 +1200,9 @@ complaints.o: complaints.c complaints.h $(defs_h) $(gdbcmd_h)
# OBSOLETE convex-xdep.o: convex-xdep.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
# OBSOLETE $(inferior_h)
-copying.o: copying.c $(defs_h) $(gdbcmd_h)
+# Provide explicit rule/dependency - works for more makes.
+copying.o: $(srcdir)/copying.c $(defs_h) $(gdbcmd_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/copying.c
core-aout.o: core-aout.c $(defs_h) $(gdbcore_h) $(value_h) $(inferior_h)
@@ -1373,7 +1374,7 @@ arch-utils.o: arch-utils.c $(defs_h) $(bfd_h) $(gdbcmd_h) \
gdbtypes.o: gdbtypes.c $(bfd_h) complaints.h $(defs_h) $(expression_h) \
$(gdbtypes_h) language.h objfiles.h symfile.h $(symtab_h) target.h \
- $(value_h) gdb_string.h
+ $(value_h) gdb_string.h wrapper.h
go32-nat.o: go32-nat.c $(defs_h) $(inferior_h) gdb_wait.h $(gdbcore_h) \
$(command_h) $(floatformat_h) target.h
@@ -1381,11 +1382,6 @@ go32-nat.o: go32-nat.c $(defs_h) $(inferior_h) gdb_wait.h $(gdbcore_h) \
gnu-nat.o: process_reply_S.h exc_request_S.h notify_S.h msg_reply_S.h \
exc_request_U.h msg_U.h gnu-nat.h
-# OBSOLETE gould-tdep.o: gould-tdep.c $(OP_INCLUDE)/np1.h $(defs_h) $(frame_h) \
-# OBSOLETE $(gdbcore_h) $(symtab_h)
-
-# OBSOLETE gould-xdep.o: gould-xdep.c $(defs_h) $(gdbcore_h) $(inferior_h)
-
h8300-tdep.o: h8300-tdep.c $(defs_h) $(frame_h) $(symtab_h)
h8500-tdep.o: h8500-tdep.c $(bfd_h) $(dis-asm_h) $(defs_h) \
@@ -1440,8 +1436,10 @@ i960-tdep.o: i960-tdep.c $(floatformat_h) $(defs_h) $(expression_h) \
ia64-linux-nat.o: ia64-linux-nat.c $(defs_h) $(inferior_h) $(target_h) \
$(gdbcore_h)
+ia64-linux-tdep.o: ia64-linux-tdep.c $(defs_h) $(arch_utils_h)
+
ia64-tdep.o: ia64-tdep.c $(defs_h) $(inferior_h) symfile.h $(gdbcore_h) \
- $(floatformat_h) objfiles.h $(INCLUDE_DIR)/elf/common.h
+ $(arch_utils_h) $(floatformat_h) objfiles.h $(INCLUDE_DIR)/elf/common.h
infcmd.o: infcmd.c $(defs_h) environ.h $(gdbcmd_h) $(gdbcore_h) \
$(inferior_h) target.h language.h gdb_string.h
@@ -1811,7 +1809,8 @@ sparc-nat.o: sparc-nat.c $(bfd_h) $(defs_h) $(inferior_h) $(gdbcore_h) \
target.h
sparc-tdep.o: sparc-tdep.c $(floatformat_h) $(defs_h) $(gdbcore_h) \
- $(inferior_h) objfiles.h symfile.h target.h gdb_string.h
+ $(inferior_h) objfiles.h symfile.h target.h gdb_string.h \
+ $(arch_utils_h)
sparcl-tdep.o: sparcl-tdep.c $(defs_h) $(gdbcore_h) target.h
@@ -1952,7 +1951,7 @@ gdb-events.o: gdb-events.c gdb-events.h $(defs_h) $(gdbcmd_h)
ui-out.o: ui-out.c $(defs_h) $(ui_out_h) expression.h language.h
cli-out.o: cli-out.c $(defs_h) $(ui_out_h) $(cli_out_h)
varobj.o: varobj.c $(defs_h) $(frame_h) $(value_h) \
- $(language_h) valprint.h varobj.h
+ $(language_h) valprint.h varobj.h wrapper.h
$(CC) -c $(INTERNAL_WARN_CFLAGS) $(NO_WERROR_CFLAGS) $<
wrapper.o: wrapper.c $(defs_h) $(frame_h) $(value_h) wrapper.h
@@ -1995,4 +1994,69 @@ mi-parse.o: $(srcdir)/mi/mi-parse.c $(defs_h) $(mi_parse_h) $(mi_cmds_h)
mi-getopt.o: $(srcdir)/mi/mi-getopt.c $(mi_getopt_h) $(defs_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-getopt.c
+#
+# TUI dependencies
+#
+# Need to explicitly specify the compile rule as make will do nothing
+# or try to compile the object file into the mi directory.
+
+tui.o: $(srcdir)/tui/tui.c \
+ $(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
+ $(srcdir)/tui/tuiLayout.h $(srcdir)/tui/tuiIO.h \
+ $(srcdir)/tui/tuiRegs.h $(srcdir)/tui/tuiWin.h
+ $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tui.c
+tuiCommand.o: $(srcdir)/tui/tuiCommand.c \
+ $(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
+ $(srcdir)/tui/tuiWin.h $(srcdir)/tui/tuiIO.h
+ $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiCommand.c
+tuiData.o: $(srcdir)/tui/tuiData.c \
+ $(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h
+ $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiData.c
+tuiDataWin.o: $(srcdir)/tui/tuiDataWin.c \
+ $(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
+ $(srcdir)/tui/tuiRegs.h
+ $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiDataWin.c
+tuiDisassem.o: $(srcdir)/tui/tuiDisassem.c \
+ $(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
+ $(srcdir)/tui/tuiLayout.h $(srcdir)/tui/tuiSourceWin.h \
+ $(srcdir)/tui/tuiStack.h
+ $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiDisassem.c
+tuiGeneralWin.o: $(srcdir)/tui/tuiGeneralWin.c \
+ $(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
+ $(srcdir)/tui/tuiGeneralWin.h
+ $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiGeneralWin.c
+tuiIO.o: $(srcdir)/tui/tuiIO.c \
+ $(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
+ $(srcdir)/tui/tuiIO.h $(srcdir)/tui/tuiCommand.h \
+ $(srcdir)/tui/tuiWin.h
+ $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiIO.c
+tuiLayout.o: $(srcdir)/tui/tuiLayout.c \
+ $(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
+ $(srcdir)/tui/tuiGeneralWin.h $(srcdir)/tui/tuiStack.h \
+ $(srcdir)/tui/tuiRegs.h $(srcdir)/tui/tuiDisassem.h
+ $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiLayout.c
+tuiRegs.o: $(srcdir)/tui/tuiRegs.c \
+ $(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
+ $(srcdir)/tui/tuiLayout.h $(srcdir)/tui/tuiWin.h
+ $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiRegs.c
+tuiSource.o: $(srcdir)/tui/tuiSource.c \
+ $(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
+ $(srcdir)/tui/tuiStack.h $(srcdir)/tui/tuiSourceWin.h \
+ $(srcdir)/tui/tuiSource.h
+ $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiSource.c
+tuiSourceWin.o: $(srcdir)/tui/tuiSourceWin.c \
+ $(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
+ $(srcdir)/tui/tuiStack.h $(srcdir)/tui/tuiSourceWin.h \
+ $(srcdir)/tui/tuiSource.h $(srcdir)/tui/tuiDisassem.h
+ $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiSourceWin.c
+tuiStack.o: $(srcdir)/tui/tuiStack.c \
+ $(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
+ $(srcdir)/tui/tuiStack.h $(srcdir)/tui/tuiSourceWin.h
+ $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiStack.c
+tuiWin.o: $(srcdir)/tui/tuiWin.c \
+ $(srcdir)/tui/tui.h $(srcdir)/tui/tuiData.h \
+ $(srcdir)/tui/tuiGeneralWin.h $(srcdir)/tui/tuiStack.h \
+ $(srcdir)/tui/tuiSourceWin.h $(srcdir)/tui/tuiDataWin.h
+ $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/tui/tuiWin.c
+
### end of the gdb Makefile.in.
diff --git a/gdb/NEWS b/gdb/NEWS
index 83913fdcd69..4f68e81518b 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -1,16 +1,60 @@
What has changed in GDB?
(Organized release by release)
-*** Changes since GDB-4.18:
+*** Changes since GDB 5.0:
-* New features
+* New native configurations
-On SVR4 native platforms (such as Solaris), if you attach to a process
-without first loading a symbol file, GDB will now attempt to locate and
-load symbols from the running process's executable file.
+Alpha FreeBSD alpha*-*-freebsd*
+x86 FreeBSD 3.x and 4.x i[3456]86*-freebsd[34]*
-C++ support has been greatly improved. Overload resolution now works properly
-in almost all cases. RTTI support is on the way.
+FreeBSD versions before 2.2 are no longer supported.
+
+*** Changes in GDB 5.0:
+
+* Improved support for debugging FP programs on x86 targets
+
+Unified and much-improved support for debugging floating-point
+programs on all x86 targets. In particular, ``info float'' now
+displays the FP registers in the same format on all x86 targets, with
+greater level of detail.
+
+* Improvements and bugfixes in hardware-assisted watchpoints
+
+It is now possible to watch array elements, struct members, and
+bitfields with hardware-assisted watchpoints. Data-read watchpoints
+on x86 targets no longer erroneously trigger when the address is
+written.
+
+* Improvements in the native DJGPP version of GDB
+
+The distribution now includes all the scripts and auxiliary files
+necessary to build the native DJGPP version on MS-DOS/MS-Windows
+machines ``out of the box''.
+
+The DJGPP version can now debug programs that use signals. It is
+possible to catch signals that happened in the debuggee, deliver
+signals to it, interrupt it with Ctrl-C, etc. (Previously, a signal
+would kill the program being debugged.) Programs that hook hardware
+interrupts (keyboard, timer, etc.) can also be debugged.
+
+It is now possible to debug DJGPP programs that redirect their
+standard handles or switch them to raw (as opposed to cooked) mode, or
+even close them. The command ``run < foo > bar'' works as expected,
+and ``info terminal'' reports useful information about the debuggee's
+terminal, including raw/cooked mode, redirection, etc.
+
+The DJGPP version now uses termios functions for console I/O, which
+enables debugging graphics programs. Interrupting GDB with Ctrl-C
+also works.
+
+DOS-style file names with drive letters are now fully supported by
+GDB.
+
+It is now possible to debug DJGPP programs that switch their working
+directory. It is also possible to rerun the debuggee any number of
+times without restarting GDB; thus, you can use the same setup,
+breakpoints, etc. for many debugging sessions.
* New native configurations
@@ -32,6 +76,26 @@ Pyramid pyramid-*-*
ARM RISCix arm-*-* (as host)
Tahoe tahoe-*-*
+Configurations that have been declared obsolete will be commented out,
+but the code will be left in place. If there is no activity to revive
+these configurations before the next release of GDB, the sources will
+be permanently REMOVED.
+
+* Gould support removed
+
+Support for the Gould PowerNode and NP1 has been removed.
+
+* New features for SVR4
+
+On SVR4 native platforms (such as Solaris), if you attach to a process
+without first loading a symbol file, GDB will now attempt to locate and
+load symbols from the running process's executable file.
+
+* Many C++ enhancements
+
+C++ support has been greatly improved. Overload resolution now works properly
+in almost all cases. RTTI support is on the way.
+
* Remote targets can connect to a sub-program
A popen(3) style serial-device has been added. This device starts a
@@ -69,6 +133,16 @@ The ``apropos'' command searches through command names and
documentation strings, printing out matches, making it much easier to
try to find a command that does what you are looking for.
+* New MI interface
+
+A new machine oriented interface (MI) has been added to GDB. This
+interface is designed for debug environments running GDB as a separate
+process. This is part of the long term libGDB project. See the
+"GDB/MI" chapter of the GDB manual for further information. It can be
+enabled by configuring with:
+
+ .../configure --enable-gdbmi
+
*** Changes in GDB-4.18:
* New native configurations
diff --git a/gdb/README b/gdb/README
index 46b9074ff17..cd8c6c2da67 100644
--- a/gdb/README
+++ b/gdb/README
@@ -1,5 +1,5 @@
- README for gdb-4.18 release
- Updated 4 Apr 1999 by Jim Blandy
+ README for gdb-5.0 release
+ Updated 11 May 2000 by Andrew Cagney
This is GDB, the GNU source-level debugger.
A summary of new features is in the file `NEWS'.
@@ -11,10 +11,10 @@ date release information, mailing list links and archives, etc.
Unpacking and Installation -- quick overview
==========================
-In this release, the GDB debugger sources, the generic GNU include
+ In this release, the GDB debugger sources, the generic GNU include
files, the BFD ("binary file description") library, the readline
library, and other libraries all have directories of their own
-underneath the gdb-4.18 directory. The idea is that a variety of GNU
+underneath the gdb-5.0 directory. The idea is that a variety of GNU
tools can share a common copy of these things. Be aware of variation
over time--for example don't try to build gdb with a copy of bfd from
a release other than the gdb release (such as a binutils or gas
@@ -23,64 +23,70 @@ Configuration scripts and makefiles exist to cruise up and down this
directory tree and automatically build all the pieces in the right
order.
-When you unpack the gdb-4.18.tar.gz file, you'll find a directory
-called `gdb-4.18', which contains:
+ When you unpack the gdb-5.0.tar.gz file, you'll find a directory
+called `gdb-5.0', which contains:
- COPYING config.sub* libiberty/ opcodes/
- COPYING.LIB configure* mmalloc/ readline/
- Makefile.in configure.in move-if-change* sim/
- README etc/ mpw-README texinfo/
- bfd/ gdb/ mpw-build.in utils/
- config/ include/ mpw-config.in
- config.guess* install.sh* mpw-configure
+ COPYING config.if install-sh mmalloc readline
+ COPYING.LIB config.sub intl move-if-change sim
+ Makefile.in configure libiberty mpw-README symlink-tree
+ README configure.in ltconfig mpw-build.in texinfo
+ bfd djunpack.bat ltmain.sh mpw-config.in utils
+ config etc md5.sum mpw-configure ylwrap
+ config-ml.in gdb missing mpw-install
+ config.guess include mkinstalldirs opcodes
To build GDB, you can just do:
- cd gdb-4.18
+ cd gdb-5.0
./configure
make
cp gdb/gdb /usr/local/bin/gdb (or wherever you want)
-This will configure and build all the libraries as well as GDB.
-If `configure' can't determine your system type, specify one as its
-argument, e.g., sun4 or decstation.
+(Building GDB with DJGPP tools for MS-DOS/MS-Windows is slightly
+different; see the file gdb-5.0/gdb/config/djgpp/README for details.)
-If you get compiler warnings during this stage, see the `Reporting Bugs'
-section below; there are a few known problems.
+ This will configure and build all the libraries as well as GDB. If
+`configure' can't determine your system type, specify one as its
+argument, e.g., `./configure sun4' or `./configure decstation'.
-GDB requires an ANSI C compiler. If you do not have an ANSI C
-compiler for your system, you may be able to download and install the
-GNU CC compiler. It is available via anonymous FTP from ftp.gnu.org,
-in /pub/gnu/gcc (as a URL, that's ftp://ftp.gnu.org/pub/gnu/gcc).
+ If you get compiler errors during this stage, see the `Reporting
+Bugs' section below; there are a few known problems.
-GDB can be used as a cross-debugger, running on a machine of one type
-while debugging a program running on a machine of another type. See below.
+ GDB requires an ISO-C (ANSI C) compiler. If you do not have an
+ISO-C compiler for your system, you may be able to download and
+install the GNU CC compiler. It is available via anonymous FTP from
+the directory `ftp://ftp.gnu.org/pub/gnu/gcc'.
+
+ GDB can be used as a cross-debugger, running on a machine of one
+type while debugging a program running on a machine of another type.
+See below.
More Documentation
******************
All the documentation for GDB comes as part of the machine-readable
-distribution. The documentation is written in Texinfo format, which is
-a documentation system that uses a single source file to produce both
-on-line information and a printed manual. You can use one of the Info
-formatting commands to create the on-line version of the documentation
-and TeX (or `texi2roff') to typeset the printed version.
-
- GDB includes an already formatted copy of the on-line Info version of
-this manual in the `gdb/doc' subdirectory. The main Info file is
-`gdb-4.18/gdb/doc/gdb.info', and it refers to subordinate files matching
-`gdb.info*' in the same directory. If necessary, you can print out
-these files, or read them with any editor; but they are easier to read
-using the `info' subsystem in GNU Emacs or the standalone `info' program,
-available as part of the GNU Texinfo distribution.
+distribution. The documentation is written in Texinfo format, which
+is a documentation system that uses a single source file to produce
+both on-line information and a printed manual. You can use one of the
+Info formatting commands to create the on-line version of the
+documentation and TeX (or `texi2roff') to typeset the printed version.
+
+ GDB includes an already formatted copy of the on-line Info version
+of this manual in the `gdb/doc' subdirectory. The main Info file is
+`gdb-5.0/gdb/doc/gdb.info', and it refers to subordinate files
+matching `gdb.info*' in the same directory. If necessary, you can
+print out these files, or read them with any editor; but they are
+easier to read using the `info' subsystem in GNU Emacs or the
+standalone `info' program, available as part of the GNU Texinfo
+distribution.
If you want to format these Info files yourself, you need one of the
Info formatting programs, such as `texinfo-format-buffer' or
`makeinfo'.
If you have `makeinfo' installed, and are in the top level GDB
-source directory (`gdb-4.18', in the case of version 4.18), you can make
+source directory (`gdb-5.0', in the case of version 5.0), you can make
the Info file by typing:
cd gdb/doc
@@ -89,7 +95,7 @@ the Info file by typing:
If you want to typeset and print copies of this manual, you need
TeX, a program to print its DVI output files, and `texinfo.tex', the
Texinfo definitions file. This file is included in the GDB
-distribution, in the directory `gdb-4.18/texinfo'.
+distribution, in the directory `gdb-5.0/texinfo'.
TeX is a typesetting program; it does not print files directly, but
produces output files called DVI files. To print a typeset document,
@@ -103,11 +109,11 @@ without any extension or a `.dvi' extension.
This file tells TeX how to typeset a document written in Texinfo
format. On its own, TeX cannot read, much less typeset a Texinfo file.
`texinfo.tex' is distributed with GDB and is located in the
-`gdb-4.18/texinfo' directory.
+`gdb-5.0/texinfo' directory.
If you have TeX and a DVI printer program installed, you can typeset
and print this manual. First switch to the the `gdb' subdirectory of
-the main source directory (for example, to `gdb-4.18/gdb') and then type:
+the main source directory (for example, to `gdb-5.0/gdb') and then type:
make gdb.dvi
@@ -123,68 +129,71 @@ preparing GDB for installation; you can then use `make' to build the
a single directory, whose name is usually composed by appending the
version number to `gdb'.
- For example, the GDB version 4.18 distribution is in the `gdb-4.18'
+ For example, the GDB version 5.0 distribution is in the `gdb-5.0'
directory. That directory contains:
-`gdb-4.18/{COPYING,COPYING.LIB}'
+`gdb-5.0/{COPYING,COPYING.LIB}'
Standard GNU license files. Please read them.
-`gdb-4.18/bfd'
+`gdb-5.0/bfd'
source for the Binary File Descriptor library
-`gdb-4.18/config*'
+`gdb-5.0/config*'
script for configuring GDB, along with other support files
-`gdb-4.18/gdb'
+`gdb-5.0/gdb'
the source specific to GDB itself
-`gdb-4.18/include'
+`gdb-5.0/include'
GNU include files
-`gdb-4.18/libiberty'
+`gdb-5.0/libiberty'
source for the `-liberty' free software library
-`gdb-4.18/mmalloc'
+`gdb-5.0/mmalloc'
source for the GNU memory-mapped malloc package
-`gdb-4.18/opcodes'
+`gdb-5.0/opcodes'
source for the library of opcode tables and disassemblers
-`gdb-4.18/readline'
+`gdb-5.0/readline'
source for the GNU command-line interface
NOTE: The readline library is compiled for use by GDB, but will
not be installed on your system when "make install" is issued.
-`gdb-4.18/sim'
+`gdb-5.0/sim'
source for some simulators (ARM, D10V, SPARC, M32R, MIPS, PPC, V850, etc)
-`gdb-4.18/intl'
+`gdb-5.0/intl'
source for the GNU gettext library, for internationalization.
This is slightly modified from the standalone gettext
distribution you can get from GNU.
-`gdb-4.18/texinfo'
+`gdb-5.0/texinfo'
The `texinfo.tex' file, which you need in order to make a printed
manual using TeX.
-`gdb-4.18/etc'
+`gdb-5.0/etc'
Coding standards, useful files for editing GDB, and other
miscellanea.
-`gdb-4.18/utils'
+`gdb-5.0/utils'
A grab bag of random utilities.
+ Note: the following instructions are for building GDB on Unix or
+Unix-like systems. Instructions for building with DJGPP for
+MS-DOS/MS-Windows are in the file gdb/config/djgpp/README.
The simplest way to configure and build GDB is to run `configure'
from the `gdb-VERSION-NUMBER' source directory, which in this example
-is the `gdb-4.18' directory.
+is the `gdb-5.0' directory.
First switch to the `gdb-VERSION-NUMBER' source directory if you are
not already in it; then run `configure'.
For example:
- cd gdb-4.18
+ cd gdb-5.0
./configure
make
@@ -200,8 +209,8 @@ you may need to run `sh' on it explicitly:
sh configure
If you run `configure' from a directory that contains source
-directories for multiple libraries or programs, such as the `gdb-4.18'
-source directory for version 4.18, `configure' creates configuration
+directories for multiple libraries or programs, such as the `gdb-5.0'
+source directory for version 5.0, `configure' creates configuration
files for every directory level underneath (unless you tell it not to,
with the `--norecursion' option).
@@ -209,10 +218,10 @@ with the `--norecursion' option).
directories in the GDB distribution, if you only want to configure that
subdirectory; but be sure to specify a path to it.
- For example, with version 4.18, type the following to configure only
+ For example, with version 5.0, type the following to configure only
the `bfd' subdirectory:
- cd gdb-4.18/bfd
+ cd gdb-5.0/bfd
../configure
You can install `gdb' anywhere; it has no hardwired paths. However,
@@ -241,13 +250,13 @@ directory. If the path to `configure' would be the same as the
argument to `--srcdir', you can leave out the `--srcdir' option; it
will be assumed.)
- For example, with version 4.18, you can build GDB in a separate
+ For example, with version 5.0, you can build GDB in a separate
directory for a Sun 4 like this:
- cd gdb-4.18
+ cd gdb-5.0
mkdir ../gdb-sun4
cd ../gdb-sun4
- ../gdb-4.18/configure sun4
+ ../gdb-5.0/configure
make
When `configure' builds a configuration using a remote source
@@ -268,8 +277,8 @@ called `configure' (or one of its subdirectories).
The `Makefile' that `configure' generates in each source directory
also runs recursively. If you type `make' in a source directory such
-as `gdb-4.18' (or in a separate configured directory configured with
-`--srcdir=PATH/gdb-4.18'), you will build all the required libraries,
+as `gdb-5.0' (or in a separate configured directory configured with
+`--srcdir=PATH/gdb-5.0'), you will build all the required libraries,
and then build GDB.
When you have multiple hosts or targets configured in separate
@@ -312,7 +321,7 @@ you can use it to test your guesses on abbreviations--for example:
Invalid configuration `i786v': machine `i786v' not recognized
`config.sub' is also distributed in the GDB source directory
-(`gdb-4.18', for version 4.18).
+(`gdb-5.0', for version 5.0).
`configure' options
@@ -366,11 +375,13 @@ prefer; but you may abbreviate option names if you use `--'.
code which looks even vaguely suspicious. You should only using
this feature if you're compiling with GNU CC. It passes the
following flags:
- -Wall
+ -Wimplicit
+ -Wreturn-type
+ -Wcomment
+ -Wtrigraphs
+ -Wformat
+ -Wparentheses
-Wpointer-arith
- -Wstrict-prototypes
- -Wmissing-prototypes
- -Wmissing-declarations
`--target=TARGET'
Configure GDB for cross-debugging programs running on the specified
@@ -404,32 +415,30 @@ See the GDB manual (gdb/doc/gdb.texinfo) for information on this.
Kernel debugging
=================
-I have't done this myself so I can't really offer any advice.
-Remote debugging over serial lines works fine, but the kernel debugging
-code in here has not been tested in years. Van Jacobson has
+ Remote debugging over serial lines works fine, but the kernel
+debugging code in here has not been tested in years. Van Jacobson has
better kernel debugging, but the UC lawyers won't let FSF have it.
Remote debugging
=================
-The files m68k-stub.c, i386-stub.c, and sparc-stub.c are examples of
-remote stubs to be used with remote.c. They are designed to run
-standalone on an m68k, i386, or SPARC cpu and communicate properly with
-the remote.c stub over a serial line.
+ The files m68k-stub.c, i386-stub.c, and sparc-stub.c are examples
+of remote stubs to be used with remote.c. They are designed to run
+standalone on an m68k, i386, or SPARC cpu and communicate properly
+with the remote.c stub over a serial line.
-The directory gdb/gdbserver/ contains `gdbserver', a program that
+ The directory gdb/gdbserver/ contains `gdbserver', a program that
allows remote debugging for Unix applications. gdbserver is only
-supported for some native configurations, including Sun 3, Sun 4,
-and Linux.
+supported for some native configurations, including Sun 3, Sun 4, and
+Linux.
-There are a number of remote interfaces for talking to existing ROM
+ There are a number of remote interfaces for talking to existing ROM
monitors and other hardware:
remote-adapt.c AMD 29000 "Adapt"
remote-array.c Array Tech RAID controller
remote-bug.c Motorola BUG monitor
- remote-d10v.c GDB protocol, talking to a d10v chip
remote-e7000.c Hitachi E7000 ICE
remote-eb.c AMD 29000 "EBMON"
remote-es.c Ericsson 1800 monitor
@@ -448,34 +457,36 @@ monitors and other hardware:
remote-udi.c AMD 29000 using the AMD "Universal Debug Interface"
remote-vx.c VxWorks realtime kernel
-Remote-vx.c and the vx-share subdirectory contain a remote interface for the
-VxWorks realtime kernel, which communicates over TCP using the Sun
-RPC library. This would be a useful starting point for other remote-
-via-ethernet back ends.
+ Remote-vx.c and the vx-share subdirectory contain a remote
+interface for the VxWorks realtime kernel, which communicates over TCP
+using the Sun RPC library. This would be a useful starting point for
+other remote- via-ethernet back ends.
-Remote-udi.c and the 29k-share subdirectory contain a remote interface
-for AMD 29000 programs, which uses the AMD "Universal Debug Interface".
-This allows GDB to talk to software simulators, emulators, and/or bare
-hardware boards, via network or serial interfaces. Note that GDB only
-provides an interface that speaks UDI, not a complete solution. You
-will need something on the other end that also speaks UDI.
+ Remote-udi.c and the 29k-share subdirectory contain a remote
+interface for AMD 29000 programs, which uses the AMD "Universal Debug
+Interface". This allows GDB to talk to software simulators,
+emulators, and/or bare hardware boards, via network or serial
+interfaces. Note that GDB only provides an interface that speaks UDI,
+not a complete solution. You will need something on the other end
+that also speaks UDI.
Reporting Bugs
===============
-The correct address for reporting bugs found in gdb is
-"bug-gdb@gnu.org". Please email all bugs, and all requests for
-help with GDB, to that address. Please include the GDB version number
-(e.g., gdb-4.18), and how you configured it (e.g., "sun4" or "mach386
+ The correct address for reporting bugs found in gdb is
+"bug-gdb@gnu.org". Please email all bugs, and all requests for help
+with GDB, to that address. Please include the GDB version number
+(e.g., gdb-5.0), and how you configured it (e.g., "sun4" or "mach386
host, i586-intel-synopsys target"). Since GDB now supports so many
-different configurations, it is important that you be precise about this.
-If at all possible, you should include the actual banner that GDB prints
-when it starts up, or failing that, the actual configure command that
-you used when configuring GDB.
+different configurations, it is important that you be precise about
+this. If at all possible, you should include the actual banner that
+GDB prints when it starts up, or failing that, the actual configure
+command that you used when configuring GDB.
-For more information on how/whether to report bugs, see the GDB Bugs
-section of the GDB manual (gdb/doc/gdb.texinfo).
+ For more information on how/whether to report bugs, see the GDB
+Bugs section of the GDB manual (gdb/doc/gdb.texinfo) or the
+gdb/CONTRIBUTE file.
Known bugs:
@@ -525,61 +536,47 @@ Known bugs:
subsystem that is on the IDO CD, otherwise you will get complaints
that certain files such as `/usr/include/syms.h' cannot be found.
- * Notes for BSD/386:
- To compile gdb-4.18 on BSD/386, you must run the configure script and
- its subscripts with bash. Here is an easy way to do this:
-
- bash -c 'CONFIG_SHELL=/bin/bash ./configure'
-
- (configure will report i386-unknown-bsd). Then, compile with the
- standard "make" command.
-
-GDB can produce warnings about symbols that it does not understand. By
-default, these warnings are disabled. You can enable them by executing
-`set complaint 10' (which you can put in your ~/.gdbinit if you like).
-I recommend doing this if you are working on a compiler, assembler,
-linker, or GDB, since it will point out problems that you may be able
-to fix. Warnings produced during symbol reading indicate some mismatch
-between the object file and GDB's symbol reading code. In many cases,
-it's a mismatch between the specs for the object file format, and what
-the compiler actually outputs or the debugger actually understands.
-
-
-X Windows versus GDB
-=====================
+ * Under Irix 6 you must build with GCC. The vendor compiler reports
+ as errors certain assignments that GCC considers to be warnings.
+
+ GDB can produce warnings about symbols that it does not understand.
+By default, these warnings are disabled. You can enable them by
+executing `set complaint 10' (which you can put in your ~/.gdbinit if
+you like). I recommend doing this if you are working on a compiler,
+assembler, linker, or GDB, since it will point out problems that you
+may be able to fix. Warnings produced during symbol reading indicate
+some mismatch between the object file and GDB's symbol reading code.
+In many cases, it's a mismatch between the specs for the object file
+format, and what the compiler actually outputs or the debugger
+actually understands.
+
+
+Graphical interface to GDB -- X Windows, MS Windows
+==========================
-You should check out DDD, the Data Display Debugger. Here's the blurb
-from the DDD web site, http://www.cs.tu-bs.de/softech/ddd:
+ Several graphical interfaces to GDB are available. You should
+check:
- The Data Display Debugger (DDD) is a popular graphical user
- interface for command-line debuggers such as GDB, DBX, JDB, WDB,
- XDB, the Perl debugger, and the Python debugger. Besides ``usual''
- front-end features such as viewing source texts, DDD has become
- famous through its interactive graphical data display, where data
- structures are displayed as graphs. A simple mouse click
- dereferences pointers or views structure contents, updated each
- time the program stops. Using DDD, you can reason about your
- application by watching its data, not just by viewing it execute
- lines of source code.
+ http://sourceware.cygnus.com/gdb/#gui
-Emacs users will very likely enjoy the Grand Unified Debugger mode;
-try typing `M-x gdb RET'.
+for an up-to-date list.
-Those interested in experimenting with a new kind of gdb-mode
-should load gdb/gdba.el into GNU Emacs 19.25 or later. Comments
-on this mode are also welcome.
+ Emacs users will very likely enjoy the Grand Unified Debugger mode;
+try typing `M-x gdb RET'. Those interested in experimenting with a
+new kind of gdb-mode should load gdb/gdba.el into GNU Emacs 19.25 or
+later. Comments on this mode are also welcome.
Writing Code for GDB
=====================
-There is a lot of information about writing code for GDB in the
+ There is a lot of information about writing code for GDB in the
internals manual, distributed with GDB in gdb/doc/gdbint.texinfo. You
can read it by hand, print it by using TeX and texinfo, or process it
into an `info' file for use with Emacs' info mode or the standalone
`info' program.
-If you are pondering writing anything but a short patch, especially
+ If you are pondering writing anything but a short patch, especially
take note of the information about copyrights in the node Submitting
Patches. It can take quite a while to get all the paperwork done, so
we encourage you to start that process as soon as you decide you are
@@ -590,26 +587,33 @@ think you will be ready to submit the patches.
GDB Testsuite
=============
-There is a DejaGNU based testsuite available for testing your newly
-built GDB, or for regression testing GDBs with local modifications.
+ Included with the GDB distribution is a DejaGNU based testsuite
+that can either be used to test your newly built GDB, or for
+regression testing a GDB with local modifications.
+
+ Running the testsuite requires the prior installation of DejaGNU,
+which is generally available via ftp. The directory
+ftp://sourceware.cygnus.com/pub/dejagnu/ will contain a recent
+snapshot. Once DejaGNU is installed, you can run the tests in one of
+the following ways:
-Running the testsuite requires the prior installation of DejaGNU,
-which is generally available via ftp; you'll need a pretty recent
-release. Once DejaGNU is installed, you can run the tests in one of
-two ways:
+ (1) cd gdb-5.0
+ make check-gdb
+
+or
- (1) cd gdb-4.18/gdb (assuming you also unpacked gdb)
+ (2) cd gdb-5.0/gdb
make check
or
- (2) cd gdb-4.18/gdb/testsuite
+ (3) cd gdb-5.0/gdb/testsuite
make site.exp (builds the site specific file)
runtest -tool gdb GDB=../gdb (or GDB=<somepath> as appropriate)
-The second method gives you slightly more control in case of problems with
-building one or more test executables or if you are using the testsuite
-'standalone', without it being part of the GDB source tree.
+The last method gives you slightly more control in case of problems
+with building one or more test executables or if you are using the
+testsuite `standalone', without it being part of the GDB source tree.
See the DejaGNU documentation for further details.
diff --git a/gdb/TODO b/gdb/TODO
index b03a689f1df..bef7155d4f7 100644
--- a/gdb/TODO
+++ b/gdb/TODO
@@ -1,94 +1,456 @@
If you find inaccuracies in this list, please send mail to
-bug-gdb@prep.ai.mit.edu. If you would like to work on any of these,
-you should consider sending mail to the same address, to find out
-whether anyone else is working on it.
+gdb-patches@sourceware.cygnus.com. If you would like to work on any
+of these, you should consider sending mail to the same address, to
+find out whether anyone else is working on it.
-TODO: GDB 5.0
-=============
+ Known problems in GDB 5.0
+ =========================
-Here are _all_ the issues that have been raised vis-a-vis the 5.0
-release. Also check the GDB, and other, mail archives
-(http://sourceware.cygnus.com/ml/gdb/).
+Below is a list of problems identified during the GDB 5.0 release
+cycle. People hope to have these problems fixed in a follow-on
+release.
-If, however, you fix something, then feel free to tweek this file
-(deleting the problem). Just send a note to gdb-patches so that I see
-the change.
+--
+
+The BFD directory requires bug-fixed AUTOMAKE et.al.
-The names in paren are those that might know more about the problem.
-They don't necessarily indicate the people that will fix the problem.
+AUTOMAKE 1.4 incorrectly set the TEXINPUTS environment variable. It
+contained the full path to texinfo.tex when it should have only
+contained the directory. The bug has been fixed in the current
+AUTOMAKE sources. Automake snapshots can be found in:
+ ftp://sourceware.cygnus.com/pub/gdb/snapshots
+and ftp://sourceware.cygnus.com/pub/binutils
--
-GDB 5.0: Must have
-------------------
+RFD: infrun.c: No bpstat_stop_status call after proceed over break?
+http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00665.html
-These are things that have been identifed as must-have for this
-release of GDB.
+GDB misses watchpoint triggers after proceeding over a breakpoint on
+x86 targets.
--
-GDB 5.0: Nice to have
----------------------
+x86 linux GDB and SIGALRM (???)
+http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00803.html
+
+I know there are problems with single stepping through signal
+handlers. These problems were present in 4.18. They were just masked
+because 4.18 failed to recognize signal handlers. Fixing it is not
+easy, and will require changes to handle_inferior_event(), that I
+prefer not to make before the 5.0 release.
-These are things that might make it in 5.0 but don't sit in the
-critical path. If they miss the 5.0 cut then they definitly should
-make the follow-on release.
+Mark
--
-Generic: lin-thread cannot handle thread exit (Mark Kettenis, Michael Snyder)
-http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00525.html
+Revised UDP support (was: Re: [Fwd: [patch] UDP transport support])
+http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00000.html
-The thread_db assisted debugging code doesn't handle exiting threads
-properly, at least in combination with glibc 2.1.3 (the framework is
-there, just not the actual code). There are at least two problems
-that prevent this from working.
+(Broken) support for GDB's remote protocol across UDP is to be
+included in the follow-on release.
-As an additional reference point, the pre thread_db code didn't work
-either.
+--
+
+Can't build IRIX -> arm GDB.
+http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00356.html
+
+David Whedon writes:
+> Now I'm building for an embedded arm target. If there is a way of turning
+> remote-rdi off, I couldn't find it. It looks like it gets built by default
+> in gdb/configure.tgt(line 58) Anyway, the build dies in
+> gdb/rdi-share/unixcomm.c. SERPORT1 et. al. never get defined because we
+> aren't one of the architectures supported.
--
-Java (Anthony Green, David Taylor)
+Problem with weak functions
+http://sourceware.cygnus.com/ml/gdb/2000-05/msg00060.html
-Anthony Green has started contributing late breaking Java patches:
+Dan Nicolaescu writes:
+> It seems that gdb-4.95.1 does not display correctly the function when
+> stoping in weak functions.
+>
+> It stops in a function that is defined as weak, not in the function
+> that is actualy run...
-Patch: java tests
-http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00512.html
+--
-Patch: java booleans
-http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00515.html
+GDB 5.0 doesn't work on Linux/SPARC
-Patch: handle N_MAIN stab
-http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00527.html
+--
+
+ Code Cleanups: Next Release
+ ===========================
-It should be able to squeeze these in.
+The following are small cleanups that will hopefully be completed by
+the follow on to 5.0.
--
-Pascal (Pierre Muller, David Taylor)
+Delete macro TARGET_BYTE_ORDER_SELECTABLE.
-The pascal support patches nave been added to the patch data base. I
-[cagney] strongly suspect that they are better suited for 5.1.
+Patches in the database.
-Indent -gnu ?
-http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00496.html
+--
-2 pascal language patches inserted in database
-http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00521.html
+Purge PARAMS.
+
+Eliminate all uses of PARAMS in GDB's source code.
+
+--
+
+Elimination of make_cleanup_func. (Andrew Cagney)
+
+make_cleanup_func elimination
+http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00791.html
+http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00814.html
+
+--
+
+Fix copyright notices.
+
+Turns out that ``1998-2000'' isn't considered valid :-(
+
+http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00467.html
+
+--
+
+ Code Cleanups: General
+ ======================
+
+The following are more general cleanups and fixes. They are not tied
+to any specific release.
+
+--
+
+Eliminate more compiler warnings.
+
+Of course there also needs to be the usual debate over which warnings
+are valid and how to best go about this.
+
+One method: choose a single option; get agreement that it is
+reasonable; try it out to see if there isn't anything silly about it
+(-Wunused-parameters is an example of that) then incrementally hack
+away.
+
+The other method is to enable all warnings and eliminate them from one
+file at a time.
+
+--
+
+Elimination of ``(catch_errors_ftype *) func''.
+
+Like make_cleanup_func it isn't portable.
+
+--
+
+Nuke USG define.
+
+--
+
+[PATCH/5] src/intl/Makefile.in:distclean additions
+http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00363.html
+
+Do not forget to merge the patch back into the trunk.
+
+--
+
+Rationalize the host-endian code (grep for HOST_BYTE_ORDER).
+
+At present defs.h includes <endian.h> (which is linux specific) yet
+almost nothing depends on it. Suggest "gdb_endian.h" which can also
+handle <machine/endian.h> and only include that where it is really
+needed.
+
+--
+
+Replace asprintf() calls with xasprintf() calls.
+
+As with things like strdup() most calls to asprintf() don't check the
+return value.
+
+--
+
+Replace strsave() + mstrsave() with libiberty:xstrdup().
+
+--
+
+Replace savestring() with something from libiberty.
+
+An xstrldup()? but that would have different semantics.
+
+--
+
+Rationalize use of floatformat_unknown in GDB sources.
+
+Instead of defaulting to floatformat_unknown, should hosts/targets
+specify the value explicitly?
+
+http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00447.html
+
+--
+
+Add a ``name'' member to include/floatformat.h:struct floatformat.
+Print that name in gdbarch.c.
+
+--
+
+Sort out the harris mess in include/floatformat.h (it hardwires two
+different floating point formats).
+
+--
+
+See of the GDB local floatformat_do_doublest() and libiberty's
+floatformat_to_double (which was once GDB's ...) can be merged some
+how.
+
+--
+
+Eliminate mmalloc() from GDB.
+
+Also eliminate it from defs.h.
+
+--
+
+Eliminate PTR. ISO-C allows ``void *''.
+
+--
+
+Eliminate abort ().
+
+GDB should never abort. GDB should either throw ``error ()'' or
+``internal_error ()''. Better still GDB should naturally unwind with
+an error status.
+
+--
+
+GDB probably doesn't build on FreeBSD pre 2.2.x
+http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00378.html
+
+Fixes to get FreeBSD working on 2.2.x, 3.x and 4.x caused the code to
+suffer bit rot.
+
+--
+
+Updated readline
+
+Readline 4.? is out. A merge wouldn't hurt. Patches are in:
+
+http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00436.html
+
+--
+
+Deprecate "fg". Apparently ``fg'' is actually continue.
+
+http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00417.html
+
+--
+
+Deprecate current use of ``floatformat_unknown''.
+
+Require all targets to explicitly provide their float format instead
+of defaulting to floatformat unknown. Doing the latter leads to nasty
+bugs.
+
+http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00447.html
+
+--
+
+Rationalize floatformat_to_double() vs floatformat_to_doublest().
+
+Looks like GDB migrated floatformat_to_double() to libiberty but then
+turned around and created a ..._to_doublest() the latter containing
+several bug fixes.
+
+http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00472.html
+
+--
+
+Move floatformat_ia64_ext to libiberty/include floatformat.[ch].
+
+http://sourceware.cygnus.com/ml/gdb-patches/2000-05/msg00466.html
+
+--
+
+Always build ser-tcp.c.
+
+The patch as submitted was just going to add ser-tcp.c to the Alpha's
+makefile. A better patch is to instead add ser-tcp.c to SER_HARDWARE
+and make it a standard part of all debuggers.
+
+If problems occure then configure.in can sort them out.
+
+http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00544.html
+
+--
+
+Follow through `make check' with --enable-shared.
+
+When the srcware tree is configured with --enable-shared, the `expect'
+program won't run properly. Jim Wilson found out gdb has a local hack
+to set LD_LIBRARY_PATH, but, AFAIK, no other project has been hacked
+similarly.
+
+http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00845.html
+
+--
+
+
+ New Features and Fixes
+ ======================
+
+These are harder than cleanups but easier than work involving
+fundamental architectural change.
+
+--
+
+Add built-by, build-date, tm, xm, nm and anything else into gdb binary
+so that you can see how the GDB was created.
+
+Some of these (*m.h) would be added to the generated config.h. That
+in turn would fix a long standing bug where by the build process many
+not notice a changed tm.h file. Since everything depends on config.h,
+a change to *m.h forces a change to config.h and, consequently forces
+a rebuild.
+
+--
+
+Add an "info bfd" command that displays supported object formats,
+similarly to objdump -i.
+
+Is there a command already?
+
+--
+
+Fix ``I'm sorry, Dave, I can't do that.'' from symfile.c.
+
+This requires internationalization.
+
+--
+
+Convert GDB build process to AUTOMAKE.
+
+See also sub-directory configure below.
+
+--
+
+Cleanup configury support for optional sub-directories.
+
+Check how GCC handles multiple front ends for an example of how things
+could work. A tentative first step is to rationalize things so that
+all sub directories are handled in a fashion similar to gdb/mi.
+
+See also automake above.
+
+--
+
+Restructure gdb directory tree so that it avoids any 8.3 and 14
+filename problems.
+
+--
+
+Add a transcript mechanism to GDB.
+
+Such a mechanism might log all gdb input and output to a file in a
+form that would allow it to be replayed. It could involve ``gdb
+--transcript=FILE'' or it could involve ``(gdb) transcript file''.
--
-Programs run under GDB have SIGCHLD masked.
+Can the xdep files be replaced by autoconf?
-[I think this can be worked around by using the action command -
-cagney]
+--
+
+Document trace machinery
+
+--
+
+Document ui-out and ui-file.
+
+http://sourceware.cygnus.com/ml/gdb/2000-04/msg00121.html
+
+--
+
+Update texinfo.tex to latest?
+
+
+
+--
+
+Incorporate agentexpr.texi into gdb.texinfo
+
+agentexpr.texi mostly describes the details of the byte code used for
+tracepoints, not the internals of the support for this in GDB. So it
+looks like gdb.texinfo is a better place for this information.
+
+http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00566.html
+
+--
+
+Document overlay machinery.
+
+--
+
+``(gdb) catch signal SIGNAL''
+
+Overlaps with ``handle SIGNAL'' but the implied behavour is different.
+You can attach commands to a catch but not a handle. A handle has a
+limited number of hardwired actions.
+
+--
+
+Get the TUI working on all platforms.
+
+--
+
+Add support for ``gdb --- PROGRAM ARGS ...''.
+Add support for ``gdb -cmd=...''
+
+Along with many variations. Check:
+
+????? for a full discussion.
+
+for a discussion.
+
+--
+
+Implement ``(gdb) !ls''.
+
+Which is very different from ``(gdb) ! ls''. Implementing the latter
+is trivial.
+
+http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00034.html
+
+--
+
+Replace the code that uses the host FPU with an emulator of the target
+FPU.
+
+--
+
+ Thread Support
+ ==============
+
+--
+
+Generic: lin-thread cannot handle thread exit (Mark Kettenis, Michael
+Snyder) http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00525.html
+
+The thread_db assisted debugging code doesn't handle exiting threads
+properly, at least in combination with glibc 2.1.3 (the framework is
+there, just not the actual code). There are at least two problems
+that prevent this from working.
+
+As an additional reference point, the pre thread_db code did not work
+either.
--
GNU/Linux/x86 and random thread signals (and Solaris/SPARC but not
-Solaris/x86)
+Solaris/x86).
+http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00336.html
Christopher Blizzard writes:
@@ -110,316 +472,712 @@ http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=9565
--
-IRIX?
+GDB5 TOT on unixware 7
+http://sourceware.cygnus.com/ml/gdb/2000-04/msg00119.html
-Benjamin Gamsa wrote:
+Robert Lipe writes:
+> I just spun the top of tree of the GDB5 branch on UnixWare 7. As a
+> practical matter, the current thread support is somewhat more annoying
+> than when GDB was thread-unaware.
-Has anyone successfully built the latest (from cvs) gdb on IRIX6.4 or
-later? The first problem I hit is that proc-api.c includes
-sys/user.h, which no longer exists under IRIX6.4. If I comment out
-that include, the next problem I hit is that PIOCGETPR and PIOCGETU
-are no longer defined in IRIX6.4 (presumably related to the
-disappearance of user.h).
+--
+
+Migrate qfThreadInfo packet -> qThreadInfo. (Andrew Cagney)
+
+Add support for packet enable/disable commands with these thread
+packets. General cleanup.
+
+[PATCH] Document the ThreadInfo remote protocol queries
+http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00832.html
+
+[PATCH] "info threads" queries for remote.c
+http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00831.html
--
-Regressions (prologue) with devel GCC.
+ Language Support
+ ================
+
+New languages come onto the scene all the time.
-The current head of the GCC branch doesn't co-operate well with GDB
-over debug information.
+--
+
+Pascal (Pierre Muller, David Taylor)
-Regressions problem (200 failures)
-http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00475.html
+Pierre Muller has contributed patches for adding Pascal Language
+support to GDB.
+
+2 pascal language patches inserted in database
+http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00521.html
+
+Indent -gnu ?
+http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00496.html
--
-RFA: infrun.c, breakpoint.c: Kludge for Solaris x86 hardware watchpoint support
-http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00664.html
+Java (Anthony Green, David Taylor)
+
+Anthony Green has a number of Java patches that did not make it into
+the 5.0 release.
+
+Patch: java tests
+http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00512.html
+
+Patch: java booleans
+http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00515.html
-Unfortunately I'd need the following kludge to work around a Solaris
-x86 kernel problem with hardware watchpoint support. See the comment
-in the patches for a description of the problem.
+Patch: handle N_MAIN stab
+http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00527.html
--
-RFD: infrun.c: No bpstat_stop_status call after proceed over break ?
-http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00665.html
+[Comming...]
-I am currently trying to fix a GDB bug with missing watchpoint triggers
-after proceeding over a breakpoint on x86 targets.
+Modify gdb to work correctly with Pascal.
--
-x86 linux GDB and SIGALRM (???)
-http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00803.html
+Re: Various C++ things
+
+value_headof/value_from_vtable_info are worthless, and should be
+removed. The one place in printcmd.c that uses it should use the RTTI
+functions.
+
+RTTI for g++ should be using the typeinfo functions rather than the
+vtables. The typeinfo functions are always at offset 4 from the
+beginning of the vtable, and are always right. The vtables will have
+weird names like E::VB sometimes. The typeinfo function will always
+be "E type_info function", or somesuch.
+
+value_virtual_fn_field needs to be fixed so there are no failures for
+virtual functions for C++ using g++.
+
+Testsuite cases are the major priority right now for C++ support,
+since i have to make a lot of changes that could potentially break
+each other.
--
-Migrate qfThreadInfo packet -> qThreadInfo. (Andrew Cagney)
+Add support for Modula3
-Add support for packet enable/disable commands with these thread
-packets. General cleanup.
+Get DEC/Compaq to contribute their Modula-3 support.
-[PATCH] Document the ThreadInfo remote protocol queries
-http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00832.html
+--
-[PATCH] "info threads" queries for remote.c
-http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00831.html
+ Remote Protocol Support
+ =======================
--
-MI documentation in GDB user guide. (Andrew Cagney, Elena Zannoni,
-Stan Shebs, anyone else?)
+set/show remote X-packet ...
+
+``(gdb) help set remote X-packet'' doesn't list the applicable
+responses. The help message needs to be expanded.
+
+--
-> (Are there plans to make gdbmi.texi be part of the manual as well?)
+Remote protocol doco feedback.
-I'd like to see it go in there sooner rather than later too. Otherwise
-you're introducing discrepancies between the manual and the documentation,
-and everybody is confused - witness the lack of doc for the tracing
-commands still, some two years after they were added...
+Too much feedback to mention needs to be merged in (901660). Search
+for the word ``remote''.
-Discussion on MI can be found on the thread: [PATCH] GDB command-line
-switches and annotations docs
-http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00639.html
+
+http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00023.html
+http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00056.html
+http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00382.html
--
-Revised UDP support (was: Re: [Fwd: [patch] UDP transport support])
-http://sourceware.cygnus.com/ml/gdb-patches/2000-04/msg00000.html
+GDB doesn't recover gracefully from remote protocol errors.
+
+GDB wasn't checking for NAKs from the remote target. Instead a NAK is
+ignored and a timeout is required before GDB retries. A pre-cursor to
+fixing this this is making GDB's remote protocol packet more robust.
+
+While downloading to a remote protocol target, gdb ignores packet
+errors in so far as it will continue to edownload with chunk N+1 even
+if chunk N was not correctly sent. This causes gdb.base/remote.exp to
+take a painfully long time to run. As a PS that test needs to be
+fixed so that it builds on 16 bit machines.
--
-problems loading shared libraries - with attached test case
-http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00820.html
+Add the cycle step command.
-Hi, I'm having problems loading shared libraries. This is with a
-build of gdb out of cvs that I pulled and built on March 27th and has
-been there for at least a week. I haven't gone back further than
-that. This is with the gcc that is shipping with Red Hat 6.2:
+http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00237.html
-Reading specs from
-/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/specs gcc version
-egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
+--
-I'm using "set auto-solib-add 0" after main has been called. If I use
-"shar" to load a shared library manually once I can't use it again to
-load another shared library later. Please see the attached log for an
-example of how to reproduce the problem.
+Resolve how to scale things to support very large packets.
--
-GDB 5.0: Won't have
--------------------
+Resolve how to handle a target that changes things like its endianess
+on the fly - should it be returned in the ``T'' packet?
-The following are on hold until GDB 5.0 is branched. In general they
-won't go in as they unsettle the GDB sources.
+Underlying problem is that the register file is target endian. If the
+target endianess changes gdb doesn't know.
--
-ATTRIBUTE_UNUSED
+ Symbol Support
+ ==============
+
+If / when GDB starts to support the debugging of multi-processor
+(rather than multi-thread) applications the symtab code will need to
+be updated a little so that several independant symbol tables are
+active at a given time.
-The need for this as almost been eliminated. The next version of GCC
-(assuming cagney gets the revised patch approved) will be able to
-supress unused parameter warnings.
+The other interesting change is a clarification of the exact meaning
+of CORE_ADDR and that has had consequences for a few targets (that
+were abusing that data type).
--
-Delete macro TARGET_BYTE_ORDER_SELECTABLE.
+Investiagate ways of reducing memory.
-Patches in the database.
+--
+
+Investigate ways of improving load time.
--
-Updated readline
+Get the d10v to use POINTER_TO_ADDRESS and ADDRESS_TO_POINTER.
-Readline 4.? is out. A merge wouldn't hurt.
+Consequence of recent symtab clarification. No marks for figuring out
+who maintains the d10v.
--
-Purge PARAMS
+Get the MIPS to correctly sign extend all address <-> pointer
+conversions.
-Something to do post 5.0 branch
+Consequence of recent symtab clarification. No marks for figuring out
+who maintains the MIPS.
--
-Elimination of make_cleanup_func. (Andrew Cagney)
+ Testsuite Support
+ =================
-make_cleanup_func elimination
-http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00791.html
-http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00814.html
+There are never to many testcases.
--
-ChangeLog.mi vs ChangeLog-mi (Andrew Cagney)
-Needs further debate.
+Better thread testsuite.
-Re: [PATCH] Add change-log variables to more MI files
-http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00811.html
+--
+
+Better C++ testsuite.
--
-Re: gdb-cvs fails on freebsd-elf
-http://sourceware.cygnus.com/ml/gdb/2000-04/msg00004.html
+Look at adding a GDB specific testsuite directory so that white box
+tests of key internals can be added (eg ui_file).
-FreeBSD haven't contributed their local GDB changes back to the master
-sources (they would at least need an FSF assignment by all
-individuales that contributed to the work). Given the strong
-likelhood that this will never happen, I'd suggest that a better
-strategy would be for someone (with an FSF/GDD assignment) to do a new
-(clean-room) implementation. That can then be accepted in time for
-GDB 5.1.
+--
+
+Separate out tests that involve the floating point (FP).
+
+(Something for people brining up new targets). FP and non-fp tests
+are combined. I think there should be set of basic tests that
+exercise pure integer support and then a more expanded set that
+exercise FP and FP/integer interactions.
+
+As an example, the MIPS, for n32 as problems with passing FP's and
+structs. Since most inferior call tests include FP it is difficult to
+determine of the integer tests are ok.
--
-Re: Various C++ things
+ Architectural Changes: General
+ ==============================
+
+These are harder than simple cleanups / fixes and, consequently
+involve more work. Typically an Architectural Change will be broken
+down into a more digestible set of cleanups and fixes.
+
+--
+
+Cleanup software single step.
+
+At present many targets implement software single step by directly
+blatting memory (see rs6000-tdep.c). Those targets should register
+the applicable breakpoints using the breakpoint framework. Perhaphs a
+new internal breakpoint class ``step'' is needed.
+
+--
+
+Replace READ_FP() with FRAME_HANDLE().
+
+READ_FP() is a hangover from the days of the vax when the ABI really
+did have a frame pointer register. Modern architectures typically
+construct a virtual frame-handle from the stack pointer and various
+other bits of string.
+
+Unfortunatly GDB still treats this synthetic FP register as though it
+is real. That in turn really confuses users (arm and ``print $fp'' VS
+``info registers fp''). The synthetic FP should be separated out of
+the true register set presented to the user.
+
+--
+
+Register Cache Cleanup (below from Andrew Cagney)
+
+I would depict the current register architecture as something like:
+
+ High GDB --> Low GDB
+ | |
+ \|/ \|/
+ --- REG NR -----
+ |
+ register + REGISTER_BYTE(reg_nr)
+ |
+ \|/
+ -------------------------
+ | extern register[] |
+ -------------------------
+
+where neither the high (valops.c et.al.) or low gdb (*-tdep.c) are
+really clear on what mechanisms they should be using to manipulate that
+buffer. Further, much code assumes, dangerously, that registers are
+contigious. Having got mips-tdep.c to support multiple ABIs, believe
+me, that is a bad assumption. Finally, that register cache layout is
+determined by the current remote/local target and _not_ the less
+specific target ISA. In fact, in many cases it is determined by the
+somewhat arbitrary layout of the [gG] packets!
+
+
+How I would like the register file to work is more like:
+
+
+ High GDB
+ |
+ \|/
+ pseudo reg-nr
+ |
+ map pseudo <->
+ random cache
+ bytes
+ |
+ \|/
+ ------------
+ | register |
+ | cache |
+ ------------
+ /|\
+ |
+ map random cache
+ bytes to target
+ dependant i-face
+ /|\
+ |
+ target dependant
+ such as [gG] packet
+ or ptrace buffer
+
+The main objectives being:
+
+ o a clear separation between the low
+ level target and the high level GDB
+
+ o a mechanism that solves the general
+ problem of register aliases, overlaps
+ etc instead of treating them as optional
+ extras that can be wedged in as an after
+ thought (that is a reasonable description
+ of the current code).
+
+ Identify then solve the hard case and the
+ rest just falls out. GDB solved the easy
+ case and then tried to ignore the real
+ world :-)
+
+ o a removal of the assumption that the
+ mapping between the register cache
+ and virtual registers is largely static.
+ If you flip the USR/SSR stack register
+ select bit in the status-register then
+ the corresponding stack registers should
+ reflect the change.
+
+ o a mechanism that clearly separates the
+ gdb internal register cache from any
+ target (not architecture) dependant
+ specifics such as [gG] packets.
+
+Of course, like anything, it sounds good in theory. In reality, it
+would have to contend with many<->many relationships at both the
+virt<->cache and cache<->target level. For instance:
+
+ virt<->cache
+ Modifying an mmx register may involve
+ scattering values across both FP and
+ mmpx specific parts of a buffer
+
+ cache<->target
+ When writing back a SP it may need to
+ both be written to both SP and USP.
+
+
+Hmm,
+
+Rather than let this like the last time it was discussed, just slip, I'm
+first going to add this e-mail (+ references) to TODO. I'd then like to
+sketch out a broad strategy I think could get us there.
+
+
+First thing I'd suggest is separating out the ``extern registers[]''
+code so that we can at least identify what is using it. At present
+things are scattered across many files. That way we can at least
+pretend that there is a cache instead of a global array :-)
+
+I'd then suggest someone putting up a proposal for the pseudo-reg /
+high-level side interface so that code can be adopted to it. For old
+code, initially a blanket rename of write_register_bytes() to
+deprecated_write_register_bytes() would help.
+
+Following that would, finaly be the corresponding changes to the target.
+
+--
+
+Check that GDB can handle all BFD architectures (Andrew Cagney)
+
+There should be a test that checks that BFD/GDB are in sync with
+regard to architecture changes. Something like a test that first
+queries GDB for all supported architectures and then feeds each back
+to GDB.. Anyone interested in learning how to write tests? :-)
-value_headof/value_from_vtable_info are worthless, and should be removed.
-The one place in printcmd.c that uses it should use the RTTI functions.
+--
-RTTI for g++ should be using the typeinfo functions rather than the vtables.
-The typeinfo functions are always at offset 4 from the beginning of the vtable,
-and are always right. The vtables will have weird names like E::VB sometimes.
-The typeinfo function will always be "E type_info function", or somesuch.
+ Architectural Change: Multi-arch et al.
+ =======================================
-value_virtual_fn_field needs to be fixed so there are no failures for virtual
-functions for C++ using g++.
+The long term objective is to remove all assumptions that there is a
+single target with a single address space with a single instruction
+set architecture and single application binary interface.
-Testsuite cases are the major priority right now for C++ support, since i have
-to make a lot of changes that could potentially break each other.
+This is an ongoing effort. The first milestone is to enable
+``multi-arch'' where by all architectural decisions are made at
+runtime.
+It should be noted that ``gdbarch'' is really ``gdbabi'' and
+``gdbisa''. Once things are multi-arched breaking that down correctly
+will become much easier.
--
-GDB 5.0: Test results
----------------------
-Please include:
+GDBARCH cleanup (Andrew Cagney)
+
+The non-generated parts of gdbarch.{sh,h,c} should be separated out
+into arch-utils.[hc].
- o the output of `config.guess`
- o the date
- o the compiler
- o a note mentioning the reason
- for any serious failures.
+Document that gdbarch_init_ftype could easily fail because it didn't
+identify an architecture.
--
-alpha-dec-osf4.0a, vendor compiler, 2000-03-04
+Fix BELIEVE_PPC_PROMOTION. Change it to BELIEVE_PPC_PROMOTION_P?
-Still has many compile warnings (mostly relating back to PTR vs void*)
-but it did compile using:
+At present there is still #ifdef BELIEVE_PPC_PROMOTION code in the
+symtab file.
- CC=cc .../configure
- make
+--
-Test results are:
+Fix ``set architecture <tab>''
-# of expected passes 6223
-# of unexpected failures 103
-# of unexpected successes 2
-# of expected failures 196
-# of unresolved testcases 6
-# of unsupported tests 1
+This command should expand to a list of all supported architectures.
+At present ``info architecture'' needs to be used. That is simply
+wrong. It involves the use of add_set_enum_cmd().
-Looking at the output it would appear that GDB is stepping into some
-functions instead of ``next'' ing over them:
+--
- 35 dummy();
- (gdb) next
- dummy () at /home/cagney/GDB-DEJAGNU/src/gdb/testsuite/gdb.base/all-types.c:41
- 41 {
+Fix target_signal_from_host() etc.
-Since there is no active maintainer, I'd consider this sufficient for
-5.0 :-/
+The name is wrong for starters. ``target_signal'' should probably be
+``gdb_signal''. ``from_host'' should be ``from_target_signal''.
+After that it needs to be multi-arched and made independant of any
+host signal numbering.
--
-sparc-sun-solaris2.6, egcs-2.91.66, 2000-02-10
-http://sourceware.cygnus.com/ml/gdb-testers/2000-q1/msg00030.html
+Update ALPHA so that it uses ``struct frame_extra_info'' instead of
+EXTRA_FRAME_INFO.
+
+This is a barrier to replacing mips_extra_func_info with something
+that works with multi-arch.
+
+--
-There is a SIGTRAP problem that occures in ptrace.exp (Cagney to
-expand on).
+Multi-arch mips_extra_func_info.
-# of expected passes 6420
-# of unexpected failures 7
-# of expected failures 199
+This first needs the alpha to be updated so that it uses ``struct
+frame_extra_info''.
--
-solaris 2.5.1 sparc?, 2.9-gnupro-99r1, 2000-02-10
-http://sourceware.cygnus.com/ml/gdb-testers/2000-q1/msg00032.html
+Rationalize TARGET_SINGLE_FORMAT and TARGET_SINGLE_BIT et al.
-# of expected passes 6420
-# of unexpected failures 6
-# of expected failures 199
+Surely one of them is redundant.
--
-sparc-unknown-netbsdelf1.4P, egcs-1.1.2+, 2000-03-01
+Convert ALL architectures to MULTI-ARCH.
-This is with a very recent kernel.
+--
+
+Select the initial multi-arch ISA / ABI based on --target or similar.
-# of expected passes 6055
-# of unexpected failures 88
-# of unexpected successes 1
-# of expected failures 190
-# of unresolved testcases 59
+At present the default is based on what ever is first in the BFD
+archures table. It should be determined based on the ``--target=...''
+name.
--
-GNU/Linux PPC
-http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00185.html
+Truly multi-arch.
-Kevins merged it all in.
+Enable the code to recognize --enable-targets=.... like BINUTILS does.
+
+Can the tm.h and nm.h files be eliminated by multi-arch.
--
-Unixware
+ Architectural Change: MI, LIBGDB and scripting languages
+ ========================================================
-Builds ok. Problems with some of the thread code. Unfortunate but
-not a show stopper. Nick D's still looking at it.
+See also architectural changes related to the event loop. LIBGDB
+can't be finished until there is a generic event loop being used by
+all targets.
-Re: uw-threads issues
-http://sourceware.cygnus.com/ml/gdb/2000-q1/msg00025.html
+The long term objective is it to be possible to integrate GDB into
+scripting languages.
+--
- ------------------------------------------------
+Implement generic ``(gdb) commmand > file''
+Once everything is going through ui_file it should be come fairly
+easy.
-General Wish List
-=================
+http://sourceware.cygnus.com/ml/gdb/2000-04/msg00104.html
--
-GDBARCH cleanup (Andrew Cagney)
+Replace gdb_stdtarg with gdb_targout (and possibly gdb_targerr).
-The non-generated parts of gdbarch.{sh,h,c} should be separated out
-into gdbarch-utils.[hc] (Name ok).
+gdb_stdtarg is easily confused with gdb_stdarg.
-The ``info architecture'' command should be replaced with a fixed
-``set architecture'' (implemented using the command.c enum code).
+--
-Document that gdbarch_init_ftype could easily fail because it didn't
-identify an architecture.
+Extra ui_file methods - dump.
+
+Very useful for whitebox testing.
--
-Check that GDB can handle all BFD architectures (Andrew Cagney)
+Eliminate error_begin().
-There should be a test that checks that BFD/GDB are in sync with
-regard to architecture changes. Something like a test that first
-queries GDB for all supported architectures and then feeds each back
-to GDB.. Anyone interested in learning how to write tests? :-)
+With ui_file, there is no need for the statefull error_begin ()
+function.
--
-This list is probably not up to date, and opinions vary about the
-importance or even desirability of some of the items.
+Send normal output to gdb_stdout.
+Send error messages to gdb_stderror.
+Send debug and log output log gdb_stdlog.
-Document trace machinery.
+GDB still contains many cases where (f)printf or printf_filtered () is
+used when it should be sending the messages to gdb_stderror or
+gdb_stdlog. The thought of #defining printf to something has crossed
+peoples minds ;-)
-Document overlay machinery.
+--
+
+Re-do GDB's output pager.
+
+GDB's output pager still relies on people correctly using *_filtered
+for gdb_stdout and *_unfiltered for gdb_stdlog / gdb_stderr.
+Hopefully, with all normal output going to gdb_stdout, the pager can
+just look at the ui_file that the output is on and then use that to
+decide what to do about paging. Sounds good in theory.
+
+--
+
+Check/cleanup MI documentation.
-Extend .gdbinit mechanism to specify name on command line, allow for
-lists of files to load, include function of --tclcommand.
+The list of commands specified in the documentation needs to be
+checked against the mi-cmds.c table in a mechanical way (so that they
+two can be kept up-to-date).
+
+--
+
+Convert MI into libgdb
+
+MI provides a text interface into what should be many of the libgdb
+functions. The implementation of those functions should be separated
+into the MI interface and the functions proper. Those functions being
+moved to gdb/lib say.
+
+--
+
+Create libgdb.h
+
+The first part can already be found in defs.h.
+
+--
+
+MI's input does not use buffering.
+
+At present the MI interface reads raw characters of from an unbuffered
+FD. This is to avoid several nasty buffer/race conditions. That code
+should be changed so that it registers its self with the event loop
+(on the input FD) and then push commands up to MI as they arrive.
+
+The serial code already does this.
+
+--
+
+Make MI interface accessable from existing CLI.
+
+--
+
+Add a breakpoint-edit command to MI.
+
+It would be similar to MI's breakpoint create but would apply to an
+existing breakpoint. It saves the need to delete/create breakpoints
+when ever they are changed.
+
+--
+
+Add directory path to MI breakpoint.
+
+That way the GUI's task of finding the file within which the
+breakpoint was set is simplified.
+
+--
+
+Add a mechanism to reject certain expression classes to MI
+
+There are situtations where you don't want GDB's expression
+parser/evaluator to perform inferior function calls or variable
+assignments. A way of restricting the expression parser so that such
+operations are not accepted would be very helpful.
+
+--
+
+Remove sideffects from libgdb breakpoint create function.
+
+The user can use the CLI to create a breakpoint with partial
+information - no file (gdb would use the file from the last
+breakpoint).
+
+The libgdb interface currently affects that environment which can lead
+to confusion when a user is setting breakpoints via both the MI and
+the CLI.
+
+This is also a good example of how getting the CLI ``right'' will be
+hard.
+
+--
+
+Move gdb_lasterr to ui_out?
+
+The way GDB throws errors and records them needs a re-think. ui_out
+handles the correct output well. It doesn't resolve what to do with
+output / error-messages when things go wrong.
+
+--
+
+ Architectural Change: Async
+ ===========================
+
+While GDB uses an event loop when prompting the user for input. That
+event loop is not exploited by targets when they allow the target
+program to continue. Typically targets still block in (target_wait())
+until the program again halts.
+
+The closest a target comes to supporting full asynchronous mode are
+the remote targets ``async'' and ``extended-async''.
+
+--
+
+Asynchronous expression evaluator
+
+Inferior function calls hang GDB.
+
+--
+
+Fix implementation of ``target xxx''.
+
+At present when the user specifies ``target xxxx'', the CLI maps that
+directly onto a target open method. It is then assumed that the
+target open method should do all sorts of complicated things as this
+is the only chance it has. Check how the various remote targets
+duplicate the target operations. Check also how the various targets
+behave differently for purely arbitrary reasons.
+
+What should happen is that ``target xxxx'' should call a generic
+``target'' function and that should then co-ordinate the opening of
+``xxxx''. This becomes especially important when you're trying to
+open an asynchronous target that may need to perform background tasks
+as part of the ``attach'' phase.
+
+Unfortunatly, due to limitations in the old/creaking command.h
+interface, that isn't possible. The function being called isn't told
+of the ``xxx'' or any other context information.
+
+Consequently a precursor to fixing ``target xxxx'' is to clean up the
+CLI code so that it passes to the callback function (attatched to a
+command) useful information such as the actual command and a context
+for that command. Other changes such as making ``struct command''
+opaque may also help.
+
+--
+
+Make "target xxx" command interruptible.
+
+As things become async this becomes possible. A target would start
+the connect and then return control to the event loop. A cntrl-c
+would notify the target that the operation is to be abandoned and the
+target code could respond.
+
+--
+
+Add a "suspend" subcommand of the "continue" command to suspend gdb
+while continuing execution of the subprocess. Useful when you are
+debugging servers and you want to dodge out and initiate a connection
+to a server running under gdb.
+
+[hey async!!]
+
+--
+
+ TODO FAQ
+ ========
+
+Frequently requested but not approved requests.
+
+--
+
+Eliminate unused argument warnings using ATTRIBUTE_UNUSED.
+
+The benefits on this one are thought to be marginal - GDBs design
+means that unused parameters are very common. GCC 3.0 will also
+include the option -Wno-unused-parameter which means that ``-Wall
+-Wno-unused-parameters -Werror'' can be specified.
+
+--
+
+
+
+ Legacy Wish List
+ ================
+
+This list is not up to date, and opinions vary about the importance or
+even desirability of some of the items. If you do fix something, it
+always pays to check the below.
+
+--
@c This does not work (yet if ever). FIXME.
@c @item --parse=@var{lang} @dots{}
@@ -428,21 +1186,33 @@ lists of files to load, include function of --tclcommand.
@c list of all supported languages, omit the argument. Without this
@c option, @value{GDBN} is configured to parse all supported languages.
-Add an "info bfd" command that displays supported object formats,
-similarly to objdump -i.
+--
START_INFERIOR_TRAPS_EXPECTED need never be defined to 2, since that
is its default value. Clean this up.
+--
+
It should be possible to use symbols from shared libraries before we know
exactly where the libraries will be loaded. E.g. "b perror" before running
the program. This could maybe be done as an extension of the "breakpoint
re-evaluation" after new symbols are loaded.
+--
+
Make single_step() insert and remove breakpoints in one operation.
+[If this is talking about having single_step() insert the breakpoints,
+run the target then pull the breakpoints then it is wrong. The
+function has to return as control has to eventually be passed back to
+the main event loop.]
+
+--
+
Speed up single stepping by avoiding extraneous ptrace calls.
+--
+
Speed up single stepping by not inserting and removing breakpoints
each time the inferior starts and stops.
@@ -450,160 +1220,114 @@ Breakpoints should not be inserted and deleted all the time. Only the
one(s) there should be removed when we have to step over one. Support
breakpoints that don't have to be removed to step over them.
-Update gdbint.texinfo to include doc on the directory structure and
-the various tricks of building gdb.
+[this has resulted in numerous debates. The issue isn't clear cut]
-Do a tutorial in gdb.texinfo on how to do simple things in gdb.
-E.g. how to set a breakpoint that just prints something and continues.
-How to break on aborts. Etc.
+--
Provide "voodoo" debugging of core files. This creates a zombie
process as a child of the debugger, and loads it up with the data,
stack, and regs of the core file. This allows you to call functions
in the executable, to manipulate the data in the core file.
-GDB reopens the source file on every line, as you "next" through it.
+[you wish]
-Referencing the vtbl member of a struct doesn't work. It prints OK
-if you print the struct, but it gets 0 if you try to deref it.
+--
-Persistent command history: A feature where you could save off a list
-of the commands you did, so you can edit it into something that will bring
-the target to the same place every time you source it.
-This would also be useful for automated fast watchpointing; if you go
-past the place where it watchpoints, you just start it over again and
-do it more carefully.
+GDB reopens the source file on every line, as you "next" through it.
-Deal with the SunOS 4.0 and 4.1.1 ptrace bug that loses the registers if
-the stack is paged out.
+[still true? I've a memory of this being fixed]
-Finish the C++ exception handling stub routines. Lint points them out
-as unused statics functions.
+--
Perhaps "i source" should take an argument like that of "list".
-See if core-aout.c's fetch_core_registers can be used on more machines.
-E.g. MIPS (mips-xdep.c).
-
-unpack_double() does not handle IEEE float on the target unless the host
-is also IEEE. Death on a vax.
-
-Set up interface between GDB and INFO so that you can hop into interactive
-INFO and back out again. When running under Emacs, should use Emacs
-info, else fork the info program. Installation of GDB should install
-its texinfo files into the info tree automagically, including the readline
-texinfo files.
-
-"help address" ought to find the "help set print address" entry.
-
-Remove the VTBL internal guts from printouts of C++ structs, unless
-vtblprint is set.
+--
Remove "at 0xnnnn" from the "b foo" response, if `print address off' and if
it matches the source line indicated.
-The prompt at end of screen should accept space as well as CR.
-
-Check STORE_RETURN_VALUE on all architectures. Check near it in tm-sparc.h
-for other bogosities.
+--
-Check for storage leaks in GDB, I'm sure there are a lot!
+The prompt at end of screen should accept space as well as CR.
-vtblprint of a vtbl should demangle the names it's printing.
+--
Backtrace should point out what the currently selected frame is, in
its display, perhaps showing "@3 foo (bar, ...)" or ">3 foo (bar,
...)" rather than "#3 foo (bar, ...)".
+--
+
"i program" should work for core files, and display more info, like what
actually caused it to die.
+--
+
"x/10i" should shorten the long name, if any, on subsequent lines.
-Check through the code for FIXME comments and fix them. dbxread.c,
-blockframe.c, and plenty more. (I count 634 as of 940621 - sts)
+--
"next" over a function that longjumps, never stops until next time you happen
to get to that spot by accident. E.g. "n" over execute_command which has
an error.
+--
+
"set zeroprint off", don't bother printing members of structs which
are entirely zero. Useful for those big structs with few useful
members.
+--
+
GDB does four ioctl's for every command, probably switching terminal modes
to/from inferior or for readline or something.
+--
+
terminal_ours versus terminal_inferior: cache state. Switch should be a noop
if the state is the same, too.
-ptype $i6 = void??!
-
-Clean up invalid_float handling so gdb doesn't coredump when it tries to
-access a NaN. While this might work on SPARC, other machines are not
-configured right.
-
-"b value_at ; commands ; continue ; end" stops EVERY OTHER TIME!
-Then once you enter a command, it does the command, runs two more
-times, and then stops again! Bizarre... (This behaviour has been
-modified, but it is not yet 100% predictable when e.g. the commands
-call functions in the child, and while there, the child is interrupted
-with a signal, or hits a breakpoint.)
-
-help completion, help history should work.
-
-Check that we can handle stack trace through varargs AND alloca in same
-function, on 29K.
-
-wait_for_inferior loops forever if wait() gives it an error.
+--
"i frame" shows wrong "arglist at" location, doesn't show where the args
should be found, only their actual values.
+--
+
There should be a way for "set" commands to validate the new setting
before it takes effect.
-A mess of floating point opcodes are missing from sparc-opcode.h.
-Also, a little program should test the table for bits that are
-overspecified or underspecified. E.g. if the must-be-ones bits
-and the must-be-zeroes bits leave some fields unexamined, and the format
-string leaves them unprinted, then point this out. If multiple
-non-alias patterns match, point this out too. Finally, there should
-be a sparc-optest.s file that tries each pattern out. This file
-should end up coming back the same (modulo transformation comments)
-if fed to "gas" then the .o is fed to gdb for disassembly.
-
-Eliminate all the core_file_command's in all the xdep files.
-Eliminate separate declarations of registers[] everywhere.
+--
"ena d" is ambiguous, why? "ena delete" seems to think it is a command!
-Perhaps move the tdep, xdep, and nat files, into the config
-subdirectories. If not, at least straighten out their names so that
-they all start with the machine name.
-
-inferior_status should include stop_print_frame. It won't need to be
-reset in wait_for_inferior after bpstat_stop_status call, then.
+--
i line VAR produces "Line number not known for symbol ``var''.". I
thought we were stashing that info now!
+--
+
We should be able to write to random files at hex offsets like adb.
-Make "target xxx" command interruptible.
+--
+
+[elena - delete this]
Handle add_file with separate text, data, and bss addresses. Maybe
handle separate addresses for each segment in the object file?
+--
+
+[Jimb/Elena delete this one]
+
Handle free_named_symtab to cope with multiply-loaded object files
in a dynamic linking environment. Should remember the last copy loaded,
but not get too snowed if it finds references to the older copy.
-Generalize and Standardize the RPC interface to a target program,
-improve it beyond the "ptrace" interface, and see if it can become a
-standard for remote debugging. (This is talking about the vxworks
-interface. Seems unlikely to me that there will be "a standard" for
-remote debugging anytime soon --kingdon, 8 Nov 1994).
+--
+
+[elena delete this also]
Remove all references to:
text_offset
@@ -614,42 +1338,26 @@ Remove all references to:
...
now that we have BFD. All remaining are in machine dependent files.
-When quitting with a running program, if a core file was previously
-examined, you get "Couldn't read float regs from core file"...if
-indeed it can't. generic_mourn_inferior...
-
-Have remote targets give a warning on a signal argument to
-target_resume. Or better yet, extend the protocols so that it works
-like it does on the Unix-like systems.
-
-Sort help and info output.
+--
Re-organize help categories into things that tend to fit on a screen
and hang together.
-renote-nindy.c handles interrupts poorly; it error()s out of badly
-chosen places, e.g. leaving current_frame zero, which causes core dumps
-on the next command.
+--
Add in commands like ADB's for searching for patterns, etc. We should
be able to examine and patch raw unsymboled binaries as well in gdb as
we can in adb. (E.g. increase the timeout in /bin/login without source).
-Those xdep files that call register_addr without defining it are
-probably simply broken. When reconfiguring this part of gdb, I could
-only make guesses about how to redo some of those files, and I
-probably guessed wrong, or left them "for later" when I have a
-machine that can attempt to build them.
+[actually, add ADB interface :-]
+
+--
When doing "step" or "next", if a few lines of source are skipped between
the previous line and the current one, print those lines, not just the
last line of a multiline statement.
-When searching for C++ superclasses in value_cast in valops.c, we must
-not search the "fields", only the "superclasses". There might be a
-struct with a field name that matches the superclass name. This can
-happen when the struct was defined before the superclass (before the
-name became a typedef).
+--
Handling of "&" address-of operator needs some serious overhaul
for ANSI C and consistency on arrays and functions.
@@ -661,65 +1369,75 @@ ptype &malloc ==> "char *(*)()"
call printf ("%x\n", malloc) ==> weird value, should be same as
call printf ("%x\n", &malloc) ==> correct value
+--
+
Fix dbxread.c symbol reading in the presence of interrupts. It
currently leaves a cleanup to blow away the entire symbol table when a
QUIT occurs. (What's wrong with that? -kingdon, 28 Oct 1993).
+[I suspect that the grype was that, on a slow system, you might want
+to cntrl-c and get just half the symbols and then load the rest later
+- scary to be honest]
+
+--
+
Mipsread.c reads include files depth-first, because the dependencies
in the psymtabs are way too inclusive (it seems to me). Figure out what
really depends on what, to avoid recursing 20 or 30 times while reading
real symtabs.
+--
+
value_add() should be subtracting the lower bound of arrays, if known,
and possibly checking against the upper bound for error reporting.
-mipsread.c symbol table allocation and deallocation should be checked.
-My suspicion is that it's full of memory leaks.
-
-SunOS should have a target_lookup_symbol() for common'd things allocated
-by the shared library linker ld.so.
+--
When listing source lines, check for a preceding \n, to verify that
the file hasn't changed out from under us.
-When listing source lines, eat leading whitespace corresponding to the
-line-number prefix we print. This avoids long lines wrapping.
+[fixed by some other means I think. That hack wouldn't actually work
+reliably - the file might move such that another \n appears. ]
-mipsread.c needs to check for old symtabs and psymtabs for the same
-files, the way it happens for dbxread.c and coffread.c, for VxWorks
-incremental symbol table reloading.
+--
Get all the remote systems (where the protocol allows it) to be able to
stop the remote system when the GDB user types ^C (like remote.c
does). For ebmon, use ^Ak.
+--
+
Possible feature: A version of the "disassemble" command which shows
both source and assembly code ("set symbol-filename on" is a partial
solution).
+[has this been done? It was certainly done for MI and GDBtk]
+
+--
+
investigate "x/s 0" (right now stops early) (I think maybe GDB is
using a 0 address for bad purposes internally).
+--
+
Make "info path" and path_command work again (but independent of the
environment either of gdb or that we'll pass to the inferior).
+--
+
Make GDB understand the GCC feature for putting octal constants in
enums. Make it so overflow on an enum constant does not error_type
the whole type. Allow arbitrarily large enums with type attributes.
Put all this stuff in the testsuite.
+--
+
Make TYPE_CODE_ERROR with a non-zero TYPE_LENGTH more useful (print
the value in hex; process type attributes). Add this to the
testsuite. This way future compilers can add new types and old
versions of GDB can do something halfway reasonable.
-Clean up formatting of "info registers" on MIPS and 88k. See if it
-is possible to do this generically across all target architectures.
-
-GDB gets bfd/corefile.c and gdb/corefile.c confused (this should be easy to
-repeat even with something more recent than GDB 4.9).
-
-Check that unmatched RBRAC doesn't abort().
+--
Fix mdebugread.c:parse_type to do fundamental types right (see
rs6000_builtin_type in stabsread.c for what "right" is--the point is
@@ -728,49 +1446,42 @@ depend on stuff like TARGET_PTR_BIT and so on. For mdebug, there seem
to be separate bt* codes for 64 bit and 32 bit things, and GDB should
be aware of that). Also use a switch statement for clarity and speed.
+--
+
Investigate adding symbols in target_load--some targets do, some
don't.
+--
+
Put dirname in psymtabs and change lookup*symtab to use dirname (so
/foo/bar.c works whether compiled by cc /foo/bar.c, or cd /foo; cc
bar.c).
+--
+
Merge xcoffread.c and coffread.c. Use breakpoint_re_set instead of
fixup_breakpoints.
-Fix byte order and int size sins in tm-a29k.h
-(EXTRACT_RETURN_VALUE). Perhaps should reproduce bug and verify fix
-(or perhaps should just fix it...).
-
-Make a watchpoint on a constant expression an error (or warning
-perhaps)
+--
Make a watchpoint which contains a function call an error (it is
broken now, making it work is probably not worth the effort).
-Re-do calls to signal() in remote.c, and inflow.c (set_sigint_trap and
-so on) to be independent of the debugging target, using target_stop to
-stop the inferior. Probably the part which is now handled by
-interrupt_query in remote.c can be done without any new features in
-the debugging target.
+--
New test case based on weird.exp but in which type numbers are not
renumbered (thus multiply defining a type). This currently causes an
infinite loop on "p v_comb".
-Nuke baseclass_addr.
-
-Nuke USG define.
+--
-"source file more recent" loses on re-read
+[Hey! Hint Hint Delete Delete!!!]
Fix 386 floating point so that floating point registers are real
registers (but code can deal at run-time if they are missing, like
mips and 68k). This would clean up "info float" and related stuff.
-Look at Solaris bug in interrupt.exp. Can get out of syscall with
-PRSABORT (syscall will return EINTR) but merely doing that leads to a
-"can't read memory" error.
+--
gcc -g -c enummask.c then gdb enummask.o, then "p v". GDB complains
about not being able to access memory location 0.
@@ -794,49 +1505,33 @@ enum mask
LARGE = 0x20
} v;
+--
+
If try to modify value in file with "set write off" should give
appropriate error not "cannot access memory at address 0x65e0".
-Why do we allow a target to omit standard register names (NO_STD_REGS
-in tm-z8k.h)? I thought the standard register names were supposed to
-be just that, standard.
+--
Allow core file without exec file on RS/6000.
+--
+
Make sure "shell" with no arguments works right on DOS.
+--
+
Make gdb.ini (as well as .gdbinit) be checked on all platforms, so
the same directory can be NFS-mounted on unix or DOS, and work the
same way.
-cd ~/tmp/<M-?> causes infinite loop (where ~/tmp is a directory).
+--
+
+[Is this another delete???]
Get SECT_OFF_TEXT stuff out of objfile_relocate (might be needed to
get RS/6000 to work right, might not be immediately relevant).
-Clean up add_toc_to_loadinfo
-
-Think about attached processes and sharing terminal.
-
-John sez in reference to ignoring errors from tcsegpgrp if attach_flag:
-set_tty_state should not have any trouble with attached processes.
-Instead, the tty handling should leave the pgrp of the tty alone when
-attaching to processes (perhaps pass terminal_init_inferior a flag
-saying whether we're attaching).
-
-PAGE_SIZE redefined warnings on AIX. Probably should be using
-BFD_PAGE_SIZE throughout BFD.
-
-Rewrite proceed, wait_for_inferior, and normal_stop to clean them up.
-Suggestions:
-
- 1) Make each test in wait_for_inferior a seperate subroutine
- call.
- 2) Combine wait_for_inferior and normal_stop to clean up
- communication via global variables.
- 3) See if you can find some way to clean up the global
- variables that are used; possibly group them by data flow
- and information content?
+--
Work out some kind of way to allow running the inferior to be done as
a sub-execution of, eg. breakpoint command lists. Currently running
@@ -844,26 +1539,17 @@ the inferior interupts any command list execution. This would require
some rewriting of wait_for_inferior & friends, and hence should
probably be done in concert with the above.
+--
+
Add function arguments to gdb user defined functions.
+--
+
Add convenience variables that refer to exec file, symbol file,
selected frame source file, selected frame function, selected frame
line number, etc.
-Add a "suspend" subcommand of the "continue" command to suspend gdb
-while continuing execution of the subprocess. Useful when you are
-debugging servers and you want to dodge out and initiate a connection
-to a server running under gdb.
-
-Add stab information to allow reasonable debugging of inline functions
-(possibly they should show up on a stack backtrace? With a note
-indicating that they weren't "real"?).
-
-Modify the naked "until" command to step until past the current source
-line, rather than past the current pc value. This is tricky simply
-because the low level routines have no way of specifying a multi-line
-step range, and there is no way of saying "don't print stuff when we
-stop" from above (otherwise could just call step many times).
+--
Modify the handling of symbols grouped through BINCL/EINCL stabs to
allocate a partial symtab for each BINCL/EINCL grouping. This will
@@ -871,17 +1557,14 @@ seriously decrease the size of inter-psymtab dependencies and hence
lessen the amount that needs to be read in when a new source file is
accessed.
-Do an "x/i $pc" after each stepi or nexti.
-
-Modify all of the disassemblers to use printf_filtered to get correct
-more filtering.
-
-Modify gdb to work correctly with Pascal.
+--
Add a command for searching memory, a la adb. It specifies size,
mask, value, start address. ADB searches until it finds it or hits
an error (or is interrupted).
+--
+
Remove the range and type checking code and documentation, if not
going to implement.
diff --git a/gdb/abug-rom.c b/gdb/abug-rom.c
index e1bd628a8d6..0ade234a179 100644
--- a/gdb/abug-rom.c
+++ b/gdb/abug-rom.c
@@ -28,7 +28,7 @@
/* Prototypes for local functions. */
-static void abug_open PARAMS ((char *args, int from_tty));
+static void abug_open (char *args, int from_tty);
static void
abug_supply_register (regname, regnamelen, val, vallen)
diff --git a/gdb/acconfig.h b/gdb/acconfig.h
index 27b4d21cf19..74c3b6fdade 100644
--- a/gdb/acconfig.h
+++ b/gdb/acconfig.h
@@ -1,6 +1,12 @@
/* Define if compiling on Solaris 7. */
#undef _MSE_INT_H
+/* Define if your struct reg has r_fs. */
+#undef HAVE_STRUCT_REG_R_FS
+
+/* Define if your struct reg has r_gs. */
+#undef HAVE_STRUCT_REG_R_GS
+
/* Define if pstatus_t type is available */
#undef HAVE_PSTATUS_T
@@ -13,6 +19,21 @@
/* Define if gregset_t type is available. */
#undef HAVE_GREGSET_T
+/* Define if <sys/procfs.h> has prgregset_t. */
+#undef HAVE_PRGREGSET_T
+
+/* Define if <sys/procfs.h> has prfpregset_t. */
+#undef HAVE_PRFPREGSET_T
+
+/* Define if <sys/procfs.h> has lwpid_t. */
+#undef HAVE_LWPID_T
+
+/* Define if <sys/procfs.h> has psaddr_t. */
+#undef HAVE_PSADDR_T
+
+/* Define if the prfpregset_t type is broken. */
+#undef PRFPREGSET_T_BROKEN
+
/* Define if you want to use new multi-fd /proc interface
(replaces HAVE_MULTIPLE_PROC_FDS as well as other macros). */
#undef NEW_PROC_API
@@ -91,3 +112,6 @@
/* Define if <sys/ptrace.h> defines the PTRACE_GETXFPREGS request. */
#undef HAVE_PTRACE_GETXFPREGS
+
+/* Define if gnu-regex.c included with GDB should be used. */
+#undef USE_INCLUDED_REGEX
diff --git a/gdb/aclocal.m4 b/gdb/aclocal.m4
index 1a1183223c1..de9e2d5e5a0 100644
--- a/gdb/aclocal.m4
+++ b/gdb/aclocal.m4
@@ -872,6 +872,39 @@ dnl AC_SUBST(TIX_BUILD_INCLUDES)
dnl AC_SUBST(TIX_LIB_SPEC)
])
+# Add --enable-maintainer-mode option to configure.
+# From Jim Meyering
+
+# serial 1
+
+AC_DEFUN(AM_MAINTAINER_MODE,
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode is disabled by default
+ AC_ARG_ENABLE(maintainer-mode,
+[ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ USE_MAINTAINER_MODE=$enableval,
+ USE_MAINTAINER_MODE=no)
+ AC_MSG_RESULT($USE_MAINTAINER_MODE)
+ AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST(MAINT)dnl
+]
+)
+
+# Define a conditional.
+
+AC_DEFUN(AM_CONDITIONAL,
+[AC_SUBST($1_TRUE)
+AC_SUBST($1_FALSE)
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi])
+
# serial 1
diff --git a/gdb/alpha-nat.c b/gdb/alpha-nat.c
index 089e56fea10..4bf33b352a2 100644
--- a/gdb/alpha-nat.c
+++ b/gdb/alpha-nat.c
@@ -33,10 +33,8 @@
/* Prototypes for local functions. */
-static void fetch_osf_core_registers PARAMS ((char *,
- unsigned, int, CORE_ADDR));
-static void fetch_elf_core_registers PARAMS ((char *,
- unsigned, int, CORE_ADDR));
+static void fetch_osf_core_registers (char *, unsigned, int, CORE_ADDR);
+static void fetch_elf_core_registers (char *, unsigned, int, CORE_ADDR);
/* Size of elements in jmpbuf */
@@ -199,6 +197,9 @@ kernel_u_size ()
#if defined(USE_PROC_FS) || defined(HAVE_GREGSET_T)
#include <sys/procfs.h>
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
/*
* See the comment in m68k-tdep.c regarding the utility of these functions.
*/
diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c
index e4962d050b2..465efaca60f 100644
--- a/gdb/alpha-tdep.c
+++ b/gdb/alpha-tdep.c
@@ -34,35 +34,34 @@
/* Prototypes for local functions. */
-static alpha_extra_func_info_t push_sigtramp_desc PARAMS ((CORE_ADDR low_addr));
+static alpha_extra_func_info_t push_sigtramp_desc (CORE_ADDR low_addr);
-static CORE_ADDR read_next_frame_reg PARAMS ((struct frame_info *, int));
+static CORE_ADDR read_next_frame_reg (struct frame_info *, int);
-static CORE_ADDR heuristic_proc_start PARAMS ((CORE_ADDR));
+static CORE_ADDR heuristic_proc_start (CORE_ADDR);
-static alpha_extra_func_info_t heuristic_proc_desc PARAMS ((CORE_ADDR,
- CORE_ADDR,
- struct frame_info *));
+static alpha_extra_func_info_t heuristic_proc_desc (CORE_ADDR,
+ CORE_ADDR,
+ struct frame_info *);
-static alpha_extra_func_info_t find_proc_desc PARAMS ((CORE_ADDR,
- struct frame_info *));
+static alpha_extra_func_info_t find_proc_desc (CORE_ADDR,
+ struct frame_info *);
#if 0
-static int alpha_in_lenient_prologue PARAMS ((CORE_ADDR, CORE_ADDR));
+static int alpha_in_lenient_prologue (CORE_ADDR, CORE_ADDR);
#endif
-static void reinit_frame_cache_sfunc PARAMS ((char *, int,
- struct cmd_list_element *));
+static void reinit_frame_cache_sfunc (char *, int, struct cmd_list_element *);
-static CORE_ADDR after_prologue PARAMS ((CORE_ADDR pc,
- alpha_extra_func_info_t proc_desc));
+static CORE_ADDR after_prologue (CORE_ADDR pc,
+ alpha_extra_func_info_t proc_desc);
-static int alpha_in_prologue PARAMS ((CORE_ADDR pc,
- alpha_extra_func_info_t proc_desc));
+static int alpha_in_prologue (CORE_ADDR pc,
+ alpha_extra_func_info_t proc_desc);
-static int alpha_about_to_return PARAMS ((CORE_ADDR pc));
+static int alpha_about_to_return (CORE_ADDR pc);
-void _initialize_alpha_tdep PARAMS ((void));
+void _initialize_alpha_tdep (void);
/* Heuristic_proc_start may hunt through the text section for a long
time across a 2400 baud serial line. Allows the user to limit this
@@ -169,7 +168,7 @@ struct linked_proc_info
#ifndef TM_LINUXALPHA_H
/* HACK: Provide a prototype when compiling this file for non
linuxalpha targets. */
-long alpha_linux_sigtramp_offset PARAMS ((CORE_ADDR pc));
+long alpha_linux_sigtramp_offset (CORE_ADDR pc);
#endif
long
alpha_linux_sigtramp_offset (pc)
diff --git a/gdb/alphabsd-nat.c b/gdb/alphabsd-nat.c
new file mode 100644
index 00000000000..40937a81943
--- /dev/null
+++ b/gdb/alphabsd-nat.c
@@ -0,0 +1,187 @@
+/* Native-dependent code for Alpha BSD's.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include "defs.h"
+#include "inferior.h"
+
+#include <sys/types.h>
+#include <sys/ptrace.h>
+#include <machine/reg.h>
+
+#ifdef HAVE_SYS_PROCFS_H
+#include <sys/procfs.h>
+#endif
+
+#ifndef HAVE_GREGSET_T
+typedef struct reg gregset_t;
+#endif
+
+#ifndef HAVE_FPREGSET_T
+typedef struct fpreg fpregset_t;
+#endif
+
+#include "gregset.h"
+
+/* Number of general-purpose registers. */
+#define NUM_GREGS 32
+
+/* Number of floating point registers. */
+#define NUM_FPREGS 31
+
+
+/* Transfering the registers between GDB, inferiors and core files. */
+
+/* Fill GDB's register array with the genereal-purpose register values
+ in *GREGSETP. */
+
+void
+supply_gregset (gregset_t *gregsetp)
+{
+ int i;
+
+ for (i = 0; i < NUM_GREGS; i++)
+ {
+ if (CANNOT_FETCH_REGISTER (i))
+ supply_register (i, NULL);
+ else
+ supply_register (i, (char *) &gregsetp->r_regs[i]);
+ }
+
+ /* The PC travels in the R_ZERO slot. */
+ supply_register (PC_REGNUM, (char *) &gregsetp->r_regs[R_ZERO]);
+}
+
+/* Fill register REGNO (if it is a general-purpose register) in
+ *GREGSETPS with the value in GDB's register array. If REGNO is -1,
+ do this for all registers. */
+
+void
+fill_gregset (gregset_t *gregsetp, int regno)
+{
+ int i;
+
+ for (i = 0; i < NUM_GREGS; i++)
+ if ((regno == -1 || regno == i) && ! CANNOT_STORE_REGISTER (i))
+ memcpy (&gregsetp->r_regs[i], &registers[REGISTER_BYTE (i)],
+ REGISTER_RAW_SIZE (i));
+
+ /* The PC travels in the R_ZERO slot. */
+ if (regno == -1 || regno == PC_REGNUM)
+ memcpy (&gregsetp->r_regs[R_ZERO], &registers[REGISTER_BYTE (PC_REGNUM)],
+ REGISTER_RAW_SIZE (PC_REGNUM));
+}
+
+/* Fill GDB's register array with the floating-point register values
+ in *FPREGSETP. */
+
+void
+supply_fpregset (fpregset_t *fpregsetp)
+{
+ int i;
+
+ for (i = FP0_REGNUM; i < FP0_REGNUM + NUM_FPREGS; i++)
+ {
+ if (CANNOT_FETCH_REGISTER (i))
+ supply_register (i, NULL);
+ else
+ supply_register (i, (char *) &fpregsetp->fpr_regs[i - FP0_REGNUM]);
+ }
+
+ supply_register (FPCR_REGNUM, (char *) &fpregsetp->fpr_cr);
+}
+
+/* Fill register REGNO (if it is a floating-point register) in
+ *FPREGSETP with the value in GDB's register array. If REGNO is -1,
+ do this for all registers. */
+
+void
+fill_fpregset (fpregset_t *fpregsetp, int regno)
+{
+ int i;
+
+ for (i = FP0_REGNUM; i < FP0_REGNUM + NUM_FPREGS; i++)
+ if ((regno == -1 || regno == i) && ! CANNOT_STORE_REGISTER (i))
+ memcpy (&fpregsetp->fpr_regs[i - FP0_REGNUM],
+ &registers[REGISTER_BYTE (i)], REGISTER_RAW_SIZE (i));
+
+ if (regno == -1 || regno == FPCR_REGNUM)
+ memcpy (&fpregsetp->fpr_cr, &registers[REGISTER_BYTE (FPCR_REGNUM)],
+ REGISTER_RAW_SIZE (FPCR_REGNUM));
+}
+
+/* Fetch register REGNO from the inferior. If REGNO is -1, do this
+ for all registers (including the floating point registers). */
+
+void
+fetch_inferior_registers (int regno)
+{
+ gregset_t gregs;
+
+ if (ptrace (PT_GETREGS, inferior_pid, (PTRACE_ARG3_TYPE) &gregs, 0) == -1)
+ perror_with_name ("Couldn't get registers");
+
+ supply_gregset (&gregs);
+
+ if (regno == -1 || regno >= FP0_REGNUM)
+ {
+ fpregset_t fpregs;
+
+ if (ptrace (PT_GETFPREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
+ perror_with_name ("Couldn't get floating point status");
+
+ supply_fpregset (&fpregs);
+ }
+
+ /* Reset virtual frame pointer. */
+ supply_register (FP_REGNUM, NULL);
+}
+
+/* Store register REGNO back into the inferior. If REGNO is -1, do
+ this for all registers (including the floating point registers). */
+
+void
+store_inferior_registers (int regno)
+{
+ gregset_t gregs;
+
+ if (ptrace (PT_GETREGS, inferior_pid, (PTRACE_ARG3_TYPE) &gregs, 0) == -1)
+ perror_with_name ("Couldn't get registers");
+
+ fill_gregset (&gregs, regno);
+
+ if (ptrace (PT_SETREGS, inferior_pid, (PTRACE_ARG3_TYPE) &gregs, 0) == -1)
+ perror_with_name ("Couldn't write registers");
+
+ if (regno == -1 || regno >= FP0_REGNUM)
+ {
+ fpregset_t fpregs;
+
+ if (ptrace (PT_GETFPREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
+ perror_with_name ("Couldn't get floating point status");
+
+ fill_fpregset (&fpregs, regno);
+
+ if (ptrace (PT_SETFPREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
+ perror_with_name ("Couldn't write floating point status");
+ }
+}
diff --git a/gdb/annotate.c b/gdb/annotate.c
index 4508ad8cf06..ee26290a95e 100644
--- a/gdb/annotate.c
+++ b/gdb/annotate.c
@@ -28,17 +28,17 @@
/* Prototypes for local functions. */
-extern void _initialize_annotate PARAMS ((void));
+extern void _initialize_annotate (void);
-static void print_value_flags PARAMS ((struct type *));
+static void print_value_flags (struct type *);
-static void breakpoint_changed PARAMS ((struct breakpoint *));
+static void breakpoint_changed (struct breakpoint *);
-void (*annotate_starting_hook) PARAMS ((void));
-void (*annotate_stopped_hook) PARAMS ((void));
-void (*annotate_signalled_hook) PARAMS ((void));
-void (*annotate_signal_hook) PARAMS ((void));
-void (*annotate_exited_hook) PARAMS ((void));
+void (*annotate_starting_hook) (void);
+void (*annotate_stopped_hook) (void);
+void (*annotate_signalled_hook) (void);
+void (*annotate_signal_hook) (void);
+void (*annotate_exited_hook) (void);
static int ignore_count_changed = 0;
diff --git a/gdb/annotate.h b/gdb/annotate.h
index 0521896f23d..3e4711235bc 100644
--- a/gdb/annotate.h
+++ b/gdb/annotate.h
@@ -21,85 +21,85 @@
#include "symtab.h"
#include "gdbtypes.h"
-extern void breakpoints_changed PARAMS ((void));
+extern void breakpoints_changed (void);
extern void annotate_ignore_count_change (void);
-extern void annotate_breakpoint PARAMS ((int));
-extern void annotate_catchpoint PARAMS ((int));
-extern void annotate_watchpoint PARAMS ((int));
-extern void annotate_starting PARAMS ((void));
-extern void annotate_stopped PARAMS ((void));
-extern void annotate_exited PARAMS ((int));
-extern void annotate_signalled PARAMS ((void));
-extern void annotate_signal_name PARAMS ((void));
-extern void annotate_signal_name_end PARAMS ((void));
-extern void annotate_signal_string PARAMS ((void));
-extern void annotate_signal_string_end PARAMS ((void));
-extern void annotate_signal PARAMS ((void));
-
-extern void annotate_breakpoints_headers PARAMS ((void));
-extern void annotate_field PARAMS ((int));
-extern void annotate_breakpoints_table PARAMS ((void));
-extern void annotate_record PARAMS ((void));
-extern void annotate_breakpoints_table_end PARAMS ((void));
-
-extern void annotate_frames_invalid PARAMS ((void));
+extern void annotate_breakpoint (int);
+extern void annotate_catchpoint (int);
+extern void annotate_watchpoint (int);
+extern void annotate_starting (void);
+extern void annotate_stopped (void);
+extern void annotate_exited (int);
+extern void annotate_signalled (void);
+extern void annotate_signal_name (void);
+extern void annotate_signal_name_end (void);
+extern void annotate_signal_string (void);
+extern void annotate_signal_string_end (void);
+extern void annotate_signal (void);
+
+extern void annotate_breakpoints_headers (void);
+extern void annotate_field (int);
+extern void annotate_breakpoints_table (void);
+extern void annotate_record (void);
+extern void annotate_breakpoints_table_end (void);
+
+extern void annotate_frames_invalid (void);
struct type;
-extern void annotate_field_begin PARAMS ((struct type *));
-extern void annotate_field_name_end PARAMS ((void));
-extern void annotate_field_value PARAMS ((void));
-extern void annotate_field_end PARAMS ((void));
-
-extern void annotate_quit PARAMS ((void));
-extern void annotate_error PARAMS ((void));
-extern void annotate_error_begin PARAMS ((void));
-
-extern void annotate_value_history_begin PARAMS ((int, struct type *));
-extern void annotate_value_begin PARAMS ((struct type *));
-extern void annotate_value_history_value PARAMS ((void));
-extern void annotate_value_history_end PARAMS ((void));
-extern void annotate_value_end PARAMS ((void));
-
-extern void annotate_display_begin PARAMS ((void));
-extern void annotate_display_number_end PARAMS ((void));
-extern void annotate_display_format PARAMS ((void));
-extern void annotate_display_expression PARAMS ((void));
-extern void annotate_display_expression_end PARAMS ((void));
-extern void annotate_display_value PARAMS ((void));
-extern void annotate_display_end PARAMS ((void));
-
-extern void annotate_arg_begin PARAMS ((void));
-extern void annotate_arg_name_end PARAMS ((void));
-extern void annotate_arg_value PARAMS ((struct type *));
-extern void annotate_arg_end PARAMS ((void));
-
-extern void annotate_source PARAMS ((char *, int, int, int, CORE_ADDR));
-
-extern void annotate_frame_begin PARAMS ((int, CORE_ADDR));
-extern void annotate_function_call PARAMS ((void));
-extern void annotate_signal_handler_caller PARAMS ((void));
-extern void annotate_frame_address PARAMS ((void));
-extern void annotate_frame_address_end PARAMS ((void));
-extern void annotate_frame_function_name PARAMS ((void));
-extern void annotate_frame_args PARAMS ((void));
-extern void annotate_frame_source_begin PARAMS ((void));
-extern void annotate_frame_source_file PARAMS ((void));
-extern void annotate_frame_source_file_end PARAMS ((void));
-extern void annotate_frame_source_line PARAMS ((void));
-extern void annotate_frame_source_end PARAMS ((void));
-extern void annotate_frame_where PARAMS ((void));
-extern void annotate_frame_end PARAMS ((void));
-
-extern void annotate_array_section_begin PARAMS ((int, struct type *));
-extern void annotate_elt_rep PARAMS ((unsigned int));
-extern void annotate_elt_rep_end PARAMS ((void));
-extern void annotate_elt PARAMS ((void));
-extern void annotate_array_section_end PARAMS ((void));
-
-extern void (*annotate_starting_hook) PARAMS ((void));
-extern void (*annotate_stopped_hook) PARAMS ((void));
-extern void (*annotate_signalled_hook) PARAMS ((void));
-extern void (*annotate_signal_hook) PARAMS ((void));
-extern void (*annotate_exited_hook) PARAMS ((void));
+extern void annotate_field_begin (struct type *);
+extern void annotate_field_name_end (void);
+extern void annotate_field_value (void);
+extern void annotate_field_end (void);
+
+extern void annotate_quit (void);
+extern void annotate_error (void);
+extern void annotate_error_begin (void);
+
+extern void annotate_value_history_begin (int, struct type *);
+extern void annotate_value_begin (struct type *);
+extern void annotate_value_history_value (void);
+extern void annotate_value_history_end (void);
+extern void annotate_value_end (void);
+
+extern void annotate_display_begin (void);
+extern void annotate_display_number_end (void);
+extern void annotate_display_format (void);
+extern void annotate_display_expression (void);
+extern void annotate_display_expression_end (void);
+extern void annotate_display_value (void);
+extern void annotate_display_end (void);
+
+extern void annotate_arg_begin (void);
+extern void annotate_arg_name_end (void);
+extern void annotate_arg_value (struct type *);
+extern void annotate_arg_end (void);
+
+extern void annotate_source (char *, int, int, int, CORE_ADDR);
+
+extern void annotate_frame_begin (int, CORE_ADDR);
+extern void annotate_function_call (void);
+extern void annotate_signal_handler_caller (void);
+extern void annotate_frame_address (void);
+extern void annotate_frame_address_end (void);
+extern void annotate_frame_function_name (void);
+extern void annotate_frame_args (void);
+extern void annotate_frame_source_begin (void);
+extern void annotate_frame_source_file (void);
+extern void annotate_frame_source_file_end (void);
+extern void annotate_frame_source_line (void);
+extern void annotate_frame_source_end (void);
+extern void annotate_frame_where (void);
+extern void annotate_frame_end (void);
+
+extern void annotate_array_section_begin (int, struct type *);
+extern void annotate_elt_rep (unsigned int);
+extern void annotate_elt_rep_end (void);
+extern void annotate_elt (void);
+extern void annotate_array_section_end (void);
+
+extern void (*annotate_starting_hook) (void);
+extern void (*annotate_stopped_hook) (void);
+extern void (*annotate_signalled_hook) (void);
+extern void (*annotate_signal_hook) (void);
+extern void (*annotate_exited_hook) (void);
diff --git a/gdb/arc-tdep.c b/gdb/arc-tdep.c
index 2a1f0006702..8b69770edbe 100644
--- a/gdb/arc-tdep.c
+++ b/gdb/arc-tdep.c
@@ -90,9 +90,9 @@ int debug_pipeline_p;
| ((d) & 511))
/* Codestream stuff. */
-static void codestream_read PARAMS ((unsigned int *, int));
-static void codestream_seek PARAMS ((CORE_ADDR));
-static unsigned int codestream_fill PARAMS ((int));
+static void codestream_read (unsigned int *, int);
+static void codestream_seek (CORE_ADDR);
+static unsigned int codestream_fill (int);
#define CODESTREAM_BUFSIZ 16
static CORE_ADDR codestream_next_addr;
diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c
index 9048bd75419..be2433d37e6 100644
--- a/gdb/arch-utils.c
+++ b/gdb/arch-utils.c
@@ -41,6 +41,8 @@
#include "symfile.h" /* for overlay functions */
#endif
+#include "floatformat.h"
+
/* Convenience macro for allocting typesafe memory. */
#ifndef XMALLOC
@@ -97,6 +99,12 @@ generic_frameless_function_invocation_not (struct frame_info *fi)
return 0;
}
+int
+generic_return_value_on_stack_not (struct type *type)
+{
+ return 0;
+}
+
char *
legacy_register_name (int i)
{
@@ -127,6 +135,77 @@ generic_remote_translate_xfer_address (CORE_ADDR gdb_addr, int gdb_len,
*rem_len = gdb_len;
}
+int
+generic_prologue_frameless_p (CORE_ADDR ip)
+{
+#ifdef SKIP_PROLOGUE_FRAMELESS_P
+ return ip == SKIP_PROLOGUE_FRAMELESS_P (ip);
+#else
+ return ip == SKIP_PROLOGUE (ip);
+#endif
+}
+
+
+/* Helper functions for INNER_THAN */
+
+int
+core_addr_lessthan (lhs, rhs)
+ CORE_ADDR lhs;
+ CORE_ADDR rhs;
+{
+ return (lhs < rhs);
+}
+
+int
+core_addr_greaterthan (lhs, rhs)
+ CORE_ADDR lhs;
+ CORE_ADDR rhs;
+{
+ return (lhs > rhs);
+}
+
+
+/* Helper functions for TARGET_{FLOAT,DOUBLE}_FORMAT */
+
+const struct floatformat *
+default_float_format (struct gdbarch *gdbarch)
+{
+#if GDB_MULTI_ARCH
+ int byte_order = gdbarch_byte_order (gdbarch);
+#else
+ int byte_order = TARGET_BYTE_ORDER;
+#endif
+ switch (byte_order)
+ {
+ case BIG_ENDIAN:
+ return &floatformat_ieee_single_big;
+ case LITTLE_ENDIAN:
+ return &floatformat_ieee_single_little;
+ default:
+ internal_error ("default_float_format: bad byte order");
+ }
+}
+
+
+const struct floatformat *
+default_double_format (struct gdbarch *gdbarch)
+{
+#if GDB_MULTI_ARCH
+ int byte_order = gdbarch_byte_order (gdbarch);
+#else
+ int byte_order = TARGET_BYTE_ORDER;
+#endif
+ switch (byte_order)
+ {
+ case BIG_ENDIAN:
+ return &floatformat_ieee_double_big;
+ case LITTLE_ENDIAN:
+ return &floatformat_ieee_double_little;
+ default:
+ internal_error ("default_double_format: bad byte order");
+ }
+}
+
/* */
extern initialize_file_ftype __initialize_gdbarch_utils;
diff --git a/gdb/arch-utils.h b/gdb/arch-utils.h
index 57da8ceb45f..a9ff6f52ad9 100644
--- a/gdb/arch-utils.h
+++ b/gdb/arch-utils.h
@@ -39,6 +39,11 @@ extern gdbarch_breakpoint_from_pc_ftype legacy_breakpoint_from_pc;
/* Frameless functions not identifable. */
extern gdbarch_frameless_function_invocation_ftype generic_frameless_function_invocation_not;
+/* Only structures, unions, and arrays are returned using the struct
+ convention. Note that arrays are never passed by value in the C
+ language family, so that case is irrelevant for C. */
+extern gdbarch_return_value_on_stack_ftype generic_return_value_on_stack_not;
+
/* Map onto old REGISTER_NAMES. */
extern char *legacy_register_name (int i);
@@ -49,4 +54,17 @@ extern int legacy_sizeof_call_dummy_words;
/* Typical remote_translate_xfer_address */
extern gdbarch_remote_translate_xfer_address_ftype generic_remote_translate_xfer_address;
+/* Generic implementation of prologue_frameless_p. Just calls
+ SKIP_PROLOG and checks the return value to see if it actually
+ changed. */
+extern gdbarch_prologue_frameless_p_ftype generic_prologue_frameless_p;
+
+/* The only possible cases for inner_than. */
+extern int core_addr_lessthan (CORE_ADDR lhs, CORE_ADDR rhs);
+extern int core_addr_greaterthan (CORE_ADDR lhs, CORE_ADDR rhs);
+
+/* Floating point values. */
+extern const struct floatformat *default_float_format (struct gdbarch *gdbarch);
+extern const struct floatformat *default_double_format (struct gdbarch *gdbarch);
+
#endif
diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c
index b8d30e590af..7c8e04b1885 100644
--- a/gdb/arm-linux-nat.c
+++ b/gdb/arm-linux-nat.c
@@ -26,6 +26,10 @@
#include <sys/user.h>
#include <sys/ptrace.h>
#include <sys/utsname.h>
+#include <sys/procfs.h>
+
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
extern int arm_apcs_32;
@@ -71,6 +75,27 @@ FPA11;
static unsigned int os_version, os_major, os_minor, os_release;
+/* On Linux, threads are implemented as pseudo-processes, in which
+ case we may be tracing more than one process at a time. In that
+ case, inferior_pid will contain the main process ID and the
+ individual thread (process) ID mashed together. These macros are
+ used to separate them out. These definitions should be overridden
+ if thread support is included. */
+
+#if !defined (PIDGET) /* Default definition for PIDGET/TIDGET. */
+#define PIDGET(PID) PID
+#define TIDGET(PID) 0
+#endif
+
+int
+get_thread_id (int inferior_pid)
+{
+ int tid = TIDGET (inferior_pid);
+ if (0 == tid) tid = inferior_pid;
+ return tid;
+}
+#define GET_THREAD_ID(PID) get_thread_id ((PID));
+
static void
fetch_nwfpe_single (unsigned int fn, FPA11 * fpa11)
{
@@ -114,6 +139,30 @@ fetch_nwfpe_extended (unsigned int fn, FPA11 * fpa11)
}
static void
+fetch_nwfpe_register (int regno, FPA11 * fpa11)
+{
+ int fn = regno - F0_REGNUM;
+
+ switch (fpa11->fType[fn])
+ {
+ case typeSingle:
+ fetch_nwfpe_single (fn, fpa11);
+ break;
+
+ case typeDouble:
+ fetch_nwfpe_double (fn, fpa11);
+ break;
+
+ case typeExtended:
+ fetch_nwfpe_extended (fn, fpa11);
+ break;
+
+ default:
+ fetch_nwfpe_none (fn);
+ }
+}
+
+static void
store_nwfpe_single (unsigned int fn, FPA11 * fpa11)
{
unsigned int mem[3];
@@ -146,20 +195,96 @@ store_nwfpe_extended (unsigned int fn, FPA11 * fpa11)
fpa11->fType[fn] = typeDouble;
}
-/* Get the whole floating point state of the process and store the
- floating point stack into registers[]. */
+void
+store_nwfpe_register (int regno, FPA11 * fpa11)
+{
+ if (register_valid[regno])
+ {
+ unsigned int fn = regno - F0_REGNUM;
+ switch (fpa11->fType[fn])
+ {
+ case typeSingle:
+ store_nwfpe_single (fn, fpa11);
+ break;
+
+ case typeDouble:
+ store_nwfpe_double (fn, fpa11);
+ break;
+
+ case typeExtended:
+ store_nwfpe_extended (fn, fpa11);
+ break;
+ }
+ }
+}
+
+
+/* Get the value of a particular register from the floating point
+ state of the process and store it into registers[]. */
+
+static void
+fetch_fpregister (int regno)
+{
+ int ret, tid;
+ FPA11 fp;
+
+ /* Get the thread id for the ptrace call. */
+ tid = GET_THREAD_ID (inferior_pid);
+
+ /* Read the floating point state. */
+ ret = ptrace (PT_GETFPREGS, tid, 0, &fp);
+ if (ret < 0)
+ {
+ warning ("Unable to fetch floating point register.");
+ return;
+ }
+
+ /* Fetch fpsr. */
+ if (FPS_REGNUM == regno)
+ supply_register (FPS_REGNUM, (char *) &fp.fpsr);
+
+ /* Fetch the floating point register. */
+ if (regno >= F0_REGNUM && regno <= F7_REGNUM)
+ {
+ int fn = regno - F0_REGNUM;
+
+ switch (fp.fType[fn])
+ {
+ case typeSingle:
+ fetch_nwfpe_single (fn, &fp);
+ break;
+
+ case typeDouble:
+ fetch_nwfpe_double (fn, &fp);
+ break;
+
+ case typeExtended:
+ fetch_nwfpe_extended (fn, &fp);
+ break;
+
+ default:
+ fetch_nwfpe_none (fn);
+ }
+ }
+}
+
+/* Get the whole floating point state of the process and store it
+ into registers[]. */
static void
fetch_fpregs (void)
{
- int ret, regno;
+ int ret, regno, tid;
FPA11 fp;
+ /* Get the thread id for the ptrace call. */
+ tid = GET_THREAD_ID (inferior_pid);
+
/* Read the floating point state. */
- ret = ptrace (PT_GETFPREGS, inferior_pid, 0, &fp);
+ ret = ptrace (PT_GETFPREGS, tid, 0, &fp);
if (ret < 0)
{
- warning ("Unable to fetch the floating point state.");
+ warning ("Unable to fetch the floating point registers.");
return;
}
@@ -191,15 +316,64 @@ fetch_fpregs (void)
}
}
+/* Save a particular register into the floating point state of the
+ process using the contents from registers[]. */
+
+static void
+store_fpregister (int regno)
+{
+ int ret, tid;
+ FPA11 fp;
+
+ /* Get the thread id for the ptrace call. */
+ tid = GET_THREAD_ID (inferior_pid);
+
+ /* Read the floating point state. */
+ ret = ptrace (PT_GETFPREGS, tid, 0, &fp);
+ if (ret < 0)
+ {
+ warning ("Unable to fetch the floating point registers.");
+ return;
+ }
+
+ /* Store fpsr. */
+ if (FPS_REGNUM == regno && register_valid[FPS_REGNUM])
+ read_register_gen (FPS_REGNUM, (char *) &fp.fpsr);
+
+ /* Store the floating point register. */
+ if (regno >= F0_REGNUM && regno <= F7_REGNUM)
+ {
+ store_nwfpe_register (regno, &fp);
+ }
+
+ ret = ptrace (PTRACE_SETFPREGS, tid, 0, &fp);
+ if (ret < 0)
+ {
+ warning ("Unable to store floating point register.");
+ return;
+ }
+}
+
/* Save the whole floating point state of the process using
the contents from registers[]. */
static void
store_fpregs (void)
{
- int ret, regno;
+ int ret, regno, tid;
FPA11 fp;
+ /* Get the thread id for the ptrace call. */
+ tid = GET_THREAD_ID (inferior_pid);
+
+ /* Read the floating point state. */
+ ret = ptrace (PT_GETFPREGS, tid, 0, &fp);
+ if (ret < 0)
+ {
+ warning ("Unable to fetch the floating point registers.");
+ return;
+ }
+
/* Store fpsr. */
if (register_valid[FPS_REGNUM])
read_register_gen (FPS_REGNUM, (char *) &fp.fpsr);
@@ -207,32 +381,52 @@ store_fpregs (void)
/* Store the floating point registers. */
for (regno = F0_REGNUM; regno <= F7_REGNUM; regno++)
{
- if (register_valid[regno])
- {
- unsigned int fn = regno - F0_REGNUM;
- switch (fp.fType[fn])
- {
- case typeSingle:
- store_nwfpe_single (fn, &fp);
- break;
-
- case typeDouble:
- store_nwfpe_double (fn, &fp);
- break;
-
- case typeExtended:
- store_nwfpe_extended (fn, &fp);
- break;
- }
- }
+ fetch_nwfpe_register (regno, &fp);
+ }
+
+ ret = ptrace (PTRACE_SETFPREGS, tid, 0, &fp);
+ if (ret < 0)
+ {
+ warning ("Unable to store floating point registers.");
+ return;
}
+}
+
+/* Fetch a general register of the process and store into
+ registers[]. */
+
+static void
+fetch_register (int regno)
+{
+ int ret, tid;
+ struct pt_regs regs;
- ret = ptrace (PTRACE_SETFPREGS, inferior_pid, 0, &fp);
+ /* Get the thread id for the ptrace call. */
+ tid = GET_THREAD_ID (inferior_pid);
+
+ ret = ptrace (PTRACE_GETREGS, tid, 0, &regs);
if (ret < 0)
{
- warning ("Unable to store floating point state.");
+ warning ("Unable to fetch general register.");
return;
}
+
+ if (regno >= A1_REGNUM && regno < PC_REGNUM)
+ supply_register (regno, (char *) &regs.uregs[regno]);
+
+ if (PS_REGNUM == regno)
+ {
+ if (arm_apcs_32)
+ supply_register (PS_REGNUM, (char *) &regs.uregs[CPSR_REGNUM]);
+ else
+ supply_register (PS_REGNUM, (char *) &regs.uregs[PC_REGNUM]);
+ }
+
+ if (PC_REGNUM == regno)
+ {
+ regs.uregs[PC_REGNUM] = ADDR_BITS_REMOVE (regs.uregs[PC_REGNUM]);
+ supply_register (PC_REGNUM, (char *) &regs.uregs[PC_REGNUM]);
+ }
}
/* Fetch all general registers of the process and store into
@@ -241,10 +435,13 @@ store_fpregs (void)
static void
fetch_regs (void)
{
- int ret, regno;
+ int ret, regno, tid;
struct pt_regs regs;
- ret = ptrace (PTRACE_GETREGS, inferior_pid, 0, &regs);
+ /* Get the thread id for the ptrace call. */
+ tid = GET_THREAD_ID (inferior_pid);
+
+ ret = ptrace (PTRACE_GETREGS, tid, 0, &regs);
if (ret < 0)
{
warning ("Unable to fetch general registers.");
@@ -267,12 +464,47 @@ fetch_regs (void)
registers[]. */
static void
+store_register (int regno)
+{
+ int ret, tid;
+ struct pt_regs regs;
+
+ if (!register_valid[regno])
+ return;
+
+ /* Get the thread id for the ptrace call. */
+ tid = GET_THREAD_ID (inferior_pid);
+
+ /* Get the general registers from the process. */
+ ret = ptrace (PTRACE_GETREGS, tid, 0, &regs);
+ if (ret < 0)
+ {
+ warning ("Unable to fetch general registers.");
+ return;
+ }
+
+ if (regno >= A1_REGNUM && regno <= PC_REGNUM)
+ read_register_gen (regno, (char *) &regs.uregs[regno]);
+
+ ret = ptrace (PTRACE_SETREGS, tid, 0, &regs);
+ if (ret < 0)
+ {
+ warning ("Unable to store general register.");
+ return;
+ }
+}
+
+static void
store_regs (void)
{
- int ret, regno;
+ int ret, regno, tid;
struct pt_regs regs;
- ret = ptrace (PTRACE_GETREGS, inferior_pid, 0, &regs);
+ /* Get the thread id for the ptrace call. */
+ tid = GET_THREAD_ID (inferior_pid);
+
+ /* Fetch the general registers. */
+ ret = ptrace (PTRACE_GETREGS, tid, 0, &regs);
if (ret < 0)
{
warning ("Unable to fetch general registers.");
@@ -285,7 +517,7 @@ store_regs (void)
read_register_gen (regno, (char *) &regs.uregs[regno]);
}
- ret = ptrace (PTRACE_SETREGS, inferior_pid, 0, &regs);
+ ret = ptrace (PTRACE_SETREGS, tid, 0, &regs);
if (ret < 0)
{
@@ -301,11 +533,19 @@ store_regs (void)
void
fetch_inferior_registers (int regno)
{
- if ((regno < F0_REGNUM) || (regno > FPS_REGNUM))
- fetch_regs ();
+ if (-1 == regno)
+ {
+ fetch_regs ();
+ fetch_fpregs ();
+ }
+ else
+ {
+ if (regno < F0_REGNUM || regno > FPS_REGNUM)
+ fetch_register (regno);
- if (((regno >= F0_REGNUM) && (regno <= FPS_REGNUM)) || (regno == -1))
- fetch_fpregs ();
+ if (regno >= F0_REGNUM && regno <= FPS_REGNUM)
+ fetch_fpregister (regno);
+ }
}
/* Store registers back into the inferior. Store all registers if
@@ -315,143 +555,118 @@ fetch_inferior_registers (int regno)
void
store_inferior_registers (int regno)
{
- if ((regno < F0_REGNUM) || (regno > FPS_REGNUM))
- store_regs ();
+ if (-1 == regno)
+ {
+ store_regs ();
+ store_fpregs ();
+ }
+ else
+ {
+ if ((regno < F0_REGNUM) || (regno > FPS_REGNUM))
+ store_register (regno);
- if (((regno >= F0_REGNUM) && (regno <= FPS_REGNUM)) || (regno == -1))
- store_fpregs ();
+ if ((regno >= F0_REGNUM) && (regno <= FPS_REGNUM))
+ store_fpregister (regno);
+ }
}
-/*
- Dynamic Linking on ARM Linux
- ----------------------------
-
- Note: PLT = procedure linkage table
- GOT = global offset table
-
- As much as possible, ELF dynamic linking defers the resolution of
- jump/call addresses until the last minute. The technique used is
- inspired by the i386 ELF design, and is based on the following
- constraints.
-
- 1) The calling technique should not force a change in the assembly
- code produced for apps; it MAY cause changes in the way assembly
- code is produced for position independent code (i.e. shared
- libraries).
-
- 2) The technique must be such that all executable areas must not be
- modified; and any modified areas must not be executed.
-
- To do this, there are three steps involved in a typical jump:
-
- 1) in the code
- 2) through the PLT
- 3) using a pointer from the GOT
-
- When the executable or library is first loaded, each GOT entry is
- initialized to point to the code which implements dynamic name
- resolution and code finding. This is normally a function in the
- program interpreter (on ARM Linux this is usually ld-linux.so.2,
- but it does not have to be). On the first invocation, the function
- is located and the GOT entry is replaced with the real function
- address. Subsequent calls go through steps 1, 2 and 3 and end up
- calling the real code.
+/* Fill register regno (if it is a general-purpose register) in
+ *gregsetp with the appropriate value from GDB's register array.
+ If regno is -1, do this for all registers. */
- 1) In the code:
-
- b function_call
- bl function_call
-
- This is typical ARM code using the 26 bit relative branch or branch
- and link instructions. The target of the instruction
- (function_call is usually the address of the function to be called.
- In position independent code, the target of the instruction is
- actually an entry in the PLT when calling functions in a shared
- library. Note that this call is identical to a normal function
- call, only the target differs.
-
- 2) In the PLT:
-
- The PLT is a synthetic area, created by the linker. It exists in
- both executables and libraries. It is an array of stubs, one per
- imported function call. It looks like this:
-
- PLT[0]:
- str lr, [sp, #-4]! @push the return address (lr)
- ldr lr, [pc, #16] @load from 6 words ahead
- add lr, pc, lr @form an address for GOT[0]
- ldr pc, [lr, #8]! @jump to the contents of that addr
-
- The return address (lr) is pushed on the stack and used for
- calculations. The load on the second line loads the lr with
- &GOT[3] - . - 20. The addition on the third leaves:
-
- lr = (&GOT[3] - . - 20) + (. + 8)
- lr = (&GOT[3] - 12)
- lr = &GOT[0]
-
- On the fourth line, the pc and lr are both updated, so that:
+void
+fill_gregset (gregset_t *gregsetp, int regno)
+{
+ if (-1 == regno)
+ {
+ int regnum;
+ for (regnum = A1_REGNUM; regnum <= PC_REGNUM; regnum++)
+ if (register_valid[regnum])
+ read_register_gen (regnum, (char *) &(*gregsetp)[regnum]);
+ }
+ else if (regno >= A1_REGNUM && regno <= PC_REGNUM)
+ {
+ if (register_valid[regno])
+ read_register_gen (regno, (char *) &(*gregsetp)[regno]);
+ }
- pc = GOT[2]
- lr = &GOT[0] + 8
- = &GOT[2]
+ if (PS_REGNUM == regno || -1 == regno)
+ {
+ if (register_valid[regno] || -1 == regno)
+ {
+ if (arm_apcs_32)
+ read_register_gen (PS_REGNUM, (char *) &(*gregsetp)[CPSR_REGNUM]);
+ else
+ read_register_gen (PC_REGNUM, (char *) &(*gregsetp)[PC_REGNUM]);
+ }
+ }
+
+}
- NOTE: PLT[0] borrows an offset .word from PLT[1]. This is a little
- "tight", but allows us to keep all the PLT entries the same size.
+/* Fill GDB's register array with the general-purpose register values
+ in *gregsetp. */
- PLT[n+1]:
- ldr ip, [pc, #4] @load offset from gotoff
- add ip, pc, ip @add the offset to the pc
- ldr pc, [ip] @jump to that address
- gotoff: .word GOT[n+3] - .
+void
+supply_gregset (gregset_t *gregsetp)
+{
+ int regno, reg_pc;
- The load on the first line, gets an offset from the fourth word of
- the PLT entry. The add on the second line makes ip = &GOT[n+3],
- which contains either a pointer to PLT[0] (the fixup trampoline) or
- a pointer to the actual code.
+ for (regno = A1_REGNUM; regno < PC_REGNUM; regno++)
+ supply_register (regno, (char *) &(*gregsetp)[regno]);
- 3) In the GOT:
+ if (arm_apcs_32)
+ supply_register (PS_REGNUM, (char *) &(*gregsetp)[CPSR_REGNUM]);
+ else
+ supply_register (PS_REGNUM, (char *) &(*gregsetp)[PC_REGNUM]);
- The GOT contains helper pointers for both code (PLT) fixups and
- data fixups. The first 3 entries of the GOT are special. The next
- M entries (where M is the number of entries in the PLT) belong to
- the PLT fixups. The next D (all remaining) entries belong to
- various data fixups. The actual size of the GOT is 3 + M + D.
+ reg_pc = ADDR_BITS_REMOVE ((CORE_ADDR)(*gregsetp)[PC_REGNUM]);
+ supply_register (PC_REGNUM, (char *) &reg_pc);
+}
- The GOT is also a synthetic area, created by the linker. It exists
- in both executables and libraries. When the GOT is first
- initialized , all the GOT entries relating to PLT fixups are
- pointing to code back at PLT[0].
-
- The special entries in the GOT are:
+/* Fill register regno (if it is a floating-point register) in
+ *fpregsetp with the appropriate value from GDB's register array.
+ If regno is -1, do this for all registers. */
- GOT[0] = linked list pointer used by the dynamic loader
- GOT[1] = pointer to the reloc table for this module
- GOT[2] = pointer to the fixup/resolver code
+void
+fill_fpregset (fpregset_t *fpregsetp, int regno)
+{
+ FPA11 *fp = (FPA11 *) fpregsetp;
+
+ if (-1 == regno)
+ {
+ int regnum;
+ for (regnum = F0_REGNUM; regnum <= F7_REGNUM; regnum++)
+ store_nwfpe_register (regnum, fp);
+ }
+ else if (regno >= F0_REGNUM && regno <= F7_REGNUM)
+ {
+ store_nwfpe_register (regno, fp);
+ return;
+ }
- The first invocation of function call comes through and uses the
- fixup/resolver code. On the entry to the fixup/resolver code:
-
- ip = &GOT[n+3]
- lr = &GOT[2]
- stack[0] = return address (lr) of the function call
- [r0, r1, r2, r3] are still the arguments to the function call
+ /* Store fpsr. */
+ if (register_valid[FPS_REGNUM])
+ if (FPS_REGNUM == regno || -1 == regno)
+ read_register_gen (FPS_REGNUM, (char *) &fp->fpsr);
+}
- This is enough information for the fixup/resolver code to work
- with. Before the fixup/resolver code returns, it actually calls
- the requested function and repairs &GOT[n+3]. */
+/* Fill GDB's register array with the floating-point register values
+ in *fpregsetp. */
-CORE_ADDR
-arm_skip_solib_resolver (CORE_ADDR pc)
+void
+supply_fpregset (fpregset_t *fpregsetp)
{
- /* FIXME */
- return 0;
-}
+ int regno;
+ FPA11 *fp = (FPA11 *) fpregsetp;
-int
-arm_linux_register_u_addr (int blockend, int regnum)
-{
- return blockend + REGISTER_BYTE (regnum);
+ /* Fetch fpsr. */
+ supply_register (FPS_REGNUM, (char *) &fp->fpsr);
+
+ /* Fetch the floating point registers. */
+ for (regno = F0_REGNUM; regno <= F7_REGNUM; regno++)
+ {
+ fetch_nwfpe_register (regno, fp);
+ }
}
int
diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c
index 8a575a4ff49..cbe8c182def 100644
--- a/gdb/arm-linux-tdep.c
+++ b/gdb/arm-linux-tdep.c
@@ -24,6 +24,11 @@
#include "gdbtypes.h"
#include "floatformat.h"
+/* For arm_linux_skip_solib_resolver. */
+#include "symtab.h"
+#include "symfile.h"
+#include "objfiles.h"
+
#ifdef GET_LONGJMP_TARGET
/* Figure out where the longjmp will land. We expect that we have
@@ -221,6 +226,213 @@ arm_linux_push_arguments (int nargs, value_ptr * args, CORE_ADDR sp,
return sp;
}
+/*
+ Dynamic Linking on ARM Linux
+ ----------------------------
+
+ Note: PLT = procedure linkage table
+ GOT = global offset table
+
+ As much as possible, ELF dynamic linking defers the resolution of
+ jump/call addresses until the last minute. The technique used is
+ inspired by the i386 ELF design, and is based on the following
+ constraints.
+
+ 1) The calling technique should not force a change in the assembly
+ code produced for apps; it MAY cause changes in the way assembly
+ code is produced for position independent code (i.e. shared
+ libraries).
+
+ 2) The technique must be such that all executable areas must not be
+ modified; and any modified areas must not be executed.
+
+ To do this, there are three steps involved in a typical jump:
+
+ 1) in the code
+ 2) through the PLT
+ 3) using a pointer from the GOT
+
+ When the executable or library is first loaded, each GOT entry is
+ initialized to point to the code which implements dynamic name
+ resolution and code finding. This is normally a function in the
+ program interpreter (on ARM Linux this is usually ld-linux.so.2,
+ but it does not have to be). On the first invocation, the function
+ is located and the GOT entry is replaced with the real function
+ address. Subsequent calls go through steps 1, 2 and 3 and end up
+ calling the real code.
+
+ 1) In the code:
+
+ b function_call
+ bl function_call
+
+ This is typical ARM code using the 26 bit relative branch or branch
+ and link instructions. The target of the instruction
+ (function_call is usually the address of the function to be called.
+ In position independent code, the target of the instruction is
+ actually an entry in the PLT when calling functions in a shared
+ library. Note that this call is identical to a normal function
+ call, only the target differs.
+
+ 2) In the PLT:
+
+ The PLT is a synthetic area, created by the linker. It exists in
+ both executables and libraries. It is an array of stubs, one per
+ imported function call. It looks like this:
+
+ PLT[0]:
+ str lr, [sp, #-4]! @push the return address (lr)
+ ldr lr, [pc, #16] @load from 6 words ahead
+ add lr, pc, lr @form an address for GOT[0]
+ ldr pc, [lr, #8]! @jump to the contents of that addr
+
+ The return address (lr) is pushed on the stack and used for
+ calculations. The load on the second line loads the lr with
+ &GOT[3] - . - 20. The addition on the third leaves:
+
+ lr = (&GOT[3] - . - 20) + (. + 8)
+ lr = (&GOT[3] - 12)
+ lr = &GOT[0]
+
+ On the fourth line, the pc and lr are both updated, so that:
+
+ pc = GOT[2]
+ lr = &GOT[0] + 8
+ = &GOT[2]
+
+ NOTE: PLT[0] borrows an offset .word from PLT[1]. This is a little
+ "tight", but allows us to keep all the PLT entries the same size.
+
+ PLT[n+1]:
+ ldr ip, [pc, #4] @load offset from gotoff
+ add ip, pc, ip @add the offset to the pc
+ ldr pc, [ip] @jump to that address
+ gotoff: .word GOT[n+3] - .
+
+ The load on the first line, gets an offset from the fourth word of
+ the PLT entry. The add on the second line makes ip = &GOT[n+3],
+ which contains either a pointer to PLT[0] (the fixup trampoline) or
+ a pointer to the actual code.
+
+ 3) In the GOT:
+
+ The GOT contains helper pointers for both code (PLT) fixups and
+ data fixups. The first 3 entries of the GOT are special. The next
+ M entries (where M is the number of entries in the PLT) belong to
+ the PLT fixups. The next D (all remaining) entries belong to
+ various data fixups. The actual size of the GOT is 3 + M + D.
+
+ The GOT is also a synthetic area, created by the linker. It exists
+ in both executables and libraries. When the GOT is first
+ initialized , all the GOT entries relating to PLT fixups are
+ pointing to code back at PLT[0].
+
+ The special entries in the GOT are:
+
+ GOT[0] = linked list pointer used by the dynamic loader
+ GOT[1] = pointer to the reloc table for this module
+ GOT[2] = pointer to the fixup/resolver code
+
+ The first invocation of function call comes through and uses the
+ fixup/resolver code. On the entry to the fixup/resolver code:
+
+ ip = &GOT[n+3]
+ lr = &GOT[2]
+ stack[0] = return address (lr) of the function call
+ [r0, r1, r2, r3] are still the arguments to the function call
+
+ This is enough information for the fixup/resolver code to work
+ with. Before the fixup/resolver code returns, it actually calls
+ the requested function and repairs &GOT[n+3]. */
+
+/* Find the minimal symbol named NAME, and return both the minsym
+ struct and its objfile. This probably ought to be in minsym.c, but
+ everything there is trying to deal with things like C++ and
+ SOFUN_ADDRESS_MAYBE_TURQUOISE, ... Since this is so simple, it may
+ be considered too special-purpose for general consumption. */
+
+static struct minimal_symbol *
+find_minsym_and_objfile (char *name, struct objfile **objfile_p)
+{
+ struct objfile *objfile;
+
+ ALL_OBJFILES (objfile)
+ {
+ struct minimal_symbol *msym;
+
+ ALL_OBJFILE_MSYMBOLS (objfile, msym)
+ {
+ if (SYMBOL_NAME (msym)
+ && STREQ (SYMBOL_NAME (msym), name))
+ {
+ *objfile_p = objfile;
+ return msym;
+ }
+ }
+ }
+
+ return 0;
+}
+
+
+static CORE_ADDR
+skip_hurd_resolver (CORE_ADDR pc)
+{
+ /* The HURD dynamic linker is part of the GNU C library, so many
+ GNU/Linux distributions use it. (All ELF versions, as far as I
+ know.) An unresolved PLT entry points to "_dl_runtime_resolve",
+ which calls "fixup" to patch the PLT, and then passes control to
+ the function.
+
+ We look for the symbol `_dl_runtime_resolve', and find `fixup' in
+ the same objfile. If we are at the entry point of `fixup', then
+ we set a breakpoint at the return address (at the top of the
+ stack), and continue.
+
+ It's kind of gross to do all these checks every time we're
+ called, since they don't change once the executable has gotten
+ started. But this is only a temporary hack --- upcoming versions
+ of Linux will provide a portable, efficient interface for
+ debugging programs that use shared libraries. */
+
+ struct objfile *objfile;
+ struct minimal_symbol *resolver
+ = find_minsym_and_objfile ("_dl_runtime_resolve", &objfile);
+
+ if (resolver)
+ {
+ struct minimal_symbol *fixup
+ = lookup_minimal_symbol ("fixup", 0, objfile);
+
+ if (fixup && SYMBOL_VALUE_ADDRESS (fixup) == pc)
+ return (SAVED_PC_AFTER_CALL (get_current_frame ()));
+ }
+
+ return 0;
+}
+
+/* See the comments for SKIP_SOLIB_RESOLVER at the top of infrun.c.
+ This function:
+ 1) decides whether a PLT has sent us into the linker to resolve
+ a function reference, and
+ 2) if so, tells us where to set a temporary breakpoint that will
+ trigger when the dynamic linker is done. */
+
+CORE_ADDR
+arm_linux_skip_solib_resolver (CORE_ADDR pc)
+{
+ CORE_ADDR result;
+
+ /* Plug in functions for other kinds of resolvers here. */
+ result = skip_hurd_resolver (pc);
+ printf ("Result = 0x%08x\n");
+ if (result)
+ return result;
+
+
+ return 0;
+}
+
void
_initialize_arm_linux_tdep (void)
{
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 7112c4caf71..84a350af8c1 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -2083,7 +2083,7 @@ The valid values are:\n");
/* Add the disassembly-flavor command */
new_cmd = add_set_enum_cmd ("disassembly-flavor", no_class,
valid_flavors,
- (char *) &disassembly_flavor,
+ &disassembly_flavor,
helptext,
&setlist);
new_cmd->function.sfunc = set_disassembly_flavor_sfunc;
diff --git a/gdb/ax-gdb.c b/gdb/ax-gdb.c
index 51fe5b6d54c..e0d6ce581c6 100644
--- a/gdb/ax-gdb.c
+++ b/gdb/ax-gdb.c
@@ -56,101 +56,81 @@
struct agent_expr * --- agent expression buffer to generate code into
struct axs_value * --- describes value left on top of stack */
-static struct value *const_var_ref PARAMS ((struct symbol * var));
-static struct value *const_expr PARAMS ((union exp_element ** pc));
-static struct value *maybe_const_expr PARAMS ((union exp_element ** pc));
-
-static void gen_traced_pop PARAMS ((struct agent_expr *, struct axs_value *));
-
-static void gen_sign_extend PARAMS ((struct agent_expr *, struct type *));
-static void gen_extend PARAMS ((struct agent_expr *, struct type *));
-static void gen_fetch PARAMS ((struct agent_expr *, struct type *));
-static void gen_left_shift PARAMS ((struct agent_expr *, int));
-
-
-static void gen_frame_args_address PARAMS ((struct agent_expr *));
-static void gen_frame_locals_address PARAMS ((struct agent_expr *));
-static void gen_offset PARAMS ((struct agent_expr * ax, int offset));
-static void gen_sym_offset PARAMS ((struct agent_expr *, struct symbol *));
-static void gen_var_ref PARAMS ((struct agent_expr * ax,
- struct axs_value * value,
- struct symbol * var));
-
-
-static void gen_int_literal PARAMS ((struct agent_expr * ax,
- struct axs_value * value,
- LONGEST k, struct type * type));
-
-
-static void require_rvalue PARAMS ((struct agent_expr * ax,
- struct axs_value * value));
-static void gen_usual_unary PARAMS ((struct agent_expr * ax,
- struct axs_value * value));
-static int type_wider_than PARAMS ((struct type * type1,
- struct type * type2));
-static struct type *max_type PARAMS ((struct type * type1,
- struct type * type2));
-static void gen_conversion PARAMS ((struct agent_expr * ax,
- struct type * from,
- struct type * to));
-static int is_nontrivial_conversion PARAMS ((struct type * from,
- struct type * to));
-static void gen_usual_arithmetic PARAMS ((struct agent_expr * ax,
- struct axs_value * value1,
- struct axs_value * value2));
-static void gen_integral_promotions PARAMS ((struct agent_expr * ax,
- struct axs_value * value));
-static void gen_cast PARAMS ((struct agent_expr * ax,
- struct axs_value * value,
- struct type * type));
-static void gen_scale PARAMS ((struct agent_expr * ax,
- enum agent_op op,
- struct type * type));
-static void gen_add PARAMS ((struct agent_expr * ax,
- struct axs_value * value,
- struct axs_value * value1,
- struct axs_value * value2,
- char *name));
-static void gen_sub PARAMS ((struct agent_expr * ax,
- struct axs_value * value,
- struct axs_value * value1,
- struct axs_value * value2));
-static void gen_binop PARAMS ((struct agent_expr * ax,
- struct axs_value * value,
- struct axs_value * value1,
- struct axs_value * value2,
- enum agent_op op,
- enum agent_op op_unsigned,
- int may_carry,
- char *name));
-static void gen_logical_not PARAMS ((struct agent_expr * ax,
- struct axs_value * value));
-static void gen_complement PARAMS ((struct agent_expr * ax,
- struct axs_value * value));
-static void gen_deref PARAMS ((struct agent_expr *, struct axs_value *));
-static void gen_address_of PARAMS ((struct agent_expr *, struct axs_value *));
-static int find_field PARAMS ((struct type * type, char *name));
-static void gen_bitfield_ref PARAMS ((struct agent_expr * ax,
- struct axs_value * value,
- struct type * type,
- int start, int end));
-static void gen_struct_ref PARAMS ((struct agent_expr * ax,
- struct axs_value * value,
- char *field,
- char *operator_name,
- char *operand_name));
-static void gen_repeat PARAMS ((union exp_element ** pc,
- struct agent_expr * ax,
- struct axs_value * value));
-static void gen_sizeof PARAMS ((union exp_element ** pc,
- struct agent_expr * ax,
- struct axs_value * value));
-static void gen_expr PARAMS ((union exp_element ** pc,
- struct agent_expr * ax,
- struct axs_value * value));
+static struct value *const_var_ref (struct symbol *var);
+static struct value *const_expr (union exp_element **pc);
+static struct value *maybe_const_expr (union exp_element **pc);
+
+static void gen_traced_pop (struct agent_expr *, struct axs_value *);
+
+static void gen_sign_extend (struct agent_expr *, struct type *);
+static void gen_extend (struct agent_expr *, struct type *);
+static void gen_fetch (struct agent_expr *, struct type *);
+static void gen_left_shift (struct agent_expr *, int);
+
+
+static void gen_frame_args_address (struct agent_expr *);
+static void gen_frame_locals_address (struct agent_expr *);
+static void gen_offset (struct agent_expr *ax, int offset);
+static void gen_sym_offset (struct agent_expr *, struct symbol *);
+static void gen_var_ref (struct agent_expr *ax,
+ struct axs_value *value, struct symbol *var);
+
+
+static void gen_int_literal (struct agent_expr *ax,
+ struct axs_value *value,
+ LONGEST k, struct type *type);
+
+
+static void require_rvalue (struct agent_expr *ax, struct axs_value *value);
+static void gen_usual_unary (struct agent_expr *ax, struct axs_value *value);
+static int type_wider_than (struct type *type1, struct type *type2);
+static struct type *max_type (struct type *type1, struct type *type2);
+static void gen_conversion (struct agent_expr *ax,
+ struct type *from, struct type *to);
+static int is_nontrivial_conversion (struct type *from, struct type *to);
+static void gen_usual_arithmetic (struct agent_expr *ax,
+ struct axs_value *value1,
+ struct axs_value *value2);
+static void gen_integral_promotions (struct agent_expr *ax,
+ struct axs_value *value);
+static void gen_cast (struct agent_expr *ax,
+ struct axs_value *value, struct type *type);
+static void gen_scale (struct agent_expr *ax,
+ enum agent_op op, struct type *type);
+static void gen_add (struct agent_expr *ax,
+ struct axs_value *value,
+ struct axs_value *value1,
+ struct axs_value *value2, char *name);
+static void gen_sub (struct agent_expr *ax,
+ struct axs_value *value,
+ struct axs_value *value1, struct axs_value *value2);
+static void gen_binop (struct agent_expr *ax,
+ struct axs_value *value,
+ struct axs_value *value1,
+ struct axs_value *value2,
+ enum agent_op op,
+ enum agent_op op_unsigned, int may_carry, char *name);
+static void gen_logical_not (struct agent_expr *ax, struct axs_value *value);
+static void gen_complement (struct agent_expr *ax, struct axs_value *value);
+static void gen_deref (struct agent_expr *, struct axs_value *);
+static void gen_address_of (struct agent_expr *, struct axs_value *);
+static int find_field (struct type *type, char *name);
+static void gen_bitfield_ref (struct agent_expr *ax,
+ struct axs_value *value,
+ struct type *type, int start, int end);
+static void gen_struct_ref (struct agent_expr *ax,
+ struct axs_value *value,
+ char *field,
+ char *operator_name, char *operand_name);
+static void gen_repeat (union exp_element **pc,
+ struct agent_expr *ax, struct axs_value *value);
+static void gen_sizeof (union exp_element **pc,
+ struct agent_expr *ax, struct axs_value *value);
+static void gen_expr (union exp_element **pc,
+ struct agent_expr *ax, struct axs_value *value);
static void print_axs_value (struct ui_file *f, struct axs_value * value);
-static void agent_command PARAMS ((char *exp, int from_tty));
+static void agent_command (char *exp, int from_tty);
/* Detecting constant expressions. */
@@ -185,7 +165,7 @@ const_var_ref (var)
return value_from_longest (type, (LONGEST) SYMBOL_VALUE (var));
case LOC_LABEL:
- return value_from_longest (type, (LONGEST) SYMBOL_VALUE_ADDRESS (var));
+ return value_from_pointer (type, (CORE_ADDR) SYMBOL_VALUE_ADDRESS (var));
default:
return 0;
@@ -1798,7 +1778,7 @@ expr_to_agent (expr, value)
struct agent_expr *ax = new_agent_expr (0);
union exp_element *pc;
- old_chain = make_cleanup ((make_cleanup_func) free_agent_expr, ax);
+ old_chain = make_cleanup_free_agent_expr (ax);
pc = expr->elts;
trace_kludge = 0;
@@ -1854,7 +1834,7 @@ gen_trace_for_expr (scope, expr)
union exp_element *pc;
struct axs_value value;
- old_chain = make_cleanup ((make_cleanup_func) free_agent_expr, ax);
+ old_chain = make_cleanup_free_agent_expr (ax);
pc = expr->elts;
trace_kludge = 1;
@@ -1923,9 +1903,9 @@ agent_command (exp, from_tty)
error_no_arg ("expression to translate");
expr = parse_expression (exp);
- old_chain = make_cleanup ((make_cleanup_func) free_current_contents, &expr);
+ old_chain = make_cleanup (free_current_contents, &expr);
agent = gen_trace_for_expr (fi->pc, expr);
- make_cleanup ((make_cleanup_func) free_agent_expr, agent);
+ make_cleanup_free_agent_expr (agent);
ax_print (gdb_stdout, agent);
/* It would be nice to call ax_reqs here to gather some general info
@@ -1938,7 +1918,7 @@ agent_command (exp, from_tty)
/* Initialization code. */
-void _initialize_ax_gdb PARAMS ((void));
+void _initialize_ax_gdb (void);
void
_initialize_ax_gdb ()
{
diff --git a/gdb/ax-gdb.h b/gdb/ax-gdb.h
index 3764b692e64..e46a69983d1 100644
--- a/gdb/ax-gdb.h
+++ b/gdb/ax-gdb.h
@@ -94,21 +94,19 @@ struct axs_value
/* Given a GDB expression EXPR, translate it into the agent bytecode,
and return it. FLAGS are from enum expr_to_agent_flags. */
-extern struct agent_expr *expr_to_agent PARAMS ((struct expression * EXPR,
- struct axs_value * VALUE));
+extern struct agent_expr *expr_to_agent (struct expression *EXPR,
+ struct axs_value *VALUE);
/* Given a GDB expression EXPR denoting an lvalue in memory, produce a
string of agent bytecode which will leave its address and size on
the top of stack. Return the agent expression. */
-extern struct agent_expr *expr_to_address_and_size
- PARAMS ((struct expression * EXPR));
+extern struct agent_expr *expr_to_address_and_size (struct expression *EXPR);
/* Given a GDB expression EXPR, return bytecode to trace its value.
The result will use the `trace' and `trace_quick' bytecodes to
record the value of all memory touched by the expression, and leave
no values on the stack. The caller can then use the ax_reqs
function to discover which registers the expression uses. */
-extern struct agent_expr *gen_trace_for_expr PARAMS ((CORE_ADDR,
- struct expression *));
+extern struct agent_expr *gen_trace_for_expr (CORE_ADDR, struct expression *);
#endif /* AX_GDB_H */
diff --git a/gdb/ax-general.c b/gdb/ax-general.c
index 34ec3b3071e..0c851ebb7bf 100644
--- a/gdb/ax-general.c
+++ b/gdb/ax-general.c
@@ -28,13 +28,13 @@
#include "value.h"
-static void grow_expr PARAMS ((struct agent_expr * x, int n));
+static void grow_expr (struct agent_expr *x, int n);
-static void append_const PARAMS ((struct agent_expr * x, LONGEST val, int n));
+static void append_const (struct agent_expr *x, LONGEST val, int n);
-static LONGEST read_const PARAMS ((struct agent_expr * x, int o, int n));
+static LONGEST read_const (struct agent_expr *x, int o, int n);
-static void generic_ext PARAMS ((struct agent_expr * x, enum agent_op op, int n));
+static void generic_ext (struct agent_expr *x, enum agent_op op, int n);
/* Functions for building expressions. */
@@ -62,6 +62,18 @@ free_agent_expr (x)
free (x);
}
+static void
+do_free_agent_expr_cleanup (void *x)
+{
+ free_agent_expr (x);
+}
+
+struct cleanup *
+make_cleanup_free_agent_expr (struct agent_expr *x)
+{
+ return make_cleanup (do_free_agent_expr_cleanup, x);
+}
+
/* Make sure that X has room for at least N more bytes. This doesn't
affect the length, just the allocated size. */
diff --git a/gdb/ax.h b/gdb/ax.h
index bf1fd2c8622..1d601bb800d 100644
--- a/gdb/ax.h
+++ b/gdb/ax.h
@@ -139,25 +139,26 @@ enum agent_op
/* Functions for building expressions. */
/* Allocate a new, empty agent expression. */
-extern struct agent_expr *new_agent_expr PARAMS ((CORE_ADDR));
+extern struct agent_expr *new_agent_expr (CORE_ADDR);
/* Free a agent expression. */
-extern void free_agent_expr PARAMS ((struct agent_expr *));
+extern void free_agent_expr (struct agent_expr *);
+extern struct cleanup *make_cleanup_free_agent_expr (struct agent_expr *);
/* Append a simple operator OP to EXPR. */
-extern void ax_simple PARAMS ((struct agent_expr * EXPR, enum agent_op OP));
+extern void ax_simple (struct agent_expr *EXPR, enum agent_op OP);
/* Append the floating-point prefix, for the next bytecode. */
#define ax_float(EXPR) (ax_simple ((EXPR), aop_float))
/* Append a sign-extension instruction to EXPR, to extend an N-bit value. */
-extern void ax_ext PARAMS ((struct agent_expr * EXPR, int N));
+extern void ax_ext (struct agent_expr *EXPR, int N);
/* Append a zero-extension instruction to EXPR, to extend an N-bit value. */
-extern void ax_zero_ext PARAMS ((struct agent_expr * EXPR, int N));
+extern void ax_zero_ext (struct agent_expr *EXPR, int N);
/* Append a trace_quick instruction to EXPR, to record N bytes. */
-extern void ax_trace_quick PARAMS ((struct agent_expr * EXPR, int N));
+extern void ax_trace_quick (struct agent_expr *EXPR, int N);
/* Append a goto op to EXPR. OP is the actual op (must be aop_goto or
aop_if_goto). We assume we don't know the target offset yet,
@@ -165,21 +166,21 @@ extern void ax_trace_quick PARAMS ((struct agent_expr * EXPR, int N));
for the target, and return the offset in EXPR of that space, so we
can backpatch it once we do know the target offset. Use ax_label
to do the backpatching. */
-extern int ax_goto PARAMS ((struct agent_expr * EXPR, enum agent_op OP));
+extern int ax_goto (struct agent_expr *EXPR, enum agent_op OP);
/* Suppose a given call to ax_goto returns some value PATCH. When you
know the offset TARGET that goto should jump to, call
ax_label (EXPR, PATCH, TARGET)
to patch TARGET into the ax_goto instruction. */
-extern void ax_label PARAMS ((struct agent_expr * EXPR, int patch, int target));
+extern void ax_label (struct agent_expr *EXPR, int patch, int target);
/* Assemble code to push a constant on the stack. */
-extern void ax_const_l PARAMS ((struct agent_expr * EXPR, LONGEST l));
-extern void ax_const_d PARAMS ((struct agent_expr * EXPR, LONGEST d));
+extern void ax_const_l (struct agent_expr *EXPR, LONGEST l);
+extern void ax_const_d (struct agent_expr *EXPR, LONGEST d);
/* Assemble code to push the value of register number REG on the
stack. */
-extern void ax_reg PARAMS ((struct agent_expr * EXPR, int REG));
+extern void ax_reg (struct agent_expr *EXPR, int REG);
/* Functions for printing out expressions, and otherwise debugging
@@ -284,7 +285,6 @@ struct agent_reqs
/* Given an agent expression AX, fill in an agent_reqs structure REQS
describing it. */
-extern void ax_reqs PARAMS ((struct agent_expr * ax,
- struct agent_reqs * reqs));
+extern void ax_reqs (struct agent_expr *ax, struct agent_reqs *reqs);
#endif /* AGENTEXPR_H */
diff --git a/gdb/bcache.c b/gdb/bcache.c
index 766aff9c3bb..fcff55e5ac9 100644
--- a/gdb/bcache.c
+++ b/gdb/bcache.c
@@ -28,42 +28,25 @@
#include "bcache.h"
#include "gdb_string.h" /* For memcpy declaration */
-
+/* The old hash function was stolen from SDBM. This is what DB 3.0 uses now,
+ * and is better than the old one.
+ */
-/* The hash function. */
-
unsigned long
-hash (void *addr, int length)
+hash(void *addr, int length)
{
- /* If it's a short string, hash on every character. Otherwise, sample
- characters from throughout the string. */
- if (length <= 64)
- {
- char *byte = addr;
- unsigned long h = 0;
- int i;
-
- for (i = 0; i < length; i++)
- h = h * 65793 ^ (h >> (sizeof (h) * 8 - 6)) ^ byte[i];
-
- return h;
- }
- else
- {
- char *byte = addr;
- int n, i;
- unsigned long h = 0;
-
- for (n = i = 0; n < 64; n++)
- {
- h = h * 65793 + (h >> (sizeof (h) * 8 - 6)) + byte[i];
- i = h % length;
- }
-
- return h;
- }
+ const unsigned char *k, *e;
+ unsigned long h;
+
+ k = (const unsigned char *)addr;
+ e = k+length;
+ for (h=0; k< e;++k)
+ {
+ h *=16777619;
+ h ^= *k;
+ }
+ return (h);
}
-
/* Growing the bcache's hash table. */
@@ -189,7 +172,8 @@ void
free_bcache (struct bcache *bcache)
{
obstack_free (&bcache->cache, 0);
- free (bcache->bucket);
+ if (bcache->bucket)
+ free (bcache->bucket);
/* This isn't necessary, but at least the bcache is always in a
consistent state. */
diff --git a/gdb/bcache.h b/gdb/bcache.h
index 4735af71cd3..5355e7481c2 100644
--- a/gdb/bcache.h
+++ b/gdb/bcache.h
@@ -125,5 +125,6 @@ extern void free_bcache (struct bcache *bcache);
kind of data BCACHE holds. Statistics are printed using
`printf_filtered' and its ilk. */
extern void print_bcache_statistics (struct bcache *bcache, char *type);
-
+/* The hash function */
+extern unsigned long hash(void *addr, int length);
#endif /* BCACHE_H */
diff --git a/gdb/blockframe.c b/gdb/blockframe.c
index d00f5c23fc6..ccc80dbbd3f 100644
--- a/gdb/blockframe.c
+++ b/gdb/blockframe.c
@@ -300,15 +300,9 @@ frameless_look_for_prologue (frame)
if (func_start)
{
func_start += FUNCTION_START_OFFSET;
- after_prologue = func_start;
-#ifdef SKIP_PROLOGUE_FRAMELESS_P
/* This is faster, since only care whether there *is* a
prologue, not how long it is. */
- after_prologue = SKIP_PROLOGUE_FRAMELESS_P (after_prologue);
-#else
- after_prologue = SKIP_PROLOGUE (after_prologue);
-#endif
- return after_prologue == func_start;
+ return PROLOGUE_FRAMELESS_P (func_start);
}
else if (frame->pc == 0)
/* A frame with a zero PC is usually created by dereferencing a
@@ -1109,7 +1103,7 @@ pc_in_call_dummy_at_entry_point (pc, sp, frame_address)
/* Dummy frame. This saves the processor state just prior to setting
up the inferior function call. Older targets save the registers
- target stack (but that really slows down function calls). */
+ on the target stack (but that really slows down function calls). */
struct dummy_frame
{
@@ -1213,8 +1207,8 @@ generic_push_dummy_frame ()
dummy_frame = xmalloc (sizeof (struct dummy_frame));
dummy_frame->registers = xmalloc (REGISTER_BYTES);
- dummy_frame->pc = read_register (PC_REGNUM);
- dummy_frame->sp = read_register (SP_REGNUM);
+ dummy_frame->pc = read_pc ();
+ dummy_frame->sp = read_sp ();
dummy_frame->top = dummy_frame->sp;
dummy_frame->fp = fp;
read_register_bytes (0, dummy_frame->registers, REGISTER_BYTES);
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 89b15909a71..c80c4531b2e 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -49,105 +49,75 @@
static void until_break_command_continuation (struct continuation_arg *arg);
-static void
-catch_command_1 PARAMS ((char *, int, int));
+static void catch_command_1 (char *, int, int);
-static void
-enable_delete_command PARAMS ((char *, int));
+static void enable_delete_command (char *, int);
-static void
-enable_delete_breakpoint PARAMS ((struct breakpoint *));
+static void enable_delete_breakpoint (struct breakpoint *);
-static void
-enable_once_command PARAMS ((char *, int));
+static void enable_once_command (char *, int);
-static void
-enable_once_breakpoint PARAMS ((struct breakpoint *));
+static void enable_once_breakpoint (struct breakpoint *);
-static void
-disable_command PARAMS ((char *, int));
+static void disable_command (char *, int);
-static void
-enable_command PARAMS ((char *, int));
+static void enable_command (char *, int);
-static void
-map_breakpoint_numbers PARAMS ((char *, void (*)(struct breakpoint *)));
+static void map_breakpoint_numbers (char *, void (*)(struct breakpoint *));
-static void
-ignore_command PARAMS ((char *, int));
+static void ignore_command (char *, int);
-static int breakpoint_re_set_one PARAMS ((PTR));
+static int breakpoint_re_set_one (PTR);
-static void
-clear_command PARAMS ((char *, int));
+static void clear_command (char *, int);
-static void
-catch_command PARAMS ((char *, int));
+static void catch_command (char *, int);
-static void
-handle_gnu_4_16_catch_command PARAMS ((char *, int, int));
+static void handle_gnu_4_16_catch_command (char *, int, int);
-static struct symtabs_and_lines
-get_catch_sals PARAMS ((int));
+static struct symtabs_and_lines get_catch_sals (int);
-static void
-watch_command PARAMS ((char *, int));
+static void watch_command (char *, int);
-static int
-can_use_hardware_watchpoint PARAMS ((struct value *));
+static int can_use_hardware_watchpoint (struct value *);
-static void break_at_finish_command PARAMS ((char *, int));
-static void break_at_finish_at_depth_command PARAMS ((char *, int));
+static void break_at_finish_command (char *, int);
+static void break_at_finish_at_depth_command (char *, int);
-void
-tbreak_command PARAMS ((char *, int));
+void tbreak_command (char *, int);
-static void tbreak_at_finish_command PARAMS ((char *, int));
+static void tbreak_at_finish_command (char *, int);
-static void
-break_command_1 PARAMS ((char *, int, int));
+static void break_command_1 (char *, int, int);
-static void
-mention PARAMS ((struct breakpoint *));
+static void mention (struct breakpoint *);
-struct breakpoint *
- set_raw_breakpoint PARAMS ((struct symtab_and_line));
+struct breakpoint *set_raw_breakpoint (struct symtab_and_line);
-static void
-check_duplicates PARAMS ((CORE_ADDR, asection *));
+static void check_duplicates (CORE_ADDR, asection *);
-static void
-describe_other_breakpoints PARAMS ((CORE_ADDR, asection *));
+static void describe_other_breakpoints (CORE_ADDR, asection *);
-static void
-breakpoints_info PARAMS ((char *, int));
+static void breakpoints_info (char *, int);
-static void
-breakpoint_1 PARAMS ((int, int));
+static void breakpoint_1 (int, int);
-static bpstat
- bpstat_alloc PARAMS ((struct breakpoint *, bpstat));
+static bpstat bpstat_alloc (struct breakpoint *, bpstat);
-static int breakpoint_cond_eval PARAMS ((PTR));
+static int breakpoint_cond_eval (PTR);
-static void
-cleanup_executing_breakpoints PARAMS ((PTR));
+static void cleanup_executing_breakpoints (PTR);
-static void
-commands_command PARAMS ((char *, int));
+static void commands_command (char *, int);
-static void
-condition_command PARAMS ((char *, int));
+static void condition_command (char *, int);
-static int
-get_number_trailer PARAMS ((char **, int));
+static int get_number_trailer (char **, int);
-void
-set_breakpoint_count PARAMS ((int));
+void set_breakpoint_count (int);
#if 0
-static struct breakpoint *
- create_temp_exception_breakpoint PARAMS ((CORE_ADDR));
+static struct breakpoint *create_temp_exception_breakpoint (CORE_ADDR);
#endif
typedef enum
@@ -157,10 +127,9 @@ typedef enum
}
insertion_state_t;
-static int
-remove_breakpoint PARAMS ((struct breakpoint *, insertion_state_t));
+static int remove_breakpoint (struct breakpoint *, insertion_state_t);
-static enum print_stop_action print_it_typical PARAMS ((bpstat));
+static enum print_stop_action print_it_typical (bpstat);
static enum print_stop_action print_bp_stop_message (bpstat bs);
@@ -171,95 +140,86 @@ typedef struct
}
args_for_catchpoint_enable;
-static int watchpoint_check PARAMS ((PTR));
+static int watchpoint_check (PTR);
-static int cover_target_enable_exception_callback PARAMS ((PTR));
+static int cover_target_enable_exception_callback (PTR);
-static void maintenance_info_breakpoints PARAMS ((char *, int));
+static void maintenance_info_breakpoints (char *, int);
#ifdef GET_LONGJMP_TARGET
-static void create_longjmp_breakpoint PARAMS ((char *));
+static void create_longjmp_breakpoint (char *);
#endif
-static int hw_breakpoint_used_count PARAMS ((void));
+static int hw_breakpoint_used_count (void);
-static int hw_watchpoint_used_count PARAMS ((enum bptype, int *));
+static int hw_watchpoint_used_count (enum bptype, int *);
-static void hbreak_command PARAMS ((char *, int));
+static void hbreak_command (char *, int);
-static void thbreak_command PARAMS ((char *, int));
+static void thbreak_command (char *, int);
-static void watch_command_1 PARAMS ((char *, int, int));
+static void watch_command_1 (char *, int, int);
-static void rwatch_command PARAMS ((char *, int));
+static void rwatch_command (char *, int);
-static void awatch_command PARAMS ((char *, int));
+static void awatch_command (char *, int);
-static void do_enable_breakpoint PARAMS ((struct breakpoint *, enum bpdisp));
+static void do_enable_breakpoint (struct breakpoint *, enum bpdisp);
-static void solib_load_unload_1 PARAMS ((char *hookname,
- int tempflag,
- char *dll_pathname,
- char *cond_string,
- enum bptype bp_kind));
+static void solib_load_unload_1 (char *hookname,
+ int tempflag,
+ char *dll_pathname,
+ char *cond_string, enum bptype bp_kind);
-static void create_fork_vfork_event_catchpoint PARAMS ((int tempflag,
- char *cond_string,
- enum bptype bp_kind));
+static void create_fork_vfork_event_catchpoint (int tempflag,
+ char *cond_string,
+ enum bptype bp_kind);
-static void break_at_finish_at_depth_command_1 PARAMS ((char *arg,
- int flag,
- int from_tty));
+static void break_at_finish_at_depth_command_1 (char *arg,
+ int flag, int from_tty);
-static void break_at_finish_command_1 PARAMS ((char *arg,
- int flag,
- int from_tty));
+static void break_at_finish_command_1 (char *arg, int flag, int from_tty);
-static void stop_command PARAMS ((char *arg, int from_tty));
+static void stop_command (char *arg, int from_tty);
-static void stopin_command PARAMS ((char *arg, int from_tty));
+static void stopin_command (char *arg, int from_tty);
-static void stopat_command PARAMS ((char *arg, int from_tty));
+static void stopat_command (char *arg, int from_tty);
-static char *ep_find_event_name_end PARAMS ((char *arg));
+static char *ep_find_event_name_end (char *arg);
-static char *ep_parse_optional_if_clause PARAMS ((char **arg));
+static char *ep_parse_optional_if_clause (char **arg);
-static char *ep_parse_optional_filename PARAMS ((char **arg));
+static char *ep_parse_optional_filename (char **arg);
#if defined(CHILD_INSERT_EXEC_CATCHPOINT)
-static void catch_exec_command_1 PARAMS ((char *arg, int tempflag,
- int from_tty));
+static void catch_exec_command_1 (char *arg, int tempflag, int from_tty);
#endif
-static void create_exception_catchpoint
- PARAMS ((int tempflag, char *cond_string,
- enum exception_event_kind ex_event,
- struct symtab_and_line * sal));
+static void create_exception_catchpoint
+ (int tempflag, char *cond_string,
+ enum exception_event_kind ex_event, struct symtab_and_line *sal);
-static void catch_exception_command_1
- PARAMS ((enum exception_event_kind ex_event,
- char *arg, int tempflag, int from_tty));
+static void catch_exception_command_1
+ (enum exception_event_kind ex_event, char *arg, int tempflag, int from_tty);
-static void tcatch_command PARAMS ((char *arg, int from_tty));
+static void tcatch_command (char *arg, int from_tty);
-static void ep_skip_leading_whitespace PARAMS ((char **s));
+static void ep_skip_leading_whitespace (char **s);
/* Prototypes for exported functions. */
-static void
-awatch_command PARAMS ((char *, int));
+static void awatch_command (char *, int);
-static void
-do_enable_breakpoint PARAMS ((struct breakpoint *, enum bpdisp));
+static void do_enable_breakpoint (struct breakpoint *, enum bpdisp);
/* If FALSE, gdb will not use hardware support for watchpoints, even
if such is available. */
static int can_use_hw_watchpoints;
-void _initialize_breakpoint PARAMS ((void));
+void _initialize_breakpoint (void);
-void set_breakpoint_count PARAMS ((int));
+void set_breakpoint_count (int);
extern int addressprint; /* Print machine addresses? */
@@ -1939,7 +1899,7 @@ print_it_typical (bs)
struct cleanup *old_chain;
struct ui_stream *stb;
stb = ui_out_stream_new (uiout);
- old_chain = make_cleanup ((make_cleanup_func) ui_out_stream_delete, stb);
+ old_chain = make_cleanup_ui_out_stream_delete (stb);
#endif /* UI_OUT */
/* bs->breakpoint_at can be NULL if it was a momentary breakpoint
which has since been deleted. */
@@ -4458,7 +4418,7 @@ mention (b)
struct ui_stream *stb;
stb = ui_out_stream_new (uiout);
- old_chain = make_cleanup ((make_cleanup_func) ui_out_stream_delete, stb);
+ old_chain = make_cleanup_ui_out_stream_delete (stb);
#endif /* UI_OUT */
/* FIXME: This is misplaced; mention() is called by things (like hitting a
@@ -5752,10 +5712,9 @@ until_break_command (arg, from_tty)
breakpoint = set_momentary_breakpoint (sal, selected_frame, bp_until);
if (!event_loop_p || !target_can_async_p ())
- old_chain = make_cleanup ((make_cleanup_func) delete_breakpoint,
- breakpoint);
+ old_chain = make_cleanup_delete_breakpoint (breakpoint);
else
- old_chain = make_exec_cleanup ((make_cleanup_func) delete_breakpoint, breakpoint);
+ old_chain = make_exec_cleanup_delete_breakpoint (breakpoint);
/* If we are running asynchronously, and the target supports async
execution, we are not waiting for the target to stop, in the call
@@ -5786,9 +5745,9 @@ until_break_command (arg, from_tty)
sal.pc = prev_frame->pc;
breakpoint = set_momentary_breakpoint (sal, prev_frame, bp_until);
if (!event_loop_p || !target_can_async_p ())
- make_cleanup ((make_cleanup_func) delete_breakpoint, breakpoint);
+ make_cleanup_delete_breakpoint (breakpoint);
else
- make_exec_cleanup ((make_cleanup_func) delete_breakpoint, breakpoint);
+ make_exec_cleanup_delete_breakpoint (breakpoint);
}
proceed (-1, TARGET_SIGNAL_DEFAULT, 0);
@@ -6130,10 +6089,8 @@ typedef enum
catch_fork_kind;
#if defined(CHILD_INSERT_FORK_CATCHPOINT) || defined(CHILD_INSERT_VFORK_CATCHPOINT)
-static void catch_fork_command_1 PARAMS ((catch_fork_kind fork_kind,
- char *arg,
- int tempflag,
- int from_tty));
+static void catch_fork_command_1 (catch_fork_kind fork_kind,
+ char *arg, int tempflag, int from_tty);
static void
catch_fork_command_1 (fork_kind, arg, tempflag, from_tty)
@@ -7068,6 +7025,24 @@ delete_breakpoint (bpt)
free ((PTR) bpt);
}
+static void
+do_delete_breakpoint_cleanup (void *b)
+{
+ delete_breakpoint (b);
+}
+
+struct cleanup *
+make_cleanup_delete_breakpoint (struct breakpoint *b)
+{
+ return make_cleanup (do_delete_breakpoint_cleanup, b);
+}
+
+struct cleanup *
+make_exec_cleanup_delete_breakpoint (struct breakpoint *b)
+{
+ return make_exec_cleanup (do_delete_breakpoint_cleanup, b);
+}
+
void
delete_command (arg, from_tty)
char *arg;
@@ -7421,7 +7396,7 @@ ignore_command (args, from_tty)
static void
map_breakpoint_numbers (args, function)
char *args;
- void (*function) PARAMS ((struct breakpoint *));
+ void (*function) (struct breakpoint *);
{
register char *p = args;
char *p1;
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
index 1b4e02aa7b2..c25ab41f8fa 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -306,13 +306,13 @@ typedef struct bpstats *bpstat;
/* Interface: */
/* Clear a bpstat so that it says we are not at any breakpoint.
Also free any storage that is part of a bpstat. */
-extern void bpstat_clear PARAMS ((bpstat *));
+extern void bpstat_clear (bpstat *);
/* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
is part of the bpstat is copied as well. */
-extern bpstat bpstat_copy PARAMS ((bpstat));
+extern bpstat bpstat_copy (bpstat);
-extern bpstat bpstat_stop_status PARAMS ((CORE_ADDR *, int));
+extern bpstat bpstat_stop_status (CORE_ADDR *, int);
/* This bpstat_what stuff tells wait_for_inferior what to do with a
breakpoint (a challenging task). */
@@ -396,10 +396,10 @@ enum print_stop_action
};
/* Tell what to do about this bpstat. */
-struct bpstat_what bpstat_what PARAMS ((bpstat));
+struct bpstat_what bpstat_what (bpstat);
/* Find the bpstat associated with a breakpoint. NULL otherwise. */
-bpstat bpstat_find_breakpoint PARAMS ((bpstat, struct breakpoint *));
+bpstat bpstat_find_breakpoint (bpstat, struct breakpoint *);
/* Find a step_resume breakpoint associated with this bpstat.
(If there are multiple step_resume bp's on the list, this function
@@ -410,8 +410,7 @@ bpstat bpstat_find_breakpoint PARAMS ((bpstat, struct breakpoint *));
See wait_for_inferior's use of this function.
*/
-extern struct breakpoint *
- bpstat_find_step_resume_breakpoint PARAMS ((bpstat));
+extern struct breakpoint *bpstat_find_step_resume_breakpoint (bpstat);
/* Nonzero if a signal that we got in wait() was due to circumstances
explained by the BS. */
@@ -422,36 +421,36 @@ extern struct breakpoint *
/* Nonzero if we should step constantly (e.g. watchpoints on machines
without hardware support). This isn't related to a specific bpstat,
just to things like whether watchpoints are set. */
-extern int bpstat_should_step PARAMS ((void));
+extern int bpstat_should_step (void);
/* Nonzero if there are enabled hardware watchpoints. */
-extern int bpstat_have_active_hw_watchpoints PARAMS ((void));
+extern int bpstat_have_active_hw_watchpoints (void);
/* Print a message indicating what happened. Returns nonzero to
say that only the source line should be printed after this (zero
return means print the frame as well as the source line). */
-extern enum print_stop_action bpstat_print PARAMS ((bpstat));
+extern enum print_stop_action bpstat_print (bpstat);
/* Return the breakpoint number of the first breakpoint we are stopped
at. *BSP upon return is a bpstat which points to the remaining
breakpoints stopped at (but which is not guaranteed to be good for
anything but further calls to bpstat_num).
Return 0 if passed a bpstat which does not indicate any breakpoints. */
-extern int bpstat_num PARAMS ((bpstat *));
+extern int bpstat_num (bpstat *);
/* Perform actions associated with having stopped at *BSP. Actually, we just
use this for breakpoint commands. Perhaps other actions will go here
later, but this is executed at a late time (from the command loop). */
-extern void bpstat_do_actions PARAMS ((bpstat *));
+extern void bpstat_do_actions (bpstat *);
/* Modify BS so that the actions will not be performed. */
-extern void bpstat_clear_actions PARAMS ((bpstat));
+extern void bpstat_clear_actions (bpstat);
/* Given a bpstat that records zero or more triggered eventpoints, this
function returns another bpstat which contains only the catchpoints
on that first list, if any.
*/
-extern void bpstat_get_triggered_catchpoints PARAMS ((bpstat, bpstat *));
+extern void bpstat_get_triggered_catchpoints (bpstat, bpstat *);
/* Implementation: */
@@ -515,60 +514,63 @@ enum breakpoint_here
/* Forward declarations for prototypes */
struct frame_info;
-extern enum breakpoint_here breakpoint_here_p PARAMS ((CORE_ADDR));
+extern enum breakpoint_here breakpoint_here_p (CORE_ADDR);
-extern int breakpoint_inserted_here_p PARAMS ((CORE_ADDR));
+extern int breakpoint_inserted_here_p (CORE_ADDR);
-extern int frame_in_dummy PARAMS ((struct frame_info *));
+extern int frame_in_dummy (struct frame_info *);
-extern int breakpoint_thread_match PARAMS ((CORE_ADDR, int));
+extern int breakpoint_thread_match (CORE_ADDR, int);
-extern void until_break_command PARAMS ((char *, int));
+extern void until_break_command (char *, int);
-extern void breakpoint_re_set PARAMS ((void));
+extern void breakpoint_re_set (void);
-extern void breakpoint_re_set_thread PARAMS ((struct breakpoint *));
+extern void breakpoint_re_set_thread (struct breakpoint *);
-extern int ep_is_exception_catchpoint PARAMS ((struct breakpoint *));
+extern int ep_is_exception_catchpoint (struct breakpoint *);
extern struct breakpoint *set_momentary_breakpoint
- PARAMS ((struct symtab_and_line, struct frame_info *, enum bptype));
+ (struct symtab_and_line, struct frame_info *, enum bptype);
-extern void set_ignore_count PARAMS ((int, int, int));
+extern void set_ignore_count (int, int, int);
-extern void set_default_breakpoint PARAMS ((int, CORE_ADDR,
- struct symtab *, int));
+extern void set_default_breakpoint (int, CORE_ADDR, struct symtab *, int);
-extern void mark_breakpoints_out PARAMS ((void));
+extern void mark_breakpoints_out (void);
-extern void breakpoint_init_inferior PARAMS ((enum inf_context));
+extern void breakpoint_init_inferior (enum inf_context);
-extern void delete_breakpoint PARAMS ((struct breakpoint *));
+extern struct cleanup *make_cleanup_delete_breakpoint (struct breakpoint *);
-extern void breakpoint_auto_delete PARAMS ((bpstat));
+extern struct cleanup *make_exec_cleanup_delete_breakpoint (struct breakpoint *);
-extern void breakpoint_clear_ignore_counts PARAMS ((void));
+extern void delete_breakpoint (struct breakpoint *);
-extern void break_command PARAMS ((char *, int));
+extern void breakpoint_auto_delete (bpstat);
-extern void hbreak_command_wrapper PARAMS ((char *, int));
-extern void thbreak_command_wrapper PARAMS ((char *, int));
-extern void rbreak_command_wrapper PARAMS ((char *, int));
-extern void watch_command_wrapper PARAMS ((char *, int));
-extern void awatch_command_wrapper PARAMS ((char *, int));
-extern void rwatch_command_wrapper PARAMS ((char *, int));
-extern void tbreak_command PARAMS ((char *, int));
+extern void breakpoint_clear_ignore_counts (void);
-extern int insert_breakpoints PARAMS ((void));
+extern void break_command (char *, int);
-extern int remove_breakpoints PARAMS ((void));
+extern void hbreak_command_wrapper (char *, int);
+extern void thbreak_command_wrapper (char *, int);
+extern void rbreak_command_wrapper (char *, int);
+extern void watch_command_wrapper (char *, int);
+extern void awatch_command_wrapper (char *, int);
+extern void rwatch_command_wrapper (char *, int);
+extern void tbreak_command (char *, int);
+
+extern int insert_breakpoints (void);
+
+extern int remove_breakpoints (void);
/* This function can be used to physically insert eventpoints from the
specified traced inferior process, without modifying the breakpoint
package's state. This can be useful for those targets which support
following the processes of a fork() or vfork() system call, when both
of the resulting two processes are to be followed. */
-extern int reattach_breakpoints PARAMS ((int));
+extern int reattach_breakpoints (int);
/* This function can be used to update the breakpoint package's state
after an exec() system call has been executed.
@@ -585,7 +587,7 @@ extern int reattach_breakpoints PARAMS ((int));
breakpoint list.
- All eventpoints without a symbolic address are removed from the
breakpoint list. */
-extern void update_breakpoints_after_exec PARAMS ((void));
+extern void update_breakpoints_after_exec (void);
/* This function can be used to physically remove hardware breakpoints
and watchpoints from the specified traced inferior process, without
@@ -596,14 +598,13 @@ extern void update_breakpoints_after_exec PARAMS ((void));
It is an error to use this function on the process whose id is
inferior_pid. */
-extern int detach_breakpoints PARAMS ((int));
+extern int detach_breakpoints (int);
-extern void enable_longjmp_breakpoint PARAMS ((void));
+extern void enable_longjmp_breakpoint (void);
-extern void disable_longjmp_breakpoint PARAMS ((void));
+extern void disable_longjmp_breakpoint (void);
-extern void set_longjmp_resume_breakpoint PARAMS ((CORE_ADDR,
- struct frame_info *));
+extern void set_longjmp_resume_breakpoint (CORE_ADDR, struct frame_info *);
/* These functions respectively disable or reenable all currently
enabled watchpoints. When disabled, the watchpoints are marked
call_disabled. When reenabled, they are marked enabled.
@@ -625,69 +626,66 @@ extern void set_longjmp_resume_breakpoint PARAMS ((CORE_ADDR,
that are unable to unwind through the call dummy frame, watches
of stack-based storage may then be deleted, because gdb will
believe that their watched storage is out of scope. (Sigh.) */
-extern void
-disable_watchpoints_before_interactive_call_start PARAMS ((void));
+extern void disable_watchpoints_before_interactive_call_start (void);
-extern void
-enable_watchpoints_after_interactive_call_stop PARAMS ((void));
+extern void enable_watchpoints_after_interactive_call_stop (void);
-extern void clear_breakpoint_hit_counts PARAMS ((void));
+extern void clear_breakpoint_hit_counts (void);
-extern int get_number PARAMS ((char **));
+extern int get_number (char **);
-extern int get_number_or_range PARAMS ((char **));
+extern int get_number_or_range (char **);
/* The following are for displays, which aren't really breakpoints, but
here is as good a place as any for them. */
-extern void disable_current_display PARAMS ((void));
+extern void disable_current_display (void);
-extern void do_displays PARAMS ((void));
+extern void do_displays (void);
-extern void disable_display PARAMS ((int));
+extern void disable_display (int);
-extern void clear_displays PARAMS ((void));
+extern void clear_displays (void);
-extern void disable_breakpoint PARAMS ((struct breakpoint *));
+extern void disable_breakpoint (struct breakpoint *);
-extern void enable_breakpoint PARAMS ((struct breakpoint *));
+extern void enable_breakpoint (struct breakpoint *);
-extern void make_breakpoint_permanent PARAMS ((struct breakpoint *));
+extern void make_breakpoint_permanent (struct breakpoint *);
-extern struct breakpoint *create_solib_event_breakpoint PARAMS ((CORE_ADDR));
+extern struct breakpoint *create_solib_event_breakpoint (CORE_ADDR);
-extern struct breakpoint *create_thread_event_breakpoint PARAMS ((CORE_ADDR));
+extern struct breakpoint *create_thread_event_breakpoint (CORE_ADDR);
-extern void remove_solib_event_breakpoints PARAMS ((void));
+extern void remove_solib_event_breakpoints (void);
-extern void remove_thread_event_breakpoints PARAMS ((void));
+extern void remove_thread_event_breakpoints (void);
-extern void disable_breakpoints_in_shlibs PARAMS ((int silent));
+extern void disable_breakpoints_in_shlibs (int silent);
-extern void re_enable_breakpoints_in_shlibs PARAMS ((void));
+extern void re_enable_breakpoints_in_shlibs (void);
-extern void create_solib_load_event_breakpoint PARAMS ((char *, int,
- char *, char *));
+extern void create_solib_load_event_breakpoint (char *, int, char *, char *);
-extern void create_solib_unload_event_breakpoint PARAMS ((char *, int,
- char *, char *));
+extern void create_solib_unload_event_breakpoint (char *, int,
+ char *, char *);
-extern void create_fork_event_catchpoint PARAMS ((int, char *));
+extern void create_fork_event_catchpoint (int, char *);
-extern void create_vfork_event_catchpoint PARAMS ((int, char *));
+extern void create_vfork_event_catchpoint (int, char *);
-extern void create_exec_event_catchpoint PARAMS ((int, char *));
+extern void create_exec_event_catchpoint (int, char *);
/* This function returns TRUE if ep is a catchpoint. */
-extern int ep_is_catchpoint PARAMS ((struct breakpoint *));
+extern int ep_is_catchpoint (struct breakpoint *);
/* This function returns TRUE if ep is a catchpoint of a
shared library (aka dynamically-linked library) event,
such as a library load or unload. */
-extern int ep_is_shlib_catchpoint PARAMS ((struct breakpoint *));
+extern int ep_is_shlib_catchpoint (struct breakpoint *);
-extern struct breakpoint *set_breakpoint_sal PARAMS ((struct symtab_and_line));
+extern struct breakpoint *set_breakpoint_sal (struct symtab_and_line);
/* Enable breakpoints and delete when hit. Called with ARG == NULL
deletes all breakpoints. */
diff --git a/gdb/buildsym.c b/gdb/buildsym.c
index dff92936cfd..70105be0157 100644
--- a/gdb/buildsym.c
+++ b/gdb/buildsym.c
@@ -36,7 +36,7 @@
#include "gdb_string.h"
#include "expression.h" /* For "enum exp_opcode" used by... */
#include "language.h" /* For "longest_local_hex_string_custom" */
-
+#include "bcache.h"
/* Ask buildsym.h to define the vars it normally declares `extern'. */
#define EXTERN
/**/
@@ -1055,33 +1055,13 @@ push_context (int desc, CORE_ADDR valu)
return new;
}
+
/* Compute a small integer hash code for the given name. */
int
hashname (char *name)
{
- register char *p = name;
- register int total = p[0];
- register int c;
-
- c = p[1];
- total += c << 2;
- if (c)
- {
- c = p[2];
- total += c << 4;
- if (c)
- {
- total += p[3] << 6;
- }
- }
-
- /* Ensure result is positive. */
- if (total < 0)
- {
- total += (1000 << 6);
- }
- return (total % HASHSIZE);
+ return (hash(name,strlen(name)) % HASHSIZE);
}
diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index 377f92a9fb1..d4291f7b979 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -102,14 +102,11 @@ extern int hp_som_som_object_present;
#define YYDEBUG 0 /* Default to no yydebug support */
#endif
-int
-yyparse PARAMS ((void));
+int yyparse (void);
-static int
-yylex PARAMS ((void));
+static int yylex (void);
-void
-yyerror PARAMS ((char *));
+void yyerror (char *);
%}
@@ -144,8 +141,7 @@ yyerror PARAMS ((char *));
%{
/* YYSTYPE gets defined by %union */
-static int
-parse_number PARAMS ((char *, int, int, YYSTYPE *));
+static int parse_number (char *, int, int, YYSTYPE *);
%}
%type <voidval> exp exp1 type_exp start variable qualified_name lcurly
@@ -1437,8 +1433,6 @@ yylex ()
if (c == '<')
{
- if (hp_som_som_object_present)
- {
/* Scan ahead to get rest of the template specification. Note
that we look ahead only when the '<' adjoins non-whitespace
characters; for comparison expressions, e.g. "a < b > c",
@@ -1448,26 +1442,6 @@ yylex ()
if (p)
namelen = p - tokstart;
break;
- }
- else
- {
- int i = namelen;
- int nesting_level = 1;
- while (tokstart[++i])
- {
- if (tokstart[i] == '<')
- nesting_level++;
- else if (tokstart[i] == '>')
- {
- if (--nesting_level == 0)
- break;
- }
- }
- if (tokstart[i] == '>')
- namelen = i;
- else
- break;
- }
}
c = tokstart[++namelen];
}
diff --git a/gdb/c-lang.c b/gdb/c-lang.c
index 2211acb2e08..10d54e6e640 100644
--- a/gdb/c-lang.c
+++ b/gdb/c-lang.c
@@ -27,7 +27,7 @@
#include "c-lang.h"
#include "valprint.h"
-extern void _initialize_c_language PARAMS ((void));
+extern void _initialize_c_language (void);
static void c_emit_char (int c, struct ui_file * stream, int quoter);
/* Print the character C on STREAM as part of the contents of a literal
diff --git a/gdb/c-lang.h b/gdb/c-lang.h
index 6cae708d3fd..ae28b5702e1 100644
--- a/gdb/c-lang.h
+++ b/gdb/c-lang.h
@@ -25,11 +25,9 @@
#include "value.h"
-extern int
-c_parse PARAMS ((void)); /* Defined in c-exp.y */
+extern int c_parse (void); /* Defined in c-exp.y */
-extern void
-c_error PARAMS ((char *)); /* Defined in c-exp.y */
+extern void c_error (char *); /* Defined in c-exp.y */
/* Defined in c-typeprint.c */
extern void c_print_type (struct type *, char *, struct ui_file *, int,
@@ -50,7 +48,7 @@ extern void c_printstr (struct ui_file * stream, char *string,
unsigned int length, int width,
int force_ellipses);
-extern struct type *c_create_fundamental_type PARAMS ((struct objfile *, int));
+extern struct type *c_create_fundamental_type (struct objfile *, int);
extern struct type **CONST_PTR (c_builtin_types[]);
@@ -77,11 +75,9 @@ extern void cp_print_value_fields (struct type *, struct type *, char *,
int, enum val_prettyprint,
struct type **, int);
-extern int
-cp_is_vtbl_ptr_type PARAMS ((struct type *));
+extern int cp_is_vtbl_ptr_type (struct type *);
-extern int
-cp_is_vtbl_member PARAMS ((struct type *));
+extern int cp_is_vtbl_member (struct type *);
#endif /* !defined (C_LANG_H) */
diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c
index ec4b3cf862d..f9dbd033fcb 100644
--- a/gdb/c-valprint.c
+++ b/gdb/c-valprint.c
@@ -135,8 +135,9 @@ c_val_print (type, valaddr, embedded_offset, address, stream, format, deref_ref,
/* Print the unmangled name if desired. */
/* Print vtable entry - we only get here if we ARE using
-fvtable_thunks. (Otherwise, look under TYPE_CODE_STRUCT.) */
- print_address_demangle (extract_address (valaddr + embedded_offset, TYPE_LENGTH (type)),
- stream, demangle);
+ CORE_ADDR addr
+ = extract_typed_address (valaddr + embedded_offset, type);
+ print_address_demangle (addr, stream, demangle);
break;
}
elttype = check_typedef (TYPE_TARGET_TYPE (type));
@@ -249,10 +250,10 @@ c_val_print (type, valaddr, embedded_offset, address, stream, format, deref_ref,
}
if (addressprint)
{
+ CORE_ADDR addr
+ = extract_typed_address (valaddr + embedded_offset, type);
fprintf_filtered (stream, "@");
- print_address_numeric
- (extract_address (valaddr + embedded_offset,
- TARGET_PTR_BIT / HOST_CHAR_BIT), 1, stream);
+ print_address_numeric (addr, 1, stream);
if (deref_ref)
fputs_filtered (": ", stream);
}
@@ -295,11 +296,13 @@ c_val_print (type, valaddr, embedded_offset, address, stream, format, deref_ref,
/* Print the unmangled name if desired. */
/* Print vtable entry - we only get here if NOT using
-fvtable_thunks. (Otherwise, look under TYPE_CODE_PTR.) */
- print_address_demangle (extract_address (
- valaddr + embedded_offset +
- TYPE_FIELD_BITPOS (type, VTBL_FNADDR_OFFSET) / 8,
- TYPE_LENGTH (TYPE_FIELD_TYPE (type, VTBL_FNADDR_OFFSET))),
- stream, demangle);
+ int offset = (embedded_offset +
+ TYPE_FIELD_BITPOS (type, VTBL_FNADDR_OFFSET) / 8);
+ struct type *field_type = TYPE_FIELD_TYPE (type, VTBL_FNADDR_OFFSET);
+ CORE_ADDR addr
+ = extract_typed_address (valaddr + offset, field_type);
+
+ print_address_demangle (addr, stream, demangle);
}
else
cp_print_value_fields (type, type, valaddr, embedded_offset, address, stream, format,
diff --git a/gdb/call-cmds.h b/gdb/call-cmds.h
index 40bf5d2f8ef..c96b7368a69 100644
--- a/gdb/call-cmds.h
+++ b/gdb/call-cmds.h
@@ -16,14 +16,10 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-extern void
-initialize_all_files PARAMS ((void));
+extern void initialize_all_files (void);
-extern void
-exec_file_command PARAMS ((char *, int));
+extern void exec_file_command (char *, int);
-extern void
-core_file_command PARAMS ((char *, int));
+extern void core_file_command (char *, int);
-extern void
-break_command PARAMS ((char *, int));
+extern void break_command (char *, int);
diff --git a/gdb/ch-exp.c b/gdb/ch-exp.c
index 78924756ef3..4811f7cde6b 100644
--- a/gdb/ch-exp.c
+++ b/gdb/ch-exp.c
@@ -141,54 +141,54 @@ enum ch_terminal
/* Forward declarations. */
-static void write_lower_upper_value PARAMS ((enum exp_opcode, struct type *));
-static enum ch_terminal match_bitstring_literal PARAMS ((void));
-static enum ch_terminal match_integer_literal PARAMS ((void));
-static enum ch_terminal match_character_literal PARAMS ((void));
-static enum ch_terminal match_string_literal PARAMS ((void));
-static enum ch_terminal match_float_literal PARAMS ((void));
-static enum ch_terminal match_float_literal PARAMS ((void));
-static int decode_integer_literal PARAMS ((LONGEST *, char **));
-static int decode_integer_value PARAMS ((int, char **, LONGEST *));
-static char *match_simple_name_string PARAMS ((void));
-static void growbuf_by_size PARAMS ((int));
-static void parse_untyped_expr PARAMS ((void));
-static void parse_if_expression PARAMS ((void));
-static void parse_else_alternative PARAMS ((void));
-static void parse_then_alternative PARAMS ((void));
-static void parse_expr PARAMS ((void));
-static void parse_operand0 PARAMS ((void));
-static void parse_operand1 PARAMS ((void));
-static void parse_operand2 PARAMS ((void));
-static void parse_operand3 PARAMS ((void));
-static void parse_operand4 PARAMS ((void));
-static void parse_operand5 PARAMS ((void));
-static void parse_operand6 PARAMS ((void));
-static void parse_primval PARAMS ((void));
-static void parse_tuple PARAMS ((struct type *));
-static void parse_opt_element_list PARAMS ((struct type *));
-static void parse_tuple_element PARAMS ((struct type *));
-static void parse_named_record_element PARAMS ((void));
-static void parse_call PARAMS ((void));
-static struct type *parse_mode_or_normal_call PARAMS ((void));
+static void write_lower_upper_value (enum exp_opcode, struct type *);
+static enum ch_terminal match_bitstring_literal (void);
+static enum ch_terminal match_integer_literal (void);
+static enum ch_terminal match_character_literal (void);
+static enum ch_terminal match_string_literal (void);
+static enum ch_terminal match_float_literal (void);
+static enum ch_terminal match_float_literal (void);
+static int decode_integer_literal (LONGEST *, char **);
+static int decode_integer_value (int, char **, LONGEST *);
+static char *match_simple_name_string (void);
+static void growbuf_by_size (int);
+static void parse_untyped_expr (void);
+static void parse_if_expression (void);
+static void parse_else_alternative (void);
+static void parse_then_alternative (void);
+static void parse_expr (void);
+static void parse_operand0 (void);
+static void parse_operand1 (void);
+static void parse_operand2 (void);
+static void parse_operand3 (void);
+static void parse_operand4 (void);
+static void parse_operand5 (void);
+static void parse_operand6 (void);
+static void parse_primval (void);
+static void parse_tuple (struct type *);
+static void parse_opt_element_list (struct type *);
+static void parse_tuple_element (struct type *);
+static void parse_named_record_element (void);
+static void parse_call (void);
+static struct type *parse_mode_or_normal_call (void);
#if 0
-static struct type *parse_mode_call PARAMS ((void));
+static struct type *parse_mode_call (void);
#endif
-static void parse_unary_call PARAMS ((void));
-static int parse_opt_untyped_expr PARAMS ((void));
-static void parse_case_label PARAMS ((void));
-static int expect PARAMS ((enum ch_terminal, char *));
-static void parse_expr PARAMS ((void));
-static void parse_primval PARAMS ((void));
-static void parse_untyped_expr PARAMS ((void));
-static int parse_opt_untyped_expr PARAMS ((void));
-static void parse_if_expression_body PARAMS ((void));
-static enum ch_terminal ch_lex PARAMS ((void));
-INLINE static enum ch_terminal PEEK_TOKEN PARAMS ((void));
-static enum ch_terminal peek_token_ PARAMS ((int));
-static void forward_token_ PARAMS ((void));
-static void require PARAMS ((enum ch_terminal));
-static int check_token PARAMS ((enum ch_terminal));
+static void parse_unary_call (void);
+static int parse_opt_untyped_expr (void);
+static void parse_case_label (void);
+static int expect (enum ch_terminal, char *);
+static void parse_expr (void);
+static void parse_primval (void);
+static void parse_untyped_expr (void);
+static int parse_opt_untyped_expr (void);
+static void parse_if_expression_body (void);
+static enum ch_terminal ch_lex (void);
+INLINE static enum ch_terminal PEEK_TOKEN (void);
+static enum ch_terminal peek_token_ (int);
+static void forward_token_ (void);
+static void require (enum ch_terminal);
+static int check_token (enum ch_terminal);
#define MAX_LOOK_AHEAD 2
static enum ch_terminal terminal_buffer[MAX_LOOK_AHEAD + 1] =
diff --git a/gdb/ch-lang.c b/gdb/ch-lang.c
index cf6325755be..44e621e1b64 100644
--- a/gdb/ch-lang.c
+++ b/gdb/ch-lang.c
@@ -28,22 +28,19 @@
#include "ch-lang.h"
#include "valprint.h"
-extern void _initialize_chill_language PARAMS ((void));
+extern void _initialize_chill_language (void);
static value_ptr
- evaluate_subexp_chill PARAMS ((struct type *, struct expression *, int *, enum noside));
+evaluate_subexp_chill (struct type *, struct expression *, int *,
+ enum noside);
-static value_ptr
- value_chill_max_min PARAMS ((enum exp_opcode, value_ptr));
+static value_ptr value_chill_max_min (enum exp_opcode, value_ptr);
-static value_ptr
- value_chill_card PARAMS ((value_ptr));
+static value_ptr value_chill_card (value_ptr);
-static value_ptr
- value_chill_length PARAMS ((value_ptr));
+static value_ptr value_chill_length (value_ptr);
-static struct type *
- chill_create_fundamental_type PARAMS ((struct objfile *, int));
+static struct type *chill_create_fundamental_type (struct objfile *, int);
static void chill_printstr (struct ui_file * stream, char *string,
unsigned int length, int width,
diff --git a/gdb/ch-lang.h b/gdb/ch-lang.h
index 8df180422b7..666f050e28b 100644
--- a/gdb/ch-lang.h
+++ b/gdb/ch-lang.h
@@ -21,11 +21,9 @@
/* Forward decls for prototypes */
struct value;
-extern int
-chill_parse PARAMS ((void)); /* Defined in ch-exp.y */
+extern int chill_parse (void); /* Defined in ch-exp.y */
-extern void
-chill_error PARAMS ((char *)); /* Defined in ch-exp.y */
+extern void chill_error (char *); /* Defined in ch-exp.y */
/* Defined in ch-typeprint.c */
extern void chill_print_type (struct type *, char *, struct ui_file *, int,
@@ -39,4 +37,4 @@ extern int chill_value_print (struct value *, struct ui_file *,
int, enum val_prettyprint);
extern LONGEST
- type_lower_upper PARAMS ((enum exp_opcode, struct type *, struct type **));
+type_lower_upper (enum exp_opcode, struct type *, struct type **);
diff --git a/gdb/cli-out.c b/gdb/cli-out.c
index c7abdbeffca..cfe6a21a9a2 100644
--- a/gdb/cli-out.c
+++ b/gdb/cli-out.c
@@ -88,7 +88,7 @@ static struct ui_out_impl cli_ui_out_impl =
/* Prototypes for local functions */
-extern void _initialize_cli_out PARAMS ((void));
+extern void _initialize_cli_out (void);
static void field_separator (void);
diff --git a/gdb/coff-solib.h b/gdb/coff-solib.h
index e1a6758ee7e..3b65da8d8a5 100644
--- a/gdb/coff-solib.h
+++ b/gdb/coff-solib.h
@@ -27,8 +27,7 @@ struct target_ops;
#if 0
#define CLEAR_SOLIB coff_clear_solib
-extern void
-coff_clear_solib PARAMS ((void));
+extern void coff_clear_solib (void);
#endif
/* Called to add symbols from a shared library to gdb's symbol table. */
@@ -36,8 +35,7 @@ coff_clear_solib PARAMS ((void));
#define SOLIB_ADD(filename, from_tty, targ) \
coff_solib_add (filename, from_tty, targ)
-extern void
-coff_solib_add PARAMS ((char *, int, struct target_ops *));
+extern void coff_solib_add (char *, int, struct target_ops *);
/* Function to be called when the inferior starts up, to discover the names
of shared libraries that are dynamically linked, the base addresses to
@@ -46,8 +44,7 @@ coff_solib_add PARAMS ((char *, int, struct target_ops *));
#define SOLIB_CREATE_INFERIOR_HOOK(PID) coff_solib_create_inferior_hook()
-extern void
-coff_solib_create_inferior_hook PARAMS ((void)); /* solib.c */
+extern void coff_solib_create_inferior_hook (void); /* solib.c */
/* Function to be called to remove the connection between debugger and
dynamic linker that was established by SOLIB_CREATE_INFERIOR_HOOK.
@@ -185,6 +182,5 @@ coff_solib_create_inferior_hook PARAMS ((void)); /* solib.c */
#if 0
#define DISABLE_UNSETTABLE_BREAK(addr) coff_solib_address(addr)
-extern int
-solib_address PARAMS ((CORE_ADDR)); /* solib.c */
+extern int solib_address (CORE_ADDR); /* solib.c */
#endif
diff --git a/gdb/coffread.c b/gdb/coffread.c
index b3c191b7b35..f64fb9cf509 100644
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
@@ -43,7 +43,7 @@
#include "complaints.h"
#include "target.h"
-extern void _initialize_coffread PARAMS ((void));
+extern void _initialize_coffread (void);
struct coff_symfile_info
{
@@ -176,76 +176,78 @@ struct coff_symbol
unsigned int c_type;
};
-extern void stabsread_clear_cache PARAMS ((void));
+extern void stabsread_clear_cache (void);
-static struct type *coff_read_struct_type PARAMS ((int, int, int));
+static struct type *coff_read_struct_type (int, int, int);
-static struct type *decode_base_type PARAMS ((struct coff_symbol *,
- unsigned int,
- union internal_auxent *));
+static struct type *decode_base_type (struct coff_symbol *,
+ unsigned int, union internal_auxent *);
-static struct type *decode_type PARAMS ((struct coff_symbol *, unsigned int,
- union internal_auxent *));
+static struct type *decode_type (struct coff_symbol *, unsigned int,
+ union internal_auxent *);
-static struct type *decode_function_type PARAMS ((struct coff_symbol *,
- unsigned int,
- union internal_auxent *));
+static struct type *decode_function_type (struct coff_symbol *,
+ unsigned int,
+ union internal_auxent *);
-static struct type *coff_read_enum_type PARAMS ((int, int, int));
+static struct type *coff_read_enum_type (int, int, int);
-static struct symbol *process_coff_symbol PARAMS ((struct coff_symbol *,
- union internal_auxent *,
- struct objfile *));
+static struct symbol *process_coff_symbol (struct coff_symbol *,
+ union internal_auxent *,
+ struct objfile *);
-static void patch_opaque_types PARAMS ((struct symtab *));
+static void patch_opaque_types (struct symtab *);
-static void patch_type PARAMS ((struct type *, struct type *));
+static void patch_type (struct type *, struct type *);
-static void enter_linenos PARAMS ((long, int, int, struct objfile *));
+static void enter_linenos (long, int, int, struct objfile *);
-static void free_linetab PARAMS ((void));
+static void free_linetab (void);
-static int init_lineno PARAMS ((bfd *, long, int));
+static void free_linetab_cleanup (void *ignore);
-static char *getsymname PARAMS ((struct internal_syment *));
+static int init_lineno (bfd *, long, int);
-static char *coff_getfilename PARAMS ((union internal_auxent *));
+static char *getsymname (struct internal_syment *);
-static void free_stringtab PARAMS ((void));
+static char *coff_getfilename (union internal_auxent *);
-static int init_stringtab PARAMS ((bfd *, long));
+static void free_stringtab (void);
-static void read_one_sym PARAMS ((struct coff_symbol *,
- struct internal_syment *,
- union internal_auxent *));
+static void free_stringtab_cleanup (void *ignore);
-static void coff_symtab_read PARAMS ((long, unsigned int, struct objfile *));
+static int init_stringtab (bfd *, long);
-static void find_linenos PARAMS ((bfd *, sec_ptr, PTR));
+static void read_one_sym (struct coff_symbol *,
+ struct internal_syment *, union internal_auxent *);
-static void coff_symfile_init PARAMS ((struct objfile *));
+static void coff_symtab_read (long, unsigned int, struct objfile *);
-static void coff_new_init PARAMS ((struct objfile *));
+static void find_linenos (bfd *, sec_ptr, PTR);
-static void coff_symfile_read PARAMS ((struct objfile *, int));
+static void coff_symfile_init (struct objfile *);
-static void coff_symfile_finish PARAMS ((struct objfile *));
+static void coff_new_init (struct objfile *);
-static void record_minimal_symbol PARAMS ((char *, CORE_ADDR,
- enum minimal_symbol_type,
- struct objfile *));
+static void coff_symfile_read (struct objfile *, int);
-static void coff_end_symtab PARAMS ((struct objfile *));
+static void coff_symfile_finish (struct objfile *);
-static void complete_symtab PARAMS ((char *, CORE_ADDR, unsigned int));
+static void record_minimal_symbol (char *, CORE_ADDR,
+ enum minimal_symbol_type,
+ struct objfile *);
-static void coff_start_symtab PARAMS ((char *));
+static void coff_end_symtab (struct objfile *);
-static struct type *coff_alloc_type PARAMS ((int));
+static void complete_symtab (char *, CORE_ADDR, unsigned int);
-static struct type **coff_lookup_type PARAMS ((int));
+static void coff_start_symtab (char *);
-static void coff_locate_sections PARAMS ((bfd *, asection *, PTR));
+static struct type *coff_alloc_type (int);
+
+static struct type **coff_lookup_type (int);
+
+static void coff_locate_sections (bfd *, asection *, PTR);
/* We are called once per section from coff_symfile_read. We
need to examine each section we are passed, check to see
@@ -311,7 +313,7 @@ coff_locate_sections (abfd, sectp, csip)
}
/* Return the section_offsets* that CS points to. */
-static int cs_to_section PARAMS ((struct coff_symbol *, struct objfile *));
+static int cs_to_section (struct coff_symbol *, struct objfile *);
struct find_targ_sec_arg
{
@@ -319,7 +321,7 @@ struct find_targ_sec_arg
asection **resultp;
};
-static void find_targ_sec PARAMS ((bfd *, asection *, void *));
+static void find_targ_sec (bfd *, asection *, void *);
static void
find_targ_sec (abfd, sect, obj)
@@ -340,7 +342,7 @@ cs_to_section (cs, objfile)
{
asection *sect = NULL;
struct find_targ_sec_arg args;
- int off = SECT_OFF_TEXT;
+ int off = SECT_OFF_TEXT (objfile);
args.targ_index = cs->c_secnum;
args.resultp = &sect;
@@ -349,18 +351,18 @@ cs_to_section (cs, objfile)
{
/* This is the section. Figure out what SECT_OFF_* code it is. */
if (bfd_get_section_flags (abfd, sect) & SEC_CODE)
- off = SECT_OFF_TEXT;
+ off = SECT_OFF_TEXT (objfile);
else if (bfd_get_section_flags (abfd, sect) & SEC_LOAD)
- off = SECT_OFF_DATA;
+ off = SECT_OFF_DATA (objfile);
else
- off = SECT_OFF_BSS;
+ off = SECT_OFF_BSS (objfile);
}
return off;
}
/* Return the address of the section of a COFF symbol. */
-static CORE_ADDR cs_section_address PARAMS ((struct coff_symbol *, bfd *));
+static CORE_ADDR cs_section_address (struct coff_symbol *, bfd *);
static CORE_ADDR
cs_section_address (cs, abfd)
@@ -638,7 +640,7 @@ coff_symfile_read (objfile, mainline)
temp_sym = (char *) xmalloc
(cdata->local_symesz + cdata->local_auxesz);
temp_aux = temp_sym + cdata->local_symesz;
- back_to = make_cleanup ((make_cleanup_func) free_current_contents, &temp_sym);
+ back_to = make_cleanup (free_current_contents, &temp_sym);
/* We need to know whether this is a PE file, because in PE files,
unlike standard COFF files, symbol values are stored as offsets
@@ -656,7 +658,7 @@ coff_symfile_read (objfile, mainline)
info->max_lineno_offset = 0;
bfd_map_over_sections (abfd, find_linenos, (PTR) info);
- make_cleanup ((make_cleanup_func) free_linetab, 0);
+ make_cleanup (free_linetab_cleanup, 0 /*ignore*/);
val = init_lineno (abfd, info->min_lineno_offset,
info->max_lineno_offset - info->min_lineno_offset);
if (val < 0)
@@ -664,13 +666,13 @@ coff_symfile_read (objfile, mainline)
/* Now read the string table, all at once. */
- make_cleanup ((make_cleanup_func) free_stringtab, 0);
+ make_cleanup (free_stringtab_cleanup, 0 /*ignore*/);
val = init_stringtab (abfd, stringtab_offset);
if (val < 0)
error ("\"%s\": can't get string table", name);
init_minimal_symbol_collection ();
- make_cleanup ((make_cleanup_func) discard_minimal_symbols, 0);
+ make_cleanup_discard_minimal_symbols ();
/* Now that the executable file is positioned at symbol table,
process it and define symbols accordingly. */
@@ -843,7 +845,7 @@ coff_symtab_read (symtab_offset, nsyms, objfile)
if (ISFCN (cs->c_type) && cs->c_sclass != C_TPDEF)
{
/* Record all functions -- external and static -- in minsyms. */
- tmpaddr = cs->c_value + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ tmpaddr = cs->c_value + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
record_minimal_symbol (cs->c_name, tmpaddr, mst_text, objfile);
fcn_line_ptr = main_aux.x_sym.x_fcnary.x_fcn.x_lnnoptr;
@@ -908,7 +910,7 @@ coff_symtab_read (symtab_offset, nsyms, objfile)
followed by a later file with no symbols. */
if (in_source_file)
complete_symtab (filestring,
- cs->c_value + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT),
+ cs->c_value + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)),
main_aux.x_scn.x_scnlen);
in_source_file = 0;
}
@@ -969,10 +971,8 @@ coff_symtab_read (symtab_offset, nsyms, objfile)
|| cs->c_sclass == C_THUMBEXT)
tmpaddr += ANOFFSET (objfile->section_offsets, sec);
- switch (sec)
+ if (sec == SECT_OFF_TEXT (objfile))
{
- case SECT_OFF_TEXT:
- case SECT_OFF_RODATA:
ms_type =
cs->c_sclass == C_EXT || cs->c_sclass == C_THUMBEXTFUNC
|| cs->c_sclass == C_THUMBEXT ?
@@ -981,21 +981,23 @@ coff_symtab_read (symtab_offset, nsyms, objfile)
if (tmpaddr & 1) /* FIXME: delete this line */
SMASH_TEXT_ADDRESS (tmpaddr);
#endif
- break;
- case SECT_OFF_DATA:
+ }
+ else
+ if (sec == SECT_OFF_DATA (objfile))
+ {
ms_type =
cs->c_sclass == C_EXT || cs->c_sclass == C_THUMBEXT ?
mst_data : mst_file_data;
- break;
- case SECT_OFF_BSS:
+ }
+ else
+ if (sec == SECT_OFF_BSS (objfile))
+ {
ms_type =
cs->c_sclass == C_EXT || cs->c_sclass == C_THUMBEXT ?
mst_data : mst_file_data;
- break;
- default:
- ms_type = mst_unknown;
- break;
- }
+ }
+ else
+ ms_type = mst_unknown;
}
if (cs->c_name[0] != '@' /* Skip tdesc symbols */ )
@@ -1099,11 +1101,11 @@ coff_symtab_read (symtab_offset, nsyms, objfile)
of the epilogue. */
cs->c_value
+ FUNCTION_EPILOGUE_SIZE
- + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT),
+ + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)),
#else
fcn_cs_saved.c_value
+ fcn_aux_saved.x_sym.x_misc.x_fsize
- + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT),
+ + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)),
#endif
objfile
);
@@ -1115,7 +1117,7 @@ coff_symtab_read (symtab_offset, nsyms, objfile)
if (STREQ (cs->c_name, ".bb"))
{
tmpaddr = cs->c_value;
- tmpaddr += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ tmpaddr += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
push_context (++depth, tmpaddr);
}
else if (STREQ (cs->c_name, ".eb"))
@@ -1135,7 +1137,7 @@ coff_symtab_read (symtab_offset, nsyms, objfile)
if (local_symbols && context_stack_depth > 0)
{
tmpaddr =
- cs->c_value + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ cs->c_value + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
/* Make a block for the local symbols within. */
finish_block (0, &local_symbols, new->old_blocks,
new->start_addr, tmpaddr, objfile);
@@ -1287,6 +1289,12 @@ free_stringtab ()
stringtab = NULL;
}
+static void
+free_stringtab_cleanup (void *ignore)
+{
+ free_stringtab ();
+}
+
static char *
getsymname (symbol_entry)
struct internal_syment *symbol_entry;
@@ -1388,6 +1396,12 @@ free_linetab ()
linetab = NULL;
}
+static void
+free_linetab_cleanup (void *ignore)
+{
+ free_linetab ();
+}
+
#if !defined (L_LNNO32)
#define L_LNNO32(lp) ((lp)->l_lnno)
#endif
@@ -1427,7 +1441,7 @@ enter_linenos (file_offset, first_line, last_line, objfile)
if (L_LNNO32 (&lptr) && L_LNNO32 (&lptr) <= last_line)
record_line (current_subfile, first_line + L_LNNO32 (&lptr),
lptr.l_addr.l_paddr
- + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT));
+ + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)));
else
break;
}
@@ -1547,7 +1561,7 @@ process_coff_symbol (cs, aux, objfile)
if (ISFCN (cs->c_type))
{
- SYMBOL_VALUE (sym) += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ SYMBOL_VALUE (sym) += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
SYMBOL_TYPE (sym) =
lookup_function_type (decode_function_type (cs, cs->c_type, aux));
@@ -1577,7 +1591,7 @@ process_coff_symbol (cs, aux, objfile)
case C_EXT:
SYMBOL_CLASS (sym) = LOC_STATIC;
SYMBOL_VALUE_ADDRESS (sym) = (CORE_ADDR) cs->c_value;
- SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
add_symbol_to_list (sym, &global_symbols);
break;
@@ -1586,7 +1600,7 @@ process_coff_symbol (cs, aux, objfile)
case C_STAT:
SYMBOL_CLASS (sym) = LOC_STATIC;
SYMBOL_VALUE_ADDRESS (sym) = (CORE_ADDR) cs->c_value;
- SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
if (within_function)
{
/* Static symbol of local scope */
diff --git a/gdb/command.c b/gdb/command.c
index 737ac771222..02ee4745a8c 100644
--- a/gdb/command.c
+++ b/gdb/command.c
@@ -35,31 +35,33 @@
/* Prototypes for local functions */
-static void undef_cmd_error PARAMS ((char *, char *));
+static void undef_cmd_error (char *, char *);
-static void show_user PARAMS ((char *, int));
+static void show_user (char *, int);
static void show_user_1 (struct cmd_list_element *, struct ui_file *);
-static void make_command PARAMS ((char *, int));
+static void make_command (char *, int);
-static void shell_escape PARAMS ((char *, int));
+static void shell_escape (char *, int);
-static int parse_binary_operation PARAMS ((char *));
+static int parse_binary_operation (char *);
static void print_doc_line (struct ui_file *, char *);
-static struct cmd_list_element *find_cmd PARAMS ((char *command,
- int len,
- struct cmd_list_element * clist,
- int ignore_help_classes,
- int *nfound));
+static struct cmd_list_element *find_cmd (char *command,
+ int len,
+ struct cmd_list_element *clist,
+ int ignore_help_classes,
+ int *nfound);
static void apropos_cmd_helper (struct ui_file *, struct cmd_list_element *,
struct re_pattern_buffer *, char *);
+static void help_all (struct ui_file *stream);
+
void apropos_command (char *, int);
-void _initialize_command PARAMS ((void));
+void _initialize_command (void);
/* Add element named NAME.
CLASS is the top level category into which commands are broken down
@@ -82,7 +84,7 @@ struct cmd_list_element *
add_cmd (name, class, fun, doc, list)
char *name;
enum command_class class;
- void (*fun) PARAMS ((char *, int));
+ void (*fun) (char *, int);
char *doc;
struct cmd_list_element **list;
{
@@ -166,7 +168,7 @@ struct cmd_list_element *
add_abbrev_cmd (name, class, fun, doc, list)
char *name;
enum command_class class;
- void (*fun) PARAMS ((char *, int));
+ void (*fun) (char *, int);
char *doc;
struct cmd_list_element **list;
{
@@ -220,7 +222,7 @@ add_prefix_cmd (name, class, fun, doc, prefixlist, prefixname,
allow_unknown, list)
char *name;
enum command_class class;
- void (*fun) PARAMS ((char *, int));
+ void (*fun) (char *, int);
char *doc;
struct cmd_list_element **prefixlist;
char *prefixname;
@@ -241,7 +243,7 @@ add_abbrev_prefix_cmd (name, class, fun, doc, prefixlist, prefixname,
allow_unknown, list)
char *name;
enum command_class class;
- void (*fun) PARAMS ((char *, int));
+ void (*fun) (char *, int);
char *doc;
struct cmd_list_element **prefixlist;
char *prefixname;
@@ -265,7 +267,7 @@ not_just_help_class_command (args, from_tty)
}
/* This is an empty "sfunc". */
-static void empty_sfunc PARAMS ((char *, int, struct cmd_list_element *));
+static void empty_sfunc (char *, int, struct cmd_list_element *);
static void
empty_sfunc (args, from_tty, c)
@@ -283,13 +285,12 @@ empty_sfunc (args, from_tty, c)
DOC is the documentation string. */
struct cmd_list_element *
-add_set_cmd (name, class, var_type, var, doc, list)
- char *name;
- enum command_class class;
- var_types var_type;
- char *var;
- char *doc;
- struct cmd_list_element **list;
+add_set_cmd (char *name,
+ enum command_class class,
+ var_types var_type,
+ void *var,
+ char *doc,
+ struct cmd_list_element **list)
{
struct cmd_list_element *c
= add_cmd (name, class, NO_FUNCTION, doc, list);
@@ -312,13 +313,12 @@ add_set_cmd (name, class, var_type, var, doc, list)
DOC is the documentation string. */
struct cmd_list_element *
-add_set_enum_cmd (name, class, enumlist, var, doc, list)
- char *name;
- enum command_class class;
- char *enumlist[];
- char *var;
- char *doc;
- struct cmd_list_element **list;
+add_set_enum_cmd (char *name,
+ enum command_class class,
+ char *enumlist[],
+ char **var,
+ char *doc,
+ struct cmd_list_element **list)
{
struct cmd_list_element *c
= add_set_cmd (name, class, var_enum, var, doc, list);
@@ -510,6 +510,12 @@ help_cmd (command, stream)
return;
}
+ if (strcmp (command, "all") == 0)
+ {
+ help_all (stream);
+ return;
+ }
+
c = lookup_cmd (&command, cmdlist, "", 0, 0);
if (c == 0)
@@ -602,6 +608,26 @@ Command name abbreviations are allowed if unambiguous.\n",
cmdtype1, cmdtype2);
}
+static void
+help_all (struct ui_file *stream)
+{
+ struct cmd_list_element *c;
+ extern struct cmd_list_element *cmdlist;
+
+ for (c = cmdlist; c; c = c->next)
+ {
+ if (c->abbrev_flag)
+ continue;
+ /* If this is a prefix command, print it's subcommands */
+ if (c->prefixlist)
+ help_cmd_list (*c->prefixlist, all_commands, c->prefixname, 0, stream);
+
+ /* If this is a class name, print all of the commands in the class */
+ else if (c->function.cfunc == NULL)
+ help_cmd_list (cmdlist, c->class, "", 0, stream);
+ }
+}
+
/* Print only the first line of STR on STREAM. */
static void
print_doc_line (stream, str)
@@ -1695,7 +1721,7 @@ do_setshow_command (arg, from_tty, c)
int quote;
stb = ui_out_stream_new (uiout);
- old_chain = make_cleanup ((make_cleanup_func) ui_out_stream_delete, stb);
+ old_chain = make_cleanup_ui_out_stream_delete (stb);
#endif /* UI_OUT */
/* Print doc minus "show" at start. */
diff --git a/gdb/command.h b/gdb/command.h
index 3b916d41d93..f6c46e96080 100644
--- a/gdb/command.h
+++ b/gdb/command.h
@@ -33,7 +33,7 @@ enum command_class
no_class = -1, class_run = 0, class_vars, class_stack,
class_files, class_support, class_info, class_breakpoint, class_trace,
class_alias, class_obscure, class_user, class_maintenance,
- class_pseudo, class_tui, class_xdb,
+ class_pseudo, class_tui, class_xdb
};
/* Not a set/show command. Note that some commands which begin with
@@ -108,12 +108,11 @@ struct cmd_list_element
union
{
/* If type is not_set_cmd, call it like this: */
- void (*cfunc) PARAMS ((char *args, int from_tty));
+ void (*cfunc) (char *args, int from_tty);
/* If type is cmd_set or show_cmd, first set the variables, and
then call this. */
- void (*sfunc) PARAMS ((char *args, int from_tty,
- struct cmd_list_element * c));
+ void (*sfunc) (char *args, int from_tty, struct cmd_list_element * c);
}
function;
#define NO_FUNCTION ((void (*) PARAMS((char *args, int from_tty))) 0)
@@ -186,7 +185,7 @@ struct cmd_list_element
returned relative to this position. For example, suppose TEXT is "foo"
and we want to complete to "foobar". If WORD is "oo", return
"oobar"; if WORD is "baz/foo", return "baz/foobar". */
- char **(*completer) PARAMS ((char *text, char *word));
+ char **(*completer) (char *text, char *word);
/* Type of "set" or "show" command (or SET_NOT_SET if not "set"
or "show"). */
@@ -194,7 +193,7 @@ struct cmd_list_element
/* Pointer to variable affected by "set" and "show". Doesn't matter
if type is not_set. */
- char *var;
+ void *var;
/* What kind of variable is *VAR? */
var_types var_type;
@@ -216,31 +215,39 @@ struct cmd_list_element
/* Forward-declarations of the entry-points of command.c. */
-extern struct cmd_list_element *
- add_cmd PARAMS ((char *, enum command_class, void (*fun) (char *, int),
- char *, struct cmd_list_element **));
-
-extern struct cmd_list_element *
- add_alias_cmd PARAMS ((char *, char *, enum command_class, int,
- struct cmd_list_element **));
-
-extern struct cmd_list_element *
- add_prefix_cmd PARAMS ((char *, enum command_class, void (*fun) (char *, int),
- char *, struct cmd_list_element **, char *, int,
- struct cmd_list_element **));
-
-extern struct cmd_list_element *
- add_abbrev_prefix_cmd PARAMS ((char *, enum command_class,
- void (*fun) (char *, int), char *,
- struct cmd_list_element **, char *, int,
- struct cmd_list_element **));
-
-extern struct cmd_list_element *
- lookup_cmd PARAMS ((char **, struct cmd_list_element *, char *, int, int));
-
-extern struct cmd_list_element *
- lookup_cmd_1 PARAMS ((char **, struct cmd_list_element *,
- struct cmd_list_element **, int));
+extern struct cmd_list_element *add_cmd (char *, enum command_class,
+ void (*fun) (char *, int), char *,
+ struct cmd_list_element **);
+
+extern struct cmd_list_element *add_alias_cmd (char *, char *,
+ enum command_class, int,
+ struct cmd_list_element **);
+
+extern struct cmd_list_element *add_prefix_cmd (char *, enum command_class,
+ void (*fun) (char *, int),
+ char *,
+ struct cmd_list_element **,
+ char *, int,
+ struct cmd_list_element **);
+
+extern struct cmd_list_element *add_abbrev_prefix_cmd (char *,
+ enum command_class,
+ void (*fun) (char *,
+ int),
+ char *,
+ struct cmd_list_element
+ **, char *, int,
+ struct cmd_list_element
+ **);
+
+extern struct cmd_list_element *lookup_cmd (char **,
+ struct cmd_list_element *, char *,
+ int, int);
+
+extern struct cmd_list_element *lookup_cmd_1 (char **,
+ struct cmd_list_element *,
+ struct cmd_list_element **,
+ int);
extern struct cmd_list_element *
deprecate_cmd (struct cmd_list_element *, char * );
@@ -254,27 +261,22 @@ extern int
struct cmd_list_element **prefix_cmd,
struct cmd_list_element **cmd);
-extern struct cmd_list_element *
- add_com PARAMS ((char *, enum command_class, void (*fun) (char *, int),
- char *));
+extern struct cmd_list_element *add_com (char *, enum command_class,
+ void (*fun) (char *, int), char *);
-extern struct cmd_list_element *
- add_com_alias PARAMS ((char *, char *, enum command_class, int));
+extern struct cmd_list_element *add_com_alias (char *, char *,
+ enum command_class, int);
-extern struct cmd_list_element *
- add_info PARAMS ((char *, void (*fun) (char *, int), char *));
+extern struct cmd_list_element *add_info (char *, void (*fun) (char *, int),
+ char *);
-extern struct cmd_list_element *
- add_info_alias PARAMS ((char *, char *, int));
+extern struct cmd_list_element *add_info_alias (char *, char *, int);
-extern char **
- complete_on_cmdlist PARAMS ((struct cmd_list_element *, char *, char *));
+extern char **complete_on_cmdlist (struct cmd_list_element *, char *, char *);
-extern char **
- complete_on_enum PARAMS ((char **enumlist, char *, char *));
+extern char **complete_on_enum (char **enumlist, char *, char *);
-extern void
-delete_cmd PARAMS ((char *, struct cmd_list_element **));
+extern void delete_cmd (char *, struct cmd_list_element **);
extern void help_cmd (char *, struct ui_file *);
@@ -284,42 +286,42 @@ extern void help_list (struct cmd_list_element *, char *,
extern void help_cmd_list (struct cmd_list_element *, enum command_class,
char *, int, struct ui_file *);
-extern struct cmd_list_element *
- add_set_cmd PARAMS ((char *, enum command_class, var_types, char *, char *,
- struct cmd_list_element **));
+extern struct cmd_list_element *add_set_cmd (char *name, enum
+ command_class class,
+ var_types var_type, void *var,
+ char *doc,
+ struct cmd_list_element **list);
-extern struct cmd_list_element *
- add_set_enum_cmd PARAMS ((char *name, enum command_class, char *list[],
- char *var, char *doc, struct cmd_list_element ** c));
+extern struct cmd_list_element *add_set_enum_cmd (char *name,
+ enum command_class class,
+ char *enumlist[],
+ char **var,
+ char *doc,
+ struct cmd_list_element **list);
-extern struct cmd_list_element *
- add_show_from_set PARAMS ((struct cmd_list_element *,
- struct cmd_list_element **));
+extern struct cmd_list_element *add_show_from_set (struct cmd_list_element *,
+ struct cmd_list_element
+ **);
/* Do a "set" or "show" command. ARG is NULL if no argument, or the text
of the argument, and FROM_TTY is nonzero if this command is being entered
directly by the user (i.e. these are just like any other
command). C is the command list element for the command. */
-extern void
-do_setshow_command PARAMS ((char *, int, struct cmd_list_element *));
+extern void do_setshow_command (char *, int, struct cmd_list_element *);
/* Do a "show" command for each thing on a command list. */
-extern void
-cmd_show_list PARAMS ((struct cmd_list_element *, int, char *));
+extern void cmd_show_list (struct cmd_list_element *, int, char *);
-extern void
-error_no_arg PARAMS ((char *));
+extern void error_no_arg (char *);
-extern void
-dont_repeat PARAMS ((void));
+extern void dont_repeat (void);
/* Used to mark commands that don't do anything. If we just leave the
function field NULL, the command is interpreted as a help topic, or
as a class of commands. */
-extern void
-not_just_help_class_command PARAMS ((char *, int));
+extern void not_just_help_class_command (char *, int);
#endif /* !defined (COMMAND_H) */
diff --git a/gdb/complaints.c b/gdb/complaints.c
index c22d213d602..ee877fbafae 100644
--- a/gdb/complaints.c
+++ b/gdb/complaints.c
@@ -22,7 +22,7 @@
#include "complaints.h"
#include "gdbcmd.h"
-extern void _initialize_complaints PARAMS ((void));
+extern void _initialize_complaints (void);
/* Structure to manage complaints about symbol file contents. */
diff --git a/gdb/complaints.h b/gdb/complaints.h
index d65b037c3b5..5671730729c 100644
--- a/gdb/complaints.h
+++ b/gdb/complaints.h
@@ -44,11 +44,9 @@ extern struct complaint complaint_root[1];
/* Functions that handle complaints. (in complaints.c) */
-extern void
-complain PARAMS ((struct complaint *,...));
+extern void complain (struct complaint *, ...);
-extern void
-clear_complaints PARAMS ((int, int));
+extern void clear_complaints (int, int);
#endif /* !defined (COMPLAINTS_H) */
diff --git a/gdb/config.in b/gdb/config.in
index ea43988390f..faf5cd4d10d 100644
--- a/gdb/config.in
+++ b/gdb/config.in
@@ -62,6 +62,15 @@
/* Define if compiling on Solaris 7. */
#undef _MSE_INT_H
+/* Define if your struct reg has r_fs. */
+#undef HAVE_STRUCT_REG_R_FS
+
+/* Define if your struct reg has r_gs. */
+#undef HAVE_STRUCT_REG_R_GS
+
+/* Define if the prfpregset_t type is broken. */
+#undef PRFPREGSET_T_BROKEN
+
/* Define if you want to use new multi-fd /proc interface
(replaces HAVE_MULTIPLE_PROC_FDS as well as other macros). */
#undef NEW_PROC_API
@@ -100,9 +109,6 @@
to explicitly deallocate that memory when gdb calls exit. */
#undef MMCHECK_FORCE
-/* Define if you want to use the full-screen terminal user interface. */
-#undef TUI
-
/* Define if <proc_service.h> on solaris uses int instead of
size_t, and assorted other type changes. */
#undef PROC_SERVICE_IS_OLD
@@ -126,6 +132,9 @@
/* Define if <sys/ptrace.h> defines the PTRACE_GETXFPREGS request. */
#undef HAVE_PTRACE_GETXFPREGS
+/* Define if gnu-regex.c included with GDB should be used. */
+#undef USE_INCLUDED_REGEX
+
/* Define if you have the __argz_count function. */
#undef HAVE___ARGZ_COUNT
@@ -207,6 +216,9 @@
/* Define if you have the <curses.h> header file. */
#undef HAVE_CURSES_H
+/* Define if you have the <dirent.h> header file. */
+#undef HAVE_DIRENT_H
+
/* Define if you have the <endian.h> header file. */
#undef HAVE_ENDIAN_H
@@ -225,6 +237,12 @@
/* Define if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
+/* Define if you have the <ncurses.h> header file. */
+#undef HAVE_NCURSES_H
+
+/* Define if you have the <ndir.h> header file. */
+#undef HAVE_NDIR_H
+
/* Define if you have the <nl_types.h> header file. */
#undef HAVE_NL_TYPES_H
@@ -255,9 +273,15 @@
/* Define if you have the <sys/debugreg.h> header file. */
#undef HAVE_SYS_DEBUGREG_H
+/* Define if you have the <sys/dir.h> header file. */
+#undef HAVE_SYS_DIR_H
+
/* Define if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H
+/* Define if you have the <sys/ndir.h> header file. */
+#undef HAVE_SYS_NDIR_H
+
/* Define if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
@@ -273,6 +297,9 @@
/* Define if you have the <sys/select.h> header file. */
#undef HAVE_SYS_SELECT_H
+/* Define if you have the <sys/user.h> header file. */
+#undef HAVE_SYS_USER_H
+
/* Define if you have the <sys/wait.h> header file. */
#undef HAVE_SYS_WAIT_H
diff --git a/gdb/config/a29k/tm-a29k.h b/gdb/config/a29k/tm-a29k.h
index 25a5bea74d0..eef74f35088 100644
--- a/gdb/config/a29k/tm-a29k.h
+++ b/gdb/config/a29k/tm-a29k.h
@@ -31,7 +31,7 @@
#define TARGET_BYTE_ORDER BIG_ENDIAN
/* Floating point uses IEEE representations. */
-#define IEEE_FLOAT
+#define IEEE_FLOAT (1)
/* Recognize our magic number. */
#define BADMAG(x) ((x).f_magic != 0572)
@@ -508,7 +508,9 @@ extern CORE_ADDR frame_locals_address ();
because registers get renumbered on the a29k without getting saved. */
struct frame_info;
-void a29k_get_saved_register PARAMS ((char *raw_buffer, int *optimized, CORE_ADDR * addrp, struct frame_info * frame, int regnum, enum lval_type * lvalp));
+void a29k_get_saved_register (char *raw_buffer, int *optimized,
+ CORE_ADDR * addrp, struct frame_info *frame,
+ int regnum, enum lval_type *lvalp);
#define GET_SAVED_REGISTER(raw_buffer, optimized, addrp, frame, regnum, lval) \
a29k_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval)
@@ -713,4 +715,4 @@ processor_type;
"frame" or "info frame" command. */
#define SETUP_ARBITRARY_FRAME(argc, argv) setup_arbitrary_frame (argc, argv)
-extern struct frame_info *setup_arbitrary_frame PARAMS ((int, CORE_ADDR *));
+extern struct frame_info *setup_arbitrary_frame (int, CORE_ADDR *);
diff --git a/gdb/config/a29k/tm-vx29k.h b/gdb/config/a29k/tm-vx29k.h
index 5d9866f349e..02b2703cc09 100644
--- a/gdb/config/a29k/tm-vx29k.h
+++ b/gdb/config/a29k/tm-vx29k.h
@@ -177,7 +177,7 @@
This routine returns true on success */
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-extern int get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
/* VxWorks adjusts the PC after a breakpoint has been hit. */
@@ -207,7 +207,7 @@ extern int get_longjmp_target PARAMS ((CORE_ADDR *));
val = value_cast (builtin_type_int, val); \
} while (0)
-extern int vx29k_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *));
+extern int vx29k_frame_chain_valid (CORE_ADDR, struct frame_info *);
#define FRAME_CHAIN_VALID(chain, thisframe) vx29k_frame_chain_valid (chain, thisframe)
extern CORE_ADDR frame_saved_call_site ();
diff --git a/gdb/config/alpha/alpha-osf3.mh b/gdb/config/alpha/alpha-osf3.mh
index 6de8bca8e3a..61594a772b4 100644
--- a/gdb/config/alpha/alpha-osf3.mh
+++ b/gdb/config/alpha/alpha-osf3.mh
@@ -1,5 +1,5 @@
# Host: Little-endian Alpha running OSF/1-3.x and higher using procfs
-XDEPFILES=
+XDEPFILES= ser-tcp.o ser-pipe.o
XM_FILE= xm-alphaosf.h
NAT_FILE= nm-osf3.h
NATDEPFILES= infptrace.o inftarg.o corelow.o alpha-nat.o fork-child.o \
diff --git a/gdb/config/alpha/fbsd.mh b/gdb/config/alpha/fbsd.mh
new file mode 100644
index 00000000000..9c2b5e580d2
--- /dev/null
+++ b/gdb/config/alpha/fbsd.mh
@@ -0,0 +1,6 @@
+# Host: FreeBSD/Alpha
+XDEPFILES= ser-tcp.o
+NATDEPFILES= fork-child.o infptrace.o inftarg.o solib.o \
+ corelow.o core-regset.o alphabsd-nat.o
+XM_FILE= xm-fbsd.h
+NAT_FILE= nm-fbsd.h
diff --git a/gdb/config/alpha/fbsd.mt b/gdb/config/alpha/fbsd.mt
new file mode 100644
index 00000000000..6d33977c07a
--- /dev/null
+++ b/gdb/config/alpha/fbsd.mt
@@ -0,0 +1,3 @@
+# Target: FreeBSD/Alpha
+TDEPFILES= alpha-tdep.o
+TM_FILE= tm-fbsd.h
diff --git a/gdb/config/alpha/nm-fbsd.h b/gdb/config/alpha/nm-fbsd.h
new file mode 100644
index 00000000000..59321b999b0
--- /dev/null
+++ b/gdb/config/alpha/nm-fbsd.h
@@ -0,0 +1,44 @@
+/* Native-dependent definitions for FreeBSD/Alpha.
+ Copyright (C) 1986, 87, 89, 92, 96, 2000 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef NM_FBSD_H
+#define NM_FBSD_H
+
+/* Type of the third argument to the `ptrace' system call. */
+#define PTRACE_ARG3_TYPE caddr_t
+
+/* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */
+#define FETCH_INFERIOR_REGISTERS
+
+/* We can attach and detach. */
+#define ATTACH_DETACH
+
+/* The Alpha does not step over a breakpoint. */
+#define CANNOT_STEP_BREAKPOINT
+
+
+/* Shared library support. */
+
+#define SVR4_SHARED_LIBS
+
+#include "solib.h" /* Support for shared libraries. */
+#include "elf/common.h" /* Additional ELF shared library info. */
+
+#endif /* NM_FBSD_H */
diff --git a/gdb/config/alpha/nm-linux.h b/gdb/config/alpha/nm-linux.h
index 979b8174d33..062d4ff8d86 100644
--- a/gdb/config/alpha/nm-linux.h
+++ b/gdb/config/alpha/nm-linux.h
@@ -30,8 +30,7 @@
This routine returns true on success */
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-extern int
-get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
/* ptrace register ``addresses'' are absolute. */
diff --git a/gdb/config/alpha/nm-osf.h b/gdb/config/alpha/nm-osf.h
index df0030a2761..f102fbd645d 100644
--- a/gdb/config/alpha/nm-osf.h
+++ b/gdb/config/alpha/nm-osf.h
@@ -25,8 +25,7 @@
This routine returns true on success */
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-extern int
-get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
/* ptrace register ``addresses'' are absolute. */
diff --git a/gdb/config/alpha/nm-osf2.h b/gdb/config/alpha/nm-osf2.h
index dfbff819681..3d9105f1e31 100644
--- a/gdb/config/alpha/nm-osf2.h
+++ b/gdb/config/alpha/nm-osf2.h
@@ -45,7 +45,7 @@
/* Return sizeof user struct to callers in less machine dependent routines */
#define KERNEL_U_SIZE kernel_u_size()
-extern int kernel_u_size PARAMS ((void));
+extern int kernel_u_size (void);
/* poll() doesn't seem to work properly for /proc in this version of the OS.
If we only specify POLLPRI, things hang. It seems to get better when we set
diff --git a/gdb/config/alpha/tm-alpha.h b/gdb/config/alpha/tm-alpha.h
index d63dcc1296d..2b3e5ac6b6f 100644
--- a/gdb/config/alpha/tm-alpha.h
+++ b/gdb/config/alpha/tm-alpha.h
@@ -42,7 +42,7 @@ struct symbol;
#define TARGET_PTR_BIT 64
/* Floating point is IEEE compliant */
-#define IEEE_FLOAT
+#define IEEE_FLOAT (1)
/* Number of traps that happen between exec'ing the shell
* to run an inferior, and when we finally get to
@@ -59,7 +59,7 @@ struct symbol;
to reach some "real" code. */
#define SKIP_PROLOGUE(pc) (alpha_skip_prologue(pc, 0))
-extern CORE_ADDR alpha_skip_prologue PARAMS ((CORE_ADDR addr, int lenient));
+extern CORE_ADDR alpha_skip_prologue (CORE_ADDR addr, int lenient);
/* Immediately after a function call, return the saved pc.
Can't always go through the frames for this because on some machines
@@ -67,8 +67,7 @@ extern CORE_ADDR alpha_skip_prologue PARAMS ((CORE_ADDR addr, int lenient));
some instructions. */
#define SAVED_PC_AFTER_CALL(frame) alpha_saved_pc_after_call(frame)
-extern CORE_ADDR
- alpha_saved_pc_after_call PARAMS ((struct frame_info *));
+extern CORE_ADDR alpha_saved_pc_after_call (struct frame_info *);
/* Are we currently handling a signal ? */
@@ -184,7 +183,7 @@ extern CORE_ADDR
#define REGISTER_CONVERT_TO_VIRTUAL(REGNUM, TYPE, FROM, TO) \
alpha_register_convert_to_virtual (REGNUM, TYPE, FROM, TO)
extern void
-alpha_register_convert_to_virtual PARAMS ((int, struct type *, char *, char *));
+alpha_register_convert_to_virtual (int, struct type *, char *, char *);
/* Convert data from virtual format with type TYPE in buffer FROM
to raw format for register REGNUM in buffer TO. */
@@ -192,7 +191,7 @@ alpha_register_convert_to_virtual PARAMS ((int, struct type *, char *, char *));
#define REGISTER_CONVERT_TO_RAW(TYPE, REGNUM, FROM, TO) \
alpha_register_convert_to_raw (TYPE, REGNUM, FROM, TO)
extern void
-alpha_register_convert_to_raw PARAMS ((struct type *, int, char *, char *));
+alpha_register_convert_to_raw (struct type *, int, char *, char *);
/* Return the GDB type object for the "standard" data type
of data in register N. */
@@ -213,16 +212,14 @@ alpha_register_convert_to_raw PARAMS ((struct type *, int, char *, char *));
#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
alpha_extract_return_value(TYPE, REGBUF, VALBUF)
-extern void
-alpha_extract_return_value PARAMS ((struct type *, char *, char *));
+extern void alpha_extract_return_value (struct type *, char *, char *);
/* Write into appropriate registers a function return value
of type TYPE, given in virtual format. */
#define STORE_RETURN_VALUE(TYPE,VALBUF) \
alpha_store_return_value(TYPE, VALBUF)
-extern void
-alpha_store_return_value PARAMS ((struct type *, char *));
+extern void alpha_store_return_value (struct type *, char *);
/* Extract from an array REGBUF containing the (raw) register state
the address in which a function should return its structure value,
@@ -247,7 +244,7 @@ alpha_store_return_value PARAMS ((struct type *, char *));
and produces the frame's chain-pointer. */
#define FRAME_CHAIN(thisframe) (CORE_ADDR) alpha_frame_chain (thisframe)
-extern CORE_ADDR alpha_frame_chain PARAMS ((struct frame_info *));
+extern CORE_ADDR alpha_frame_chain (struct frame_info *);
/* Define other aspects of the stack frame. */
@@ -261,8 +258,7 @@ extern CORE_ADDR alpha_frame_chain PARAMS ((struct frame_info *));
/* Saved Pc. */
#define FRAME_SAVED_PC(FRAME) (alpha_frame_saved_pc(FRAME))
-extern CORE_ADDR
- alpha_frame_saved_pc PARAMS ((struct frame_info *));
+extern CORE_ADDR alpha_frame_saved_pc (struct frame_info *);
/* The alpha has two different virtual pointers for arguments and locals.
@@ -298,7 +294,7 @@ extern CORE_ADDR
ways in the stack frame. sp is even more special:
the address we return for it IS the sp for the next frame. */
-extern void alpha_find_saved_regs PARAMS ((struct frame_info *));
+extern void alpha_find_saved_regs (struct frame_info *);
#define FRAME_INIT_SAVED_REGS(frame_info) \
do { \
@@ -313,19 +309,17 @@ extern void alpha_find_saved_regs PARAMS ((struct frame_info *));
#define PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) \
(alpha_push_arguments((nargs), (args), (sp), (struct_return), (struct_addr)))
extern CORE_ADDR
- alpha_push_arguments PARAMS ((int, struct value **, CORE_ADDR, int, CORE_ADDR));
+alpha_push_arguments (int, struct value **, CORE_ADDR, int, CORE_ADDR);
/* Push an empty stack frame, to record the current PC, etc. */
#define PUSH_DUMMY_FRAME alpha_push_dummy_frame()
-extern void
-alpha_push_dummy_frame PARAMS ((void));
+extern void alpha_push_dummy_frame (void);
/* Discard from the stack the innermost frame, restoring all registers. */
#define POP_FRAME alpha_pop_frame()
-extern void
-alpha_pop_frame PARAMS ((void));
+extern void alpha_pop_frame (void);
/* Alpha OSF/1 inhibits execution of code on the stack.
But there is no need for a dummy on the alpha. PUSH_ARGUMENTS
@@ -346,7 +340,7 @@ alpha_pop_frame PARAMS ((void));
#define CALL_DUMMY_BREAKPOINT_OFFSET (0)
-extern CORE_ADDR alpha_call_dummy_address PARAMS ((void));
+extern CORE_ADDR alpha_call_dummy_address (void);
#define CALL_DUMMY_ADDRESS() alpha_call_dummy_address()
/* Insert the specified number of args and function address
@@ -376,7 +370,7 @@ extern CORE_ADDR alpha_call_dummy_address PARAMS ((void));
alpha_extra_func_info_t's off of this. */
#define MIPS_EFI_SYMBOL_NAME "__GDB_EFI_INFO__"
-extern void ecoff_relocate_efi PARAMS ((struct symbol *, CORE_ADDR));
+extern void ecoff_relocate_efi (struct symbol *, CORE_ADDR);
/* Specific information about a procedure.
This overlays the ALPHA's PDR records,
@@ -402,8 +396,7 @@ typedef struct alpha_extra_func_info
alpha_extra_func_info_t proc_desc;
#define INIT_EXTRA_FRAME_INFO(fromleaf, fci) init_extra_frame_info(fci)
-extern void
-init_extra_frame_info PARAMS ((struct frame_info *));
+extern void init_extra_frame_info (struct frame_info *);
#define PRINT_EXTRA_FRAME_INFO(fi) \
{ \
@@ -424,7 +417,7 @@ init_extra_frame_info PARAMS ((struct frame_info *));
multiple functions with the same SP that are at different stack levels. */
#define SETUP_ARBITRARY_FRAME(argc, argv) setup_arbitrary_frame (argc, argv)
-extern struct frame_info *setup_arbitrary_frame PARAMS ((int, CORE_ADDR *));
+extern struct frame_info *setup_arbitrary_frame (int, CORE_ADDR *);
/* This is used by heuristic_proc_start. It should be shot it the head. */
#ifndef VM_MIN_ADDRESS
@@ -476,6 +469,7 @@ extern struct frame_info *setup_arbitrary_frame PARAMS ((int, CORE_ADDR *));
#define FRAME_PAST_SIGTRAMP_FRAME(frame, pc) \
(alpha_osf_skip_sigtramp_frame (frame, pc))
-extern CORE_ADDR alpha_osf_skip_sigtramp_frame PARAMS ((struct frame_info *, CORE_ADDR));
+extern CORE_ADDR alpha_osf_skip_sigtramp_frame (struct frame_info *,
+ CORE_ADDR);
#endif /* TM_ALPHA_H */
diff --git a/gdb/config/alpha/tm-alphalinux.h b/gdb/config/alpha/tm-alphalinux.h
index a2a993e0720..833dbf9b632 100644
--- a/gdb/config/alpha/tm-alphalinux.h
+++ b/gdb/config/alpha/tm-alphalinux.h
@@ -26,7 +26,7 @@
/* Are we currently handling a signal ? */
-extern long alpha_linux_sigtramp_offset PARAMS ((CORE_ADDR));
+extern long alpha_linux_sigtramp_offset (CORE_ADDR);
#undef IN_SIGTRAMP
#define IN_SIGTRAMP(pc, name) (alpha_linux_sigtramp_offset (pc) >= 0)
diff --git a/gdb/config/alpha/tm-fbsd.h b/gdb/config/alpha/tm-fbsd.h
new file mode 100644
index 00000000000..73086e463ec
--- /dev/null
+++ b/gdb/config/alpha/tm-fbsd.h
@@ -0,0 +1,32 @@
+/* Target-dependent definitions for FreeBSD/Alpha.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef TM_FBSD_H
+#define TM_FBSD_H
+
+#include "alpha/tm-alpha.h"
+
+/* Number of traps that happen between exec'ing the shell to run an
+ inferior, and when we finally get to the inferior code. The
+ default is right for FreeBSD. */
+
+#undef START_INFERIOR_TRAPS_EXPECTED
+
+#endif /* TM_FBSD_H */
diff --git a/gdb/config/alpha/xm-fbsd.h b/gdb/config/alpha/xm-fbsd.h
new file mode 100644
index 00000000000..f519512f822
--- /dev/null
+++ b/gdb/config/alpha/xm-fbsd.h
@@ -0,0 +1,26 @@
+/* Host-dependent definitions for FreeBSD/i386.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef XM_FBSD_H
+#define XM_FBSD_H
+
+#define HOST_BYTE_ORDER LITTLE_ENDIAN
+
+#endif /* XM_FBSD_H */
diff --git a/gdb/config/arc/tm-arc.h b/gdb/config/arc/tm-arc.h
index 34fabaf4f3a..0eb4e756952 100644
--- a/gdb/config/arc/tm-arc.h
+++ b/gdb/config/arc/tm-arc.h
@@ -26,7 +26,7 @@
#define TARGET_BYTE_ORDER_SELECTABLE
/* We have IEEE floating point, if we have any float at all. */
-#define IEEE_FLOAT
+#define IEEE_FLOAT (1)
/* Offset from address of function to start of its code.
Zero on most machines. */
@@ -40,7 +40,7 @@
#define SKIP_PROLOGUE(pc) (arc_skip_prologue (pc, 0))
#define SKIP_PROLOGUE_FRAMELESS_P(pc) (arc_skip_prologue (pc, 1))
-extern CORE_ADDR arc_skip_prologue PARAMS ((CORE_ADDR, int));
+extern CORE_ADDR arc_skip_prologue (CORE_ADDR, int);
/* Sequence of bytes for breakpoint instruction.
??? The current value is "sr -1,[-1]" and is for the simulator only.
@@ -62,7 +62,7 @@ extern CORE_ADDR arc_skip_prologue PARAMS ((CORE_ADDR, int));
/* We don't have a reliable single step facility.
??? We do have a cycle single step facility, but that won't work. */
#define SOFTWARE_SINGLE_STEP_P 1
-extern void arc_software_single_step PARAMS ((unsigned int, int));
+extern void arc_software_single_step (unsigned int, int);
#define SOFTWARE_SINGLE_STEP(sig,bp_p) arc_software_single_step (sig, bp_p)
/* FIXME: Need to set STEP_SKIPS_DELAY. */
@@ -277,7 +277,7 @@ extern void arc_software_single_step PARAMS ((unsigned int, int));
#define FRAME_SAVED_PC(frame) (arc_frame_saved_pc (frame))
struct frame_info; /* in case frame.h not included yet */
-CORE_ADDR arc_frame_saved_pc PARAMS ((struct frame_info *));
+CORE_ADDR arc_frame_saved_pc (struct frame_info *);
/* If the argument is on the stack, it will be here.
We cache this value in the frame info if we've already looked it up. */
diff --git a/gdb/config/arm/linux.mh b/gdb/config/arm/linux.mh
index 46eaecebdb9..98e0e93a0e4 100644
--- a/gdb/config/arm/linux.mh
+++ b/gdb/config/arm/linux.mh
@@ -5,4 +5,7 @@ XDEPFILES= ser-tcp.o
NAT_FILE= nm-linux.h
NATDEPFILES= infptrace.o solib.o inftarg.o fork-child.o corelow.o \
- core-aout.o arm-linux-nat.o
+ core-regset.o arm-linux-nat.o linux-thread.o lin-thread.o
+
+LOADLIBES= -ldl -rdynamic
+
diff --git a/gdb/config/arm/nm-linux.h b/gdb/config/arm/nm-linux.h
index 125d72f67ff..fd459fc5a92 100644
--- a/gdb/config/arm/nm-linux.h
+++ b/gdb/config/arm/nm-linux.h
@@ -21,6 +21,8 @@
#ifndef NM_ARMLINUX_H
#define NM_ARMLINUX_H
+#include "nm-linux.h"
+
/* Return sizeof user struct to callers in less machine dependent routines */
extern int kernel_u_size (void);
#define KERNEL_U_SIZE arm_linux_kernel_u_size()
@@ -28,19 +30,4 @@ extern int kernel_u_size (void);
/* Override copies of {fetch,store}_inferior_registers in infptrace.c. */
#define FETCH_INFERIOR_REGISTERS
-/* Tell gdb that we can attach and detach other processes. */
-#define ATTACH_DETACH
-
-extern int arm_register_u_addr (int, int);
-#define REGISTER_U_ADDR(addr, blockend, regno) \
- { (addr) = arm_linux_register_u_addr((blockend), (regno)); }
-
-/* We define this if link.h is available, because with ELF we use SVR4 style
- shared libraries. */
-
-#ifdef HAVE_LINK_H
-#define SVR4_SHARED_LIBS
-#include "solib.h" /* Support for shared libraries. */
-#endif
-
#endif /* NM_ARMLINUX_H */
diff --git a/gdb/config/arm/tm-arm.h b/gdb/config/arm/tm-arm.h
index e64b77633dd..ed8e80c7d58 100644
--- a/gdb/config/arm/tm-arm.h
+++ b/gdb/config/arm/tm-arm.h
@@ -31,7 +31,7 @@ struct value;
#define TARGET_BYTE_ORDER_DEFAULT LITTLE_ENDIAN
/* IEEE format floating point. */
-#define IEEE_FLOAT
+#define IEEE_FLOAT (1)
#define TARGET_DOUBLE_FORMAT (target_byte_order == BIG_ENDIAN \
? &floatformat_ieee_double_big \
: &floatformat_ieee_double_littlebyte_bigword)
diff --git a/gdb/config/arm/tm-embed.h b/gdb/config/arm/tm-embed.h
index 5e9375c6f9a..c2a856b758c 100644
--- a/gdb/config/arm/tm-embed.h
+++ b/gdb/config/arm/tm-embed.h
@@ -50,15 +50,15 @@
/* Functions for dealing with Thumb call thunks. */
#define IN_SOLIB_CALL_TRAMPOLINE(pc, name) arm_in_call_stub (pc, name)
#define SKIP_TRAMPOLINE_CODE(pc) arm_skip_stub (pc)
-extern int arm_in_call_stub PARAMS ((CORE_ADDR pc, char *name));
-extern CORE_ADDR arm_skip_stub PARAMS ((CORE_ADDR pc));
+extern int arm_in_call_stub (CORE_ADDR pc, char *name);
+extern CORE_ADDR arm_skip_stub (CORE_ADDR pc);
/* Function to determine whether MEMADDR is in a Thumb function. */
-extern int arm_pc_is_thumb PARAMS ((bfd_vma memaddr));
+extern int arm_pc_is_thumb (bfd_vma memaddr);
/* Function to determine whether MEMADDR is in a call dummy called from
a Thumb function. */
-extern int arm_pc_is_thumb_dummy PARAMS ((bfd_vma memaddr));
+extern int arm_pc_is_thumb_dummy (bfd_vma memaddr);
#undef IN_SIGTRAMP
diff --git a/gdb/config/arm/tm-linux.h b/gdb/config/arm/tm-linux.h
index af2e809d752..9dcd6668450 100644
--- a/gdb/config/arm/tm-linux.h
+++ b/gdb/config/arm/tm-linux.h
@@ -118,8 +118,8 @@ extern CORE_ADDR find_solib_trampoline_target (CORE_ADDR pc);
need to skip over the dynamic linker call. This function decides
when to skip, and where to skip to. See the comments for
SKIP_SOLIB_RESOLVER at the top of infrun.c. */
-extern CORE_ADDR arm_skip_solib_resolver (CORE_ADDR pc);
-#define SKIP_SOLIB_RESOLVER arm_skip_solib_resolver
+extern CORE_ADDR arm_linux_skip_solib_resolver (CORE_ADDR pc);
+#define SKIP_SOLIB_RESOLVER arm_linux_skip_solib_resolver
/* When we call a function in a shared library, and the PLT sends us
into the dynamic linker to find the function's real address, we
diff --git a/gdb/config/convex/tm-convex.h b/gdb/config/convex/tm-convex.h
index f41b72695b2..884719f411f 100644
--- a/gdb/config/convex/tm-convex.h
+++ b/gdb/config/convex/tm-convex.h
Binary files differ
diff --git a/gdb/config/d10v/tm-d10v.h b/gdb/config/d10v/tm-d10v.h
index a0eb3dcf3e1..44c8c7cd544 100644
--- a/gdb/config/d10v/tm-d10v.h
+++ b/gdb/config/d10v/tm-d10v.h
@@ -25,7 +25,4 @@
extern int d10v_register_sim_regno (int reg);
#define REGISTER_SIM_REGNO(NR) d10v_register_sim_regno((NR))
-extern CORE_ADDR d10v_stack_align (CORE_ADDR size);
-#define STACK_ALIGN(SIZE) (d10v_stack_align (SIZE))
-
#define NO_EXTRA_ALIGNMENT_NEEDED 1
diff --git a/gdb/config/d30v/tm-d30v.h b/gdb/config/d30v/tm-d30v.h
index ac7940fc01b..e0cb8769393 100644
--- a/gdb/config/d30v/tm-d30v.h
+++ b/gdb/config/d30v/tm-d30v.h
@@ -46,7 +46,7 @@ struct value;
/* Advance PC across any function entry prologue instructions
to reach some "real" code. */
-extern CORE_ADDR d30v_skip_prologue PARAMS ((CORE_ADDR));
+extern CORE_ADDR d30v_skip_prologue (CORE_ADDR);
#define SKIP_PROLOGUE(ip) (d30v_skip_prologue (ip))
@@ -165,7 +165,7 @@ extern CORE_ADDR d30v_skip_prologue PARAMS ((CORE_ADDR));
#define CANNOT_STORE_REGISTER(regno) ((regno) == R0_REGNUM)
-void d30v_do_registers_info PARAMS ((int regnum, int fpregs));
+void d30v_do_registers_info (int regnum, int fpregs);
#define DO_REGISTERS_INFO d30v_do_registers_info
@@ -206,7 +206,7 @@ void d30v_do_registers_info PARAMS ((int regnum, int fpregs));
#define INIT_EXTRA_FRAME_INFO(fromleaf, fi) \
d30v_init_extra_frame_info(fromleaf, fi)
-extern void d30v_init_extra_frame_info PARAMS ((int fromleaf, struct frame_info * fi));
+extern void d30v_init_extra_frame_info (int fromleaf, struct frame_info *fi);
/* 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
@@ -217,7 +217,7 @@ extern void d30v_init_extra_frame_info PARAMS ((int fromleaf, struct frame_info
CORE_ADDR d30v_frame_chain (struct frame_info *frame);
#define FRAME_CHAIN(FRAME) d30v_frame_chain(FRAME)
-extern int d30v_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *));
+extern int d30v_frame_chain_valid (CORE_ADDR, struct frame_info *);
#define FRAME_CHAIN_VALID(chain, thisframe) d30v_frame_chain_valid (chain, thisframe)
#define FRAME_SAVED_PC(FRAME) ((FRAME)->return_pc)
#define FRAME_ARGS_ADDRESS(fi) (fi)->frame
@@ -253,7 +253,8 @@ void d30v_init_frame_pc (int fromleaf, struct frame_info *prev);
#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \
d30v_frame_find_saved_regs(frame_info, &(frame_saved_regs))
-extern void d30v_frame_find_saved_regs PARAMS ((struct frame_info *, struct frame_saved_regs *));
+extern void d30v_frame_find_saved_regs (struct frame_info *,
+ struct frame_saved_regs *);
/* DUMMY FRAMES. Need these to support inferior function calls.
They work like this on D30V:
@@ -271,7 +272,7 @@ extern void d30v_frame_find_saved_regs PARAMS ((struct frame_info *, struct fram
#define CALL_DUMMY_LOCATION AT_ENTRY_POINT
#define CALL_DUMMY_BREAKPOINT_OFFSET (0)
-extern CORE_ADDR d30v_call_dummy_address PARAMS ((void));
+extern CORE_ADDR d30v_call_dummy_address (void);
#define CALL_DUMMY_ADDRESS() d30v_call_dummy_address()
#define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, args, type, gcc_p) \
@@ -279,12 +280,13 @@ sp = d30v_fix_call_dummy (dummyname, pc, fun, nargs, args, type, gcc_p)
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) ( pc == IMEM_START + 4 )
-extern CORE_ADDR d30v_fix_call_dummy PARAMS ((char *, CORE_ADDR, CORE_ADDR,
- int, struct value **,
- struct type *, int));
+extern CORE_ADDR d30v_fix_call_dummy (char *, CORE_ADDR, CORE_ADDR,
+ int, struct value **,
+ struct type *, int);
#define PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) \
(d30v_push_arguments((nargs), (args), (sp), (struct_return), (struct_addr)))
-extern CORE_ADDR d30v_push_arguments PARAMS ((int, struct value **, CORE_ADDR, int, CORE_ADDR));
+extern CORE_ADDR d30v_push_arguments (int, struct value **, CORE_ADDR, int,
+ CORE_ADDR);
/* Extract from an array REGBUF containing the (raw) register state
@@ -293,14 +295,13 @@ extern CORE_ADDR d30v_push_arguments PARAMS ((int, struct value **, CORE_ADDR, i
#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
d30v_extract_return_value(TYPE, REGBUF, VALBUF)
-extern void
-d30v_extract_return_value PARAMS ((struct type *, char *, char *));
+extern void d30v_extract_return_value (struct type *, char *, char *);
/* Discard from the stack the innermost frame,
restoring all saved registers. */
#define POP_FRAME d30v_pop_frame();
-extern void d30v_pop_frame PARAMS ((void));
+extern void d30v_pop_frame (void);
#define REGISTER_SIZE 4
diff --git a/gdb/config/djgpp/README b/gdb/config/djgpp/README
index cced23473df..326cfe2a520 100644
--- a/gdb/config/djgpp/README
+++ b/gdb/config/djgpp/README
@@ -65,21 +65,33 @@ use unzip32.exe available with the rest of DJGPP), and proceed to the
section "How to build" below.
Source distributions downloaded from one of the GNU FTP sites need
-some more work to unpack. First, you MUST use the `djtar' program to
-unzip the package. That's because some file names in the official
-distributions need to be changed to avoid problems on the various
-platforms supported by DJGPP. `djtar' can rename files on the fly
-given a file with name mappings; the distribution includes a file
-`gdb/config/djgpp/fnchange.lst' with the necessary mappings. So you
-need first to retrieve that file, and then invoke `djtar' to unpack
-the distribution. Here's how:
+some more work to unpack. First, you MUST use the `djunpack' batch
+file to unzip the package. That's because some file names in the
+official distributions need to be changed to avoid problems on the
+various platforms supported by DJGPP. `djunpack' invokes the `djtar'
+program (that is part of the basic DJGPP development kit) to rename
+these files on the fly given a file with name mappings; the
+distribution includes a file `gdb/config/djgpp/fnchange.lst' with the
+necessary mappings. So you need first to retrieve that batch file,
+and then invoke it to unpack the distribution. Here's how:
+ djtar -x -p -o gdb-5.0/djunpack.bat gdb-5.0.tar.gz > djunpack.bat
+ djunpack gdb-5.0.tar.gz
- djtar -x -p -o gdb-5.0/gdb/config/djgpp/fnchange.lst gdb-5.0.tar.gz > lst
- djtar -x -n lst gdb-5.0.tar.gz
+(The name of the distribution archive and the leading directory of the
+path to `djunpack.bat' in the distribution will be different for
+versions of GDB other than 5.0.)
-(The name of the distribution archive and the top-level directory will
-be different for versions other than 5.0.)
+If the argument to `djunpack.bat' include leading directories, it MUST
+be given with the DOS-style backslashes; Unix-style forward slashes
+will NOT work.
+
+If the distribution comes as a .tar.bz2 archive, you need to unpack it
+as follows:
+
+ bnzip2 gdb-5.0.tar.bz2
+ djtar -x -p -o gdb-5.0/djunpack.bat gdb-5.0.tar > djunpack.bat
+ djunpack gdb-5.0.tar
3. How to build
@@ -128,14 +140,19 @@ After the configure script finishes, run Make:
make
+If you want to produce the documentation (for example, if you changed
+some of the Texinfo sources), type this:
+
+ make info
+
When Make finishes, you can install the package:
- make install INSTALL='/dev/env/DJDIR/bin/ginstall -c'
+ make -k install prefix='${DJDIR}' INSTALL='ginstall -c'
The above doesn't install the docs; for that you will need to say
this:
- make -k install-info INSTALL='/dev/env/DJDIR/bin/ginstall -c'
+ make -k install-info prefix='${DJDIR}' INSTALL='ginstall -c'
(The -k switch is required, because some unneeded targets that are
part of the install process fail; -k lets Make run to completion
@@ -151,16 +168,18 @@ script gdb/config/djgpp/djcheck.sh, like this:
cd gdb/testsuite
sh ../config/djgpp/djcheck.sh
-This will run for a while and should not print anything. Any test
-that fails to produce the expected output will cause the diffs between
-the expected and the actual output be printed, and in addition will
-leave behind a file SOMETHING.tst (where SOMETHING is the name of one
-of the tests). You should compare each of the *.tst files with the
-corresponding *.out file and convince yourself that the differences do
-not indicate a real problem. Examples of differences you can
-disregard are changes in the copyright blurb printed by GDB, values of
-unitialized variables, addresses of global variables like argv[] and
-envp[] (which depend on the size of your environment), etc.
+This will run for a while and should not print anything, except the
+messages "Running tests in DIR", where DIR is one of the
+subdirectories of the testsuite. Any test that fails to produce the
+expected output will cause the diffs between the expected and the
+actual output be printed, and in addition will leave behind a file
+SOMETHING.tst (where SOMETHING is the name of the failed test). You
+should compare each of the *.tst files with the corresponding *.out
+file and convince yourself that the differences do not indicate a real
+problem. Examples of differences you can disregard are changes in the
+copyright blurb printed by GDB, values of unitialized variables,
+addresses of global variables like argv[] and envp[] (which depend on
+the size of your environment), etc.
Note that djcheck.sh only recurses into those of the subdirectories of
the test suite which test features supported by the DJGPP port of GDB.
diff --git a/gdb/config/djgpp/config.sed b/gdb/config/djgpp/config.sed
index e048cae287e..c53dc026a47 100644
--- a/gdb/config/djgpp/config.sed
+++ b/gdb/config/djgpp/config.sed
@@ -6,12 +6,13 @@ s|\.gdbinit|gdb.ini|g
/ac_given_INSTALL=/,/^CEOF/ {
/^s%@prefix@%/a\
s,\\([yp*]\\)\\.tab,\\1_tab,g\
- /^ @rm -f/s,\\$@-\\[0-9\\]\\[0-9\\],&$*.i[1-9] $*[1-9][0-9],\
+ /^ @rm -f/s,\\$@-\\[0-9\\]\\[0-9\\],& *.i[1-9] *.i[1-9][0-9],\
s,\\.info\\*,.inf* *.i[1-9] *.i[1-9][0-9],\
s,\\.gdbinit,gdb.ini,g\
/TEXINPUTS=/s,:,';',g\
/VPATH *=/s,:,;,g\
/\\$\\$file-\\[0-9\\]/s,echo,& *.i[1-9] *.i[1-9][0-9],\
+ /\\$\\$file-\\[0-9\\]/s,rm -f \\$\\$file,& \\${PACKAGE}.i[1-9] \\${PACKAGE}.i[1-9][0-9],\
s,config\\.h\\.in,config.h-in,g\
s,po2tbl\\.sed\\.in,po2tblsed.in,g
}
diff --git a/gdb/config/djgpp/djconfig.sh b/gdb/config/djgpp/djconfig.sh
index 0c6e8ea007a..32ef352bb3e 100644
--- a/gdb/config/djgpp/djconfig.sh
+++ b/gdb/config/djgpp/djconfig.sh
@@ -120,7 +120,8 @@ fi
# since it relies on file names which will never work on DOS.
echo "Running the configure script..."
$srcdir/configure --srcdir="$srcdir" --prefix='${DJDIR}' \
- --disable-shared --disable-nls --verbose $*
+ --disable-shared --disable-nls --verbose --enable-build-warnings=\
+-Wimplicit,-Wcomment,-Wformat,-Wparentheses,-Wpointer-arith $*
if test -f ${srcdir}/install- ; then
mv ${srcdir}/install- ${srcdir}/install-.sh
diff --git a/gdb/config/djgpp/fnchange.lst b/gdb/config/djgpp/fnchange.lst
index 58521a604d3..582142bbcac 100644
--- a/gdb/config/djgpp/fnchange.lst
+++ b/gdb/config/djgpp/fnchange.lst
@@ -1,179 +1,183 @@
-gdb-0222/gdb/ChangeLog-3.x gdb-0222/gdb/ChangeLog.3-x
-gdb-0222/gdb/ChangeLog-9091 gdb-0222/gdb/ChangeLog.9091
-gdb-0222/gdb/ChangeLog-92 gdb-0222/gdb/ChangeLog.92
-gdb-0222/gdb/ChangeLog-93 gdb-0222/gdb/ChangeLog.93
-gdb-0222/gdb/ChangeLog-94 gdb-0222/gdb/ChangeLog.94
-gdb-0222/gdb/ChangeLog-95 gdb-0222/gdb/ChangeLog.95
-gdb-0222/gdb/ChangeLog-96 gdb-0222/gdb/ChangeLog.96
-gdb-0222/gdb/ChangeLog-97 gdb-0222/gdb/ChangeLog.97
-gdb-0222/gdb/ChangeLog-98 gdb-0222/gdb/ChangeLog.98
-gdb-0222/gdb/ChangeLog-99 gdb-0222/gdb/ChangeLog.99
-gdb-0222/gdb/ppc-linux-tdep.c gdb-0222/gdb/ppc-linx-tdep.c
-gdb-0222/gdb/remote-adapt.c gdb-0222/gdb/rmt-adapt.c
-gdb-0222/gdb/remote-array.c gdb-0222/gdb/rmt-array.c
-gdb-0222/gdb/remote-e7000.c gdb-0222/gdb/rmt-e7000.c
-gdb-0222/gdb/remote-eb.c gdb-0222/gdb/rmt-eb.c
-gdb-0222/gdb/remote-es.c gdb-0222/gdb/rmt-es.c
-gdb-0222/gdb/remote-est.c gdb-0222/gdb/rmt-est.c
-gdb-0222/gdb/remote-mips.c gdb-0222/gdb/emt-mips.c
-gdb-0222/gdb/remote-mm.c gdb-0222/gdb/emt-mm.c
-gdb-0222/gdb/remote-nindy.c gdb-0222/gdb/rmt-nindy.c
-gdb-0222/gdb/remote-nrom.c gdb-0222/gdb/rmt-nrom.c
-gdb-0222/gdb/remote-rdi.c gdb-0222/gdb/rmt-rdi.c
-gdb-0222/gdb/remote-rdp.c gdb-0222/gdb/rmt-rdp.c
-gdb-0222/gdb/remote-sds.c gdb-0222/gdb/rmt-sds.c
-gdb-0222/gdb/remote-sim.c gdb-0222/gdb/rmt-sim.c
-gdb-0222/gdb/remote-st.c gdb-0222/gdb/rmt-st.c
-gdb-0222/gdb/remote-udi.c gdb-0222/gdb/rmt-udi.c
-gdb-0222/gdb/remote-vx.c gdb-0222/gdb/rmt-vx.c
-gdb-0222/gdb/remote-vx29k.c gdb-0222/gdb/rmt-vx29k.c
-gdb-0222/gdb/remote-vx68.c gdb-0222/gdb/rmt-vx68.c
-gdb-0222/gdb/remote-vx960.c gdb-0222/gdb/rmt-vx960.c
-gdb-0222/gdb/remote-vxmips.c gdb-0222/gdb/rmt-vxmips.c
-gdb-0222/gdb/remote-vxsparc.c gdb-0222/gdb/rmt-vxsparc.c
-gdb-0222/gdb/sparclet-rom.c gdb-0222/gdb/splet-rom.c
-gdb-0222/gdb/sparclet-stub.c gdb-0222/gdb/splet-stub.c
-gdb-0222/gdb/i386-linux-tdep.c gdb-0222/gdb/i386linux-tdep.c
-gdb-0222/gdb/arm-linux-tdep.c gdb-0222/gdb/armlin-tdep.c
-gdb-0222/gdb/arm-linux-nat.c gdb-0222/gdb/armlin-nat.c
-gdb-0222/gdb/config/alpha/alpha-osf1.mh gdb-0222/gdb/config/alpha/alphosf1.mh
-gdb-0222/gdb/config/alpha/alpha-osf2.mh gdb-0222/gdb/config/alpha/alphosf2.mh
-gdb-0222/gdb/config/alpha/alpha-osf3.mh gdb-0222/gdb/config/alpha/alphosf3.mh
-gdb-0222/gdb/config/alpha/tm-alphalinux.h gdb-0222/gdb/config/alpha/tm-alplinux.h
-gdb-0222/gdb/config/alpha/xm-alphalinux.h gdb-0222/gdb/config/alpha/xm-alplinux.h
-gdb-0222/gdb/config/i386/nm-i386sco4.h gdb-0222/gdb/config/i386/nm-sco4.h
-gdb-0222/gdb/config/i386/nm-i386sco5.h gdb-0222/gdb/config/i386/nm-sco5.h
-gdb-0222/gdb/config/i386/nm-i386sol2.h gdb-0222/gdb/config/i386/nm-sol2.h
-gdb-0222/gdb/config/i386/nm-i386v4.h gdb-0222/gdb/config/i386/nm-v4.h
-gdb-0222/gdb/config/i386/nm-i386v42mp.h gdb-0222/gdb/config/i386/nm-v42mp.h
-gdb-0222/gdb/config/i386/tm-i386mk.h gdb-0222/gdb/config/i386/tm-mk.h
-gdb-0222/gdb/config/i386/tm-i386sol2.h gdb-0222/gdb/config/i386/tm-sol2.h
-gdb-0222/gdb/config/i386/tm-i386v4.h gdb-0222/gdb/config/i386/tm-v4.h
-gdb-0222/gdb/config/i386/tm-i386v42mp.h gdb-0222/gdb/config/i386/tm-v42mp.h
-gdb-0222/gdb/config/i386/xm-i386mach.h gdb-0222/gdb/config/i386/xm-mach.h
-gdb-0222/gdb/config/i386/xm-i386mk.h gdb-0222/gdb/config/i386/xm-mk.h
-gdb-0222/gdb/config/i386/xm-i386v32.h gdb-0222/gdb/config/i386/xm-v32.h
-gdb-0222/gdb/config/i386/xm-i386v4.h gdb-0222/gdb/config/i386/xm-v4.h
-gdb-0222/gdb/config/m68k/apollo68v.mh gdb-0222/gdb/config/m68k/apollo-v.mh
-gdb-0222/gdb/config/m68k/nm-apollo68v.h gdb-0222/gdb/config/m68k/nm-apolv.h
-gdb-0222/gdb/config/m68k/nm-hp300hpux.h gdb-0222/gdb/config/m68k/nm-300ux.h
-gdb-0222/gdb/config/m68k/tm-hp300hpux.h gdb-0222/gdb/config/m68k/tm-300ux.h
-gdb-0222/gdb/config/m68k/xm-apollo68v.h gdb-0222/gdb/config/m68k/xm-apolv.h
-gdb-0222/gdb/config/m68k/xm-hp300hpux.h gdb-0222/gdb/config/m68k/xm-300ux.h
-gdb-0222/gdb/config/m88k/tm-delta88v4.h gdb-0222/gdb/config/m88k/tm-d88v4.h
-gdb-0222/gdb/config/m88k/xm-delta88v4.h gdb-0222/gdb/config/m88k/xm-d88v4.h
-gdb-0222/gdb/config/mips/tm-bigmips64.h gdb-0222/gdb/config/mips/tm-bigm64.h
-gdb-0222/gdb/config/mips/tm-embed64.h gdb-0222/gdb/config/mips/tm-emb64.h
-gdb-0222/gdb/config/mips/tm-embedl.h gdb-0222/gdb/config/mips/tm-embdl.h
-gdb-0222/gdb/config/mips/tm-embedl64.h gdb-0222/gdb/config/mips/tm-embl64.h
-gdb-0222/gdb/config/mips/tm-vr4300el.h gdb-0222/gdb/config/mips/tm-v43el.h
-gdb-0222/gdb/config/mips/tm-vr4xxxel.h gdb-0222/gdb/config/mips/tm-v4xel.h
-gdb-0222/gdb/config/mips/tm-vr5000el.h gdb-0222/gdb/config/mips/tm-vr5kel.h
-gdb-0222/gdb/config/pa/nm-hppah11.h gdb-0222/gdb/config/pa/nm-hppa11.h
-gdb-0222/gdb/config/powerpc/tm-ppcle-sim.h gdb-0222/gdb/config/powerpc/tm-ppcl-sim.h
-gdb-0222/gdb/config/rs6000/nm-rs6000ly.h gdb-0222/gdb/config/rs6000/nm-rs6kly.h
-gdb-0222/gdb/config/rs6000/tm-rs6000.h gdb-0222/gdb/config/rs6000/tm-rs6k.h
-gdb-0222/gdb/config/rs6000/tm-rs6000ly.h gdb-0222/gdb/config/rs6000/tm-rs6kly.h
-gdb-0222/gdb/config/rs6000/xm-rs6000ly.h gdb-0222/gdb/config/rs6000/xm-rs6kly.h
-gdb-0222/gdb/config/sparc/tm-sparclet.h gdb-0222/gdb/config/sparc/tm-splet.h
-gdb-0222/gdb/config/sparc/tm-sparclite.h gdb-0222/gdb/config/sparc/tm-splite.h
-gdb-0222/gdb/config/sparc/tm-sparclynx.h gdb-0222/gdb/config/sparc/tm-splynx.h
-gdb-0222/gdb/config/sparc/xm-sparclynx.h gdb-0222/gdb/config/sparc/xm-xplynx.h
-gdb-0222/gdb/config/vax/xm-vaxult2.h gdb-0222/gdb/config/vax/xm-vaxut2.h
-gdb-0222/gdb/gdbtk/generic/gdbtk-varobj.c gdb-0222/gdb/gdbtk/generic/gdbtk-vobj.c
-gdb-0222/gdb/osf-share/cma_stack_int.h gdb-0222/gdb/osf-share/cma_stkint.h
-gdb-0222/gdb/testsuite/gdb.base/coremaker2.c gdb-0222/gdb/testsuite/gdb.base/core2maker.c
-gdb-0222/gdb/tui/tuiSourceWin.c gdb-0222/gdb/tui/tuiWinSource.c
-gdb-0222/gdb/tui/tuiSourceWin.h gdb-0222/gdb/tui/tuiWinSource.h
-gdb-0222/bfd/ChangeLog-9193 gdb-0222/bfd/ChangeLog.9193
-gdb-0222/bfd/ChangeLog-9495 gdb-0222/bfd/ChangeLog.9495
-gdb-0222/bfd/ChangeLog-9697 gdb-0222/bfd/ChangeLog.9697
-gdb-0222/bfd/coff-tic80.c gdb-0222/bfd/coff-tc80.c
-gdb-0222/sim/mips/dv-tx3904irc.c gdb-0222/sim/mips/dv-tx3irc.c
-gdb-0222/sim/mips/dv-tx3904sio.c gdb-0222/sim/mips/dv-tx3sio.c
-gdb-0222/sim/mips/dv-tx3904tmr.c gdb-0222/sim/mips/dv-tx3tmr.c
-gdb-0222/sim/mn10300/dv-mn103int.c gdb-0222/sim/mn10300/dv-mn1int.c
-gdb-0222/sim/mn10300/dv-mn103iop.c gdb-0222/sim/mn10300/dv-mn1iop.c
-gdb-0222/sim/mn10300/dv-mn103ser.c gdb-0222/sim/mn10300/dv-mn1ser.c
-gdb-0222/sim/mn10300/dv-mn103tim.c gdb-0222/sim/mn10300/dv-mn1tim.c
-gdb-0222/sim/ppc/corefile-n.h gdb-0222/sim/ppc/corefle-n.h
-gdb-0222/sim/ppc/idecode_branch.h gdb-0222/sim/ppc/idec_branch.h
-gdb-0222/sim/ppc/idecode_expression.h gdb-0222/sim/ppc/idec_expression.h
-gdb-0222/sim/ppc/idecode_fields.h gdb-0222/sim/ppc/idec_fields.h
-gdb-0222/sim/ppc/sim-endian-n.h gdb-0222/sim/ppc/sim-endn.h
-gdb-0222/sim/testsuite/d10v-elf/t-ae-ld-d.s gdb-0222/sim/testsuite/d10v-elf/t-ld-d.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-ld-i.s gdb-0222/sim/testsuite/d10v-elf/t-ld-i.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-ld-id.s gdb-0222/sim/testsuite/d10v-elf/t-ld-id.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-ld-im.s gdb-0222/sim/testsuite/d10v-elf/t-ld-im.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-ld-ip.s gdb-0222/sim/testsuite/d10v-elf/t-ld-ip.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-ld2w-d.s gdb-0222/sim/testsuite/d10v-elf/t-ld2-d.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-ld2w-i.s gdb-0222/sim/testsuite/d10v-elf/t-ld2-i.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-ld2w-id.s gdb-0222/sim/testsuite/d10v-elf/t-ld2-id.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-ld2w-im.s gdb-0222/sim/testsuite/d10v-elf/t-ld2-im.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-ld2w-ip.s gdb-0222/sim/testsuite/d10v-elf/t-ld2-ip.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-st-d.s gdb-0222/sim/testsuite/d10v-elf/t-st-d.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-st-i.s gdb-0222/sim/testsuite/d10v-elf/t-st-i.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-st-id.s gdb-0222/sim/testsuite/d10v-elf/t-st-id.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-st-im.s gdb-0222/sim/testsuite/d10v-elf/t-st-im.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-st-ip.s gdb-0222/sim/testsuite/d10v-elf/t-st-ip.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-st-is.s gdb-0222/sim/testsuite/d10v-elf/t-st-is.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-st2w-d.s gdb-0222/sim/testsuite/d10v-elf/t-st2-d.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-st2w-i.s gdb-0222/sim/testsuite/d10v-elf/t-st2-i.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-st2w-id.s gdb-0222/sim/testsuite/d10v-elf/t-st2-id.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-st2w-im.s gdb-0222/sim/testsuite/d10v-elf/t-st2-im.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-st2w-ip.s gdb-0222/sim/testsuite/d10v-elf/t-st2-ip.s
-gdb-0222/sim/testsuite/d10v-elf/t-ae-st2w-is.s gdb-0222/sim/testsuite/d10v-elf/t-st2-is.s
-gdb-0222/sim/testsuite/d30v-elf/ls-ld4bhu.S gdb-0222/sim/testsuite/d30v-elf/ls-ld4bu.S
-gdb-0222/intl/po2tbl.sed.in gdb-0222/intl/po2tblsed.in
-gdb-0222/intl/intlh.inst.in gdb-0222/intl/intlh_inst.in
-gdb-0222/readline/config.h.in gdb-0222/readline/config.h-in
-gdb-0222/readline/config.h.bot gdb-0222/readline/config.h-bot
-gdb-0222/gdb/nindy-share/b.out.h gdb-0222/gdb/nindy-share/b_out.h
-gdb-0222/gdb/c-exp.tab.c gdb-0222/gdb/c-exp_tab.c
-gdb-0222/gdb/jv-exp.tab.c gdb-0222/gdb/jv-exp_tab.c
-gdb-0222/gdb/f-exp.tab.c gdb-0222/gdb/f-exp_tab.c
-gdb-0222/gdb/m2-exp.tab.c gdb-0222/gdb/m2-exp_tab.c
-gdb-0222/gdb/testsuite/gdb.c++ gdb-0222/gdb/testsuite/gdb.cxx
-gdb-0222/gdb/testsuite/gdb.c++/Makefile.in gdb-0222/gdb/testsuite/gdb.cxx/Makefile.in
-gdb-0222/gdb/testsuite/gdb.c++/ambiguous.cc gdb-0222/gdb/testsuite/gdb.cxx/ambiguous.cc
-gdb-0222/gdb/testsuite/gdb.c++/ambiguous.exp gdb-0222/gdb/testsuite/gdb.cxx/ambiguous.exp
-gdb-0222/gdb/testsuite/gdb.c++/annota2.cc gdb-0222/gdb/testsuite/gdb.cxx/annota2.cc
-gdb-0222/gdb/testsuite/gdb.c++/annota2.exp gdb-0222/gdb/testsuite/gdb.cxx/annota2.exp
-gdb-0222/gdb/testsuite/gdb.c++/anon-union.cc gdb-0222/gdb/testsuite/gdb.cxx/anon-union.cc
-gdb-0222/gdb/testsuite/gdb.c++/anon-union.exp gdb-0222/gdb/testsuite/gdb.cxx/anon-union.exp
-gdb-0222/gdb/testsuite/gdb.c++/classes.exp gdb-0222/gdb/testsuite/gdb.cxx/classes.exp
-gdb-0222/gdb/testsuite/gdb.c++/configure gdb-0222/gdb/testsuite/gdb.cxx/configure
-gdb-0222/gdb/testsuite/gdb.c++/configure.in gdb-0222/gdb/testsuite/gdb.cxx/configure.in
-gdb-0222/gdb/testsuite/gdb.c++/cplusfuncs.cc gdb-0222/gdb/testsuite/gdb.cxx/cplusfuncs.cc
-gdb-0222/gdb/testsuite/gdb.c++/cplusfuncs.exp gdb-0222/gdb/testsuite/gdb.cxx/cplusfuncs.exp
-gdb-0222/gdb/testsuite/gdb.c++/ctti.exp gdb-0222/gdb/testsuite/gdb.cxx/ctti.exp
-gdb-0222/gdb/testsuite/gdb.c++/cttiadd.cc gdb-0222/gdb/testsuite/gdb.cxx/cttiadd.cc
-gdb-0222/gdb/testsuite/gdb.c++/cttiadd1.cc gdb-0222/gdb/testsuite/gdb.cxx/cttiadd1.cc
-gdb-0222/gdb/testsuite/gdb.c++/cttiadd2.cc gdb-0222/gdb/testsuite/gdb.cxx/cttiadd2.cc
-gdb-0222/gdb/testsuite/gdb.c++/cttiadd3.cc gdb-0222/gdb/testsuite/gdb.cxx/cttiadd3.cc
-gdb-0222/gdb/testsuite/gdb.c++/demangle.exp gdb-0222/gdb/testsuite/gdb.cxx/demangle.exp
-gdb-0222/gdb/testsuite/gdb.c++/derivation.cc gdb-0222/gdb/testsuite/gdb.cxx/derivation.cc
-gdb-0222/gdb/testsuite/gdb.c++/derivation.exp gdb-0222/gdb/testsuite/gdb.cxx/derivation.exp
-gdb-0222/gdb/testsuite/gdb.c++/inherit.exp gdb-0222/gdb/testsuite/gdb.cxx/inherit.exp
-gdb-0222/gdb/testsuite/gdb.c++/local.cc gdb-0222/gdb/testsuite/gdb.cxx/local.cc
-gdb-0222/gdb/testsuite/gdb.c++/local.exp gdb-0222/gdb/testsuite/gdb.cxx/local.exp
-gdb-0222/gdb/testsuite/gdb.c++/member-ptr.cc gdb-0222/gdb/testsuite/gdb.cxx/member-ptr.cc
-gdb-0222/gdb/testsuite/gdb.c++/member-ptr.exp gdb-0222/gdb/testsuite/gdb.cxx/member-ptr.exp
-gdb-0222/gdb/testsuite/gdb.c++/method.cc gdb-0222/gdb/testsuite/gdb.cxx/method.cc
-gdb-0222/gdb/testsuite/gdb.c++/method.exp gdb-0222/gdb/testsuite/gdb.cxx/method.exp
-gdb-0222/gdb/testsuite/gdb.c++/misc.cc gdb-0222/gdb/testsuite/gdb.cxx/misc.cc
-gdb-0222/gdb/testsuite/gdb.c++/misc.exp gdb-0222/gdb/testsuite/gdb.cxx/misc.exp
-gdb-0222/gdb/testsuite/gdb.c++/overload.cc gdb-0222/gdb/testsuite/gdb.cxx/overload.cc
-gdb-0222/gdb/testsuite/gdb.c++/overload.exp gdb-0222/gdb/testsuite/gdb.cxx/overload.exp
-gdb-0222/gdb/testsuite/gdb.c++/ovldbreak.cc gdb-0222/gdb/testsuite/gdb.cxx/ovldbreak.cc
-gdb-0222/gdb/testsuite/gdb.c++/ovldbreak.exp gdb-0222/gdb/testsuite/gdb.cxx/ovldbreak.exp
-gdb-0222/gdb/testsuite/gdb.c++/ref-types.cc gdb-0222/gdb/testsuite/gdb.cxx/ref-types.cc
-gdb-0222/gdb/testsuite/gdb.c++/ref-types.exp gdb-0222/gdb/testsuite/gdb.cxx/ref-types.exp
-gdb-0222/gdb/testsuite/gdb.c++/templates.cc gdb-0222/gdb/testsuite/gdb.cxx/templates.cc
-gdb-0222/gdb/testsuite/gdb.c++/templates.exp gdb-0222/gdb/testsuite/gdb.cxx/templates.exp
-gdb-0222/gdb/testsuite/gdb.c++/userdef.cc gdb-0222/gdb/testsuite/gdb.cxx/userdef.cc
-gdb-0222/gdb/testsuite/gdb.c++/userdef.exp gdb-0222/gdb/testsuite/gdb.cxx/userdef.exp
-gdb-0222/gdb/testsuite/gdb.c++/virtfunc.cc gdb-0222/gdb/testsuite/gdb.cxx/virtfunc.cc
-gdb-0222/gdb/testsuite/gdb.c++/virtfunc.exp gdb-0222/gdb/testsuite/gdb.cxx/virtfunc.exp
-gdb-0222/gdb/testsuite/.gdbinit gdb-0222/gdb/testsuite/gdb.ini
-gdb-0222/sim/ppc/.gdbinit gdb-0222/sim/ppc/gdb.ini
+@V@/gdb/ChangeLog-3.x @V@/gdb/ChangeLog.3-x
+@V@/gdb/ChangeLog-9091 @V@/gdb/ChangeLog.9091
+@V@/gdb/ChangeLog-92 @V@/gdb/ChangeLog.92
+@V@/gdb/ChangeLog-93 @V@/gdb/ChangeLog.93
+@V@/gdb/ChangeLog-94 @V@/gdb/ChangeLog.94
+@V@/gdb/ChangeLog-95 @V@/gdb/ChangeLog.95
+@V@/gdb/ChangeLog-96 @V@/gdb/ChangeLog.96
+@V@/gdb/ChangeLog-97 @V@/gdb/ChangeLog.97
+@V@/gdb/ChangeLog-98 @V@/gdb/ChangeLog.98
+@V@/gdb/ChangeLog-99 @V@/gdb/ChangeLog.99
+@V@/gdb/ppc-linux-tdep.c @V@/gdb/ppc-linx-tdep.c
+@V@/gdb/remote-adapt.c @V@/gdb/rmt-adapt.c
+@V@/gdb/remote-array.c @V@/gdb/rmt-array.c
+@V@/gdb/remote-e7000.c @V@/gdb/rmt-e7000.c
+@V@/gdb/remote-eb.c @V@/gdb/rmt-eb.c
+@V@/gdb/remote-es.c @V@/gdb/rmt-es.c
+@V@/gdb/remote-est.c @V@/gdb/rmt-est.c
+@V@/gdb/remote-mips.c @V@/gdb/emt-mips.c
+@V@/gdb/remote-mm.c @V@/gdb/emt-mm.c
+@V@/gdb/remote-nindy.c @V@/gdb/rmt-nindy.c
+@V@/gdb/remote-nrom.c @V@/gdb/rmt-nrom.c
+@V@/gdb/remote-rdi.c @V@/gdb/rmt-rdi.c
+@V@/gdb/remote-rdp.c @V@/gdb/rmt-rdp.c
+@V@/gdb/remote-sds.c @V@/gdb/rmt-sds.c
+@V@/gdb/remote-sim.c @V@/gdb/rmt-sim.c
+@V@/gdb/remote-st.c @V@/gdb/rmt-st.c
+@V@/gdb/remote-udi.c @V@/gdb/rmt-udi.c
+@V@/gdb/remote-vx.c @V@/gdb/rmt-vx.c
+@V@/gdb/remote-vx29k.c @V@/gdb/rmt-vx29k.c
+@V@/gdb/remote-vx68.c @V@/gdb/rmt-vx68.c
+@V@/gdb/remote-vx960.c @V@/gdb/rmt-vx960.c
+@V@/gdb/remote-vxmips.c @V@/gdb/rmt-vxmips.c
+@V@/gdb/remote-vxsparc.c @V@/gdb/rmt-vxsparc.c
+@V@/gdb/sparclet-rom.c @V@/gdb/splet-rom.c
+@V@/gdb/sparclet-stub.c @V@/gdb/splet-stub.c
+@V@/gdb/i386-linux-tdep.c @V@/gdb/i386linux-tdep.c
+@V@/gdb/arm-linux-tdep.c @V@/gdb/armlin-tdep.c
+@V@/gdb/arm-linux-nat.c @V@/gdb/armlin-nat.c
+@V@/gdb/ia64-linux-nat.c @V@/gdb/ia64linux-nat.c
+@V@/gdb/config/alpha/alpha-osf1.mh @V@/gdb/config/alpha/alphosf1.mh
+@V@/gdb/config/alpha/alpha-osf2.mh @V@/gdb/config/alpha/alphosf2.mh
+@V@/gdb/config/alpha/alpha-osf3.mh @V@/gdb/config/alpha/alphosf3.mh
+@V@/gdb/config/alpha/tm-alphalinux.h @V@/gdb/config/alpha/tm-alplinux.h
+@V@/gdb/config/alpha/xm-alphalinux.h @V@/gdb/config/alpha/xm-alplinux.h
+@V@/gdb/config/i386/nm-i386sco4.h @V@/gdb/config/i386/nm-sco4.h
+@V@/gdb/config/i386/nm-i386sco5.h @V@/gdb/config/i386/nm-sco5.h
+@V@/gdb/config/i386/nm-i386sol2.h @V@/gdb/config/i386/nm-sol2.h
+@V@/gdb/config/i386/nm-i386v4.h @V@/gdb/config/i386/nm-v4.h
+@V@/gdb/config/i386/nm-i386v42mp.h @V@/gdb/config/i386/nm-v42mp.h
+@V@/gdb/config/i386/tm-i386mk.h @V@/gdb/config/i386/tm-mk.h
+@V@/gdb/config/i386/tm-i386sol2.h @V@/gdb/config/i386/tm-sol2.h
+@V@/gdb/config/i386/tm-i386v4.h @V@/gdb/config/i386/tm-v4.h
+@V@/gdb/config/i386/tm-i386v42mp.h @V@/gdb/config/i386/tm-v42mp.h
+@V@/gdb/config/i386/xm-i386mach.h @V@/gdb/config/i386/xm-mach.h
+@V@/gdb/config/i386/xm-i386mk.h @V@/gdb/config/i386/xm-mk.h
+@V@/gdb/config/i386/xm-i386v32.h @V@/gdb/config/i386/xm-v32.h
+@V@/gdb/config/i386/xm-i386v4.h @V@/gdb/config/i386/xm-v4.h
+@V@/gdb/config/m68k/apollo68v.mh @V@/gdb/config/m68k/apollo-v.mh
+@V@/gdb/config/m68k/nm-apollo68v.h @V@/gdb/config/m68k/nm-apolv.h
+@V@/gdb/config/m68k/nm-hp300hpux.h @V@/gdb/config/m68k/nm-300ux.h
+@V@/gdb/config/m68k/tm-hp300hpux.h @V@/gdb/config/m68k/tm-300ux.h
+@V@/gdb/config/m68k/xm-apollo68v.h @V@/gdb/config/m68k/xm-apolv.h
+@V@/gdb/config/m68k/xm-hp300hpux.h @V@/gdb/config/m68k/xm-300ux.h
+@V@/gdb/config/m88k/tm-delta88v4.h @V@/gdb/config/m88k/tm-d88v4.h
+@V@/gdb/config/m88k/xm-delta88v4.h @V@/gdb/config/m88k/xm-d88v4.h
+@V@/gdb/config/mips/tm-bigmips64.h @V@/gdb/config/mips/tm-bigm64.h
+@V@/gdb/config/mips/tm-embed64.h @V@/gdb/config/mips/tm-emb64.h
+@V@/gdb/config/mips/tm-embedl.h @V@/gdb/config/mips/tm-embdl.h
+@V@/gdb/config/mips/tm-embedl64.h @V@/gdb/config/mips/tm-embl64.h
+@V@/gdb/config/mips/tm-vr4300el.h @V@/gdb/config/mips/tm-v43el.h
+@V@/gdb/config/mips/tm-vr4xxxel.h @V@/gdb/config/mips/tm-v4xel.h
+@V@/gdb/config/mips/tm-vr5000el.h @V@/gdb/config/mips/tm-vr5kel.h
+@V@/gdb/config/pa/nm-hppah11.h @V@/gdb/config/pa/nm-hppa11.h
+@V@/gdb/config/powerpc/tm-ppcle-sim.h @V@/gdb/config/powerpc/tm-ppcl-sim.h
+@V@/gdb/config/rs6000/nm-rs6000ly.h @V@/gdb/config/rs6000/nm-rs6kly.h
+@V@/gdb/config/rs6000/tm-rs6000.h @V@/gdb/config/rs6000/tm-rs6k.h
+@V@/gdb/config/rs6000/tm-rs6000ly.h @V@/gdb/config/rs6000/tm-rs6kly.h
+@V@/gdb/config/rs6000/xm-rs6000ly.h @V@/gdb/config/rs6000/xm-rs6kly.h
+@V@/gdb/config/sparc/tm-sparclet.h @V@/gdb/config/sparc/tm-splet.h
+@V@/gdb/config/sparc/tm-sparclite.h @V@/gdb/config/sparc/tm-splite.h
+@V@/gdb/config/sparc/tm-sparclynx.h @V@/gdb/config/sparc/tm-splynx.h
+@V@/gdb/config/sparc/xm-sparclynx.h @V@/gdb/config/sparc/xm-xplynx.h
+@V@/gdb/config/vax/xm-vaxult2.h @V@/gdb/config/vax/xm-vaxut2.h
+@V@/gdb/gdbtk/generic/gdbtk-varobj.c @V@/gdb/gdbtk/generic/gdbtk-vobj.c
+@V@/gdb/osf-share/cma_stack_int.h @V@/gdb/osf-share/cma_stkint.h
+@V@/gdb/testsuite/gdb.base/coremaker2.c @V@/gdb/testsuite/gdb.base/core2maker.c
+@V@/gdb/tui/tuiSourceWin.c @V@/gdb/tui/tuiWinSource.c
+@V@/gdb/tui/tuiSourceWin.h @V@/gdb/tui/tuiWinSource.h
+@V@/bfd/ChangeLog-9193 @V@/bfd/ChangeLog.9193
+@V@/bfd/ChangeLog-9495 @V@/bfd/ChangeLog.9495
+@V@/bfd/ChangeLog-9697 @V@/bfd/ChangeLog.9697
+@V@/bfd/coff-tic80.c @V@/bfd/coff-tc80.c
+@V@/bfd/coff-tic54x.c @V@/bfd/coff-tc54x.c
+@V@/bfd/elf32-i370.c @V@/bfd/elf32-i7.c
+@V@/sim/mips/dv-tx3904irc.c @V@/sim/mips/dv-tx3irc.c
+@V@/sim/mips/dv-tx3904sio.c @V@/sim/mips/dv-tx3sio.c
+@V@/sim/mips/dv-tx3904tmr.c @V@/sim/mips/dv-tx3tmr.c
+@V@/sim/mn10300/dv-mn103int.c @V@/sim/mn10300/dv-mn1int.c
+@V@/sim/mn10300/dv-mn103iop.c @V@/sim/mn10300/dv-mn1iop.c
+@V@/sim/mn10300/dv-mn103ser.c @V@/sim/mn10300/dv-mn1ser.c
+@V@/sim/mn10300/dv-mn103tim.c @V@/sim/mn10300/dv-mn1tim.c
+@V@/sim/ppc/corefile-n.h @V@/sim/ppc/corefle-n.h
+@V@/sim/ppc/idecode_branch.h @V@/sim/ppc/idec_branch.h
+@V@/sim/ppc/idecode_expression.h @V@/sim/ppc/idec_expression.h
+@V@/sim/ppc/idecode_fields.h @V@/sim/ppc/idec_fields.h
+@V@/sim/ppc/sim-endian-n.h @V@/sim/ppc/sim-endn.h
+@V@/sim/testsuite/d10v-elf/t-ae-ld-d.s @V@/sim/testsuite/d10v-elf/t-ld-d.s
+@V@/sim/testsuite/d10v-elf/t-ae-ld-i.s @V@/sim/testsuite/d10v-elf/t-ld-i.s
+@V@/sim/testsuite/d10v-elf/t-ae-ld-id.s @V@/sim/testsuite/d10v-elf/t-ld-id.s
+@V@/sim/testsuite/d10v-elf/t-ae-ld-im.s @V@/sim/testsuite/d10v-elf/t-ld-im.s
+@V@/sim/testsuite/d10v-elf/t-ae-ld-ip.s @V@/sim/testsuite/d10v-elf/t-ld-ip.s
+@V@/sim/testsuite/d10v-elf/t-ae-ld2w-d.s @V@/sim/testsuite/d10v-elf/t-ld2-d.s
+@V@/sim/testsuite/d10v-elf/t-ae-ld2w-i.s @V@/sim/testsuite/d10v-elf/t-ld2-i.s
+@V@/sim/testsuite/d10v-elf/t-ae-ld2w-id.s @V@/sim/testsuite/d10v-elf/t-ld2-id.s
+@V@/sim/testsuite/d10v-elf/t-ae-ld2w-im.s @V@/sim/testsuite/d10v-elf/t-ld2-im.s
+@V@/sim/testsuite/d10v-elf/t-ae-ld2w-ip.s @V@/sim/testsuite/d10v-elf/t-ld2-ip.s
+@V@/sim/testsuite/d10v-elf/t-ae-st-d.s @V@/sim/testsuite/d10v-elf/t-st-d.s
+@V@/sim/testsuite/d10v-elf/t-ae-st-i.s @V@/sim/testsuite/d10v-elf/t-st-i.s
+@V@/sim/testsuite/d10v-elf/t-ae-st-id.s @V@/sim/testsuite/d10v-elf/t-st-id.s
+@V@/sim/testsuite/d10v-elf/t-ae-st-im.s @V@/sim/testsuite/d10v-elf/t-st-im.s
+@V@/sim/testsuite/d10v-elf/t-ae-st-ip.s @V@/sim/testsuite/d10v-elf/t-st-ip.s
+@V@/sim/testsuite/d10v-elf/t-ae-st-is.s @V@/sim/testsuite/d10v-elf/t-st-is.s
+@V@/sim/testsuite/d10v-elf/t-ae-st2w-d.s @V@/sim/testsuite/d10v-elf/t-st2-d.s
+@V@/sim/testsuite/d10v-elf/t-ae-st2w-i.s @V@/sim/testsuite/d10v-elf/t-st2-i.s
+@V@/sim/testsuite/d10v-elf/t-ae-st2w-id.s @V@/sim/testsuite/d10v-elf/t-st2-id.s
+@V@/sim/testsuite/d10v-elf/t-ae-st2w-im.s @V@/sim/testsuite/d10v-elf/t-st2-im.s
+@V@/sim/testsuite/d10v-elf/t-ae-st2w-ip.s @V@/sim/testsuite/d10v-elf/t-st2-ip.s
+@V@/sim/testsuite/d10v-elf/t-ae-st2w-is.s @V@/sim/testsuite/d10v-elf/t-st2-is.s
+@V@/sim/testsuite/d30v-elf/ls-ld4bhu.S @V@/sim/testsuite/d30v-elf/ls-ld4bu.S
+@V@/intl/po2tbl.sed.in @V@/intl/po2tblsed.in
+@V@/intl/intlh.inst.in @V@/intl/intlh_inst.in
+@V@/readline/config.h.in @V@/readline/config.h-in
+@V@/readline/config.h.bot @V@/readline/config.h-bot
+@V@/gdb/nindy-share/b.out.h @V@/gdb/nindy-share/b_out.h
+@V@/gdb/c-exp.tab.c @V@/gdb/c-exp_tab.c
+@V@/gdb/jv-exp.tab.c @V@/gdb/jv-exp_tab.c
+@V@/gdb/f-exp.tab.c @V@/gdb/f-exp_tab.c
+@V@/gdb/m2-exp.tab.c @V@/gdb/m2-exp_tab.c
+@V@/gdb/testsuite/gdb.c++ @V@/gdb/testsuite/gdb.cxx
+@V@/gdb/testsuite/gdb.c++/Makefile.in @V@/gdb/testsuite/gdb.cxx/Makefile.in
+@V@/gdb/testsuite/gdb.c++/ambiguous.cc @V@/gdb/testsuite/gdb.cxx/ambiguous.cc
+@V@/gdb/testsuite/gdb.c++/ambiguous.exp @V@/gdb/testsuite/gdb.cxx/ambiguous.exp
+@V@/gdb/testsuite/gdb.c++/annota2.cc @V@/gdb/testsuite/gdb.cxx/annota2.cc
+@V@/gdb/testsuite/gdb.c++/annota2.exp @V@/gdb/testsuite/gdb.cxx/annota2.exp
+@V@/gdb/testsuite/gdb.c++/anon-union.cc @V@/gdb/testsuite/gdb.cxx/anon-union.cc
+@V@/gdb/testsuite/gdb.c++/anon-union.exp @V@/gdb/testsuite/gdb.cxx/anon-union.exp
+@V@/gdb/testsuite/gdb.c++/classes.exp @V@/gdb/testsuite/gdb.cxx/classes.exp
+@V@/gdb/testsuite/gdb.c++/configure @V@/gdb/testsuite/gdb.cxx/configure
+@V@/gdb/testsuite/gdb.c++/configure.in @V@/gdb/testsuite/gdb.cxx/configure.in
+@V@/gdb/testsuite/gdb.c++/cplusfuncs.cc @V@/gdb/testsuite/gdb.cxx/cplusfuncs.cc
+@V@/gdb/testsuite/gdb.c++/cplusfuncs.exp @V@/gdb/testsuite/gdb.cxx/cplusfuncs.exp
+@V@/gdb/testsuite/gdb.c++/ctti.exp @V@/gdb/testsuite/gdb.cxx/ctti.exp
+@V@/gdb/testsuite/gdb.c++/cttiadd.cc @V@/gdb/testsuite/gdb.cxx/cttiadd.cc
+@V@/gdb/testsuite/gdb.c++/cttiadd1.cc @V@/gdb/testsuite/gdb.cxx/cttiadd1.cc
+@V@/gdb/testsuite/gdb.c++/cttiadd2.cc @V@/gdb/testsuite/gdb.cxx/cttiadd2.cc
+@V@/gdb/testsuite/gdb.c++/cttiadd3.cc @V@/gdb/testsuite/gdb.cxx/cttiadd3.cc
+@V@/gdb/testsuite/gdb.c++/demangle.exp @V@/gdb/testsuite/gdb.cxx/demangle.exp
+@V@/gdb/testsuite/gdb.c++/derivation.cc @V@/gdb/testsuite/gdb.cxx/derivation.cc
+@V@/gdb/testsuite/gdb.c++/derivation.exp @V@/gdb/testsuite/gdb.cxx/derivation.exp
+@V@/gdb/testsuite/gdb.c++/inherit.exp @V@/gdb/testsuite/gdb.cxx/inherit.exp
+@V@/gdb/testsuite/gdb.c++/local.cc @V@/gdb/testsuite/gdb.cxx/local.cc
+@V@/gdb/testsuite/gdb.c++/local.exp @V@/gdb/testsuite/gdb.cxx/local.exp
+@V@/gdb/testsuite/gdb.c++/member-ptr.cc @V@/gdb/testsuite/gdb.cxx/member-ptr.cc
+@V@/gdb/testsuite/gdb.c++/member-ptr.exp @V@/gdb/testsuite/gdb.cxx/member-ptr.exp
+@V@/gdb/testsuite/gdb.c++/method.cc @V@/gdb/testsuite/gdb.cxx/method.cc
+@V@/gdb/testsuite/gdb.c++/method.exp @V@/gdb/testsuite/gdb.cxx/method.exp
+@V@/gdb/testsuite/gdb.c++/misc.cc @V@/gdb/testsuite/gdb.cxx/misc.cc
+@V@/gdb/testsuite/gdb.c++/misc.exp @V@/gdb/testsuite/gdb.cxx/misc.exp
+@V@/gdb/testsuite/gdb.c++/overload.cc @V@/gdb/testsuite/gdb.cxx/overload.cc
+@V@/gdb/testsuite/gdb.c++/overload.exp @V@/gdb/testsuite/gdb.cxx/overload.exp
+@V@/gdb/testsuite/gdb.c++/ovldbreak.cc @V@/gdb/testsuite/gdb.cxx/ovldbreak.cc
+@V@/gdb/testsuite/gdb.c++/ovldbreak.exp @V@/gdb/testsuite/gdb.cxx/ovldbreak.exp
+@V@/gdb/testsuite/gdb.c++/ref-types.cc @V@/gdb/testsuite/gdb.cxx/ref-types.cc
+@V@/gdb/testsuite/gdb.c++/ref-types.exp @V@/gdb/testsuite/gdb.cxx/ref-types.exp
+@V@/gdb/testsuite/gdb.c++/templates.cc @V@/gdb/testsuite/gdb.cxx/templates.cc
+@V@/gdb/testsuite/gdb.c++/templates.exp @V@/gdb/testsuite/gdb.cxx/templates.exp
+@V@/gdb/testsuite/gdb.c++/userdef.cc @V@/gdb/testsuite/gdb.cxx/userdef.cc
+@V@/gdb/testsuite/gdb.c++/userdef.exp @V@/gdb/testsuite/gdb.cxx/userdef.exp
+@V@/gdb/testsuite/gdb.c++/virtfunc.cc @V@/gdb/testsuite/gdb.cxx/virtfunc.cc
+@V@/gdb/testsuite/gdb.c++/virtfunc.exp @V@/gdb/testsuite/gdb.cxx/virtfunc.exp
+@V@/gdb/testsuite/gdb.mi/mi-var-cmd.exp @V@/gdb/testsuite/gdb.mi/mi-varcmd.exp
+@V@/gdb/testsuite/.gdbinit @V@/gdb/testsuite/gdb.ini
+@V@/sim/ppc/.gdbinit @V@/sim/ppc/gdb.ini
diff --git a/gdb/config/fr30/tm-fr30.h b/gdb/config/fr30/tm-fr30.h
index d289f6e3450..f9136ae499a 100644
--- a/gdb/config/fr30/tm-fr30.h
+++ b/gdb/config/fr30/tm-fr30.h
@@ -94,7 +94,7 @@
/* Largest value REGISTER_VIRTUAL_SIZE can have. */
#define MAX_REGISTER_VIRTUAL_SIZE FR30_REGSIZE
-extern void fr30_pop_frame PARAMS ((void));
+extern void fr30_pop_frame (void);
#define POP_FRAME fr30_pop_frame()
#define USE_GENERIC_DUMMY_FRAMES 1
@@ -150,22 +150,22 @@ struct value;
int frameoffset; \
int framereg;
-extern CORE_ADDR fr30_frame_chain PARAMS ((struct frame_info * fi));
+extern CORE_ADDR fr30_frame_chain (struct frame_info *fi);
#define FRAME_CHAIN(fi) fr30_frame_chain (fi)
-extern CORE_ADDR fr30_frame_saved_pc PARAMS ((struct frame_info *));
+extern CORE_ADDR fr30_frame_saved_pc (struct frame_info *);
#define FRAME_SAVED_PC(fi) (fr30_frame_saved_pc (fi))
#define SAVED_PC_AFTER_CALL(fi) read_register (RP_REGNUM)
-extern CORE_ADDR fr30_skip_prologue PARAMS ((CORE_ADDR pc));
+extern CORE_ADDR fr30_skip_prologue (CORE_ADDR pc);
#define SKIP_PROLOGUE(pc) (fr30_skip_prologue (pc))
/* Write into appropriate registers a function return value of type
TYPE, given in virtual format. VALBUF is in the target byte order;
it's typically the VALUE_CONTENTS of some struct value, and those
are in the target's byte order. */
-extern void fr30_store_return_value PARAMS ((struct type * type, char *valbuf));
+extern void fr30_store_return_value (struct type *type, char *valbuf);
#define STORE_RETURN_VALUE(TYPE,VALBUF) \
(fr30_store_return_value ((TYPE), (VALBUF)))
@@ -186,24 +186,23 @@ extern void fr30_store_return_value PARAMS ((struct type * type, char *valbuf));
#define TARGET_FR30
/* IEEE format floating point */
-#define IEEE_FLOAT
+#define IEEE_FLOAT (1)
/* Define other aspects of the stack frame. */
/* An expression that tells us whether the function invocation represented
by FI does not have a frame on the stack associated with it. */
-extern int fr30_frameless_function_invocation PARAMS ((struct frame_info * frame));
+extern int fr30_frameless_function_invocation (struct frame_info *frame);
#define FRAMELESS_FUNCTION_INVOCATION(FI) (fr30_frameless_function_invocation (FI));
-extern void fr30_init_extra_frame_info PARAMS ((struct frame_info * fi));
+extern void fr30_init_extra_frame_info (struct frame_info *fi);
#define INIT_EXTRA_FRAME_INFO(fromleaf, fi) fr30_init_extra_frame_info (fi)
#define FRAME_CHAIN_VALID(FP, FI) generic_file_frame_chain_valid (FP, FI)
extern CORE_ADDR
- fr30_push_arguments PARAMS ((int nargs, struct value ** args, CORE_ADDR sp,
- int struct_return,
- CORE_ADDR struct_addr));
+fr30_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
+ int struct_return, CORE_ADDR struct_addr);
#define PUSH_ARGUMENTS(NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR) \
(fr30_push_arguments (NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR))
diff --git a/gdb/config/gould/np1.mh b/gdb/config/gould/np1.mh
deleted file mode 100644
index 322f2078ac5..00000000000
--- a/gdb/config/gould/np1.mh
+++ /dev/null
@@ -1,3 +0,0 @@
-# OBSOLETE # Host: Gould NP1
-# OBSOLETE XDEPFILES= infptrace.o inftarg.o fork-child.o gould-xdep.o
-# OBSOLETE XM_FILE= xm-np1.h
diff --git a/gdb/config/gould/np1.mt b/gdb/config/gould/np1.mt
deleted file mode 100644
index 4ea2da5ab45..00000000000
--- a/gdb/config/gould/np1.mt
+++ /dev/null
@@ -1,3 +0,0 @@
-# OBSOLETE # Target: Gould NP1
-# OBSOLETE TDEPFILES= gould-tdep.o
-# OBSOLETE TM_FILE= tm-np1.h
diff --git a/gdb/config/gould/pn.mh b/gdb/config/gould/pn.mh
deleted file mode 100644
index 9d69f905d8d..00000000000
--- a/gdb/config/gould/pn.mh
+++ /dev/null
@@ -1,3 +0,0 @@
-# OBSOLETE # Host: Gould Powernode
-# OBSOLETE XDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o core-aout.o
-# OBSOLETE XM_FILE= xm-pn.h
diff --git a/gdb/config/gould/pn.mt b/gdb/config/gould/pn.mt
deleted file mode 100644
index 7f73fc9f041..00000000000
--- a/gdb/config/gould/pn.mt
+++ /dev/null
@@ -1,3 +0,0 @@
-# OBSOLETE # Target: Gould Powernode
-# OBSOLETE TDEPFILES= gould-tdep.o
-# OBSOLETE TM_FILE= tm-pn.h
diff --git a/gdb/config/gould/tm-np1.h b/gdb/config/gould/tm-np1.h
deleted file mode 100644
index 9971c891ca2..00000000000
--- a/gdb/config/gould/tm-np1.h
+++ /dev/null
@@ -1,490 +0,0 @@
-/* OBSOLETE /* Parameters for targeting on a Gould NP1, for GDB, the GNU debugger. */
-/* OBSOLETE Copyright 1986, 1987, 1989, 1991, 1993 Free Software Foundation, Inc. */
-/* OBSOLETE */
-/* OBSOLETE This file is part of GDB. */
-/* OBSOLETE */
-/* OBSOLETE This program is free software; you can redistribute it and/or modify */
-/* OBSOLETE it under the terms of the GNU General Public License as published by */
-/* OBSOLETE the Free Software Foundation; either version 2 of the License, or */
-/* OBSOLETE (at your option) any later version. */
-/* OBSOLETE */
-/* OBSOLETE This program is distributed in the hope that it will be useful, */
-/* OBSOLETE but WITHOUT ANY WARRANTY; without even the implied warranty of */
-/* OBSOLETE MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
-/* OBSOLETE GNU General Public License for more details. */
-/* OBSOLETE */
-/* OBSOLETE You should have received a copy of the GNU General Public License */
-/* OBSOLETE along with this program; if not, write to the Free Software */
-/* OBSOLETE Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define GOULD_NPL */
-/* OBSOLETE */
-/* OBSOLETE #define TARGET_BYTE_ORDER BIG_ENDIAN */
-/* OBSOLETE */
-/* OBSOLETE /* N_ENTRY appears in libraries on Gould machines. */
-/* OBSOLETE Don't know what 0xa4 is; it's mentioned in stab.h */
-/* OBSOLETE but only in the sdb symbol list. *x/ */
-/* OBSOLETE #define IGNORE_SYMBOL(type) (type == N_ENTRY || type == 0xa4) */
-/* OBSOLETE */
-/* OBSOLETE /* We don't want the extra gnu symbols on the machine; */
-/* OBSOLETE they will interfere with the shared segment symbols. *x/ */
-/* OBSOLETE #define NO_GNU_STABS */
-/* OBSOLETE */
-/* OBSOLETE /* Macro for text-offset and data info (in NPL a.out format). *x/ */
-/* OBSOLETE #define TEXTINFO \ */
-/* OBSOLETE text_offset = N_TXTOFF (exec_coffhdr, exec_aouthdr); \ */
-/* OBSOLETE exec_data_offset = N_TXTOFF (exec_coffhdr, exec_aouthdr)\ */
-/* OBSOLETE + exec_aouthdr.a_text */
-/* OBSOLETE */
-/* OBSOLETE /* Macro for number of symbol table entries *x/ */
-/* OBSOLETE #define NUMBER_OF_SYMBOLS \ */
-/* OBSOLETE (coffhdr.f_nsyms) */
-/* OBSOLETE */
-/* OBSOLETE /* Macro for file-offset of symbol table (in NPL a.out format). *x/ */
-/* OBSOLETE #define SYMBOL_TABLE_OFFSET \ */
-/* OBSOLETE N_SYMOFF (coffhdr) */
-/* OBSOLETE */
-/* OBSOLETE /* Macro for file-offset of string table (in NPL a.out format). *x/ */
-/* OBSOLETE #define STRING_TABLE_OFFSET \ */
-/* OBSOLETE (N_STROFF (coffhdr)) */
-/* OBSOLETE */
-/* OBSOLETE /* Macro to store the length of the string table data in INTO. *x/ */
-/* OBSOLETE #define READ_STRING_TABLE_SIZE(INTO) \ */
-/* OBSOLETE { INTO = hdr.a_stsize; } */
-/* OBSOLETE */
-/* OBSOLETE /* Macro to declare variables to hold the file's header data. *x/ */
-/* OBSOLETE #define DECLARE_FILE_HEADERS struct exec hdr; \ */
-/* OBSOLETE FILHDR coffhdr */
-/* OBSOLETE */
-/* OBSOLETE /* Macro to read the header data from descriptor DESC and validate it. */
-/* OBSOLETE NAME is the file name, for error messages. *x/ */
-/* OBSOLETE #define READ_FILE_HEADERS(DESC, NAME) \ */
-/* OBSOLETE { val = myread (DESC, &coffhdr, sizeof coffhdr); \ */
-/* OBSOLETE if (val < 0) \ */
-/* OBSOLETE perror_with_name (NAME); \ */
-/* OBSOLETE val = myread (DESC, &hdr, sizeof hdr); \ */
-/* OBSOLETE if (val < 0) \ */
-/* OBSOLETE perror_with_name (NAME); \ */
-/* OBSOLETE if (coffhdr.f_magic != GNP1MAGIC) \ */
-/* OBSOLETE error ("File \"%s\" not in coff executable format.", NAME); \ */
-/* OBSOLETE if (N_BADMAG (hdr)) \ */
-/* OBSOLETE error ("File \"%s\" not in executable format.", NAME); } */
-/* OBSOLETE */
-/* OBSOLETE /* Define COFF and other symbolic names needed on NP1 *x/ */
-/* OBSOLETE #define NS32GMAGIC GNP1MAGIC */
-/* OBSOLETE #define NS32SMAGIC GPNMAGIC */
-/* OBSOLETE */
-/* OBSOLETE /* Address of blocks in N_LBRAC and N_RBRAC symbols are absolute addresses, */
-/* OBSOLETE not relative to start of source address. *x/ */
-/* OBSOLETE #define BLOCK_ADDRESS_ABSOLUTE */
-/* OBSOLETE */
-/* OBSOLETE /* Offset from address of function to start of its code. */
-/* OBSOLETE Zero on most machines. *x/ */
-/* OBSOLETE #define FUNCTION_START_OFFSET 8 */
-/* OBSOLETE */
-/* OBSOLETE /* Advance PC across any function entry prologue instructions */
-/* OBSOLETE to reach some "real" code. One NPL we can have one two startup */
-/* OBSOLETE sequences depending on the size of the local stack: */
-/* OBSOLETE */
-/* OBSOLETE Either: */
-/* OBSOLETE "suabr b2, #" */
-/* OBSOLETE of */
-/* OBSOLETE "lil r4, #", "suabr b2, #(r4)" */
-/* OBSOLETE */
-/* OBSOLETE "lwbr b6, #", "stw r1, 8(b2)" */
-/* OBSOLETE Optional "stwbr b3, c(b2)" */
-/* OBSOLETE Optional "trr r2,r7" (Gould first argument register passing) */
-/* OBSOLETE or */
-/* OBSOLETE Optional "stw r2,8(b3)" (Gould first argument register passing) */
-/* OBSOLETE *x/ */
-/* OBSOLETE #define SKIP_PROLOGUE(pc) { \ */
-/* OBSOLETE register int op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if ((op & 0xffff0000) == 0xFA0B0000) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if ((op & 0xffff0000) == 0x59400000) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if ((op & 0xffff0000) == 0x5F000000) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if (op == 0xD4820008) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if (op == 0x5582000C) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 2); \ */
-/* OBSOLETE if (op == 0x2fa0) { \ */
-/* OBSOLETE pc += 2; \ */
-/* OBSOLETE } else { \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if (op == 0xd5030008) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } else { \ */
-/* OBSOLETE op = read_memory_integer ((pc), 2); \ */
-/* OBSOLETE if (op == 0x2fa0) { \ */
-/* OBSOLETE pc += 2; \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE if ((op & 0xffff0000) == 0x59000000) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if ((op & 0xffff0000) == 0x5F000000) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if (op == 0xD4820008) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if (op == 0x5582000C) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 2); \ */
-/* OBSOLETE if (op == 0x2fa0) { \ */
-/* OBSOLETE pc += 2; \ */
-/* OBSOLETE } else { \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if (op == 0xd5030008) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } else { \ */
-/* OBSOLETE op = read_memory_integer ((pc), 2); \ */
-/* OBSOLETE if (op == 0x2fa0) { \ */
-/* OBSOLETE pc += 2; \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* Immediately after a function call, return the saved pc. */
-/* OBSOLETE Can't go through the frames for this because on some machines */
-/* OBSOLETE the new frame is not set up until the new function executes */
-/* OBSOLETE some instructions. True on NPL! Return address is in R1. */
-/* OBSOLETE The true return address is REALLY 4 past that location! *x/ */
-/* OBSOLETE #define SAVED_PC_AFTER_CALL(frame) \ */
-/* OBSOLETE (read_register(R1_REGNUM) + 4) */
-/* OBSOLETE */
-/* OBSOLETE /* Address of end of stack space. *x/ */
-/* OBSOLETE #define STACK_END_ADDR 0x7fffc000 */
-/* OBSOLETE */
-/* OBSOLETE /* Stack grows downward. *x/ */
-/* OBSOLETE #define INNER_THAN(lhs,rhs) ((lhs) < (rhs)) */
-/* OBSOLETE */
-/* OBSOLETE /* Sequence of bytes for breakpoint instruction. */
-/* OBSOLETE This is padded out to the size of a machine word. When it was just */
-/* OBSOLETE {0x28, 0x09} it gave problems if hit breakpoint on returning from a */
-/* OBSOLETE function call. *x/ */
-/* OBSOLETE #define BREAKPOINT {0x28, 0x09, 0x0, 0x0} */
-/* OBSOLETE */
-/* OBSOLETE /* Amount PC must be decremented by after a breakpoint. */
-/* OBSOLETE This is often the number of bytes in BREAKPOINT */
-/* OBSOLETE but not always. *x/ */
-/* OBSOLETE #define DECR_PC_AFTER_BREAK 2 */
-/* OBSOLETE */
-/* OBSOLETE /* Return 1 if P points to an invalid floating point value. *x/ */
-/* OBSOLETE #define INVALID_FLOAT(p, len) ((*(short *)p & 0xff80) == 0x8000) */
-/* OBSOLETE */
-/* OBSOLETE /* Say how long (ordinary) registers are. This is a piece of bogosity */
-/* OBSOLETE used in push_word and a few other places; REGISTER_RAW_SIZE is the */
-/* OBSOLETE real way to know how big a register is. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define REGISTER_SIZE 4 */
-/* OBSOLETE */
-/* OBSOLETE /* Size of bytes of vector register (NP1 only), 32 elements * sizeof(int) *x/ */
-/* OBSOLETE #define VR_SIZE 128 */
-/* OBSOLETE */
-/* OBSOLETE /* Number of machine registers *x/ */
-/* OBSOLETE #define NUM_REGS 27 */
-/* OBSOLETE #define NUM_GEN_REGS 16 */
-/* OBSOLETE #define NUM_CPU_REGS 4 */
-/* OBSOLETE #define NUM_VECTOR_REGS 7 */
-/* OBSOLETE */
-/* OBSOLETE /* Initializer for an array of names of registers. */
-/* OBSOLETE There should be NUM_REGS strings in this initializer. *x/ */
-/* OBSOLETE #define REGISTER_NAMES { \ */
-/* OBSOLETE "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", \ */
-/* OBSOLETE "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", \ */
-/* OBSOLETE "sp", "ps", "pc", "ve", \ */
-/* OBSOLETE "v1", "v2", "v3", "v4", "v5", "v6", "v7", \ */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* Register numbers of various important registers. */
-/* OBSOLETE Note that some of these values are "real" register numbers, */
-/* OBSOLETE and correspond to the general registers of the machine, */
-/* OBSOLETE and some are "phony" register numbers which are too large */
-/* OBSOLETE to be actual register numbers as far as the user is concerned */
-/* OBSOLETE but do serve to get the desired values when passed to read_register. *x/ */
-/* OBSOLETE #define R1_REGNUM 1 /* Gr1 => return address of caller *x/ */
-/* OBSOLETE #define R2_REGNUM 2 /* Gr2 => return value from function *x/ */
-/* OBSOLETE #define R4_REGNUM 4 /* Gr4 => register save area *x/ */
-/* OBSOLETE #define R5_REGNUM 5 /* Gr5 => register save area *x/ */
-/* OBSOLETE #define R6_REGNUM 6 /* Gr6 => register save area *x/ */
-/* OBSOLETE #define R7_REGNUM 7 /* Gr7 => register save area *x/ */
-/* OBSOLETE #define B1_REGNUM 9 /* Br1 => start of this code routine *x/ */
-/* OBSOLETE #define SP_REGNUM 10 /* Br2 == (sp) *x/ */
-/* OBSOLETE #define AP_REGNUM 11 /* Br3 == (ap) *x/ */
-/* OBSOLETE #define FP_REGNUM 16 /* A copy of Br2 saved in trap *x/ */
-/* OBSOLETE #define PS_REGNUM 17 /* Contains processor status *x/ */
-/* OBSOLETE #define PC_REGNUM 18 /* Contains program counter *x/ */
-/* OBSOLETE #define VE_REGNUM 19 /* Vector end (user setup) register *x/ */
-/* OBSOLETE #define V1_REGNUM 20 /* First vector register *x/ */
-/* OBSOLETE #define V7_REGNUM 26 /* First vector register *x/ */
-/* OBSOLETE */
-/* OBSOLETE /* Total amount of space needed to store our copies of the machine's */
-/* OBSOLETE register state, the array `registers'. *x/ */
-/* OBSOLETE #define REGISTER_BYTES \ */
-/* OBSOLETE (NUM_GEN_REGS*4 + NUM_VECTOR_REGS*VR_SIZE + NUM_CPU_REGS*4) */
-/* OBSOLETE */
-/* OBSOLETE /* Index within `registers' of the first byte of the space for */
-/* OBSOLETE register N. *x/ */
-/* OBSOLETE #define REGISTER_BYTE(N) \ */
-/* OBSOLETE (((N) < V1_REGNUM) ? ((N) * 4) : (((N) - V1_REGNUM) * VR_SIZE) + 80) */
-/* OBSOLETE */
-/* OBSOLETE /* Number of bytes of storage in the actual machine representation */
-/* OBSOLETE for register N. On the NP1, all normal regs are 4 bytes, but */
-/* OBSOLETE the vector registers are VR_SIZE*4 bytes long. *x/ */
-/* OBSOLETE #define REGISTER_RAW_SIZE(N) \ */
-/* OBSOLETE (((N) < V1_REGNUM) ? 4 : VR_SIZE) */
-/* OBSOLETE */
-/* OBSOLETE /* Number of bytes of storage in the program's representation */
-/* OBSOLETE for register N. On the NP1, all regs are 4 bytes. *x/ */
-/* OBSOLETE #define REGISTER_VIRTUAL_SIZE(N) \ */
-/* OBSOLETE (((N) < V1_REGNUM) ? 4 : VR_SIZE) */
-/* OBSOLETE */
-/* OBSOLETE /* Largest value REGISTER_RAW_SIZE can have. *x/ */
-/* OBSOLETE #define MAX_REGISTER_RAW_SIZE VR_SIZE */
-/* OBSOLETE */
-/* OBSOLETE /* Largest value REGISTER_VIRTUAL_SIZE can have. *x/ */
-/* OBSOLETE #define MAX_REGISTER_VIRTUAL_SIZE VR_SIZE */
-/* OBSOLETE */
-/* OBSOLETE /* Return the GDB type object for the "standard" data type */
-/* OBSOLETE of data in register N. *x/ */
-/* OBSOLETE #define REGISTER_VIRTUAL_TYPE(N) \ */
-/* OBSOLETE ((N) > VE_REGNUM ? builtin_type_np1_vector : builtin_type_int) */
-/* OBSOLETE extern struct type *builtin_type_np1_vector; */
-/* OBSOLETE */
-/* OBSOLETE /* Store the address of the place in which to copy the structure the */
-/* OBSOLETE subroutine will return. This is called from call_function. */
-/* OBSOLETE */
-/* OBSOLETE On this machine this is a no-op, because gcc isn't used on it */
-/* OBSOLETE yet. So this calling convention is not used. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define STORE_STRUCT_RETURN(ADDR, SP) push_word(SP + 8, ADDR) */
-/* OBSOLETE */
-/* OBSOLETE /* Extract from an arrary REGBUF containing the (raw) register state */
-/* OBSOLETE a function return value of type TYPE, and copy that, in virtual format, */
-/* OBSOLETE into VALBUF. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \ */
-/* OBSOLETE memcpy (VALBUF, ((int *)(REGBUF)) + 2, TYPE_LENGTH (TYPE)) */
-/* OBSOLETE */
-/* OBSOLETE /* Write into appropriate registers a function return value */
-/* OBSOLETE of type TYPE, given in virtual format. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define STORE_RETURN_VALUE(TYPE,VALBUF) \ */
-/* OBSOLETE write_register_bytes (REGISTER_BYTE (R2_REGNUM), VALBUF, \ */
-/* OBSOLETE TYPE_LENGTH (TYPE)) */
-/* OBSOLETE */
-/* OBSOLETE /* Extract from an array REGBUF containing the (raw) register state */
-/* OBSOLETE the address in which a function should return its structure value, */
-/* OBSOLETE as a CORE_ADDR (or an expression that can be used as one). *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) (*((int *)(REGBUF) + 2)) */
-/* OBSOLETE */
-/* OBSOLETE /* Both gcc and cc return small structs in registers (i.e. in GDB */
-/* OBSOLETE terminology, small structs don't use the struct return convention). *x/ */
-/* OBSOLETE extern use_struct_convention_fn gould_use_struct_convention; */
-/* OBSOLETE #define USE_STRUCT_CONVENTION(gcc_p, type) gould_use_struct_convention (gcc_p, type) */
-/* OBSOLETE */
-/* OBSOLETE /* Describe the pointer in each stack frame to the previous stack frame */
-/* OBSOLETE (its caller). *x/ */
-/* OBSOLETE */
-/* OBSOLETE /* FRAME_CHAIN takes a frame's nominal address */
-/* OBSOLETE and produces the frame's chain-pointer. */
-/* OBSOLETE */
-/* OBSOLETE However, if FRAME_CHAIN_VALID returns zero, */
-/* OBSOLETE it means the given frame is the outermost one and has no caller. *x/ */
-/* OBSOLETE */
-/* OBSOLETE /* In the case of the NPL, the frame's norminal address is Br2 and the */
-/* OBSOLETE previous routines frame is up the stack X bytes, where X is the */
-/* OBSOLETE value stored in the code function header xA(Br1). *x/ */
-/* OBSOLETE #define FRAME_CHAIN(thisframe) (findframe(thisframe)) */
-/* OBSOLETE */
-/* OBSOLETE extern int gould_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *)); */
-/* OBSOLETE #define FRAME_CHAIN_VALID(chain, thisframe) gould_frame_chain_valid (chain, thisframe) */
-/* OBSOLETE */
-/* OBSOLETE /* Define other aspects of the stack frame on NPL. *x/ */
-/* OBSOLETE #define FRAME_SAVED_PC(FRAME) \ */
-/* OBSOLETE (read_memory_integer ((FRAME)->frame + 8, 4)) */
-/* OBSOLETE */
-/* OBSOLETE #define FRAME_ARGS_ADDRESS(fi) \ */
-/* OBSOLETE ((fi)->next ? \ */
-/* OBSOLETE read_memory_integer ((fi)->frame + 12, 4) : \ */
-/* OBSOLETE read_register (AP_REGNUM)) */
-/* OBSOLETE */
-/* OBSOLETE #define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame) */
-/* OBSOLETE */
-/* OBSOLETE /* Set VAL to the number of args passed to frame described by FI. */
-/* OBSOLETE Can set VAL to -1, meaning no way to tell. *x/ */
-/* OBSOLETE */
-/* OBSOLETE /* We can check the stab info to see how */
-/* OBSOLETE many arg we have. No info in stack will tell us *x/ */
-/* OBSOLETE #define FRAME_NUM_ARGS(fi) (findarg(fi)) */
-/* OBSOLETE */
-/* OBSOLETE /* Return number of bytes at start of arglist that are not really args. *x/ */
-/* OBSOLETE #define FRAME_ARGS_SKIP 8 */
-/* OBSOLETE */
-/* OBSOLETE /* Put here the code to store, into a struct frame_saved_regs, */
-/* OBSOLETE the addresses of the saved registers of frame described by FRAME_INFO. */
-/* OBSOLETE This includes special registers such as pc and fp saved in special */
-/* OBSOLETE ways in the stack frame. sp is even more special: */
-/* OBSOLETE the address we return for it IS the sp for the next frame. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \ */
-/* OBSOLETE { \ */
-/* OBSOLETE memset (&frame_saved_regs, '\0', sizeof frame_saved_regs); \ */
-/* OBSOLETE (frame_saved_regs).regs[SP_REGNUM] = framechain (frame_info); \ */
-/* OBSOLETE (frame_saved_regs).regs[PC_REGNUM] = (frame_info)->frame + 8; \ */
-/* OBSOLETE (frame_saved_regs).regs[R4_REGNUM] = (frame_info)->frame + 0x30; \ */
-/* OBSOLETE (frame_saved_regs).regs[R5_REGNUM] = (frame_info)->frame + 0x34; \ */
-/* OBSOLETE (frame_saved_regs).regs[R6_REGNUM] = (frame_info)->frame + 0x38; \ */
-/* OBSOLETE (frame_saved_regs).regs[R7_REGNUM] = (frame_info)->frame + 0x3C; \ */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* Things needed for making the inferior call functions. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define CALL_DUMMY_LOCATION BEFORE_TEXT_END */
-/* OBSOLETE #define NEED_TEXT_START_END 1 */
-/* OBSOLETE */
-/* OBSOLETE /* Push an empty stack frame, to record the current PC, etc. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define PUSH_DUMMY_FRAME \ */
-/* OBSOLETE { register CORE_ADDR sp = read_register (SP_REGNUM); \ */
-/* OBSOLETE register int regnum; \ */
-/* OBSOLETE for (regnum = 0; regnum < FP_REGNUM; regnum++) \ */
-/* OBSOLETE sp = push_word (sp, read_register (regnum)); \ */
-/* OBSOLETE sp = push_word (sp, read_register (PS_REGNUM)); \ */
-/* OBSOLETE sp = push_word (sp, read_register (PC_REGNUM)); \ */
-/* OBSOLETE write_register (SP_REGNUM, sp);} */
-/* OBSOLETE */
-/* OBSOLETE /* Discard from the stack the innermost frame, */
-/* OBSOLETE restoring all saved registers. *x/ */
-/* OBSOLETE /* FIXME: Should be using {store,extract}_unsigned_integer. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define POP_FRAME \ */
-/* OBSOLETE { CORE_ADDR sp = read_register(SP_REGNUM); \ */
-/* OBSOLETE ULONGEST reg; \ */
-/* OBSOLETE int regnum; \ */
-/* OBSOLETE for(regnum = 0;regnum < FP_REGNUM;regnum++){ \ */
-/* OBSOLETE sp-=REGISTER_SIZE; \ */
-/* OBSOLETE read_memory(sp,&reg,REGISTER_SIZE); \ */
-/* OBSOLETE write_register(regnum,reg);} \ */
-/* OBSOLETE sp-=REGISTER_SIZE; \ */
-/* OBSOLETE read_memory(sp,&reg,REGISTER_SIZE); \ */
-/* OBSOLETE write_register(PS_REGNUM,reg); \ */
-/* OBSOLETE sp-=REGISTER_SIZE; \ */
-/* OBSOLETE read_memory(sp,&reg,REGISTER_SIZE); \ */
-/* OBSOLETE write_register(PC_REGNUM,reg);} */
-/* OBSOLETE */
-/* OBSOLETE /* MJD - Size of dummy frame pushed onto stack by PUSH_DUMMY_FRAME *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define DUMMY_FRAME_SIZE (0x48) */
-/* OBSOLETE */
-/* OBSOLETE /* MJD - The sequence of words in the instructions is */
-/* OBSOLETE halt */
-/* OBSOLETE halt */
-/* OBSOLETE halt */
-/* OBSOLETE halt */
-/* OBSOLETE subr b2,stack size,0 grab stack space for dummy call */
-/* OBSOLETE labr b3,x0(b2),0 set AP_REGNUM to point at arguments */
-/* OBSOLETE lw r2,x8(b3),0 load r2 with first argument */
-/* OBSOLETE lwbr b1,arguments size(b2),0 load address of function to be called */
-/* OBSOLETE brlnk r1,x8(b1),0 call function */
-/* OBSOLETE halt */
-/* OBSOLETE halt */
-/* OBSOLETE labr b2,stack size(b2),0 give back stack */
-/* OBSOLETE break break */
-/* OBSOLETE *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define CALL_DUMMY {0x00000000, \ */
-/* OBSOLETE 0x00000000, \ */
-/* OBSOLETE 0x59000000, \ */
-/* OBSOLETE 0x598a0000, \ */
-/* OBSOLETE 0xb5030008, \ */
-/* OBSOLETE 0x5c820000, \ */
-/* OBSOLETE 0x44810008, \ */
-/* OBSOLETE 0x00000000, \ */
-/* OBSOLETE 0x590a0000, \ */
-/* OBSOLETE 0x28090000 } */
-/* OBSOLETE */
-/* OBSOLETE #define CALL_DUMMY_LENGTH 40 */
-/* OBSOLETE */
-/* OBSOLETE #define CALL_DUMMY_START_OFFSET 8 */
-/* OBSOLETE */
-/* OBSOLETE #define CALL_DUMMY_STACK_ADJUST 8 */
-/* OBSOLETE */
-/* OBSOLETE /* MJD - Fixup CALL_DUMMY for the specific function call. */
-/* OBSOLETE OK heres the problems */
-/* OBSOLETE 1) On a trap there are two copies of the stack pointer, one in SP_REGNUM */
-/* OBSOLETE which is read/write and one in FP_REGNUM which is only read. It seems */
-/* OBSOLETE that when restarting the GOULD NP1 uses FP_REGNUM's value. */
-/* OBSOLETE 2) Loading function address into b1 looks a bit difficult if bigger than */
-/* OBSOLETE 0x0000fffc, infact from what I can tell the compiler sets up table of */
-/* OBSOLETE function address in base3 through which function calls are referenced. */
-/* OBSOLETE */
-/* OBSOLETE OK my solutions */
-/* OBSOLETE Calculate the size of the dummy stack frame and do adjustments of */
-/* OBSOLETE SP_REGNUM in the dummy call. */
-/* OBSOLETE Push function address onto the stack and load it in the dummy call */
-/* OBSOLETE *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define FIX_CALL_DUMMY(dummyname, sp, fun, nargs, args, type, gcc_p) \ */
-/* OBSOLETE { int i;\ */
-/* OBSOLETE int arg_len = 0, total_len;\ */
-/* OBSOLETE old_sp = push_word(old_sp,fun);\ */
-/* OBSOLETE for(i = nargs - 1;i >= 0;i--)\ */
-/* OBSOLETE arg_len += TYPE_LENGTH (VALUE_TYPE (value_arg_coerce (args[i])));\ */
-/* OBSOLETE if(struct_return)\ */
-/* OBSOLETE arg_len += TYPE_LENGTH(value_type);\ */
-/* OBSOLETE total_len = DUMMY_FRAME_SIZE+CALL_DUMMY_STACK_ADJUST+4+arg_len;\ */
-/* OBSOLETE dummyname[0] += total_len;\ */
-/* OBSOLETE dummyname[2] += total_len;\ */
-/* OBSOLETE dummyname[5] += arg_len+CALL_DUMMY_STACK_ADJUST;\ */
-/* OBSOLETE dummyname[8] += total_len;} */
-/* OBSOLETE */
-/* OBSOLETE /* MJD - So the stack should end up looking like this */
-/* OBSOLETE */
-/* OBSOLETE | Normal stack frame | */
-/* OBSOLETE | from normal program | */
-/* OBSOLETE | flow | */
-/* OBSOLETE +---------------------+ <- Final sp - 0x08 - argument size */
-/* OBSOLETE | | - 0x4 - dummy_frame_size */
-/* OBSOLETE | Pushed dummy frame | */
-/* OBSOLETE | b0-b7, r0-r7 | */
-/* OBSOLETE | pc and ps | */
-/* OBSOLETE | | */
-/* OBSOLETE +---------------------+ */
-/* OBSOLETE | Function address | */
-/* OBSOLETE +---------------------+ <- Final sp - 0x8 - arguments size */
-/* OBSOLETE | | */
-/* OBSOLETE | | */
-/* OBSOLETE | | */
-/* OBSOLETE | Arguments to | */
-/* OBSOLETE | Function | */
-/* OBSOLETE | | */
-/* OBSOLETE | | */
-/* OBSOLETE | | */
-/* OBSOLETE +---------------------+ <- Final sp - 0x8 */
-/* OBSOLETE | Dummy_stack_adjust | */
-/* OBSOLETE +---------------------+ <- Final sp */
-/* OBSOLETE | | */
-/* OBSOLETE | where call will | */
-/* OBSOLETE | build frame | */
-/* OBSOLETE *x/ */
diff --git a/gdb/config/gould/tm-pn.h b/gdb/config/gould/tm-pn.h
deleted file mode 100644
index 3c6d174882b..00000000000
--- a/gdb/config/gould/tm-pn.h
+++ /dev/null
@@ -1,409 +0,0 @@
-/* OBSOLETE /* Parameters for targe of a Gould Powernode, for GDB, the GNU debugger. */
-/* OBSOLETE Copyright 1986, 1987, 1989, 1991, 1993 Free Software Foundation, Inc. */
-/* OBSOLETE */
-/* OBSOLETE This file is part of GDB. */
-/* OBSOLETE */
-/* OBSOLETE This program is free software; you can redistribute it and/or modify */
-/* OBSOLETE it under the terms of the GNU General Public License as published by */
-/* OBSOLETE the Free Software Foundation; either version 2 of the License, or */
-/* OBSOLETE (at your option) any later version. */
-/* OBSOLETE */
-/* OBSOLETE This program is distributed in the hope that it will be useful, */
-/* OBSOLETE but WITHOUT ANY WARRANTY; without even the implied warranty of */
-/* OBSOLETE MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
-/* OBSOLETE GNU General Public License for more details. */
-/* OBSOLETE */
-/* OBSOLETE You should have received a copy of the GNU General Public License */
-/* OBSOLETE along with this program; if not, write to the Free Software */
-/* OBSOLETE Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define GOULD_PN */
-/* OBSOLETE */
-/* OBSOLETE #define TARGET_BYTE_ORDER BIG_ENDIAN */
-/* OBSOLETE */
-/* OBSOLETE /* This code appears in libraries on Gould machines. Ignore it. *x/ */
-/* OBSOLETE #define IGNORE_SYMBOL(type) (type == N_ENTRY) */
-/* OBSOLETE */
-/* OBSOLETE /* We don't want the extra gnu symbols on the machine; */
-/* OBSOLETE they will interfere with the shared segment symbols. *x/ */
-/* OBSOLETE #define NO_GNU_STABS */
-/* OBSOLETE */
-/* OBSOLETE /* Macro for text-offset and data info (in PN a.out format). *x/ */
-/* OBSOLETE #define TEXTINFO \ */
-/* OBSOLETE text_offset = N_TXTOFF (exec_coffhdr); \ */
-/* OBSOLETE exec_data_offset = N_TXTOFF (exec_coffhdr) \ */
-/* OBSOLETE + exec_aouthdr.a_text */
-/* OBSOLETE */
-/* OBSOLETE /* Macro for number of symbol table entries (this used to be checked */
-/* OBSOLETE in dbxread.c and caused the last psymtab to use this as the end of */
-/* OBSOLETE text. I'm not sure whether it would still be necessary). *x/ */
-/* OBSOLETE #define END_OF_TEXT_DEFAULT \ */
-/* OBSOLETE (0xffffff) */
-/* OBSOLETE */
-/* OBSOLETE /* Macro for number of symbol table entries *x/ */
-/* OBSOLETE #define NUMBER_OF_SYMBOLS \ */
-/* OBSOLETE (coffhdr.f_nsyms) */
-/* OBSOLETE */
-/* OBSOLETE /* Macro for file-offset of symbol table (in usual a.out format). *x/ */
-/* OBSOLETE #define SYMBOL_TABLE_OFFSET \ */
-/* OBSOLETE N_SYMOFF (coffhdr) */
-/* OBSOLETE */
-/* OBSOLETE /* Macro for file-offset of string table (in usual a.out format). *x/ */
-/* OBSOLETE #define STRING_TABLE_OFFSET \ */
-/* OBSOLETE (N_STROFF (coffhdr) + sizeof(int)) */
-/* OBSOLETE */
-/* OBSOLETE /* Macro to store the length of the string table data in INTO. *x/ */
-/* OBSOLETE #define READ_STRING_TABLE_SIZE(INTO) \ */
-/* OBSOLETE { INTO = hdr.a_stsize; } */
-/* OBSOLETE */
-/* OBSOLETE /* Macro to declare variables to hold the file's header data. *x/ */
-/* OBSOLETE #define DECLARE_FILE_HEADERS struct old_exec hdr; \ */
-/* OBSOLETE FILHDR coffhdr */
-/* OBSOLETE */
-/* OBSOLETE /* Macro to read the header data from descriptor DESC and validate it. */
-/* OBSOLETE NAME is the file name, for error messages. *x/ */
-/* OBSOLETE #define READ_FILE_HEADERS(DESC, NAME) \ */
-/* OBSOLETE { val = myread (DESC, &coffhdr, sizeof coffhdr); \ */
-/* OBSOLETE if (val < 0) \ */
-/* OBSOLETE perror_with_name (NAME); \ */
-/* OBSOLETE val = myread (DESC, &hdr, sizeof hdr); \ */
-/* OBSOLETE if (val < 0) \ */
-/* OBSOLETE perror_with_name (NAME); \ */
-/* OBSOLETE if (coffhdr.f_magic != GNP1MAGIC) \ */
-/* OBSOLETE error ("File \"%s\" not in coff executable format.", NAME); \ */
-/* OBSOLETE if (N_BADMAG (hdr)) \ */
-/* OBSOLETE error ("File \"%s\" not in executable format.", NAME); } */
-/* OBSOLETE */
-/* OBSOLETE /* Define COFF and other symbolic names needed on NP1 *x/ */
-/* OBSOLETE #define NS32GMAGIC GDPMAGIC */
-/* OBSOLETE #define NS32SMAGIC PN_MAGIC */
-/* OBSOLETE */
-/* OBSOLETE /* Offset from address of function to start of its code. */
-/* OBSOLETE Zero on most machines. *x/ */
-/* OBSOLETE #define FUNCTION_START_OFFSET 4 */
-/* OBSOLETE */
-/* OBSOLETE /* Advance PC across any function entry prologue instructions */
-/* OBSOLETE to reach some "real" code. One PN we can have one or two startup */
-/* OBSOLETE sequences depending on the size of the local stack: */
-/* OBSOLETE */
-/* OBSOLETE Either: */
-/* OBSOLETE "suabr b2, #" */
-/* OBSOLETE of */
-/* OBSOLETE "lil r4, #", "suabr b2, #(r4)" */
-/* OBSOLETE */
-/* OBSOLETE "lwbr b6, #", "stw r1, 8(b2)" */
-/* OBSOLETE Optional "stwbr b3, c(b2)" */
-/* OBSOLETE Optional "trr r2,r7" (Gould first argument register passing) */
-/* OBSOLETE or */
-/* OBSOLETE Optional "stw r2,8(b3)" (Gould first argument register passing) */
-/* OBSOLETE *x/ */
-/* OBSOLETE #define SKIP_PROLOGUE(pc) { \ */
-/* OBSOLETE register int op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if ((op & 0xffff0000) == 0x580B0000) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if ((op & 0xffff0000) == 0x59400000) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if ((op & 0xffff0000) == 0x5F000000) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if (op == 0xD4820008) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if (op == 0x5582000C) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 2); \ */
-/* OBSOLETE if (op == 0x2fa0) { \ */
-/* OBSOLETE pc += 2; \ */
-/* OBSOLETE } else { \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if (op == 0xd5030008) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } else { \ */
-/* OBSOLETE op = read_memory_integer ((pc), 2); \ */
-/* OBSOLETE if (op == 0x2fa0) { \ */
-/* OBSOLETE pc += 2; \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE if ((op & 0xffff0000) == 0x59000000) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if ((op & 0xffff0000) == 0x5F000000) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if (op == 0xD4820008) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if (op == 0x5582000C) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE op = read_memory_integer ((pc), 2); \ */
-/* OBSOLETE if (op == 0x2fa0) { \ */
-/* OBSOLETE pc += 2; \ */
-/* OBSOLETE } else { \ */
-/* OBSOLETE op = read_memory_integer ((pc), 4); \ */
-/* OBSOLETE if (op == 0xd5030008) { \ */
-/* OBSOLETE pc += 4; \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } else { \ */
-/* OBSOLETE op = read_memory_integer ((pc), 2); \ */
-/* OBSOLETE if (op == 0x2fa0) { \ */
-/* OBSOLETE pc += 2; \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } \ */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* Immediately after a function call, return the saved pc. */
-/* OBSOLETE Can't go through the frames for this because on some machines */
-/* OBSOLETE the new frame is not set up until the new function executes */
-/* OBSOLETE some instructions. True on PN! Return address is in R1. */
-/* OBSOLETE Note: true return location is 4 bytes past R1! *x/ */
-/* OBSOLETE #define SAVED_PC_AFTER_CALL(frame) \ */
-/* OBSOLETE (read_register(R1_REGNUM) + 4) */
-/* OBSOLETE */
-/* OBSOLETE /* Address of end of stack space. *x/ */
-/* OBSOLETE #define STACK_END_ADDR 0x480000 */
-/* OBSOLETE */
-/* OBSOLETE /* Stack grows downward. *x/ */
-/* OBSOLETE #define INNER_THAN(lhs,rhs) ((lhs) < (rhs)) */
-/* OBSOLETE */
-/* OBSOLETE /* Sequence of bytes for breakpoint instruction. *x/ */
-/* OBSOLETE #define BREAKPOINT {0x28, 0x09} */
-/* OBSOLETE */
-/* OBSOLETE /* Amount PC must be decremented by after a breakpoint. */
-/* OBSOLETE This is often the number of bytes in BREAKPOINT */
-/* OBSOLETE but not always. *x/ */
-/* OBSOLETE #define DECR_PC_AFTER_BREAK 2 */
-/* OBSOLETE */
-/* OBSOLETE /* Return 1 if P points to an invalid floating point value. *x/ */
-/* OBSOLETE #define INVALID_FLOAT(p, len) ((*(short *)p & 0xff80) == 0x8000) */
-/* OBSOLETE */
-/* OBSOLETE /* Say how long (ordinary) registers are. This is a piece of bogosity */
-/* OBSOLETE used in push_word and a few other places; REGISTER_RAW_SIZE is the */
-/* OBSOLETE real way to know how big a register is. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define REGISTER_SIZE 4 */
-/* OBSOLETE */
-/* OBSOLETE /* Number of machine registers *x/ */
-/* OBSOLETE #define NUM_REGS 19 */
-/* OBSOLETE #define NUM_GEN_REGS 16 */
-/* OBSOLETE #define NUM_CPU_REGS 3 */
-/* OBSOLETE */
-/* OBSOLETE /* Initializer for an array of names of registers. */
-/* OBSOLETE There should be NUM_REGS strings in this initializer. *x/ */
-/* OBSOLETE #define REGISTER_NAMES { \ */
-/* OBSOLETE "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", \ */
-/* OBSOLETE "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", \ */
-/* OBSOLETE "sp", "ps", "pc", \ */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* Register numbers of various important registers. */
-/* OBSOLETE Note that some of these values are "real" register numbers, */
-/* OBSOLETE and correspond to the general registers of the machine, */
-/* OBSOLETE and some are "phony" register numbers which are too large */
-/* OBSOLETE to be actual register numbers as far as the user is concerned */
-/* OBSOLETE but do serve to get the desired values when passed to read_register. *x/ */
-/* OBSOLETE #define R1_REGNUM 1 /* Gr1 => return address of caller *x/ */
-/* OBSOLETE #define R4_REGNUM 4 /* Gr4 => register save area *x/ */
-/* OBSOLETE #define R5_REGNUM 5 /* Gr5 => register save area *x/ */
-/* OBSOLETE #define R6_REGNUM 6 /* Gr6 => register save area *x/ */
-/* OBSOLETE #define R7_REGNUM 7 /* Gr7 => register save area *x/ */
-/* OBSOLETE #define B1_REGNUM 9 /* Br1 => start of this code routine *x/ */
-/* OBSOLETE #define FP_REGNUM 10 /* Br2 == (sp) *x/ */
-/* OBSOLETE #define AP_REGNUM 11 /* Br3 == (ap) *x/ */
-/* OBSOLETE #define SP_REGNUM 16 /* A copy of Br2 saved in trap *x/ */
-/* OBSOLETE #define PS_REGNUM 17 /* Contains processor status *x/ */
-/* OBSOLETE #define PC_REGNUM 18 /* Contains program counter *x/ */
-/* OBSOLETE */
-/* OBSOLETE /* Total amount of space needed to store our copies of the machine's */
-/* OBSOLETE register state, the array `registers'. *x/ */
-/* OBSOLETE #define REGISTER_BYTES (NUM_GEN_REGS*4 + NUM_CPU_REGS*4) */
-/* OBSOLETE */
-/* OBSOLETE /* Index within `registers' of the first byte of the space for */
-/* OBSOLETE register N. *x/ */
-/* OBSOLETE #define REGISTER_BYTE(N) ((N) * 4) */
-/* OBSOLETE */
-/* OBSOLETE /* Number of bytes of storage in the actual machine representation */
-/* OBSOLETE for register N. On the PN, all normal regs are 4 bytes. *x/ */
-/* OBSOLETE #define REGISTER_RAW_SIZE(N) (4) */
-/* OBSOLETE */
-/* OBSOLETE /* Number of bytes of storage in the program's representation */
-/* OBSOLETE for register N. On the PN, all regs are 4 bytes. *x/ */
-/* OBSOLETE #define REGISTER_VIRTUAL_SIZE(N) (4) */
-/* OBSOLETE */
-/* OBSOLETE /* Largest value REGISTER_RAW_SIZE can have. *x/ */
-/* OBSOLETE #define MAX_REGISTER_RAW_SIZE (4) */
-/* OBSOLETE */
-/* OBSOLETE /* Largest value REGISTER_VIRTUAL_SIZE can have. *x/ */
-/* OBSOLETE #define MAX_REGISTER_VIRTUAL_SIZE (4) */
-/* OBSOLETE */
-/* OBSOLETE /* Return the GDB type object for the "standard" data type */
-/* OBSOLETE of data in register N. *x/ */
-/* OBSOLETE #define REGISTER_VIRTUAL_TYPE(N) (builtin_type_int) */
-/* OBSOLETE */
-/* OBSOLETE /* Store the address of the place in which to copy the structure the */
-/* OBSOLETE subroutine will return. This is called from call_function. */
-/* OBSOLETE */
-/* OBSOLETE On this machine this is a no-op, because gcc isn't used on it */
-/* OBSOLETE yet. So this calling convention is not used. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define STORE_STRUCT_RETURN(ADDR, SP) */
-/* OBSOLETE */
-/* OBSOLETE /* Extract from an arrary REGBUF containing the (raw) register state */
-/* OBSOLETE a function return value of type TYPE, and copy that, in virtual format, */
-/* OBSOLETE into VALBUF. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \ */
-/* OBSOLETE memcpy (VALBUF, REGBUF, TYPE_LENGTH (TYPE)) */
-/* OBSOLETE */
-/* OBSOLETE /* Write into appropriate registers a function return value */
-/* OBSOLETE of type TYPE, given in virtual format. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define STORE_RETURN_VALUE(TYPE,VALBUF) \ */
-/* OBSOLETE write_register_bytes (0, VALBUF, TYPE_LENGTH (TYPE)) */
-/* OBSOLETE */
-/* OBSOLETE /* Extract from an array REGBUF containing the (raw) register state */
-/* OBSOLETE the address in which a function should return its structure value, */
-/* OBSOLETE as a CORE_ADDR (or an expression that can be used as one). *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) (*(int *)(REGBUF)) */
-/* OBSOLETE */
-/* OBSOLETE */
-/* OBSOLETE /* Describe the pointer in each stack frame to the previous stack frame */
-/* OBSOLETE (its caller). *x/ */
-/* OBSOLETE */
-/* OBSOLETE /* FRAME_CHAIN takes a frame's nominal address */
-/* OBSOLETE and produces the frame's chain-pointer. */
-/* OBSOLETE */
-/* OBSOLETE However, if FRAME_CHAIN_VALID returns zero, */
-/* OBSOLETE it means the given frame is the outermost one and has no caller. *x/ */
-/* OBSOLETE */
-/* OBSOLETE /* In the case of the NPL, the frame's norminal address is Br2 and the */
-/* OBSOLETE previous routines frame is up the stack X bytes, where X is the */
-/* OBSOLETE value stored in the code function header xA(Br1). *x/ */
-/* OBSOLETE #define FRAME_CHAIN(thisframe) (findframe(thisframe)) */
-/* OBSOLETE */
-/* OBSOLETE extern int gould_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *)); */
-/* OBSOLETE #define FRAME_CHAIN_VALID(chain, thisframe) gould_frame_chain_valid (chain, thisframe) */
-/* OBSOLETE */
-/* OBSOLETE /* Define other aspects of the stack frame on NPL. *x/ */
-/* OBSOLETE #define FRAME_SAVED_PC(frame) \ */
-/* OBSOLETE (read_memory_integer ((frame)->frame + 8, 4)) */
-/* OBSOLETE */
-/* OBSOLETE #define FRAME_ARGS_ADDRESS(fi) \ */
-/* OBSOLETE ((fi)->next ? \ */
-/* OBSOLETE read_memory_integer ((fi)->frame + 12, 4) : \ */
-/* OBSOLETE read_register (AP_REGNUM)) */
-/* OBSOLETE */
-/* OBSOLETE #define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame + 80) */
-/* OBSOLETE */
-/* OBSOLETE /* Set VAL to the number of args passed to frame described by FI. */
-/* OBSOLETE Can set VAL to -1, meaning no way to tell. *x/ */
-/* OBSOLETE */
-/* OBSOLETE /* We can check the stab info to see how */
-/* OBSOLETE many arg we have. No info in stack will tell us *x/ */
-/* OBSOLETE #define FRAME_NUM_ARGS(fi) (findarg(fi)) */
-/* OBSOLETE */
-/* OBSOLETE /* Return number of bytes at start of arglist that are not really args. *x/ */
-/* OBSOLETE #define FRAME_ARGS_SKIP 8 */
-/* OBSOLETE */
-/* OBSOLETE /* Put here the code to store, into a struct frame_saved_regs, */
-/* OBSOLETE the addresses of the saved registers of frame described by FRAME_INFO. */
-/* OBSOLETE This includes special registers such as pc and fp saved in special */
-/* OBSOLETE ways in the stack frame. sp is even more special: */
-/* OBSOLETE the address we return for it IS the sp for the next frame. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \ */
-/* OBSOLETE { \ */
-/* OBSOLETE memset (&frame_saved_regs, '\0', sizeof frame_saved_regs); \ */
-/* OBSOLETE (frame_saved_regs).regs[PC_REGNUM] = (frame_info)->frame + 8; \ */
-/* OBSOLETE (frame_saved_regs).regs[R4_REGNUM] = (frame_info)->frame + 0x30; \ */
-/* OBSOLETE (frame_saved_regs).regs[R5_REGNUM] = (frame_info)->frame + 0x34; \ */
-/* OBSOLETE (frame_saved_regs).regs[R6_REGNUM] = (frame_info)->frame + 0x38; \ */
-/* OBSOLETE (frame_saved_regs).regs[R7_REGNUM] = (frame_info)->frame + 0x3C; \ */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* Things needed for making the inferior call functions. *x/ */
-/* OBSOLETE */
-/* OBSOLETE /* Push an empty stack frame, to record the current PC, etc. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define PUSH_DUMMY_FRAME \ */
-/* OBSOLETE { register CORE_ADDR sp = read_register (SP_REGNUM); \ */
-/* OBSOLETE register int regnum; \ */
-/* OBSOLETE sp = push_word (sp, read_register (PC_REGNUM)); \ */
-/* OBSOLETE sp = push_word (sp, read_register (FP_REGNUM)); \ */
-/* OBSOLETE write_register (FP_REGNUM, sp); \ */
-/* OBSOLETE for (regnum = FP_REGNUM - 1; regnum >= 0; regnum--) \ */
-/* OBSOLETE sp = push_word (sp, read_register (regnum)); \ */
-/* OBSOLETE sp = push_word (sp, read_register (PS_REGNUM)); \ */
-/* OBSOLETE write_register (SP_REGNUM, sp); } */
-/* OBSOLETE */
-/* OBSOLETE /* Discard from the stack the innermost frame, */
-/* OBSOLETE restoring all saved registers. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define POP_FRAME \ */
-/* OBSOLETE { register struct frame_info *frame = get_current_frame (); \ */
-/* OBSOLETE register CORE_ADDR fp; \ */
-/* OBSOLETE register int regnum; \ */
-/* OBSOLETE struct frame_saved_regs fsr; \ */
-/* OBSOLETE struct frame_info *fi; \ */
-/* OBSOLETE fp = frame->frame; \ */
-/* OBSOLETE get_frame_saved_regs (frame, &fsr); \ */
-/* OBSOLETE for (regnum = FP_REGNUM - 1; regnum >= 0; regnum--) \ */
-/* OBSOLETE if (fsr.regs[regnum]) \ */
-/* OBSOLETE write_register (regnum, read_memory_integer (fsr.regs[regnum], 4)); \ */
-/* OBSOLETE if (fsr.regs[PS_REGNUM]) \ */
-/* OBSOLETE write_register (PS_REGNUM, read_memory_integer (fsr.regs[PS_REGNUM], 4)); \ */
-/* OBSOLETE write_register (FP_REGNUM, read_memory_integer (fp, 4)); \ */
-/* OBSOLETE write_register (PC_REGNUM, read_memory_integer (fp + 4, 4)); \ */
-/* OBSOLETE write_register (SP_REGNUM, fp + 8); \ */
-/* OBSOLETE flush_cached_frames (); \ */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* This sequence of words is the instructions: */
-/* OBSOLETE halt */
-/* OBSOLETE halt */
-/* OBSOLETE halt */
-/* OBSOLETE halt */
-/* OBSOLETE suabr b2, #<stacksize> */
-/* OBSOLETE lwbr b6, #con */
-/* OBSOLETE stw r1, 8(b2) - save caller address, do we care? */
-/* OBSOLETE lw r2, 60(b2) - arg1 */
-/* OBSOLETE labr b3, 50(b2) */
-/* OBSOLETE std r4, 30(b2) - save r4-r7 */
-/* OBSOLETE std r6, 38(b2) */
-/* OBSOLETE lwbr b1, #<func> - load function call address */
-/* OBSOLETE brlnk r1, 8(b1) - call function */
-/* OBSOLETE halt */
-/* OBSOLETE halt */
-/* OBSOLETE ld r4, 30(b2) - restore r4-r7 */
-/* OBSOLETE ld r6, 38(b2) */
-/* OBSOLETE */
-/* OBSOLETE Setup our stack frame, load argumemts, call and then restore registers. */
-/* OBSOLETE *x/ */
-/* OBSOLETE */
-/* OBSOLETE /* FIXME: The below defines an m68k CALL_DUMMY, which looks nothing like what */
-/* OBSOLETE is documented above. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define CALL_DUMMY {0xf227e0ff, 0x48e7fffc, 0x426742e7, 0x4eb93232, 0x3232dffc, 0x69696969, 0x4e4f4e71} */
-/* OBSOLETE */
-/* OBSOLETE #define CALL_DUMMY_LENGTH 28 */
-/* OBSOLETE */
-/* OBSOLETE #define CALL_DUMMY_START_OFFSET 12 */
-/* OBSOLETE */
-/* OBSOLETE /* Insert the specified number of args and function address */
-/* OBSOLETE into a call sequence of the above form stored at DUMMYNAME. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, args, type, gcc_p) \ */
-/* OBSOLETE { *(int *)((char *) dummyname + 20) = nargs * 4; \ */
-/* OBSOLETE *(int *)((char *) dummyname + 14) = fun; } */
diff --git a/gdb/config/gould/xm-np1.h b/gdb/config/gould/xm-np1.h
deleted file mode 100644
index b7af92c8b1e..00000000000
--- a/gdb/config/gould/xm-np1.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* OBSOLETE /* Parameters for execution on a Gould NP1, for GDB, the GNU debugger. */
-/* OBSOLETE Copyright 1986, 1987, 1989, 1992 Free Software Foundation, Inc. */
-/* OBSOLETE */
-/* OBSOLETE This file is part of GDB. */
-/* OBSOLETE */
-/* OBSOLETE This program is free software; you can redistribute it and/or modify */
-/* OBSOLETE it under the terms of the GNU General Public License as published by */
-/* OBSOLETE the Free Software Foundation; either version 2 of the License, or */
-/* OBSOLETE (at your option) any later version. */
-/* OBSOLETE */
-/* OBSOLETE This program is distributed in the hope that it will be useful, */
-/* OBSOLETE but WITHOUT ANY WARRANTY; without even the implied warranty of */
-/* OBSOLETE MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
-/* OBSOLETE GNU General Public License for more details. */
-/* OBSOLETE */
-/* OBSOLETE You should have received a copy of the GNU General Public License */
-/* OBSOLETE along with this program; if not, write to the Free Software */
-/* OBSOLETE Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define HOST_BYTE_ORDER BIG_ENDIAN */
-/* OBSOLETE */
-/* OBSOLETE /* Address of U in kernel space *x/ */
-/* OBSOLETE #define KERNEL_U_ADDR 0x7fffc000 */
-/* OBSOLETE */
-/* OBSOLETE /* This is a piece of magic that is given a register number REGNO */
-/* OBSOLETE and as BLOCKEND the address in the system of the end of the user structure */
-/* OBSOLETE and stores in ADDR the address in the kernel or core dump */
-/* OBSOLETE of that register. *x/ */
-/* OBSOLETE #define REGISTER_U_ADDR(addr, blockend, regno) { \ */
-/* OBSOLETE addr = blockend + regno * 4; \ */
-/* OBSOLETE if (regno == VE_REGNUM) addr = blockend - 9 * 4; \ */
-/* OBSOLETE if (regno == PC_REGNUM) addr = blockend - 8 * 4; \ */
-/* OBSOLETE if (regno == PS_REGNUM) addr = blockend - 7 * 4; \ */
-/* OBSOLETE if (regno == FP_REGNUM) addr = blockend - 6 * 4; \ */
-/* OBSOLETE if (regno >= V1_REGNUM) \ */
-/* OBSOLETE addr = blockend + 16 * 4 + (regno - V1_REGNUM) * VR_SIZE; \ */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* Don't try to write the frame pointer. *x/ */
-/* OBSOLETE #define CANNOT_STORE_REGISTER(regno) ((regno) == FP_REGNUM) */
-/* OBSOLETE */
-/* OBSOLETE /* */
-/* OBSOLETE * No KDB support, Yet! *x/ */
-/* OBSOLETE /* Interface definitions for kernel debugger KDB. *x/ */
-/* OBSOLETE */
-/* OBSOLETE /* Map machine fault codes into signal numbers. */
-/* OBSOLETE First subtract 0, divide by 4, then index in a table. */
-/* OBSOLETE Faults for which the entry in this table is 0 */
-/* OBSOLETE are not handled by KDB; the program's own trap handler */
-/* OBSOLETE gets to handle then. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define FAULT_CODE_ORIGIN 0 */
-/* OBSOLETE #define FAULT_CODE_UNITS 4 */
-/* OBSOLETE #define FAULT_TABLE \ */
-/* OBSOLETE { 0, 0, 0, 0, SIGTRAP, 0, 0, 0, \ */
-/* OBSOLETE 0, SIGTRAP, 0, 0, 0, 0, 0, SIGKILL, \ */
-/* OBSOLETE 0, 0, 0, 0, 0, 0, 0, 0, \ */
-/* OBSOLETE SIGILL } */
-/* OBSOLETE */
-/* OBSOLETE /* Start running with a stack stretching from BEG to END. */
-/* OBSOLETE BEG and END should be symbols meaningful to the assembler. */
-/* OBSOLETE This is used only for kdb. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define INIT_STACK(beg, end) \ */
-/* OBSOLETE { asm (".globl end"); \ */
-/* OBSOLETE asm ("movel $ end, sp"); \ */
-/* OBSOLETE asm ("clrl fp"); } */
-/* OBSOLETE */
-/* OBSOLETE /* Push the frame pointer register on the stack. *x/ */
-/* OBSOLETE #define PUSH_FRAME_PTR \ */
-/* OBSOLETE asm ("movel fp, -(sp)"); */
-/* OBSOLETE */
-/* OBSOLETE /* Copy the top-of-stack to the frame pointer register. *x/ */
-/* OBSOLETE #define POP_FRAME_PTR \ */
-/* OBSOLETE asm ("movl (sp), fp"); */
-/* OBSOLETE */
-/* OBSOLETE /* After KDB is entered by a fault, push all registers */
-/* OBSOLETE that GDB thinks about (all NUM_REGS of them), */
-/* OBSOLETE so that they appear in order of ascending GDB register number. */
-/* OBSOLETE The fault code will be on the stack beyond the last register. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define PUSH_REGISTERS \ */
-/* OBSOLETE { asm ("clrw -(sp)"); \ */
-/* OBSOLETE asm ("pea 10(sp)"); \ */
-/* OBSOLETE asm ("movem $ 0xfffe,-(sp)"); } */
-/* OBSOLETE */
-/* OBSOLETE /* Assuming the registers (including processor status) have been */
-/* OBSOLETE pushed on the stack in order of ascending GDB register number, */
-/* OBSOLETE restore them and return to the address in the saved PC register. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define POP_REGISTERS \ */
-/* OBSOLETE { asm ("subil $8,28(sp)"); \ */
-/* OBSOLETE asm ("movem (sp),$ 0xffff"); \ */
-/* OBSOLETE asm ("rte"); } */
diff --git a/gdb/config/gould/xm-pn.h b/gdb/config/gould/xm-pn.h
deleted file mode 100644
index a59588b7958..00000000000
--- a/gdb/config/gould/xm-pn.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* OBSOLETE /* Parameters for execution on a Gould PN, for GDB, the GNU debugger. */
-/* OBSOLETE Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc. */
-/* OBSOLETE */
-/* OBSOLETE This file is part of GDB. */
-/* OBSOLETE */
-/* OBSOLETE This program is free software; you can redistribute it and/or modify */
-/* OBSOLETE it under the terms of the GNU General Public License as published by */
-/* OBSOLETE the Free Software Foundation; either version 2 of the License, or */
-/* OBSOLETE (at your option) any later version. */
-/* OBSOLETE */
-/* OBSOLETE This program is distributed in the hope that it will be useful, */
-/* OBSOLETE but WITHOUT ANY WARRANTY; without even the implied warranty of */
-/* OBSOLETE MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
-/* OBSOLETE GNU General Public License for more details. */
-/* OBSOLETE */
-/* OBSOLETE You should have received a copy of the GNU General Public License */
-/* OBSOLETE along with this program; if not, write to the Free Software */
-/* OBSOLETE Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define HOST_BYTE_ORDER BIG_ENDIAN */
-/* OBSOLETE */
-/* OBSOLETE /* Address of U in kernel space *x/ */
-/* OBSOLETE #define KERNEL_U_ADDR 0x3fc000 */
-/* OBSOLETE */
-/* OBSOLETE /* This is a piece of magic that is given a register number REGNO */
-/* OBSOLETE and as BLOCKEND the address in the system of the end of the user structure */
-/* OBSOLETE and stores in ADDR the address in the kernel or core dump */
-/* OBSOLETE of that register. *x/ */
-/* OBSOLETE #define REGISTER_U_ADDR(addr, blockend, regno) { \ */
-/* OBSOLETE addr = blockend + regno * 4; \ */
-/* OBSOLETE if (regno == PC_REGNUM) addr = blockend - 8 * 4; \ */
-/* OBSOLETE if (regno == PS_REGNUM) addr = blockend - 7 * 4; \ */
-/* OBSOLETE if (regno == SP_REGNUM) addr = blockend - 6 * 4; \ */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* No KDB support, Yet! *x/ */
-/* OBSOLETE /* Interface definitions for kernel debugger KDB. *x/ */
-/* OBSOLETE */
-/* OBSOLETE /* Map machine fault codes into signal numbers. */
-/* OBSOLETE First subtract 0, divide by 4, then index in a table. */
-/* OBSOLETE Faults for which the entry in this table is 0 */
-/* OBSOLETE are not handled by KDB; the program's own trap handler */
-/* OBSOLETE gets to handle then. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define FAULT_CODE_ORIGIN 0 */
-/* OBSOLETE #define FAULT_CODE_UNITS 4 */
-/* OBSOLETE #define FAULT_TABLE \ */
-/* OBSOLETE { 0, 0, 0, 0, SIGTRAP, 0, 0, 0, \ */
-/* OBSOLETE 0, SIGTRAP, 0, 0, 0, 0, 0, SIGKILL, \ */
-/* OBSOLETE 0, 0, 0, 0, 0, 0, 0, 0, \ */
-/* OBSOLETE SIGILL } */
-/* OBSOLETE */
-/* OBSOLETE /* Start running with a stack stretching from BEG to END. */
-/* OBSOLETE BEG and END should be symbols meaningful to the assembler. */
-/* OBSOLETE This is used only for kdb. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define INIT_STACK(beg, end) \ */
-/* OBSOLETE { asm (".globl end"); \ */
-/* OBSOLETE asm ("movel $ end, sp"); \ */
-/* OBSOLETE asm ("clrl fp"); } */
-/* OBSOLETE */
-/* OBSOLETE /* Push the frame pointer register on the stack. *x/ */
-/* OBSOLETE #define PUSH_FRAME_PTR \ */
-/* OBSOLETE asm ("movel fp, -(sp)"); */
-/* OBSOLETE */
-/* OBSOLETE /* Copy the top-of-stack to the frame pointer register. *x/ */
-/* OBSOLETE #define POP_FRAME_PTR \ */
-/* OBSOLETE asm ("movl (sp), fp"); */
-/* OBSOLETE */
-/* OBSOLETE /* After KDB is entered by a fault, push all registers */
-/* OBSOLETE that GDB thinks about (all NUM_REGS of them), */
-/* OBSOLETE so that they appear in order of ascending GDB register number. */
-/* OBSOLETE The fault code will be on the stack beyond the last register. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define PUSH_REGISTERS \ */
-/* OBSOLETE { asm ("clrw -(sp)"); \ */
-/* OBSOLETE asm ("pea 10(sp)"); \ */
-/* OBSOLETE asm ("movem $ 0xfffe,-(sp)"); } */
-/* OBSOLETE */
-/* OBSOLETE /* Assuming the registers (including processor status) have been */
-/* OBSOLETE pushed on the stack in order of ascending GDB register number, */
-/* OBSOLETE restore them and return to the address in the saved PC register. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #define POP_REGISTERS \ */
-/* OBSOLETE { asm ("subil $8,28(sp)"); \ */
-/* OBSOLETE asm ("movem (sp),$ 0xffff"); \ */
-/* OBSOLETE asm ("rte"); } */
diff --git a/gdb/config/h8300/tm-h8300.h b/gdb/config/h8300/tm-h8300.h
index 44b5e0d3e7a..27a79d7937e 100644
--- a/gdb/config/h8300/tm-h8300.h
+++ b/gdb/config/h8300/tm-h8300.h
@@ -50,7 +50,7 @@ extern int h8300smode;
extern void h8300_init_extra_frame_info ();
-#define IEEE_FLOAT
+#define IEEE_FLOAT (1)
/* Define the bit, byte, and word ordering of the machine. */
#define TARGET_BYTE_ORDER BIG_ENDIAN
#undef TARGET_INT_BIT
@@ -159,7 +159,7 @@ extern char **h8300_register_names;
/* FIXME: Won't work with both h8/300's. */
-extern void h8300_extract_return_value PARAMS ((struct type *, char *, char *));
+extern void h8300_extract_return_value (struct type *, char *, char *);
#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
h8300_extract_return_value (TYPE, (char *)(REGBUF), (char *)(VALBUF))
@@ -168,7 +168,7 @@ extern void h8300_extract_return_value PARAMS ((struct type *, char *, char *));
in d0/d1. */
/* FIXME: Won't work with both h8/300's. */
-extern void h8300_store_return_value PARAMS ((struct type *, char *));
+extern void h8300_store_return_value (struct type *, char *);
#define STORE_RETURN_VALUE(TYPE,VALBUF) \
h8300_store_return_value(TYPE, (char *) (VALBUF))
@@ -196,7 +196,7 @@ extern void h8300_store_return_value PARAMS ((struct type *, char *));
it means the given frame is the outermost one and has no caller. */
#define FRAME_CHAIN(FRAME) h8300_frame_chain(FRAME)
-CORE_ADDR h8300_frame_chain PARAMS ((struct frame_info *));
+CORE_ADDR h8300_frame_chain (struct frame_info *);
/* In the case of the H8/300, the frame's nominal address
is the address of a 2-byte word containing the calling frame's address. */
@@ -278,12 +278,12 @@ typedef unsigned short INSN_WORD;
#define CALL_DUMMY_START_OFFSET (0)
#define CALL_DUMMY_BREAKPOINT_OFFSET (0)
-extern CORE_ADDR h8300_push_arguments PARAMS ((int nargs,
- struct value ** args,
- CORE_ADDR sp,
- unsigned char struct_return,
- CORE_ADDR struct_addr));
-extern CORE_ADDR h8300_push_return_address PARAMS ((CORE_ADDR, CORE_ADDR));
+extern CORE_ADDR h8300_push_arguments (int nargs,
+ struct value **args,
+ CORE_ADDR sp,
+ unsigned char struct_return,
+ CORE_ADDR struct_addr);
+extern CORE_ADDR h8300_push_return_address (CORE_ADDR, CORE_ADDR);
#define PC_IN_CALL_DUMMY(PC, SP, FP) generic_pc_in_call_dummy (PC, SP, FP)
#define FIX_CALL_DUMMY(DUMMY, START_SP, FUNADDR, NARGS, ARGS, TYPE, GCCP)
diff --git a/gdb/config/h8500/tm-h8500.h b/gdb/config/h8500/tm-h8500.h
index eb21a5c6fb1..00eb21826a1 100644
--- a/gdb/config/h8500/tm-h8500.h
+++ b/gdb/config/h8500/tm-h8500.h
@@ -22,7 +22,7 @@
#define GDB_TARGET_IS_H8500
-#define IEEE_FLOAT 1
+#define IEEE_FLOAT (1)
/* Define the bit, byte, and word ordering of the machine. */
@@ -45,7 +45,7 @@
to reach some "real" code. */
#define SKIP_PROLOGUE(ip) (h8500_skip_prologue (ip))
-extern CORE_ADDR h8500_skip_prologue PARAMS ((CORE_ADDR));
+extern CORE_ADDR h8500_skip_prologue (CORE_ADDR);
/* Immediately after a function call, return the saved pc.
Can't always go through the frames for this because on some machines
@@ -53,7 +53,7 @@ extern CORE_ADDR h8500_skip_prologue PARAMS ((CORE_ADDR));
some instructions. */
#define SAVED_PC_AFTER_CALL(frame) saved_pc_after_call()
-extern CORE_ADDR saved_pc_after_call PARAMS ((void));
+extern CORE_ADDR saved_pc_after_call (void);
/* Stack grows downward. */
@@ -86,7 +86,7 @@ extern CORE_ADDR saved_pc_after_call PARAMS ((void));
for register N. */
#define REGISTER_RAW_SIZE(N) h8500_register_size(N)
-extern int h8500_register_size PARAMS ((int regno));
+extern int h8500_register_size (int regno);
#define REGISTER_SIZE 4
@@ -104,7 +104,7 @@ extern int h8500_register_size PARAMS ((int regno));
of data in register N. */
#define REGISTER_VIRTUAL_TYPE(N) h8500_register_virtual_type(N)
-extern struct type *h8500_register_virtual_type PARAMS ((int regno));
+extern struct type *h8500_register_virtual_type (int regno);
/* Initializer for an array of names of registers.
Entries beyond the first NUM_REGS are ignored. */
@@ -207,10 +207,10 @@ extern struct type *h8500_register_virtual_type PARAMS ((int regno));
#define FRAME_CHAIN(FRAME) h8500_frame_chain(FRAME)
struct frame_info;
-extern CORE_ADDR h8500_frame_chain PARAMS ((struct frame_info *));
+extern CORE_ADDR h8500_frame_chain (struct frame_info *);
#define FRAME_SAVED_PC(FRAME) frame_saved_pc(FRAME)
-extern CORE_ADDR frame_saved_pc PARAMS ((struct frame_info * frame));
+extern CORE_ADDR frame_saved_pc (struct frame_info *frame);
#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame)
@@ -237,26 +237,27 @@ extern CORE_ADDR frame_saved_pc PARAMS ((struct frame_info * frame));
#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \
frame_find_saved_regs(frame_info, &(frame_saved_regs))
struct frame_saved_regs;
-extern void frame_find_saved_regs PARAMS ((struct frame_info * frame_info, struct frame_saved_regs * frame_saved_regs));
+extern void frame_find_saved_regs (struct frame_info *frame_info,
+ struct frame_saved_regs *frame_saved_regs);
/* Discard from the stack the innermost frame, restoring all registers. */
#define POP_FRAME { h8500_pop_frame (); }
-extern void h8500_pop_frame PARAMS ((void));
+extern void h8500_pop_frame (void);
#define SHORT_INT_MAX 32767
#define SHORT_INT_MIN -32768
typedef unsigned short INSN_WORD;
-extern CORE_ADDR h8500_addr_bits_remove PARAMS ((CORE_ADDR));
+extern CORE_ADDR h8500_addr_bits_remove (CORE_ADDR);
#define ADDR_BITS_REMOVE(addr) h8500_addr_bits_remove (addr)
#define read_memory_short(x) (read_memory_integer(x,2) & 0xffff)
#define PRINT_REGISTER_HOOK(regno) print_register_hook(regno)
-extern void print_register_hook PARAMS ((int));
+extern void print_register_hook (int);
extern int minimum_mode;
@@ -265,7 +266,7 @@ extern int minimum_mode;
/* Fake variables to make it easy to use 24 bit register pointers */
#define IS_TRAPPED_INTERNALVAR h8500_is_trapped_internalvar
-extern int h8500_is_trapped_internalvar PARAMS ((char *name));
+extern int h8500_is_trapped_internalvar (char *name);
#define VALUE_OF_TRAPPED_INTERNALVAR h8500_value_of_trapped_internalvar
extern struct value *h8500_value_of_trapped_internalvar ( /* struct internalvar *var */ );
@@ -273,14 +274,14 @@ extern struct value *h8500_value_of_trapped_internalvar ( /* struct internalvar
#define SET_TRAPPED_INTERNALVAR h8500_set_trapped_internalvar
extern void h8500_set_trapped_internalvar ( /* struct internalvar *var, value newval, int bitpos, int bitsize, int offset */ );
-extern CORE_ADDR h8500_read_sp PARAMS ((void));
-extern void h8500_write_sp PARAMS ((CORE_ADDR));
+extern CORE_ADDR h8500_read_sp (void);
+extern void h8500_write_sp (CORE_ADDR);
-extern CORE_ADDR h8500_read_fp PARAMS ((void));
-extern void h8500_write_fp PARAMS ((CORE_ADDR));
+extern CORE_ADDR h8500_read_fp (void);
+extern void h8500_write_fp (CORE_ADDR);
-extern CORE_ADDR h8500_read_pc PARAMS ((int));
-extern void h8500_write_pc PARAMS ((CORE_ADDR, int));
+extern CORE_ADDR h8500_read_pc (int);
+extern void h8500_write_pc (CORE_ADDR, int);
#define TARGET_READ_SP() h8500_read_sp()
#define TARGET_WRITE_SP(x) h8500_write_sp(x)
diff --git a/gdb/config/i386/fbsd.mh b/gdb/config/i386/fbsd.mh
index 499ed48f45f..243d0a60ad8 100644
--- a/gdb/config/i386/fbsd.mh
+++ b/gdb/config/i386/fbsd.mh
@@ -1,5 +1,6 @@
# Host: Intel 386 running FreeBSD
XDEPFILES= ser-tcp.o
-NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o core-aout.o i386b-nat.o
-XM_FILE= xm-i386bsd.h
+NATDEPFILES= fork-child.o infptrace.o inftarg.o solib.o \
+ corelow.o core-aout.o core-regset.o i387-nat.o i386bsd-nat.o
+XM_FILE= xm-fbsd.h
NAT_FILE= nm-fbsd.h
diff --git a/gdb/config/i386/fbsd.mt b/gdb/config/i386/fbsd.mt
index e644f1c891b..aff2a154b7f 100644
--- a/gdb/config/i386/fbsd.mt
+++ b/gdb/config/i386/fbsd.mt
@@ -1,3 +1,3 @@
# Target: Intel 386 running FreeBSD
-TDEPFILES= i386-tdep.o i387-tdep.o solib.o
+TDEPFILES= i386-tdep.o i387-tdep.o
TM_FILE= tm-fbsd.h
diff --git a/gdb/config/i386/nbsd.mh b/gdb/config/i386/nbsd.mh
index 061f1ebe075..aea6a77b347 100644
--- a/gdb/config/i386/nbsd.mh
+++ b/gdb/config/i386/nbsd.mh
@@ -1,5 +1,6 @@
# Host: Intel 386 running NetBSD
XDEPFILES= ser-tcp.o
-NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o i386nbsd-nat.o
+NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o \
+ i386nbsd-nat.o solib.o
XM_FILE= xm-nbsd.h
NAT_FILE= nm-nbsd.h
diff --git a/gdb/config/i386/nbsd.mt b/gdb/config/i386/nbsd.mt
index f21a3188351..7564b73fe27 100644
--- a/gdb/config/i386/nbsd.mt
+++ b/gdb/config/i386/nbsd.mt
@@ -1,5 +1,5 @@
# Target: Intel 386 running NetBSD
-TDEPFILES= i386-tdep.o i387-tdep.o solib.o
+TDEPFILES= i386-tdep.o i387-tdep.o
TM_FILE= tm-nbsd.h
GDBSERVER_DEPFILES= low-nbsd.o
diff --git a/gdb/config/i386/nbsdelf.mh b/gdb/config/i386/nbsdelf.mh
new file mode 100644
index 00000000000..4c197541468
--- /dev/null
+++ b/gdb/config/i386/nbsdelf.mh
@@ -0,0 +1,6 @@
+# Host: Intel 386 running NetBSD
+XDEPFILES= ser-tcp.o
+NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o \
+ i386nbsd-nat.o solib.o
+XM_FILE= xm-nbsd.h
+NAT_FILE= nm-nbsdelf.h
diff --git a/gdb/config/i386/nbsdelf.mt b/gdb/config/i386/nbsdelf.mt
new file mode 100644
index 00000000000..278217332fe
--- /dev/null
+++ b/gdb/config/i386/nbsdelf.mt
@@ -0,0 +1,5 @@
+# Target: Intel 386 running NetBSD
+TDEPFILES= i386-tdep.o i387-tdep.o
+TM_FILE= tm-nbsdelf.h
+
+GDBSERVER_DEPFILES= low-nbsd.o
diff --git a/gdb/config/i386/nm-fbsd.h b/gdb/config/i386/nm-fbsd.h
index a2d1e3d1da4..7f912e0cf5e 100644
--- a/gdb/config/i386/nm-fbsd.h
+++ b/gdb/config/i386/nm-fbsd.h
@@ -1,5 +1,5 @@
-/* Native-dependent definitions for Intel 386 running BSD Unix, for GDB.
- Copyright 1986, 1987, 1989, 1992, 1996 Free Software Foundation, Inc.
+/* Native-dependent definitions for FreeBSD/i386.
+ Copyright (C) 1986, 87, 89, 92, 96, 2000 Free Software Foundation, Inc.
This file is part of GDB.
@@ -18,11 +18,25 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#ifndef NM_FREEBSD_H
-#define NM_FREEBSD_H
+#ifndef NM_FBSD_H
+#define NM_FBSD_H
-/* Be shared lib aware */
-#include "solib.h"
+/* Type of the third argument to the `ptrace' system call. */
+#define PTRACE_ARG3_TYPE caddr_t
+
+/* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */
+#define FETCH_INFERIOR_REGISTERS
+
+/* We can attach and detach. */
+#define ATTACH_DETACH
+
+
+/* Support for the user struct. */
+
+/* Return the size of the user struct. */
+
+#define KERNEL_U_SIZE kernel_u_size ()
+extern int kernel_u_size (void);
/* This is the amount to subtract from u.u_ar0
to get the offset in the core file of the register values. */
@@ -31,14 +45,27 @@
#define KERNEL_U_ADDR USRSTACK
#define REGISTER_U_ADDR(addr, blockend, regno) \
- (addr) = i386_register_u_addr ((blockend),(regno));
+ (addr) = register_u_addr ((blockend), (regno))
+extern CORE_ADDR register_u_addr (CORE_ADDR blockend, int regno);
+
-extern int
-i386_register_u_addr PARAMS ((int, int));
+/* Shared library support. */
-#define PTRACE_ARG3_TYPE char*
+/* The FreeBSD <link.h> uses the same condition to distinguish ELF
+ from a.out. ELF implies SVR4 shared libraries. */
+#if (defined (FREEBSD_ELF) || defined (__ELF__)) && !defined (FREEBSD_AOUT)
+#define SVR4_SHARED_LIBS
+#endif
+
+#include "solib.h" /* Support for shared libraries. */
+#ifdef SVR4_SHARED_LIBS
+#include "elf/common.h" /* Additional ELF shared library info. */
+#endif
+
+#ifndef SVR4_SHARED_LIBS
+
+/* Make structure definitions match up with those expected in `solib.c'. */
-/* make structure definitions match up with those expected in solib.c */
#define link_object sod
#define lo_name sod_name
#define lo_library sod_library
@@ -91,9 +118,6 @@ i386_register_u_addr PARAMS ((int, int));
#define ld_un d_un
#define ld_2 d_sdt
-/* Return sizeof user struct to callers in less machine dependent routines */
-
-#define KERNEL_U_SIZE kernel_u_size()
-extern int kernel_u_size PARAMS ((void));
+#endif /* !SVR4_SHARED_LIBS */
-#endif /* NM_FREEBSD_H */
+#endif /* NM_FBSD_H */
diff --git a/gdb/config/i386/nm-i386bsd.h b/gdb/config/i386/nm-i386bsd.h
index 41a414c76ba..caa831fd80d 100644
--- a/gdb/config/i386/nm-i386bsd.h
+++ b/gdb/config/i386/nm-i386bsd.h
@@ -32,8 +32,7 @@
#define REGISTER_U_ADDR(addr, blockend, regno) \
(addr) = i386_register_u_addr ((blockend),(regno));
-extern int
-i386_register_u_addr PARAMS ((int, int));
+extern int i386_register_u_addr (int, int);
#define PTRACE_ARG3_TYPE char*
diff --git a/gdb/config/i386/nm-i386sco.h b/gdb/config/i386/nm-i386sco.h
index 5b56ad6e21b..0bfdf4db226 100644
--- a/gdb/config/i386/nm-i386sco.h
+++ b/gdb/config/i386/nm-i386sco.h
@@ -33,8 +33,7 @@
#define REGISTER_U_ADDR(addr, blockend, regno) \
(addr) = i386_register_u_addr ((blockend),(regno));
-extern int
-i386_register_u_addr PARAMS ((int, int));
+extern int i386_register_u_addr (int, int);
/* When calling functions on SCO, sometimes we get an error writing some
of the segment registers. This would appear to be a kernel
diff --git a/gdb/config/i386/nm-i386sol2.h b/gdb/config/i386/nm-i386sol2.h
index 2c4b4d4578e..7c947cf1b54 100644
--- a/gdb/config/i386/nm-i386sol2.h
+++ b/gdb/config/i386/nm-i386sol2.h
@@ -34,14 +34,24 @@
It will *NOT* be necessary for GDB to step over the watchpoint. */
#define HAVE_CONTINUABLE_WATCHPOINT
-extern int procfs_stopped_by_watchpoint PARAMS ((int));
+/* Solaris x86 2.6 and 2.7 targets have a kernel bug when stepping
+ over an instruction that causes a page fault without triggering
+ a hardware watchpoint. The kernel properly notices that it shouldn't
+ stop, because the hardware watchpoint is not triggered, but it forgets
+ the step request and continues the program normally.
+ Work around the problem by removing hardware watchpoints if a step is
+ requested, GDB will check for a hardware watchpoint trigger after the
+ step anyway. */
+#define CANNOT_STEP_HW_WATCHPOINTS
+
+extern int procfs_stopped_by_watchpoint (int);
#define STOPPED_BY_WATCHPOINT(W) \
procfs_stopped_by_watchpoint(inferior_pid)
/* Use these macros for watchpoint insertion/deletion. */
/* type can be 0: write watch, 1: read watch, 2: access watch (read/write) */
-extern int procfs_set_watchpoint PARAMS ((int, CORE_ADDR, int, int, int));
+extern int procfs_set_watchpoint (int, CORE_ADDR, int, int, int);
#define target_insert_watchpoint(ADDR, LEN, TYPE) \
procfs_set_watchpoint (inferior_pid, ADDR, LEN, TYPE, 1)
#define target_remove_watchpoint(ADDR, LEN, TYPE) \
diff --git a/gdb/config/i386/nm-i386v.h b/gdb/config/i386/nm-i386v.h
index 76b526b5015..963c692a05a 100644
--- a/gdb/config/i386/nm-i386v.h
+++ b/gdb/config/i386/nm-i386v.h
@@ -33,5 +33,4 @@
#define REGISTER_U_ADDR(addr, blockend, regno) \
(addr) = i386_register_u_addr ((blockend),(regno));
-extern int
-i386_register_u_addr PARAMS ((int, int));
+extern int i386_register_u_addr (int, int);
diff --git a/gdb/config/i386/nm-linux.h b/gdb/config/i386/nm-linux.h
index 1095fa0db62..f95c6fe5a79 100644
--- a/gdb/config/i386/nm-linux.h
+++ b/gdb/config/i386/nm-linux.h
@@ -28,7 +28,7 @@
/* Return sizeof user struct to callers in less machine dependent routines */
#define KERNEL_U_SIZE kernel_u_size()
-extern int kernel_u_size PARAMS ((void));
+extern int kernel_u_size (void);
#define U_REGS_OFFSET 0
@@ -72,11 +72,11 @@ extern int kernel_u_size PARAMS ((void));
#define CANNOT_FETCH_REGISTER(regno) ((regno) >= NUM_GREGS)
#define CANNOT_STORE_REGISTER(regno) CANNOT_FETCH_REGISTER (regno)
-extern CORE_ADDR
- i386_stopped_by_watchpoint PARAMS ((int));
-extern int
-i386_insert_watchpoint PARAMS ((int pid, CORE_ADDR addr, int len, int rw));
-extern int
-i386_remove_watchpoint PARAMS ((int pid, CORE_ADDR addr, int len));
+/* Override child_resume in `infptrace.c'. */
+#define CHILD_RESUME
+
+extern CORE_ADDR i386_stopped_by_watchpoint (int);
+extern int i386_insert_watchpoint (int pid, CORE_ADDR addr, int len, int rw);
+extern int i386_remove_watchpoint (int pid, CORE_ADDR addr, int len);
#endif /* #ifndef NM_LINUX_H */
diff --git a/gdb/config/i386/nm-nbsd.h b/gdb/config/i386/nm-nbsd.h
index 22a3434bb45..7de72e89458 100644
--- a/gdb/config/i386/nm-nbsd.h
+++ b/gdb/config/i386/nm-nbsd.h
@@ -22,12 +22,11 @@
#define NM_NBSD_H
/* Get generic NetBSD native definitions. */
-#include "nm-nbsd.h"
+#include "config/nm-nbsd.h"
#define REGISTER_U_ADDR(addr, blockend, regno) \
(addr) = i386_register_u_addr ((blockend),(regno));
-extern int
-i386_register_u_addr PARAMS ((int, int));
+extern int i386_register_u_addr (int, int);
#endif /* NM_NBSD_H */
diff --git a/gdb/config/i386/nm-nbsdelf.h b/gdb/config/i386/nm-nbsdelf.h
new file mode 100644
index 00000000000..b06c1ec3845
--- /dev/null
+++ b/gdb/config/i386/nm-nbsdelf.h
@@ -0,0 +1,27 @@
+/* Native-dependent definitions for Intel 386 running NetBSD, for GDB.
+ Copyright 1986, 1987, 1989, 1992, 1994 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef NM_NBSDELF_H
+#define NM_NBSDELF_H
+
+#define SVR4_SHARED_LIBS
+#include "i386/nm-nbsd.h"
+
+#endif /* NM_NBSDELF_H */
diff --git a/gdb/config/i386/nm-ptx4.h b/gdb/config/i386/nm-ptx4.h
index 289ffe06752..99428665179 100644
--- a/gdb/config/i386/nm-ptx4.h
+++ b/gdb/config/i386/nm-ptx4.h
@@ -39,7 +39,7 @@
#define CHILD_WAIT
struct target_waitstatus;
-extern int child_wait PARAMS ((int, struct target_waitstatus *));
+extern int child_wait (int, struct target_waitstatus *);
/*
* ptx does attach as of ptx version 2.1. Prior to that, the interface
diff --git a/gdb/config/i386/nm-symmetry.h b/gdb/config/i386/nm-symmetry.h
index 781adf2aedd..a672d94304f 100644
--- a/gdb/config/i386/nm-symmetry.h
+++ b/gdb/config/i386/nm-symmetry.h
@@ -29,7 +29,7 @@
#ifdef _SEQUENT_
#define CHILD_WAIT
-extern int child_wait PARAMS ((int, struct target_waitstatus *));
+extern int child_wait (int, struct target_waitstatus *);
#endif
/* This is the amount to subtract from u.u_ar0
diff --git a/gdb/config/i386/tm-cygwin.h b/gdb/config/i386/tm-cygwin.h
index d726328448b..5ae97bbf872 100644
--- a/gdb/config/i386/tm-cygwin.h
+++ b/gdb/config/i386/tm-cygwin.h
@@ -24,8 +24,20 @@
#include "i386/tm-i386v.h"
+#if 0
#define IN_SOLIB_CALL_TRAMPOLINE(pc, name) skip_trampoline_code (pc, name)
#define SKIP_TRAMPOLINE_CODE(pc) skip_trampoline_code (pc, 0)
-extern CORE_ADDR skip_trampoline_code PARAMS ((CORE_ADDR pc, char *name));
-
-extern char *cygwin_pid_to_str PARAMS ((int pid));
+extern CORE_ADDR skip_trampoline_code (CORE_ADDR pc, char *name);
+#endif
+
+#define SOLIB_ADD(filename, from_tty, targ) child_solib_add(filename, from_tty, targ)
+#define SOLIB_LOADED_LIBRARY_PATHNAME(pid) child_solib_loaded_library_pathname(pid)
+#define CLEAR_SOLIB child_clear_solib
+#define ADD_SHARED_SYMBOL_FILES dll_symbol_command
+
+struct target_ops;
+char *cygwin_pid_to_str (int pid);
+void child_solib_add (char *, int, struct target_ops *);
+char *child_solib_loaded_library_pathname(int);
+void child_clear_solib (void);
+void dll_symbol_command (char *, int);
diff --git a/gdb/config/i386/tm-fbsd.h b/gdb/config/i386/tm-fbsd.h
index 0e2df32c52b..df278a802fb 100644
--- a/gdb/config/i386/tm-fbsd.h
+++ b/gdb/config/i386/tm-fbsd.h
@@ -1,5 +1,5 @@
-/* Target macro definitions for i386 running FreeBSD
- Copyright (C) 1997 Free Software Foundation, Inc.
+/* Target-dependent definitions for FreeBSD/i386.
+ Copyright (C) 1997, 2000 Free Software Foundation, Inc.
This file is part of GDB.
@@ -18,16 +18,54 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#include "i386/tm-i386bsd.h"
+#ifndef TM_FBSD_H
+#define TM_FBSD_H
+#define HAVE_I387_REGS
+#include "i386/tm-i386.h"
-#undef NUM_REGS
-#define NUM_REGS 14
+/* FreeBSD uses the old gcc convention for struct returns. */
+#define USE_STRUCT_CONVENTION(gcc_p, type) \
+ generic_use_struct_convention (1, type)
+
-#undef IN_SOLIB_CALL_TRAMPOLINE
-#define IN_SOLIB_CALL_TRAMPOLINE(pc, name) STREQ (name, "_DYNAMIC")
+/* Support for longjmp. */
+/* Details about jmp_buf. It's supposed to be an array of integers. */
-extern i386_float_info ();
-#define FLOAT_INFO i386_float_info ()
+#define JB_ELEMENT_SIZE 4 /* Size of elements in jmp_buf. */
+#define JB_PC 0 /* Array index of saved PC. */
+
+/* Figure out where the longjmp will land. Store the address that
+ longjmp will jump to in *ADDR, and return non-zero if successful. */
+
+extern int get_longjmp_target (CORE_ADDR *addr);
+#define GET_LONGJMP_TARGET(addr) get_longjmp_target (addr)
+
+
+/* Support for signal handlers. */
+
+/* The sigtramp is above the user stack and immediately below
+ the user area. Using constants here allows for cross debugging.
+ These are tested for FreeBSD 3.4. */
+
+#define SIGTRAMP_START(pc) 0xbfbfdf20
+#define SIGTRAMP_END(pc) 0xbfbfdff0
+
+/* Offset to saved PC in sigcontext, from <sys/signal.h>. */
+#define SIGCONTEXT_PC_OFFSET 20
+
+
+/* Shared library support. */
+
+#ifndef SVR4_SHARED_LIBS
+
+/* Return non-zero if we are in a shared library trampoline code stub. */
+
+#define IN_SOLIB_CALL_TRAMPOLINE(pc, name) \
+ (name && !strcmp(name, "_DYNAMIC"))
+
+#endif /* !SVR4_SHARED_LIBS */
+
+#endif /* TM_FBSD_H */
diff --git a/gdb/config/i386/tm-i386.h b/gdb/config/i386/tm-i386.h
index bcb99fced41..918d62afeb1 100644
--- a/gdb/config/i386/tm-i386.h
+++ b/gdb/config/i386/tm-i386.h
@@ -44,7 +44,7 @@ struct type;
/* Used for example in valprint.c:print_floating() to enable checking
for NaN's */
-#define IEEE_FLOAT
+#define IEEE_FLOAT (1)
/* Number of traps that happen between exec'ing the shell to run an
inferior, and when we finally get to the inferior code. This is 2
@@ -62,7 +62,7 @@ struct type;
#define SKIP_PROLOGUE(frompc) (i386_skip_prologue (frompc))
-extern int i386_skip_prologue PARAMS ((int));
+extern int i386_skip_prologue (int);
/* Immediately after a function call, return the saved pc. Can't always go
through the frames for this because on some machines the new frame is not
@@ -344,7 +344,7 @@ extern void i386_extract_return_value (struct type *type, char *regbuf,
: read_memory_integer ((FRAME)->frame + 4, 4)) \
)
-extern CORE_ADDR sigtramp_saved_pc PARAMS ((struct frame_info *));
+extern CORE_ADDR sigtramp_saved_pc (struct frame_info *);
#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame)
@@ -355,7 +355,7 @@ extern CORE_ADDR sigtramp_saved_pc PARAMS ((struct frame_info *));
#define FRAME_NUM_ARGS(fi) (i386_frame_num_args(fi))
-extern int i386_frame_num_args PARAMS ((struct frame_info *));
+extern int i386_frame_num_args (struct frame_info *);
/* Return number of bytes at start of arglist that are not really args. */
@@ -367,7 +367,7 @@ extern int i386_frame_num_args PARAMS ((struct frame_info *));
ways in the stack frame. sp is even more special:
the address we return for it IS the sp for the next frame. */
-extern void i386_frame_init_saved_regs PARAMS ((struct frame_info *));
+extern void i386_frame_init_saved_regs (struct frame_info *);
#define FRAME_INIT_SAVED_REGS(FI) i386_frame_init_saved_regs (FI)
@@ -383,13 +383,13 @@ extern void i386_frame_init_saved_regs PARAMS ((struct frame_info *));
#define PUSH_DUMMY_FRAME { i386_push_dummy_frame (); }
-extern void i386_push_dummy_frame PARAMS ((void));
+extern void i386_push_dummy_frame (void);
/* Discard from the stack the innermost frame, restoring all registers. */
#define POP_FRAME { i386_pop_frame (); }
-extern void i386_pop_frame PARAMS ((void));
+extern void i386_pop_frame (void);
/* this is
@@ -421,8 +421,8 @@ extern void i386_pop_frame PARAMS ((void));
*((char *)(dummyname) + 4) = ((delta >> 24) & 0xff); \
}
-extern void print_387_control_word PARAMS ((unsigned int));
-extern void print_387_status_word PARAMS ((unsigned int));
+extern void print_387_control_word (unsigned int);
+extern void print_387_status_word (unsigned int);
/* Offset from SP to first arg on stack at first instruction of a function */
diff --git a/gdb/config/i386/tm-i386nw.h b/gdb/config/i386/tm-i386nw.h
index d61934ae06f..75dbc5548fe 100644
--- a/gdb/config/i386/tm-i386nw.h
+++ b/gdb/config/i386/tm-i386nw.h
@@ -41,8 +41,7 @@
we extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
This routine returns true on success */
-extern int
-get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
diff --git a/gdb/config/i386/tm-i386sol2.h b/gdb/config/i386/tm-i386sol2.h
index da231eb8301..28521fc29d6 100644
--- a/gdb/config/i386/tm-i386sol2.h
+++ b/gdb/config/i386/tm-i386sol2.h
@@ -21,8 +21,17 @@
#ifndef TM_I386SOL2_H
#define TM_I386SOL2_H 1
+#define HAVE_I387_REGS
#include "i386/tm-i386v4.h"
+/* If the current gcc for for this target does not produce correct
+ debugging information for float parameters, both prototyped and
+ unprototyped, then define this macro. This forces gdb to always
+ assume that floats are passed as doubles and then converted in the
+ callee. */
+
+#define COERCE_FLOAT_TO_DOUBLE(formal, actual) (1)
+
/* Signal handler frames under Solaris 2 are recognized by a return address
of 0xFFFFFFFF, the third parameter on the signal handler stack is
a pointer to an ucontext. */
@@ -36,7 +45,7 @@
and for SunPRO 3.0, N_FUN symbols too. */
#define SOFUN_ADDRESS_MAYBE_MISSING
-extern char *sunpro_static_transform_name PARAMS ((char *));
+extern char *sunpro_static_transform_name (char *);
#define STATIC_TRANSFORM_NAME(x) sunpro_static_transform_name (x)
#define IS_STATIC_TRANSFORM_NAME(name) ((name)[0] == '.')
diff --git a/gdb/config/i386/tm-i386v.h b/gdb/config/i386/tm-i386v.h
index 5e7826d231b..9635e991372 100644
--- a/gdb/config/i386/tm-i386v.h
+++ b/gdb/config/i386/tm-i386v.h
@@ -90,7 +90,6 @@
struct frame_info;
struct frame_saved_regs;
-extern int
-i386_frame_num_args PARAMS ((struct frame_info *));
+extern int i386_frame_num_args (struct frame_info *);
#endif /* ifndef TM_I386V_H */
diff --git a/gdb/config/i386/tm-i386v4.h b/gdb/config/i386/tm-i386v4.h
index cdda76d7488..04d90d471dd 100644
--- a/gdb/config/i386/tm-i386v4.h
+++ b/gdb/config/i386/tm-i386v4.h
@@ -55,8 +55,7 @@
we extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
This routine returns true on success */
-extern int
-get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
@@ -74,6 +73,6 @@ get_longjmp_target PARAMS ((CORE_ADDR *));
/* Saved Pc. Get it from ucontext if within sigtramp. */
#define sigtramp_saved_pc i386v4_sigtramp_saved_pc
-extern CORE_ADDR i386v4_sigtramp_saved_pc PARAMS ((struct frame_info *));
+extern CORE_ADDR i386v4_sigtramp_saved_pc (struct frame_info *);
#endif /* ifndef TM_I386V4_H */
diff --git a/gdb/config/i386/tm-nbsd.h b/gdb/config/i386/tm-nbsd.h
index 66002ed2c09..a24ac0d69a9 100644
--- a/gdb/config/i386/tm-nbsd.h
+++ b/gdb/config/i386/tm-nbsd.h
@@ -1,5 +1,5 @@
/* Macro definitions for i386 running under NetBSD.
- Copyright 1994 Free Software Foundation, Inc.
+ Copyright 1994, 2000 Free Software Foundation, Inc.
This file is part of GDB.
@@ -23,8 +23,8 @@
#define HAVE_I387_REGS
-#include "i386/tm-i386bsd.h"
-#include "tm-nbsd.h"
+#include "i386/tm-i386.h"
+#include "config/tm-nbsd.h"
extern use_struct_convention_fn i386nbsd_use_struct_convention;
#define USE_STRUCT_CONVENTION(gcc_p, type) \
@@ -39,9 +39,20 @@ extern use_struct_convention_fn i386nbsd_use_struct_convention;
we extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
This routine returns true on success */
-extern int
-get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
+
+/* Support for signal handlers. */
+
+/* The sigtramp is above the user stack and immediately below the
+ user area. Using constants here allows for cross debugging. */
+
+#define SIGTRAMP_START(pc) 0xbfbfdf20
+#define SIGTRAMP_END(pc) 0xbfbfdff0
+
+/* Offset to saved PC in sigcontext, from <sys/signal.h>. */
+#define SIGCONTEXT_PC_OFFSET 20
+
#endif /* TM_NBSD_H */
diff --git a/gdb/config/i386/tm-nbsdelf.h b/gdb/config/i386/tm-nbsdelf.h
new file mode 100644
index 00000000000..4d802c5302d
--- /dev/null
+++ b/gdb/config/i386/tm-nbsdelf.h
@@ -0,0 +1,28 @@
+/* Macro definitions for i386 running under NetBSD.
+ Copyright 2000 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef TM_NBSDELF_H
+#define TM_NBSDELF_H
+
+#include "i386/tm-nbsd.h"
+
+#undef USE_STRUCT_CONVENTION
+
+#endif /* TM_NBSD_H */
diff --git a/gdb/config/i386/tm-ptx.h b/gdb/config/i386/tm-ptx.h
index 14491a4dd2c..99abd0b8cd9 100644
--- a/gdb/config/i386/tm-ptx.h
+++ b/gdb/config/i386/tm-ptx.h
@@ -139,8 +139,7 @@ since it uses host specific ptrace calls.
#define REGISTER_U_ADDR(addr, blockend, regno) \
{ (addr) = ptx_register_u_addr((blockend), (regno)); }
-extern int
-ptx_register_u_addr PARAMS ((int, int));
+extern int ptx_register_u_addr (int, int);
/* Total amount of space needed to store our copies of the machine's
register state, the array `registers'. 10 i*86 registers, 8 i387
diff --git a/gdb/config/i386/tm-sun386.h b/gdb/config/i386/tm-sun386.h
index a4ef54cc0e9..d8f41f5fbfb 100644
--- a/gdb/config/i386/tm-sun386.h
+++ b/gdb/config/i386/tm-sun386.h
@@ -130,8 +130,7 @@
i387_to_double ((FROM), (char *)&val); \
store_floating ((TO), TYPE_LENGTH (TYPE), val); \
}
-extern void
-i387_to_double PARAMS ((char *, char *));
+extern void i387_to_double (char *, char *);
/* Convert data from virtual format with type TYPE in buffer FROM
to raw format for register REGNUM in buffer TO. */
@@ -142,8 +141,7 @@ i387_to_double PARAMS ((char *, char *));
double val = extract_floating ((FROM), TYPE_LENGTH (TYPE)); \
double_to_i387((char *)&val, (TO)); \
}
-extern void
-double_to_i387 PARAMS ((char *, char *));
+extern void double_to_i387 (char *, char *);
/* Return the GDB type object for the "standard" data type
of data in register N. */
diff --git a/gdb/config/i386/xm-fbsd.h b/gdb/config/i386/xm-fbsd.h
new file mode 100644
index 00000000000..ee90c14575f
--- /dev/null
+++ b/gdb/config/i386/xm-fbsd.h
@@ -0,0 +1,28 @@
+/* Host-dependent definitions for FreeBSD/i386.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef XM_FBSD_H
+#define XM_FBSD_H
+
+#define HOST_BYTE_ORDER LITTLE_ENDIAN
+
+#define HOST_LONG_DOUBLE_FORMAT &floatformat_i387_ext
+
+#endif /* XM_FBSD_H */
diff --git a/gdb/config/i960/tm-i960.h b/gdb/config/i960/tm-i960.h
index 73bb8dbfff4..1c25118d791 100644
--- a/gdb/config/i960/tm-i960.h
+++ b/gdb/config/i960/tm-i960.h
@@ -40,7 +40,7 @@
/* We have IEEE floating point, if we have any float at all. */
-#define IEEE_FLOAT
+#define IEEE_FLOAT (1)
/* Offset from address of function to start of its code.
Zero on most machines. */
diff --git a/gdb/config/i960/tm-mon960.h b/gdb/config/i960/tm-mon960.h
index 61b937e5c54..adb6e3db6c8 100644
--- a/gdb/config/i960/tm-mon960.h
+++ b/gdb/config/i960/tm-mon960.h
@@ -55,7 +55,7 @@ struct frame_info;
since it differs between Nindy, Mon960 and VxWorks, the currently supported
target types. */
-extern int mon960_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *));
+extern int mon960_frame_chain_valid (CORE_ADDR, struct frame_info *);
#define FRAME_CHAIN_VALID(chain, thisframe) mon960_frame_chain_valid (chain, thisframe)
/* Sequence of bytes for breakpoint instruction */
diff --git a/gdb/config/i960/tm-nindy960.h b/gdb/config/i960/tm-nindy960.h
index d57a6974c38..8fc26832f9f 100644
--- a/gdb/config/i960/tm-nindy960.h
+++ b/gdb/config/i960/tm-nindy960.h
@@ -89,7 +89,7 @@ extern void
since it differs between NINDY and VxWorks, the two currently supported
targets types. */
-extern int nindy_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *));
+extern int nindy_frame_chain_valid (CORE_ADDR, struct frame_info *);
#define FRAME_CHAIN_VALID(chain, thisframe) nindy_frame_chain_valid (chain, thisframe)
extern int
diff --git a/gdb/config/ia64/linux.mt b/gdb/config/ia64/linux.mt
index e688b461d77..8e5b91000b6 100644
--- a/gdb/config/ia64/linux.mt
+++ b/gdb/config/ia64/linux.mt
@@ -1,5 +1,5 @@
# Target: Intel IA-64 running GNU/Linux
-TDEPFILES= ia64-tdep.o
+TDEPFILES= ia64-tdep.o ia64-linux-tdep.o
TM_FILE= tm-linux.h
GDBSERVER_DEPFILES= low-linux.o
diff --git a/gdb/config/ia64/nm-linux.h b/gdb/config/ia64/nm-linux.h
index afb86751a3a..90777251ddd 100644
--- a/gdb/config/ia64/nm-linux.h
+++ b/gdb/config/ia64/nm-linux.h
@@ -44,4 +44,33 @@ extern int ia64_register_u_addr(int, int);
#define PTRACE_ARG3_TYPE long
#define PTRACE_XFER_TYPE long
+/* Hardware watchpoints */
+
+#define TARGET_HAS_HARDWARE_WATCHPOINTS
+
+#define TARGET_CAN_USE_HARDWARE_WATCHPOINT(type, cnt, ot) 1
+
+/* The IA-64 architecture can step over a watch point (without triggering
+ it again) if the "dd" (data debug fault disable) bit in the processor
+ status word is set.
+
+ This PSR bit is set in ia64_linux_stopped_by_watchpoint when the
+ code there has determined that a hardware watchpoint has indeed
+ been hit. The CPU will then be able to execute one instruction
+ without triggering a watchpoint. */
+#define HAVE_STEPPABLE_WATCHPOINT 1
+
+#define STOPPED_BY_WATCHPOINT(W) \
+ ia64_linux_stopped_by_watchpoint (inferior_pid)
+extern CORE_ADDR ia64_linux_stopped_by_watchpoint (int);
+
+#define target_insert_watchpoint(addr, len, type) \
+ ia64_linux_insert_watchpoint (inferior_pid, addr, len, type)
+extern int ia64_linux_insert_watchpoint (int pid, CORE_ADDR addr,
+ int len, int rw);
+
+#define target_remove_watchpoint(addr, len, type) \
+ ia64_linux_remove_watchpoint (inferior_pid, addr, len)
+extern int ia64_linux_remove_watchpoint (int pid, CORE_ADDR addr, int len);
+
#endif /* #ifndef NM_LINUX_H */
diff --git a/gdb/config/ia64/tm-linux.h b/gdb/config/ia64/tm-linux.h
index 6bae759418d..79a664f2fb2 100644
--- a/gdb/config/ia64/tm-linux.h
+++ b/gdb/config/ia64/tm-linux.h
@@ -28,4 +28,7 @@
#define TARGET_ELF64
+extern int ia64_linux_in_sigtramp (CORE_ADDR pc, char *func_name);
+#define IN_SIGTRAMP(pc,func_name) ia64_linux_in_sigtramp (pc, func_name)
+
#endif /* #ifndef TM_LINUX_H */
diff --git a/gdb/config/m32r/tm-m32r.h b/gdb/config/m32r/tm-m32r.h
index a68720a984e..208522f2cea 100644
--- a/gdb/config/m32r/tm-m32r.h
+++ b/gdb/config/m32r/tm-m32r.h
@@ -107,15 +107,15 @@ struct value;
int using_frame_pointer;
-extern void m32r_init_extra_frame_info PARAMS ((struct frame_info * fi));
+extern void m32r_init_extra_frame_info (struct frame_info *fi);
/* mvs_check INIT_EXTRA_FRAME_INFO */
#define INIT_EXTRA_FRAME_INFO(fromleaf, fi) m32r_init_extra_frame_info (fi)
/* mvs_no_check INIT_FRAME_PC */
#define INIT_FRAME_PC /* Not necessary */
extern void
-m32r_frame_find_saved_regs PARAMS ((struct frame_info * fi,
- struct frame_saved_regs * regaddr));
+m32r_frame_find_saved_regs (struct frame_info *fi,
+ struct frame_saved_regs *regaddr);
/* Put here the code to store, into a struct frame_saved_regs,
the addresses of the saved registers of frame described by FRAME_INFO.
@@ -127,15 +127,14 @@ m32r_frame_find_saved_regs PARAMS ((struct frame_info * fi,
#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \
m32r_frame_find_saved_regs(frame_info, &(frame_saved_regs))
-extern CORE_ADDR m32r_frame_chain PARAMS ((struct frame_info * fi));
+extern CORE_ADDR m32r_frame_chain (struct frame_info *fi);
/* mvs_check FRAME_CHAIN */
#define FRAME_CHAIN(fi) m32r_frame_chain (fi)
#define FRAME_CHAIN_VALID(fp, frame) generic_file_frame_chain_valid (fp, frame)
-extern CORE_ADDR m32r_find_callers_reg PARAMS ((struct frame_info * fi,
- int regnum));
-extern CORE_ADDR m32r_frame_saved_pc PARAMS ((struct frame_info *));
+extern CORE_ADDR m32r_find_callers_reg (struct frame_info *fi, int regnum);
+extern CORE_ADDR m32r_frame_saved_pc (struct frame_info *);
/* mvs_check FRAME_SAVED_PC */
#define FRAME_SAVED_PC(fi) m32r_frame_saved_pc (fi)
@@ -152,7 +151,7 @@ extern CORE_ADDR m32r_frame_saved_pc PARAMS ((struct frame_info *));
((TYPE_LENGTH (TYPE) > 4 ? 8:4) - TYPE_LENGTH (TYPE)),\
(VALBUF), TYPE_LENGTH (TYPE));
-extern CORE_ADDR m32r_skip_prologue PARAMS ((CORE_ADDR pc));
+extern CORE_ADDR m32r_skip_prologue (CORE_ADDR pc);
/* mvs_check SKIP_PROLOGUE */
#define SKIP_PROLOGUE(pc) (m32r_skip_prologue (pc))
@@ -198,19 +197,19 @@ extern use_struct_convention_fn m32r_use_struct_convention;
/* target-specific dummy_frame stuff */
-extern struct frame_info *m32r_pop_frame PARAMS ((struct frame_info * frame));
+extern struct frame_info *m32r_pop_frame (struct frame_info *frame);
/* mvs_check POP_FRAME */
#define POP_FRAME m32r_pop_frame (get_current_frame ())
/* mvs_no_check STACK_ALIGN */
/* #define STACK_ALIGN(x) ((x + 3) & ~3) */
-extern CORE_ADDR m32r_push_return_address PARAMS ((CORE_ADDR, CORE_ADDR));
-extern CORE_ADDR m32r_push_arguments PARAMS ((int nargs,
- struct value ** args,
- CORE_ADDR sp,
- unsigned char struct_return,
- CORE_ADDR struct_addr));
+extern CORE_ADDR m32r_push_return_address (CORE_ADDR, CORE_ADDR);
+extern CORE_ADDR m32r_push_arguments (int nargs,
+ struct value **args,
+ CORE_ADDR sp,
+ unsigned char struct_return,
+ CORE_ADDR struct_addr);
diff --git a/gdb/config/m68k/nbsd.mh b/gdb/config/m68k/nbsd.mh
index a9e39425c99..2d117091ef5 100644
--- a/gdb/config/m68k/nbsd.mh
+++ b/gdb/config/m68k/nbsd.mh
@@ -1,5 +1,6 @@
# Host: Motorola m68k running NetBSD
XDEPFILES= ser-tcp.o
-NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o m68knbsd-nat.o
+NATDEPFILES= infptrace.o inftarg.o fork-child.o corelow.o \
+ m68knbsd-nat.o solib.o
XM_FILE= xm-nbsd.h
NAT_FILE= nm-nbsd.h
diff --git a/gdb/config/m68k/nbsd.mt b/gdb/config/m68k/nbsd.mt
index 1ad2882681f..ab0deaa79dd 100644
--- a/gdb/config/m68k/nbsd.mt
+++ b/gdb/config/m68k/nbsd.mt
@@ -1,3 +1,3 @@
# Target: Motorola m68k running NetBSD
-TDEPFILES= m68k-tdep.o solib.o
+TDEPFILES= m68k-tdep.o
TM_FILE= tm-nbsd.h
diff --git a/gdb/config/m68k/nm-dpx2.h b/gdb/config/m68k/nm-dpx2.h
index b24e7c282bc..36389473c95 100644
--- a/gdb/config/m68k/nm-dpx2.h
+++ b/gdb/config/m68k/nm-dpx2.h
@@ -23,8 +23,7 @@
#define REGISTER_U_ADDR(addr, blockend, regno) \
(addr) = dpx2_register_u_addr ((blockend),(regno));
-extern int
-dpx2_register_u_addr PARAMS ((int, int));
+extern int dpx2_register_u_addr (int, int);
/* Kernel is a bit tenacious about sharing text segments, disallowing bpts. */
#define ONE_PROCESS_WRITETEXT
diff --git a/gdb/config/m68k/nm-linux.h b/gdb/config/m68k/nm-linux.h
index e5846c6d2bf..3f0d2dd5522 100644
--- a/gdb/config/m68k/nm-linux.h
+++ b/gdb/config/m68k/nm-linux.h
@@ -26,14 +26,13 @@
/* Return sizeof user struct to callers in less machine dependent routines */
#define KERNEL_U_SIZE kernel_u_size()
-extern int kernel_u_size PARAMS ((void));
+extern int kernel_u_size (void);
#define U_REGS_OFFSET 0
#define REGISTER_U_ADDR(addr, blockend, regno) \
(addr) = m68k_linux_register_u_addr ((blockend),(regno));
-extern int
-m68k_linux_register_u_addr PARAMS ((int, int));
+extern int m68k_linux_register_u_addr (int, int);
#endif /* #ifndef NM_LINUX_H */
diff --git a/gdb/config/m68k/tm-altos.h b/gdb/config/m68k/tm-altos.h
index 4483aa00df1..26a03023949 100644
--- a/gdb/config/m68k/tm-altos.h
+++ b/gdb/config/m68k/tm-altos.h
Binary files differ
diff --git a/gdb/config/m68k/tm-cisco.h b/gdb/config/m68k/tm-cisco.h
index ae8de6602e5..e27432df395 100644
--- a/gdb/config/m68k/tm-cisco.h
+++ b/gdb/config/m68k/tm-cisco.h
@@ -48,7 +48,7 @@
This routine returns true on success */
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-extern int get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
/* BFD handles finding the registers in the core file, so they are at
the start of the BFD .reg section. */
diff --git a/gdb/config/m68k/tm-delta68.h b/gdb/config/m68k/tm-delta68.h
index 745bd00dbb0..b4de935bee3 100644
--- a/gdb/config/m68k/tm-delta68.h
+++ b/gdb/config/m68k/tm-delta68.h
@@ -76,7 +76,7 @@
/* Return number of args passed to a frame.
Can return -1, meaning no way to tell. */
-extern int delta68_frame_num_args PARAMS ((struct frame_info * fi));
+extern int delta68_frame_num_args (struct frame_info *fi);
#define FRAME_NUM_ARGS(fi) (delta68_frame_num_args ((fi)))
/* On M68040 versions of sysV68 R3V7.1, ptrace(PT_WRITE_I) does not clear
@@ -93,13 +93,13 @@ extern int delta68_frame_num_args PARAMS ((struct frame_info * fi));
#define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF)\
(*(CORE_ADDR *)((char*)(REGBUF) + 8 * 4))
-extern int delta68_in_sigtramp PARAMS ((CORE_ADDR pc, char * name));
+extern int delta68_in_sigtramp (CORE_ADDR pc, char *name);
#define IN_SIGTRAMP(pc,name) delta68_in_sigtramp (pc, name)
-extern CORE_ADDR delta68_frame_saved_pc PARAMS ((struct frame_info * fi));
+extern CORE_ADDR delta68_frame_saved_pc (struct frame_info *fi);
#undef FRAME_SAVED_PC
#define FRAME_SAVED_PC(fi) delta68_frame_saved_pc (fi)
-extern CORE_ADDR delta68_frame_args_address PARAMS ((struct frame_info * fi));
+extern CORE_ADDR delta68_frame_args_address (struct frame_info *fi);
#undef FRAME_ARGS_ADDRESS
#define FRAME_ARGS_ADDRESS(fi) delta68_frame_args_address (fi)
diff --git a/gdb/config/m68k/tm-es1800.h b/gdb/config/m68k/tm-es1800.h
index ad1f2352ee3..b6f1588642a 100644
--- a/gdb/config/m68k/tm-es1800.h
+++ b/gdb/config/m68k/tm-es1800.h
@@ -57,4 +57,4 @@
This routine returns true on success */
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-extern int get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
diff --git a/gdb/config/m68k/tm-isi.h b/gdb/config/m68k/tm-isi.h
index 1442d178f5b..f11b823a2a0 100644
--- a/gdb/config/m68k/tm-isi.h
+++ b/gdb/config/m68k/tm-isi.h
@@ -42,7 +42,7 @@
/* Return number of args passed to a frame.
Can return -1, meaning no way to tell. */
-extern int isi_frame_num_args PARAMS ((struct frame_info * fi));
+extern int isi_frame_num_args (struct frame_info *fi);
#define FRAME_NUM_ARGS(fi) (isi_frame_num_args ((fi)))
/* Put here the code to store, into a struct frame_saved_regs,
@@ -122,7 +122,7 @@ retry: \
/* The only reason this is here is the tm-isi.h reference below. It
was moved back here from tm-m68k.h. FIXME? */
-extern CORE_ADDR isi_skip_prologue PARAMS ((CORE_ADDR));
+extern CORE_ADDR isi_skip_prologue (CORE_ADDR);
#define SKIP_PROLOGUE(pc) (isi_skip_prologue (pc))
#include "m68k/tm-m68k.h"
diff --git a/gdb/config/m68k/tm-linux.h b/gdb/config/m68k/tm-linux.h
index ccf4a7ac08e..1d47d468c17 100644
--- a/gdb/config/m68k/tm-linux.h
+++ b/gdb/config/m68k/tm-linux.h
@@ -104,7 +104,7 @@
? sigtramp_saved_pc (FRAME) \
: read_memory_integer ((FRAME)->frame + 4, 4)))
-extern CORE_ADDR sigtramp_saved_pc PARAMS ((struct frame_info *));
+extern CORE_ADDR sigtramp_saved_pc (struct frame_info *);
#define IN_SIGTRAMP(pc,name) in_sigtramp (pc)
-extern int in_sigtramp PARAMS ((CORE_ADDR pc));
+extern int in_sigtramp (CORE_ADDR pc);
diff --git a/gdb/config/m68k/tm-m68k.h b/gdb/config/m68k/tm-m68k.h
index c3574ee0a9a..38068c66f33 100644
--- a/gdb/config/m68k/tm-m68k.h
+++ b/gdb/config/m68k/tm-m68k.h
@@ -20,7 +20,7 @@
/* Generic 68000 stuff, to be included by other tm-*.h files. */
-#define IEEE_FLOAT 1
+#define IEEE_FLOAT (1)
/* Define the bit, byte, and word ordering of the machine. */
#define TARGET_BYTE_ORDER BIG_ENDIAN
@@ -36,7 +36,7 @@
#if !defined(SKIP_PROLOGUE)
#define SKIP_PROLOGUE(ip) (m68k_skip_prologue (ip))
#endif
-extern CORE_ADDR m68k_skip_prologue PARAMS ((CORE_ADDR ip));
+extern CORE_ADDR m68k_skip_prologue (CORE_ADDR ip);
/* Immediately after a function call, return the saved pc.
Can't always go through the frames for this because on some machines
@@ -46,8 +46,9 @@ extern CORE_ADDR m68k_skip_prologue PARAMS ((CORE_ADDR ip));
struct frame_info;
struct frame_saved_regs;
-extern CORE_ADDR m68k_saved_pc_after_call PARAMS ((struct frame_info *));
-extern void m68k_find_saved_regs PARAMS ((struct frame_info *, struct frame_saved_regs *));
+extern CORE_ADDR m68k_saved_pc_after_call (struct frame_info *);
+extern void m68k_find_saved_regs (struct frame_info *,
+ struct frame_saved_regs *);
#define SAVED_PC_AFTER_CALL(frame) \
m68k_saved_pc_after_call(frame)
@@ -372,9 +373,9 @@ do \
#define PUSH_DUMMY_FRAME { m68k_push_dummy_frame (); }
-extern void m68k_push_dummy_frame PARAMS ((void));
+extern void m68k_push_dummy_frame (void);
-extern void m68k_pop_frame PARAMS ((void));
+extern void m68k_pop_frame (void);
/* Discard from the stack the innermost frame, restoring all registers. */
diff --git a/gdb/config/m68k/tm-m68kv4.h b/gdb/config/m68k/tm-m68kv4.h
index 84ebb0e92db..8f6f15e8535 100644
--- a/gdb/config/m68k/tm-m68kv4.h
+++ b/gdb/config/m68k/tm-m68kv4.h
@@ -65,7 +65,7 @@
This routine returns true on success */
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-extern int get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
/* Convert a DWARF register number to a gdb REGNUM. */
#define DWARF_REG_TO_REGNUM(num) ((num) < 16 ? (num) : (num)+FP0_REGNUM-16)
diff --git a/gdb/config/m68k/tm-news.h b/gdb/config/m68k/tm-news.h
index ff9230b50f1..9d1661ff116 100644
--- a/gdb/config/m68k/tm-news.h
+++ b/gdb/config/m68k/tm-news.h
@@ -60,7 +60,7 @@
/* Return number of args passed to a frame.
Can return -1, meaning no way to tell. */
-extern int news_frame_num_args PARAMS ((struct frame_info * fi));
+extern int news_frame_num_args (struct frame_info *fi);
#define FRAME_NUM_ARGS(fi) (news_frame_num_args ((fi)))
#include "m68k/tm-m68k.h"
diff --git a/gdb/config/m68k/tm-sun3.h b/gdb/config/m68k/tm-sun3.h
index ce88045c7d7..0c8651af4db 100644
--- a/gdb/config/m68k/tm-sun3.h
+++ b/gdb/config/m68k/tm-sun3.h
@@ -75,7 +75,7 @@
This routine returns true on success */
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-extern int get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
/* If sun3 pcc says that a parameter is a short, it's a short. */
#define BELIEVE_PCC_PROMOTION_TYPE
diff --git a/gdb/config/m68k/tm-vx68.h b/gdb/config/m68k/tm-vx68.h
index 743220ed63e..9ce812d6bce 100644
--- a/gdb/config/m68k/tm-vx68.h
+++ b/gdb/config/m68k/tm-vx68.h
@@ -77,7 +77,7 @@
This routine returns true on success */
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-extern int get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
/* Number of registers in a ptrace_getregs call. */
diff --git a/gdb/config/m68k/xm-hp300bsd.h b/gdb/config/m68k/xm-hp300bsd.h
index 0da48bcf766..39118014f23 100644
--- a/gdb/config/m68k/xm-hp300bsd.h
+++ b/gdb/config/m68k/xm-hp300bsd.h
@@ -31,7 +31,7 @@
/* Kernel is a bit tenacious about sharing text segments, disallowing bpts. */
#define ONE_PROCESS_WRITETEXT
-extern char *strdup PARAMS ((const char *));
+extern char *strdup (const char *);
/* Interface definitions for kernel debugger KDB. */
diff --git a/gdb/config/m88k/tm-m88k.h b/gdb/config/m88k/tm-m88k.h
index 1acb83e9584..f6a432495ac 100644
--- a/gdb/config/m88k/tm-m88k.h
+++ b/gdb/config/m88k/tm-m88k.h
@@ -43,7 +43,7 @@
init_extra_frame_info (fromleaf, fi)
extern void init_extra_frame_info ();
-#define IEEE_FLOAT
+#define IEEE_FLOAT (1)
/* Offset from address of function to start of its code.
Zero on most machines. */
@@ -53,7 +53,7 @@ extern void init_extra_frame_info ();
/* Advance PC across any function entry prologue instructions
to reach some "real" code. */
-extern CORE_ADDR m88k_skip_prologue PARAMS ((CORE_ADDR));
+extern CORE_ADDR m88k_skip_prologue (CORE_ADDR);
#define SKIP_PROLOGUE(frompc) (m88k_skip_prologue (frompc))
/* The m88k kernel aligns all instructions on 4-byte boundaries. The
@@ -63,7 +63,7 @@ extern CORE_ADDR m88k_skip_prologue PARAMS ((CORE_ADDR));
to realize that those two bits are not really a part of the address
of an instruction. Shrug. */
-extern CORE_ADDR m88k_addr_bits_remove PARAMS ((CORE_ADDR));
+extern CORE_ADDR m88k_addr_bits_remove (CORE_ADDR);
#define ADDR_BITS_REMOVE(addr) m88k_addr_bits_remove (addr)
/* Immediately after a function call, return the saved pc.
@@ -508,8 +508,8 @@ extern CORE_ADDR frame_locals_address ();
struct frame_saved_regs;
struct frame_info;
-void frame_find_saved_regs PARAMS ((struct frame_info * fi,
- struct frame_saved_regs * fsr));
+void frame_find_saved_regs (struct frame_info *fi,
+ struct frame_saved_regs *fsr);
#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \
frame_find_saved_regs (frame_info, &frame_saved_regs)
diff --git a/gdb/config/mcore/tm-mcore.h b/gdb/config/mcore/tm-mcore.h
index cea17a08f17..10aebeca2c8 100644
--- a/gdb/config/mcore/tm-mcore.h
+++ b/gdb/config/mcore/tm-mcore.h
@@ -124,13 +124,13 @@ extern void mcore_pop_frame (struct frame_info *fi);
#define SIZEOF_CALL_DUMMY_WORDS 0
#define SAVE_DUMMY_FRAME_TOS(SP) generic_save_dummy_frame_tos (SP)
-extern CORE_ADDR mcore_push_return_address PARAMS ((CORE_ADDR, CORE_ADDR));
+extern CORE_ADDR mcore_push_return_address (CORE_ADDR, CORE_ADDR);
#define PUSH_RETURN_ADDRESS(PC, SP) mcore_push_return_address (PC, SP)
#define PUSH_DUMMY_FRAME generic_push_dummy_frame ()
-extern CORE_ADDR mcore_push_arguments PARAMS ((int, struct value **, CORE_ADDR,
- unsigned char, CORE_ADDR));
+extern CORE_ADDR mcore_push_arguments (int, struct value **, CORE_ADDR,
+ unsigned char, CORE_ADDR);
#define PUSH_ARGUMENTS(NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR) \
(SP) = mcore_push_arguments (NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR)
@@ -149,7 +149,7 @@ extern use_struct_convention_fn mcore_use_struct_convention;
generic_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval)
/* Cons up virtual frame pointer for trace */
-extern void mcore_virtual_frame_pointer PARAMS ((CORE_ADDR, long *, long *));
+extern void mcore_virtual_frame_pointer (CORE_ADDR, long *, long *);
#define TARGET_VIRTUAL_FRAME_POINTER(PC, REGP, OFFP) \
mcore_virtual_frame_pointer ((PC), (REGP), (OFFP))
diff --git a/gdb/config/mips/nm-irix3.h b/gdb/config/mips/nm-irix3.h
index ab195fb0cc8..fc38176b838 100644
--- a/gdb/config/mips/nm-irix3.h
+++ b/gdb/config/mips/nm-irix3.h
@@ -30,7 +30,7 @@
This routine returns true on success */
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-extern int get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
/* Is this really true or is this just a leftover from a DECstation
config file? */
diff --git a/gdb/config/mips/nm-irix4.h b/gdb/config/mips/nm-irix4.h
index af5a417e698..32c1209b34c 100644
--- a/gdb/config/mips/nm-irix4.h
+++ b/gdb/config/mips/nm-irix4.h
@@ -51,7 +51,7 @@
#define STOPPED_BY_WATCHPOINT(W) \
procfs_stopped_by_watchpoint(inferior_pid)
-extern int procfs_stopped_by_watchpoint PARAMS ((int));
+extern int procfs_stopped_by_watchpoint (int);
#define HAVE_NONSTEPPABLE_WATCHPOINT
@@ -61,6 +61,6 @@ extern int procfs_stopped_by_watchpoint PARAMS ((int));
procfs_set_watchpoint (inferior_pid, ADDR, LEN, TYPE, 0)
#define target_remove_watchpoint(ADDR, LEN, TYPE) \
procfs_set_watchpoint (inferior_pid, ADDR, 0, 0, 0)
-extern int procfs_set_watchpoint PARAMS ((int, CORE_ADDR, int, int, int));
+extern int procfs_set_watchpoint (int, CORE_ADDR, int, int, int);
#define TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT(SIZE) 1
diff --git a/gdb/config/mips/nm-irix5.h b/gdb/config/mips/nm-irix5.h
index 4cf53b60a9b..1244538419b 100644
--- a/gdb/config/mips/nm-irix5.h
+++ b/gdb/config/mips/nm-irix5.h
@@ -32,7 +32,7 @@
#define STOPPED_BY_WATCHPOINT(W) \
procfs_stopped_by_watchpoint(inferior_pid)
-extern int procfs_stopped_by_watchpoint PARAMS ((int));
+extern int procfs_stopped_by_watchpoint (int);
#define HAVE_NONSTEPPABLE_WATCHPOINT
@@ -42,6 +42,6 @@ extern int procfs_stopped_by_watchpoint PARAMS ((int));
procfs_set_watchpoint (inferior_pid, ADDR, LEN, TYPE, 0)
#define target_remove_watchpoint(ADDR, LEN, TYPE) \
procfs_set_watchpoint (inferior_pid, ADDR, 0, 0, 0)
-extern int procfs_set_watchpoint PARAMS ((int, CORE_ADDR, int, int, int));
+extern int procfs_set_watchpoint (int, CORE_ADDR, int, int, int);
#define TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT(SIZE) 1
diff --git a/gdb/config/mips/nm-mips.h b/gdb/config/mips/nm-mips.h
index 5b4cfa85c39..c7e434c94fa 100644
--- a/gdb/config/mips/nm-mips.h
+++ b/gdb/config/mips/nm-mips.h
@@ -30,4 +30,4 @@
This routine returns true on success */
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-extern int get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
diff --git a/gdb/config/mips/tm-embed.h b/gdb/config/mips/tm-embed.h
index 9e0ac8600f1..faaffee294d 100644
--- a/gdb/config/mips/tm-embed.h
+++ b/gdb/config/mips/tm-embed.h
@@ -33,11 +33,11 @@
#define target_insert_watchpoint(addr, len, type) \
remote_mips_set_watchpoint (addr, len, type)
-int remote_mips_set_watchpoint PARAMS ((CORE_ADDR addr, int len, int type));
+int remote_mips_set_watchpoint (CORE_ADDR addr, int len, int type);
#define target_remove_watchpoint(addr, len, type) \
remote_mips_remove_watchpoint (addr, len, type)
-int remote_mips_remove_watchpoint PARAMS ((CORE_ADDR addr, int len, int type));
+int remote_mips_remove_watchpoint (CORE_ADDR addr, int len, int type);
/* We need to remove watchpoints when stepping, else we hit them again! */
@@ -48,4 +48,4 @@ int remote_mips_stopped_by_watchpoint (void);
#define TARGET_CAN_USE_HARDWARE_WATCHPOINT(type, cnt, ot) \
remote_mips_can_use_hardware_watchpoint(cnt)
-int remote_mips_can_use_hardware_watchpoint PARAMS ((int cnt));
+int remote_mips_can_use_hardware_watchpoint (int cnt);
diff --git a/gdb/config/mips/tm-irix5.h b/gdb/config/mips/tm-irix5.h
index 7f828c3aa97..19b8dbe5df3 100644
--- a/gdb/config/mips/tm-irix5.h
+++ b/gdb/config/mips/tm-irix5.h
@@ -1,5 +1,5 @@
/* Target machine description for SGI Iris under Irix 5, for GDB.
- Copyright 1990, 1991, 1992, 1993, 1995 Free Software Foundation, Inc.
+ Copyright 1990-1993, 1995, 2000 Free Software Foundation, Inc.
This file is part of GDB.
@@ -18,8 +18,23 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+/* If we're being built for n32, enable multi-arch. */
+/* FIXME: cagney/2000-04-04: Testing the _MIPS_SIM_NABI32 and
+ _MIPS_SIM in a tm-*.h file is simply wrong! Those are
+ host-dependant macros (provided by /usr/include) and stop any
+ chance of the target being cross compiled */
+#if 0 && defined (_MIPS_SIM_NABI32) && _MIPS_SIM == _MIPS_SIM_NABI32
+/* FIXME: Don't enable multi-arch for IRIX/n32. The test
+ ``gdb.base/corefile.exp: up in corefile.exp'' fails. */
+#define GDB_MULTI_ARCH 1
+#endif
+
#include "mips/tm-irix3.h"
+/* FIXME: cagney/2000-04-04: Testing the _MIPS_SIM_NABI32 and
+ _MIPS_SIM in a tm-*.h file is simply wrong! Those are
+ host-dependant macros (provided by /usr/include) and stop any
+ chance of the target being cross compiled */
#if defined (_MIPS_SIM_NABI32) && _MIPS_SIM == _MIPS_SIM_NABI32
/*
* Irix 6 (n32 ABI) has 32-bit GP regs and 64-bit FP regs
@@ -46,16 +61,20 @@
#undef MIPS_LAST_ARG_REGNUM
#define MIPS_LAST_ARG_REGNUM 11 /* N32 uses R4 through R11 for args */
-#undef MIPS_NUM_ARG_REGS
-#define MIPS_NUM_ARG_REGS 8
+/* MIPS_STACK_ARGSIZE -- how many bytes does a pushed function arg take
+ up on the stack? For the n32 ABI, eight bytes are reserved for each
+ register. Like MIPS_SAVED_REGSIZE but different. */
+#define MIPS_DEFAULT_STACK_ARGSIZE 8
+
+/* N32 does not reserve home space for registers used to carry
+ parameters. */
+#define MIPS_REGS_HAVE_HOME_P 0
+
+/* Force N32 ABI as the default. */
+#define MIPS_DEFAULT_ABI MIPS_ABI_N32
#endif /* N32 */
-/* When calling functions on Irix 5 (or any MIPS SVR4 ABI compliant
- platform) $25 must hold the function address. Dest_Reg is a macro
- used in CALL_DUMMY in tm-mips.h. */
-#undef Dest_Reg
-#define Dest_Reg 25
/* The signal handler trampoline is called _sigtramp. */
#undef IN_SIGTRAMP
diff --git a/gdb/config/mips/tm-mips.h b/gdb/config/mips/tm-mips.h
index 3b8330fb0e8..9d07e87de59 100644
--- a/gdb/config/mips/tm-mips.h
+++ b/gdb/config/mips/tm-mips.h
@@ -58,7 +58,7 @@ struct value;
#endif
/* Floating point is IEEE compliant */
-#define IEEE_FLOAT
+#define IEEE_FLOAT (1)
/* The name of the usual type of MIPS processor that is in the target
system. */
@@ -68,7 +68,7 @@ struct value;
/* Remove useless bits from an instruction address. */
#define ADDR_BITS_REMOVE(addr) mips_addr_bits_remove(addr)
-CORE_ADDR mips_addr_bits_remove PARAMS ((CORE_ADDR addr));
+CORE_ADDR mips_addr_bits_remove (CORE_ADDR addr);
/* Remove useless bits from the stack pointer. */
@@ -83,11 +83,11 @@ CORE_ADDR mips_addr_bits_remove PARAMS ((CORE_ADDR addr));
to reach some "real" code. */
#define SKIP_PROLOGUE(pc) (mips_skip_prologue (pc, 0))
-extern CORE_ADDR mips_skip_prologue PARAMS ((CORE_ADDR addr, int lenient));
+extern CORE_ADDR mips_skip_prologue (CORE_ADDR addr, int lenient);
/* Return non-zero if PC points to an instruction which will cause a step
to execute both the instruction at PC and an instruction at PC+4. */
-extern int mips_step_skips_delay PARAMS ((CORE_ADDR));
+extern int mips_step_skips_delay (CORE_ADDR);
#define STEP_SKIPS_DELAY_P (1)
#define STEP_SKIPS_DELAY(pc) (mips_step_skips_delay (pc))
@@ -100,7 +100,7 @@ extern int mips_step_skips_delay PARAMS ((CORE_ADDR));
/* Are we currently handling a signal */
-extern int in_sigtramp PARAMS ((CORE_ADDR, char *));
+extern int in_sigtramp (CORE_ADDR, char *);
#define IN_SIGTRAMP(pc, name) in_sigtramp(pc, name)
/* Stack grows downward. */
@@ -150,7 +150,7 @@ extern breakpoint_from_pc_fn mips_breakpoint_from_pc;
/* Given the register index, return the name of the corresponding
register. */
-extern char *mips_register_name PARAMS ((int regnr));
+extern char *mips_register_name (int regnr);
#define REGISTER_NAME(i) mips_register_name (i)
/* Initializer for an array of names of registers.
@@ -185,10 +185,8 @@ extern char *mips_register_name PARAMS ((int regnr));
#define A0_REGNUM 4 /* Loc of first arg during a subr call */
#if MIPS_EABI
#define MIPS_LAST_ARG_REGNUM 11 /* EABI uses R4 through R11 for args */
-#define MIPS_NUM_ARG_REGS 8
#else
#define MIPS_LAST_ARG_REGNUM 7 /* old ABI uses R4 through R7 for args */
-#define MIPS_NUM_ARG_REGS 4
#endif
#define T9_REGNUM 25 /* Contains address of callee in PIC */
#define SP_REGNUM 29 /* Contains address of top of stack */
@@ -203,10 +201,8 @@ extern char *mips_register_name PARAMS ((int regnr));
#define FPA0_REGNUM (FP0_REGNUM+12) /* First float argument register */
#if MIPS_EABI /* EABI uses F12 through F19 for args */
#define MIPS_LAST_FP_ARG_REGNUM (FP0_REGNUM+19)
-#define MIPS_NUM_FP_ARG_REGS 8
#else /* old ABI uses F12 through F15 for args */
#define MIPS_LAST_FP_ARG_REGNUM (FP0_REGNUM+15)
-#define MIPS_NUM_FP_ARG_REGS 4
#endif
#define FCRCS_REGNUM 70 /* FP control/status */
#define FCRIR_REGNUM 71 /* FP implementation/revision */
@@ -220,7 +216,7 @@ extern char *mips_register_name PARAMS ((int regnr));
of register dumps. */
#define DO_REGISTERS_INFO(_regnum, fp) mips_do_registers_info(_regnum, fp)
-extern void mips_do_registers_info PARAMS ((int, int));
+extern void mips_do_registers_info (int, int);
/* Total amount of space needed to store our copies of the machine's
register state, the array `registers'. */
@@ -236,7 +232,7 @@ extern void mips_do_registers_info PARAMS ((int, int));
register N. NOTE: This indirectly defines the register size
transfered by the GDB protocol. */
-extern int mips_register_raw_size PARAMS ((int reg_nr));
+extern int mips_register_raw_size (int reg_nr);
#define REGISTER_RAW_SIZE(N) (mips_register_raw_size ((N)))
@@ -246,15 +242,17 @@ extern int mips_register_raw_size PARAMS ((int reg_nr));
really 32 bit registers. This is a legacy of the 64 bit MIPS GDB
protocol which transfers 64 bits for 32 bit registers. */
-extern int mips_register_convertible PARAMS ((int reg_nr));
+extern int mips_register_convertible (int reg_nr);
#define REGISTER_CONVERTIBLE(N) (mips_register_convertible ((N)))
-void mips_register_convert_to_virtual PARAMS ((int reg_nr, struct type *virtual_type, char *raw_buf, char *virt_buf));
+void mips_register_convert_to_virtual (int reg_nr, struct type *virtual_type,
+ char *raw_buf, char *virt_buf);
#define REGISTER_CONVERT_TO_VIRTUAL(N,VIRTUAL_TYPE,RAW_BUF,VIRT_BUF) \
mips_register_convert_to_virtual (N,VIRTUAL_TYPE,RAW_BUF,VIRT_BUF)
-void mips_register_convert_to_raw PARAMS ((struct type *virtual_type, int reg_nr, char *virt_buf, char *raw_buf));
+void mips_register_convert_to_raw (struct type *virtual_type, int reg_nr,
+ char *virt_buf, char *raw_buf);
#define REGISTER_CONVERT_TO_RAW(VIRTUAL_TYPE,N,VIRT_BUF,RAW_BUF) \
mips_register_convert_to_raw (VIRTUAL_TYPE,N,VIRT_BUF,RAW_BUF)
@@ -321,15 +319,14 @@ void mips_register_convert_to_raw PARAMS ((struct type *virtual_type, int reg_nr
#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
mips_extract_return_value(TYPE, REGBUF, VALBUF)
-extern void
-mips_extract_return_value PARAMS ((struct type *, char[], char *));
+extern void mips_extract_return_value (struct type *, char[], char *);
/* Write into appropriate registers a function return value
of type TYPE, given in virtual format. */
#define STORE_RETURN_VALUE(TYPE,VALBUF) \
mips_store_return_value(TYPE, VALBUF)
-extern void mips_store_return_value PARAMS ((struct type *, char *));
+extern void mips_store_return_value (struct type *, char *);
/* Extract from an array REGBUF containing the (raw) register state
the address in which a function should return its structure value,
@@ -353,7 +350,7 @@ extern use_struct_convention_fn mips_use_struct_convention;
and produces the frame's chain-pointer. */
#define FRAME_CHAIN(thisframe) (CORE_ADDR) mips_frame_chain (thisframe)
-extern CORE_ADDR mips_frame_chain PARAMS ((struct frame_info *));
+extern CORE_ADDR mips_frame_chain (struct frame_info *);
/* Define other aspects of the stack frame. */
@@ -368,7 +365,7 @@ extern CORE_ADDR mips_frame_chain PARAMS ((struct frame_info *));
/* Saved Pc. */
#define FRAME_SAVED_PC(FRAME) (mips_frame_saved_pc(FRAME))
-extern CORE_ADDR mips_frame_saved_pc PARAMS ((struct frame_info *));
+extern CORE_ADDR mips_frame_saved_pc (struct frame_info *);
#define FRAME_ARGS_ADDRESS(fi) (fi)->frame
@@ -378,7 +375,7 @@ extern CORE_ADDR mips_frame_saved_pc PARAMS ((struct frame_info *));
Can return -1, meaning no way to tell. */
#define FRAME_NUM_ARGS(fi) (mips_frame_num_args(fi))
-extern int mips_frame_num_args PARAMS ((struct frame_info *));
+extern int mips_frame_num_args (struct frame_info *);
/* Return number of bytes at start of arglist that are not really args. */
@@ -396,7 +393,7 @@ extern int mips_frame_num_args PARAMS ((struct frame_info *));
mips_find_saved_regs (frame_info); \
(frame_info)->saved_regs[SP_REGNUM] = (frame_info)->frame; \
} while (0)
-extern void mips_find_saved_regs PARAMS ((struct frame_info *));
+extern void mips_find_saved_regs (struct frame_info *);
/* Things needed for making the inferior call functions. */
@@ -405,22 +402,23 @@ extern void mips_find_saved_regs PARAMS ((struct frame_info *));
function calls. We don't need STACK_ALIGN, PUSH_ARGUMENTS will
handle it. */
-extern CORE_ADDR mips_push_arguments PARAMS ((int, struct value **, CORE_ADDR, int, CORE_ADDR));
+extern CORE_ADDR mips_push_arguments (int, struct value **, CORE_ADDR, int,
+ CORE_ADDR);
#define PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) \
(mips_push_arguments((nargs), (args), (sp), (struct_return), (struct_addr)))
-extern CORE_ADDR mips_push_return_address PARAMS ((CORE_ADDR pc, CORE_ADDR sp));
+extern CORE_ADDR mips_push_return_address (CORE_ADDR pc, CORE_ADDR sp);
#define PUSH_RETURN_ADDRESS(PC, SP) (mips_push_return_address ((PC), (SP)))
/* Push an empty stack frame, to record the current PC, etc. */
#define PUSH_DUMMY_FRAME mips_push_dummy_frame()
-extern void mips_push_dummy_frame PARAMS ((void));
+extern void mips_push_dummy_frame (void);
/* Discard from the stack the innermost frame, restoring all registers. */
#define POP_FRAME mips_pop_frame()
-extern void mips_pop_frame PARAMS ((void));
+extern void mips_pop_frame (void);
#if !GDB_MULTI_ARCH
#define CALL_DUMMY { 0 }
@@ -430,15 +428,17 @@ extern void mips_pop_frame PARAMS ((void));
#define CALL_DUMMY_BREAKPOINT_OFFSET (0)
-/* On Irix, $t9 ($25) contains the address of the callee (used for PIC).
- It doesn't hurt to do this on other systems; $t9 will be ignored. */
+/* When calling functions on Irix 5 (or any MIPS SVR4 ABI compliant
+ platform), $t9 ($25) (Dest_Reg) contains the address of the callee
+ (used for PIC). It doesn't hurt to do this on other systems; $t9
+ will be ignored. */
#define FIX_CALL_DUMMY(dummyname, start_sp, fun, nargs, args, rettype, gcc_p) \
write_register(T9_REGNUM, fun)
#define CALL_DUMMY_LOCATION AT_ENTRY_POINT
#define CALL_DUMMY_ADDRESS() (mips_call_dummy_address ())
-extern CORE_ADDR mips_call_dummy_address PARAMS ((void));
+extern CORE_ADDR mips_call_dummy_address (void);
/* There's a mess in stack frame creation. See comments in blockframe.c
near reference to INIT_FRAME_PC_FIRST. */
@@ -447,13 +447,13 @@ extern CORE_ADDR mips_call_dummy_address PARAMS ((void));
#define INIT_FRAME_PC_FIRST(fromleaf, prev) \
mips_init_frame_pc_first(fromleaf, prev)
-extern void mips_init_frame_pc_first PARAMS ((int, struct frame_info *));
+extern void mips_init_frame_pc_first (int, struct frame_info *);
/* Special symbol found in blocks associated with routines. We can hang
mips_extra_func_info_t's off of this. */
#define MIPS_EFI_SYMBOL_NAME "__GDB_EFI_INFO__"
-extern void ecoff_relocate_efi PARAMS ((struct symbol *, CORE_ADDR));
+extern void ecoff_relocate_efi (struct symbol *, CORE_ADDR);
/* Specific information about a procedure.
This overlays the MIPS's PDR records,
@@ -468,11 +468,11 @@ typedef struct mips_extra_func_info
}
*mips_extra_func_info_t;
-extern void mips_init_extra_frame_info PARAMS ((int fromleaf, struct frame_info *));
+extern void mips_init_extra_frame_info (int fromleaf, struct frame_info *);
#define INIT_EXTRA_FRAME_INFO(fromleaf, fci) \
mips_init_extra_frame_info(fromleaf, fci)
-extern void mips_print_extra_frame_info PARAMS ((struct frame_info * frame));
+extern void mips_print_extra_frame_info (struct frame_info *frame);
#define PRINT_EXTRA_FRAME_INFO(fi) \
mips_print_extra_frame_info (fi)
@@ -490,7 +490,7 @@ extern void mips_print_extra_frame_info PARAMS ((struct frame_info * frame));
but there is nothing we can do about that). */
#define SETUP_ARBITRARY_FRAME(argc, argv) setup_arbitrary_frame (argc, argv)
-extern struct frame_info *setup_arbitrary_frame PARAMS ((int, CORE_ADDR *));
+extern struct frame_info *setup_arbitrary_frame (int, CORE_ADDR *);
/* Convert a dbx stab register number (from `r' declaration) to a gdb REGNUM */
@@ -523,20 +523,20 @@ extern struct frame_info *setup_arbitrary_frame PARAMS ((int, CORE_ADDR *));
/* These are defined in mdebugread.c and are used in mips-tdep.c */
extern CORE_ADDR sigtramp_address, sigtramp_end;
-extern void fixup_sigtramp PARAMS ((void));
+extern void fixup_sigtramp (void);
/* Defined in mips-tdep.c and used in remote-mips.c */
-extern char *mips_read_processor_type PARAMS ((void));
+extern char *mips_read_processor_type (void);
/* Functions for dealing with MIPS16 call and return stubs. */
#define IN_SOLIB_CALL_TRAMPOLINE(pc, name) mips_in_call_stub (pc, name)
#define IN_SOLIB_RETURN_TRAMPOLINE(pc, name) mips_in_return_stub (pc, name)
#define SKIP_TRAMPOLINE_CODE(pc) mips_skip_stub (pc)
#define IGNORE_HELPER_CALL(pc) mips_ignore_helper (pc)
-extern int mips_in_call_stub PARAMS ((CORE_ADDR pc, char *name));
-extern int mips_in_return_stub PARAMS ((CORE_ADDR pc, char *name));
-extern CORE_ADDR mips_skip_stub PARAMS ((CORE_ADDR pc));
-extern int mips_ignore_helper PARAMS ((CORE_ADDR pc));
+extern int mips_in_call_stub (CORE_ADDR pc, char *name);
+extern int mips_in_return_stub (CORE_ADDR pc, char *name);
+extern CORE_ADDR mips_skip_stub (CORE_ADDR pc);
+extern int mips_ignore_helper (CORE_ADDR pc);
#ifndef TARGET_MIPS
#define TARGET_MIPS
@@ -587,3 +587,8 @@ typedef unsigned long t_inst; /* Integer big enough to hold an instruction */
/* Command to set the processor type. */
extern void mips_set_processor_type_command (char *, int);
+
+
+/* MIPS sign extends addresses */
+#define POINTER_TO_ADDRESS(TYPE,BUF) (signed_pointer_to_address (TYPE, BUF))
+#define ADDRESS_TO_POINTER(TYPE,BUF,ADDR) (address_to_signed_pointer (TYPE, BUF, ADDR))
diff --git a/gdb/config/mips/tm-mipsv4.h b/gdb/config/mips/tm-mipsv4.h
index 03fa499d2e7..82b7918f14a 100644
--- a/gdb/config/mips/tm-mipsv4.h
+++ b/gdb/config/mips/tm-mipsv4.h
@@ -21,12 +21,6 @@
#include "mips/tm-bigmips.h"
#include "tm-sysv4.h"
-/* When calling functions on a MIPS SVR4 ABI compliant platform
- $25 must hold the function address. Dest_Reg is a macro
- used in CALL_DUMMY in tm-mips.h. */
-#undef Dest_Reg
-#define Dest_Reg 25
-
/* The signal handler trampoline is called _sigtramp. */
#undef IN_SIGTRAMP
#define IN_SIGTRAMP(pc, name) ((name) && STREQ ("_sigtramp", name))
diff --git a/gdb/config/mn10200/tm-mn10200.h b/gdb/config/mn10200/tm-mn10200.h
index f8843610690..5c26a003fcc 100644
--- a/gdb/config/mn10200/tm-mn10200.h
+++ b/gdb/config/mn10200/tm-mn10200.h
@@ -99,20 +99,20 @@ struct value;
#define EXTRA_FRAME_INFO struct frame_saved_regs fsr; int status; int stack_size;
-extern void mn10200_init_extra_frame_info PARAMS ((struct frame_info *));
+extern void mn10200_init_extra_frame_info (struct frame_info *);
#define INIT_EXTRA_FRAME_INFO(fromleaf, fi) mn10200_init_extra_frame_info (fi)
#define INIT_FRAME_PC(x,y)
-extern void mn10200_frame_find_saved_regs PARAMS ((struct frame_info *,
- struct frame_saved_regs *));
+extern void mn10200_frame_find_saved_regs (struct frame_info *,
+ struct frame_saved_regs *);
#define FRAME_FIND_SAVED_REGS(fi, regaddr) regaddr = fi->fsr
-extern CORE_ADDR mn10200_frame_chain PARAMS ((struct frame_info *));
+extern CORE_ADDR mn10200_frame_chain (struct frame_info *);
#define FRAME_CHAIN(fi) mn10200_frame_chain (fi)
#define FRAME_CHAIN_VALID(FP, FI) generic_file_frame_chain_valid (FP, FI)
-extern CORE_ADDR mn10200_find_callers_reg PARAMS ((struct frame_info *, int));
-extern CORE_ADDR mn10200_frame_saved_pc PARAMS ((struct frame_info *));
+extern CORE_ADDR mn10200_find_callers_reg (struct frame_info *, int);
+extern CORE_ADDR mn10200_frame_saved_pc (struct frame_info *);
#define FRAME_SAVED_PC(FI) (mn10200_frame_saved_pc (FI))
/* Extract from an array REGBUF containing the (raw) register state
@@ -166,7 +166,7 @@ extern CORE_ADDR mn10200_store_struct_return (CORE_ADDR addr, CORE_ADDR sp);
#define STORE_STRUCT_RETURN(STRUCT_ADDR, SP) \
(SP) = mn10200_store_struct_return (STRUCT_ADDR, SP)
-extern CORE_ADDR mn10200_skip_prologue PARAMS ((CORE_ADDR));
+extern CORE_ADDR mn10200_skip_prologue (CORE_ADDR);
#define SKIP_PROLOGUE(pc) (mn10200_skip_prologue (pc))
#define FRAME_ARGS_SKIP 0
@@ -175,7 +175,7 @@ extern CORE_ADDR mn10200_skip_prologue PARAMS ((CORE_ADDR));
#define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame)
#define FRAME_NUM_ARGS(fi) (-1)
-extern void mn10200_pop_frame PARAMS ((struct frame_info *));
+extern void mn10200_pop_frame (struct frame_info *);
#define POP_FRAME mn10200_pop_frame (get_current_frame ())
#define USE_GENERIC_DUMMY_FRAMES 1
@@ -186,14 +186,14 @@ extern void mn10200_pop_frame PARAMS ((struct frame_info *));
#define FIX_CALL_DUMMY(DUMMY, START, FUNADDR, NARGS, ARGS, TYPE, GCCP)
#define CALL_DUMMY_ADDRESS() entry_point_address ()
-extern CORE_ADDR mn10200_push_return_address PARAMS ((CORE_ADDR, CORE_ADDR));
+extern CORE_ADDR mn10200_push_return_address (CORE_ADDR, CORE_ADDR);
#define PUSH_RETURN_ADDRESS(PC, SP) mn10200_push_return_address (PC, SP)
#define PUSH_DUMMY_FRAME generic_push_dummy_frame ()
extern CORE_ADDR
- mn10200_push_arguments PARAMS ((int, struct value **, CORE_ADDR,
- unsigned char, CORE_ADDR));
+mn10200_push_arguments (int, struct value **, CORE_ADDR,
+ unsigned char, CORE_ADDR);
#define PUSH_ARGUMENTS(NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR) \
(mn10200_push_arguments (NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR))
diff --git a/gdb/config/mn10300/tm-mn10300.h b/gdb/config/mn10300/tm-mn10300.h
index 682df858947..28981ab5144 100644
--- a/gdb/config/mn10300/tm-mn10300.h
+++ b/gdb/config/mn10300/tm-mn10300.h
@@ -38,7 +38,7 @@
#define REGISTER_BYTES (NUM_REGS * REGISTER_SIZE)
-extern char *mn10300_register_name PARAMS ((int regnr));
+extern char *mn10300_register_name (int regnr);
#define REGISTER_NAME(i) (mn10300_register_name (i))
#define D2_REGNUM 2
@@ -67,7 +67,7 @@ extern breakpoint_from_pc_fn mn10300_breakpoint_from_pc;
#define INNER_THAN(lhs,rhs) ((lhs) < (rhs))
-extern CORE_ADDR mn10300_saved_pc_after_call PARAMS ((struct frame_info * frame));
+extern CORE_ADDR mn10300_saved_pc_after_call (struct frame_info *frame);
#define SAVED_PC_AFTER_CALL(frame) \
mn10300_saved_pc_after_call (frame)
@@ -75,33 +75,34 @@ struct frame_info;
struct type;
struct value;
-extern void mn10300_init_extra_frame_info PARAMS ((struct frame_info *));
+extern void mn10300_init_extra_frame_info (struct frame_info *);
#define INIT_EXTRA_FRAME_INFO(fromleaf, fi) mn10300_init_extra_frame_info (fi)
#define INIT_FRAME_PC /* Not necessary */
#define FRAME_INIT_SAVED_REGS(fi) /* handled by init_extra_frame_info */
-extern CORE_ADDR mn10300_frame_chain PARAMS ((struct frame_info *));
+extern CORE_ADDR mn10300_frame_chain (struct frame_info *);
#define FRAME_CHAIN(fi) mn10300_frame_chain (fi)
#define FRAME_CHAIN_VALID(FP, FI) generic_file_frame_chain_valid (FP, FI)
-extern CORE_ADDR mn10300_find_callers_reg PARAMS ((struct frame_info *, int));
-extern CORE_ADDR mn10300_frame_saved_pc PARAMS ((struct frame_info *));
+extern CORE_ADDR mn10300_find_callers_reg (struct frame_info *, int);
+extern CORE_ADDR mn10300_frame_saved_pc (struct frame_info *);
#define FRAME_SAVED_PC(FI) (mn10300_frame_saved_pc (FI))
/* 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. */
-extern void mn10300_extract_return_value PARAMS ((struct type * type, char *regbuf, char *valbuf));
+extern void mn10300_extract_return_value (struct type *type, char *regbuf,
+ char *valbuf);
#define EXTRACT_RETURN_VALUE(TYPE, REGBUF, VALBUF) \
mn10300_extract_return_value (TYPE, REGBUF, VALBUF)
-CORE_ADDR mn10300_extract_struct_value_address PARAMS ((char *regbuf));
+CORE_ADDR mn10300_extract_struct_value_address (char *regbuf);
#define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) \
mn10300_extract_struct_value_address (REGBUF)
-void mn10300_store_return_value PARAMS ((struct type * type, char *valbuf));
+void mn10300_store_return_value (struct type *type, char *valbuf);
#define STORE_RETURN_VALUE(TYPE, VALBUF) \
mn10300_store_return_value (TYPE, VALBUF)
@@ -110,7 +111,7 @@ extern CORE_ADDR mn10300_store_struct_return (CORE_ADDR addr, CORE_ADDR sp);
#define STORE_STRUCT_RETURN(STRUCT_ADDR, SP) \
(mn10300_store_struct_return (STRUCT_ADDR, SP))
-extern CORE_ADDR mn10300_skip_prologue PARAMS ((CORE_ADDR));
+extern CORE_ADDR mn10300_skip_prologue (CORE_ADDR);
#define SKIP_PROLOGUE(pc) (mn10300_skip_prologue (pc))
#define FRAME_ARGS_SKIP 0
@@ -119,7 +120,7 @@ extern CORE_ADDR mn10300_skip_prologue PARAMS ((CORE_ADDR));
#define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame)
#define FRAME_NUM_ARGS(fi) (-1)
-extern void mn10300_pop_frame PARAMS ((struct frame_info *));
+extern void mn10300_pop_frame (struct frame_info *);
#define POP_FRAME mn10300_pop_frame (get_current_frame ())
#define USE_GENERIC_DUMMY_FRAMES 1
@@ -132,15 +133,15 @@ extern void mn10300_pop_frame PARAMS ((struct frame_info *));
#define TARGET_READ_FP() read_sp ()
-extern CORE_ADDR mn10300_push_return_address PARAMS ((CORE_ADDR, CORE_ADDR));
+extern CORE_ADDR mn10300_push_return_address (CORE_ADDR, CORE_ADDR);
#define PUSH_RETURN_ADDRESS(PC, SP) mn10300_push_return_address (PC, SP)
#define PUSH_DUMMY_FRAME generic_push_dummy_frame ()
#define SAVE_DUMMY_FRAME_TOS(SP) generic_save_dummy_frame_tos (SP)
extern CORE_ADDR
- mn10300_push_arguments PARAMS ((int, struct value **, CORE_ADDR,
- unsigned char, CORE_ADDR));
+mn10300_push_arguments (int, struct value **, CORE_ADDR,
+ unsigned char, CORE_ADDR);
#define PUSH_ARGUMENTS(NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR) \
(mn10300_push_arguments (NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR))
@@ -158,6 +159,6 @@ extern use_struct_convention_fn mn10300_use_struct_convention;
generic_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval)
/* Cons up virtual frame pointer for trace */
-extern void mn10300_virtual_frame_pointer PARAMS ((CORE_ADDR, long *, long *));
+extern void mn10300_virtual_frame_pointer (CORE_ADDR, long *, long *);
#define TARGET_VIRTUAL_FRAME_POINTER(PC, REGP, OFFP) \
mn10300_virtual_frame_pointer ((PC), (REGP), (OFFP))
diff --git a/gdb/config/nm-linux.h b/gdb/config/nm-linux.h
index 9b225827c54..40aed575c77 100644
--- a/gdb/config/nm-linux.h
+++ b/gdb/config/nm-linux.h
@@ -38,15 +38,12 @@
struct objfile;
/* Hook to look at new objfiles (shared libraries) */
-extern void
-linuxthreads_new_objfile PARAMS ((struct objfile *objfile));
+extern void linuxthreads_new_objfile (struct objfile *objfile);
/* Method to print a human-readable thread description */
-extern char *
-linuxthreads_pid_to_str PARAMS ((int pid));
+extern char *linuxthreads_pid_to_str (int pid);
-extern int
-linuxthreads_prepare_to_proceed PARAMS ((int step));
+extern int linuxthreads_prepare_to_proceed (int step);
#define PREPARE_TO_PROCEED(select_it) linuxthreads_prepare_to_proceed (1)
/* Defined to make stepping-over-breakpoints be thread-atomic. */
@@ -59,3 +56,8 @@ linuxthreads_prepare_to_proceed PARAMS ((int step));
#define TIDGET(PID) (((PID) & 0x7fffffff) >> 16)
#define MERGEPID(PID, TID) (((PID) & 0xffff) | ((TID) << 16))
+/* Use elf_gregset_t and elf_fpregset_t, rather than
+ gregset_t and fpregset_t. */
+
+#define GDB_GREGSET_T elf_gregset_t
+#define GDB_FPREGSET_T elf_fpregset_t
diff --git a/gdb/config/nm-lynx.h b/gdb/config/nm-lynx.h
index 88974b180b3..4a6f6e40c0d 100644
--- a/gdb/config/nm-lynx.h
+++ b/gdb/config/nm-lynx.h
@@ -70,7 +70,7 @@
#include "target.h"
-extern int child_wait PARAMS ((int pid, struct target_waitstatus * status));
+extern int child_wait (int pid, struct target_waitstatus *status);
/* Lynx needs a special definition of this so that we can
print out the pid and thread number seperatly. */
@@ -78,6 +78,6 @@ extern int child_wait PARAMS ((int pid, struct target_waitstatus * status));
/* override child_pid_to_str in inftarg.c */
#define CHILD_PID_TO_STR
-extern char *lynx_pid_to_str PARAMS ((int pid));
+extern char *lynx_pid_to_str (int pid);
#endif /* NM_LYNX_H */
diff --git a/gdb/config/ns32k/nbsd.mh b/gdb/config/ns32k/nbsd.mh
index aae025b56fc..30fb192e54e 100644
--- a/gdb/config/ns32k/nbsd.mh
+++ b/gdb/config/ns32k/nbsd.mh
@@ -1,5 +1,6 @@
# Host: PC532 running NetBSD
XDEPFILES= ser-tcp.o
+NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o \
+ ns32knbsd-nat.o solib.o
XM_FILE= xm-nbsd.h
NAT_FILE= nm-nbsd.h
-NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o ns32knbsd-nat.o
diff --git a/gdb/config/ns32k/nbsd.mt b/gdb/config/ns32k/nbsd.mt
index 512132a757f..14d37f9a40f 100644
--- a/gdb/config/ns32k/nbsd.mt
+++ b/gdb/config/ns32k/nbsd.mt
@@ -1,3 +1,3 @@
# Target: PC532 running NetBSD
-TDEPFILES= ns32k-tdep.o solib.o
+TDEPFILES= ns32k-tdep.o
TM_FILE= tm-nbsd.h
diff --git a/gdb/config/ns32k/nm-nbsd.h b/gdb/config/ns32k/nm-nbsd.h
index e4aa02e2533..613b5695afc 100644
--- a/gdb/config/ns32k/nm-nbsd.h
+++ b/gdb/config/ns32k/nm-nbsd.h
@@ -31,7 +31,6 @@
#define REGISTER_U_ADDR(addr, blockend, regno) \
(addr) = ns32k_register_u_addr ((blockend),(regno));
-extern int
-ns32k_register_u_addr PARAMS ((int, int));
+extern int ns32k_register_u_addr (int, int);
#endif /* NM_NBSD_H */
diff --git a/gdb/config/ns32k/tm-merlin.h b/gdb/config/ns32k/tm-merlin.h
index 5fa06b8078c..ff74d08d0f3 100644
--- a/gdb/config/ns32k/tm-merlin.h
+++ b/gdb/config/ns32k/tm-merlin.h
@@ -28,7 +28,7 @@
/* Advance PC across any function entry prologue instructions
to reach some "real" code. */
-extern CORE_ADDR merlin_skip_prologue PARAMS ((CORE_ADDR));
+extern CORE_ADDR merlin_skip_prologue (CORE_ADDR);
#define SKIP_PROLOGUE(pc) (merlin_skip_prologue (pc))
/* Immediately after a function call, return the saved pc.
@@ -193,7 +193,7 @@ extern CORE_ADDR merlin_skip_prologue PARAMS ((CORE_ADDR));
/* Return number of args passed to a frame.
Can return -1, meaning no way to tell. */
-extern int merlin_frame_num_args PARAMS ((struct frame_info * fi));
+extern int merlin_frame_num_args (struct frame_info *fi);
#define FRAME_NUM_ARGS(fi) (merlin_frame_num_args ((fi)))
/* Return number of bytes at start of arglist that are not really args. */
diff --git a/gdb/config/ns32k/tm-umax.h b/gdb/config/ns32k/tm-umax.h
index 392d3285cf0..db8c978177a 100644
--- a/gdb/config/ns32k/tm-umax.h
+++ b/gdb/config/ns32k/tm-umax.h
@@ -34,7 +34,7 @@
/* Advance PC across any function entry prologue instructions
to reach some "real" code. */
-extern CORE_ADDR umax_skip_prologue PARAMS ((CORE_ADDR));
+extern CORE_ADDR umax_skip_prologue (CORE_ADDR);
#define SKIP_PROLOGUE(pc) (umax_skip_prologue (pc))
/* Immediately after a function call, return the saved pc.
@@ -232,7 +232,7 @@ extern CORE_ADDR ns32k_get_enter_addr ();
ways in the stack frame. sp is even more special:
the address we return for it IS the sp for the next frame. */
-extern int umax_frame_num_args PARAMS ((struct frame_info * fi));
+extern int umax_frame_num_args (struct frame_info *fi);
#define FRAME_NUM_ARGS(fi) (umax_frame_num_args ((fi)))
/* Things needed for making the inferior call functions. */
diff --git a/gdb/config/pa/nm-hppah.h b/gdb/config/pa/nm-hppah.h
index c7466ca40de..1af0ec963dd 100644
--- a/gdb/config/pa/nm-hppah.h
+++ b/gdb/config/pa/nm-hppah.h
@@ -70,7 +70,7 @@
/* While this is for use by threaded programs, it doesn't appear
* to hurt non-threaded ones. This is used in infrun.c: */
#define PREPARE_TO_PROCEED(select_it) hppa_prepare_to_proceed()
-extern int hppa_prepare_to_proceed PARAMS ((void));
+extern int hppa_prepare_to_proceed (void);
/* In infptrace.c or infttrace.c: */
#define CHILD_PID_TO_EXEC_FILE
@@ -93,10 +93,10 @@ extern int hppa_prepare_to_proceed PARAMS ((void));
#define CHILD_PID_TO_STR
#define REQUIRE_ATTACH(pid) hppa_require_attach(pid)
-extern int hppa_require_attach PARAMS ((int));
+extern int hppa_require_attach (int);
#define REQUIRE_DETACH(pid,signal) hppa_require_detach(pid,signal)
-extern int hppa_require_detach PARAMS ((int, int));
+extern int hppa_require_detach (int, int);
/* So we can cleanly use code in infptrace.c. */
#define PT_KILL PT_EXIT
@@ -210,11 +210,11 @@ extern int hppa_require_detach PARAMS ((int, int));
*/
#define TARGET_ENABLE_HW_WATCHPOINTS(pid) \
hppa_enable_page_protection_events (pid)
-extern void hppa_enable_page_protection_events PARAMS ((int));
+extern void hppa_enable_page_protection_events (int);
#define TARGET_DISABLE_HW_WATCHPOINTS(pid) \
hppa_disable_page_protection_events (pid)
-extern void hppa_disable_page_protection_events PARAMS ((int));
+extern void hppa_disable_page_protection_events (int);
/* Use these macros for watchpoint insertion/deletion. */
#define target_insert_watchpoint(addr, len, type) \
@@ -228,11 +228,11 @@ extern void hppa_disable_page_protection_events PARAMS ((int));
* the string. Code is in hppah-nat.c.
*/
-extern char *child_pid_to_str PARAMS ((pid_t));
+extern char *child_pid_to_str (pid_t);
#define target_tid_to_str( pid ) \
hppa_tid_to_str( pid )
-extern char *hppa_tid_to_str PARAMS ((pid_t));
+extern char *hppa_tid_to_str (pid_t);
/* For this, ID can be either a process or thread ID, and the function
will describe it appropriately, returning the description as a printable
@@ -243,7 +243,7 @@ extern char *hppa_tid_to_str PARAMS ((pid_t));
*/
#define target_pid_or_tid_to_str(ID) \
hppa_pid_or_tid_to_str (ID)
-extern char *hppa_pid_or_tid_to_str PARAMS ((pid_t));
+extern char *hppa_pid_or_tid_to_str (pid_t);
/* This is used when handling events caused by a call to vfork(). On ptrace-
based HP-UXs, when you resume the vforked child, the parent automagically
@@ -261,7 +261,7 @@ extern char *hppa_pid_or_tid_to_str PARAMS ((pid_t));
*/
#define ENSURE_VFORKING_PARENT_REMAINS_STOPPED(PID) \
hppa_ensure_vforking_parent_remains_stopped (PID)
-extern void hppa_ensure_vforking_parent_remains_stopped PARAMS ((int));
+extern void hppa_ensure_vforking_parent_remains_stopped (int);
/* This is used when handling events caused by a call to vfork().
@@ -275,7 +275,7 @@ extern void hppa_ensure_vforking_parent_remains_stopped PARAMS ((int));
*/
#define RESUME_EXECD_VFORKING_CHILD_TO_GET_PARENT_VFORK() \
hppa_resume_execd_vforking_child_to_get_parent_vfork ()
-extern int hppa_resume_execd_vforking_child_to_get_parent_vfork PARAMS ((void));
+extern int hppa_resume_execd_vforking_child_to_get_parent_vfork (void);
#define HPUXHPPA
diff --git a/gdb/config/pa/tm-hppa.h b/gdb/config/pa/tm-hppa.h
index 9307fa56721..2dbb74bee38 100644
--- a/gdb/config/pa/tm-hppa.h
+++ b/gdb/config/pa/tm-hppa.h
@@ -53,7 +53,7 @@ struct inferior_status;
/* Watch out for NaNs */
-#define IEEE_FLOAT
+#define IEEE_FLOAT (1)
/* On the PA, any pass-by-value structure > 8 bytes is actually
passed via a pointer regardless of its type or the compiler
@@ -70,24 +70,24 @@ struct inferior_status;
/* Advance PC across any function entry prologue instructions
to reach some "real" code. */
-extern CORE_ADDR hppa_skip_prologue PARAMS ((CORE_ADDR));
+extern CORE_ADDR hppa_skip_prologue (CORE_ADDR);
#define SKIP_PROLOGUE(pc) (hppa_skip_prologue (pc))
/* If PC is in some function-call trampoline code, return the PC
where the function itself actually starts. If not, return NULL. */
#define SKIP_TRAMPOLINE_CODE(pc) skip_trampoline_code (pc, NULL)
-extern CORE_ADDR skip_trampoline_code PARAMS ((CORE_ADDR, char *));
+extern CORE_ADDR skip_trampoline_code (CORE_ADDR, char *);
/* Return non-zero if we are in an appropriate trampoline. */
#define IN_SOLIB_CALL_TRAMPOLINE(pc, name) \
in_solib_call_trampoline (pc, name)
-extern int in_solib_call_trampoline PARAMS ((CORE_ADDR, char *));
+extern int in_solib_call_trampoline (CORE_ADDR, char *);
#define IN_SOLIB_RETURN_TRAMPOLINE(pc, name) \
in_solib_return_trampoline (pc, name)
-extern int in_solib_return_trampoline PARAMS ((CORE_ADDR, char *));
+extern int in_solib_return_trampoline (CORE_ADDR, char *);
/* Immediately after a function call, return the saved pc.
Can't go through the frames for this because on some machines
@@ -96,7 +96,7 @@ extern int in_solib_return_trampoline PARAMS ((CORE_ADDR, char *));
#undef SAVED_PC_AFTER_CALL
#define SAVED_PC_AFTER_CALL(frame) saved_pc_after_call (frame)
-extern CORE_ADDR saved_pc_after_call PARAMS ((struct frame_info *));
+extern CORE_ADDR saved_pc_after_call (struct frame_info *);
/* Stack grows upward */
#define INNER_THAN(lhs,rhs) ((lhs) > (rhs))
@@ -258,7 +258,7 @@ extern CORE_ADDR saved_pc_after_call PARAMS ((struct frame_info *));
of register dumps. */
#define DO_REGISTERS_INFO(_regnum, fp) pa_do_registers_info (_regnum, fp)
-extern void pa_do_registers_info PARAMS ((int, int));
+extern void pa_do_registers_info (int, int);
#if 0
#define STRCAT_REGISTER(regnum, fpregs, stream, precision) pa_do_strcat_registers_info (regnum, fpregs, stream, precision)
@@ -403,7 +403,7 @@ extern use_struct_convention_fn hppa_use_struct_convention;
((regno) > IPSW_REGNUM && (regno) < FP4_REGNUM)
#define INIT_EXTRA_FRAME_INFO(fromleaf, frame) init_extra_frame_info (fromleaf, frame)
-extern void init_extra_frame_info PARAMS ((int, struct frame_info *));
+extern void init_extra_frame_info (int, struct frame_info *);
/* Describe the pointer in each stack frame to the previous stack frame
(its caller). */
@@ -423,9 +423,9 @@ extern void init_extra_frame_info PARAMS ((int, struct frame_info *));
address (previous FP). */
#define FRAME_CHAIN(thisframe) frame_chain (thisframe)
-extern CORE_ADDR frame_chain PARAMS ((struct frame_info *));
+extern CORE_ADDR frame_chain (struct frame_info *);
-extern int hppa_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *));
+extern int hppa_frame_chain_valid (CORE_ADDR, struct frame_info *);
#define FRAME_CHAIN_VALID(chain, thisframe) hppa_frame_chain_valid (chain, thisframe)
#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)
@@ -437,9 +437,9 @@ extern int hppa_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *));
does not, FRAMELESS is set to 1, else 0. */
#define FRAMELESS_FUNCTION_INVOCATION(FI) \
(frameless_function_invocation (FI))
-extern int frameless_function_invocation PARAMS ((struct frame_info *));
+extern int frameless_function_invocation (struct frame_info *);
-extern CORE_ADDR hppa_frame_saved_pc PARAMS ((struct frame_info * frame));
+extern CORE_ADDR hppa_frame_saved_pc (struct frame_info *frame);
#define FRAME_SAVED_PC(FRAME) hppa_frame_saved_pc (FRAME)
#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame)
@@ -459,8 +459,7 @@ extern CORE_ADDR hppa_frame_saved_pc PARAMS ((struct frame_info * frame));
#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \
hppa_frame_find_saved_regs (frame_info, &frame_saved_regs)
extern void
-hppa_frame_find_saved_regs PARAMS ((struct frame_info *,
- struct frame_saved_regs *));
+hppa_frame_find_saved_regs (struct frame_info *, struct frame_saved_regs *);
/* Things needed for making the inferior call functions. */
@@ -468,12 +467,12 @@ hppa_frame_find_saved_regs PARAMS ((struct frame_info *,
/* Push an empty stack frame, to record the current PC, etc. */
#define PUSH_DUMMY_FRAME push_dummy_frame (inf_status)
-extern void push_dummy_frame PARAMS ((struct inferior_status *));
+extern void push_dummy_frame (struct inferior_status *);
/* Discard from the stack the innermost frame,
restoring all saved registers. */
#define POP_FRAME hppa_pop_frame ()
-extern void hppa_pop_frame PARAMS ((void));
+extern void hppa_pop_frame (void);
#define INSTRUCTION_SIZE 4
@@ -619,14 +618,13 @@ extern void hppa_pop_frame PARAMS ((void));
#define FIX_CALL_DUMMY hppa_fix_call_dummy
extern CORE_ADDR
- hppa_fix_call_dummy PARAMS ((char *, CORE_ADDR, CORE_ADDR, int,
- struct value **, struct type *, int));
+hppa_fix_call_dummy (char *, CORE_ADDR, CORE_ADDR, int,
+ struct value **, struct type *, int);
#define 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 PARAMS ((int, struct value **, CORE_ADDR, int,
- CORE_ADDR));
+hppa_push_arguments (int, struct value **, CORE_ADDR, int, CORE_ADDR);
/* The low two bits of the PC on the PA contain the privilege level. Some
genius implementing a (non-GCC) compiler apparently decided this means
@@ -760,26 +758,25 @@ typedef struct obj_private_struct
obj_private_data_t;
#if 0
-extern void target_write_pc
-PARAMS ((CORE_ADDR, int))
- extern CORE_ADDR target_read_pc PARAMS ((int));
- extern CORE_ADDR skip_trampoline_code PARAMS ((CORE_ADDR, char *));
+extern void target_write_pc (CORE_ADDR, int);
+extern CORE_ADDR target_read_pc (int);
+extern CORE_ADDR skip_trampoline_code (CORE_ADDR, char *);
#endif
#define TARGET_READ_PC(pid) target_read_pc (pid)
- extern CORE_ADDR target_read_pc PARAMS ((int));
+extern CORE_ADDR target_read_pc (int);
#define TARGET_WRITE_PC(v,pid) target_write_pc (v,pid)
- extern void target_write_pc PARAMS ((CORE_ADDR, int));
+extern void target_write_pc (CORE_ADDR, int);
#define TARGET_READ_FP() target_read_fp (inferior_pid)
- extern CORE_ADDR target_read_fp PARAMS ((int));
+extern CORE_ADDR target_read_fp (int);
/* For a number of horrible reasons we may have to adjust the location
of variables on the stack. Ugh. */
#define HPREAD_ADJUST_STACK_ADDRESS(ADDR) hpread_adjust_stack_address(ADDR)
- extern int hpread_adjust_stack_address PARAMS ((CORE_ADDR));
+extern int hpread_adjust_stack_address (CORE_ADDR);
/* If the current gcc for for this target does not produce correct debugging
information for float parameters, both prototyped and unprototyped, then
diff --git a/gdb/config/pa/tm-hppa64.h b/gdb/config/pa/tm-hppa64.h
index 7f30c664f32..71654779c37 100644
--- a/gdb/config/pa/tm-hppa64.h
+++ b/gdb/config/pa/tm-hppa64.h
@@ -140,7 +140,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
of variables on the stack. Ugh. jimb: why? */
#define HPREAD_ADJUST_STACK_ADDRESS(ADDR) hpread_adjust_stack_address(ADDR)
-extern int hpread_adjust_stack_address PARAMS ((CORE_ADDR));
+extern int hpread_adjust_stack_address (CORE_ADDR);
/* jimb: omitted dynamic linking stuff here */
diff --git a/gdb/config/pa/xm-hppah.h b/gdb/config/pa/xm-hppah.h
index 1542d327035..913b70ab371 100644
--- a/gdb/config/pa/xm-hppah.h
+++ b/gdb/config/pa/xm-hppah.h
@@ -40,11 +40,8 @@
#define MALLOC_INCOMPATIBLE
-extern void *
- malloc PARAMS ((size_t));
+extern void *malloc (size_t);
-extern void *
- realloc PARAMS ((void *, size_t));
+extern void *realloc (void *, size_t);
-extern void
-free PARAMS ((void *));
+extern void free (void *);
diff --git a/gdb/config/powerpc/nbsd.mh b/gdb/config/powerpc/nbsd.mh
new file mode 100644
index 00000000000..e79f84a734e
--- /dev/null
+++ b/gdb/config/powerpc/nbsd.mh
@@ -0,0 +1,5 @@
+# Host: PowerPC, running NetBSD
+XDEPFILES= ser-tcp.o
+NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o solib.o ppcnbsd-nat.o
+XM_FILE= xm-nbsd.h
+NAT_FILE= nm-nbsd.h
diff --git a/gdb/config/powerpc/nbsd.mt b/gdb/config/powerpc/nbsd.mt
new file mode 100644
index 00000000000..2173f650087
--- /dev/null
+++ b/gdb/config/powerpc/nbsd.mt
@@ -0,0 +1,5 @@
+# Target: PowerPC, running NetBSD
+TDEPFILES= rs6000-tdep.o
+TM_FILE= tm-nbsd.h
+
+GDBSERVER_DEPFILES= low-nbsd.o
diff --git a/gdb/config/powerpc/nm-linux.h b/gdb/config/powerpc/nm-linux.h
index 78b78b9dba7..0ef531ce154 100644
--- a/gdb/config/powerpc/nm-linux.h
+++ b/gdb/config/powerpc/nm-linux.h
@@ -18,12 +18,15 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef NM_LINUX_H
+
+#include "nm-linux.h"
+
#define NM_LINUX_H
/* Return sizeof user struct to callers in less machine dependent routines */
#define KERNEL_U_SIZE kernel_u_size()
-extern int kernel_u_size PARAMS ((void));
+extern int kernel_u_size (void);
/* Tell gdb that we can attach and detach other processes */
#define ATTACH_DETACH
@@ -48,16 +51,13 @@ extern int kernel_u_size PARAMS ((void));
struct objfile;
#endif
-extern void
-linuxthreads_new_objfile PARAMS ((struct objfile *objfile));
+extern void linuxthreads_new_objfile (struct objfile *objfile);
#define target_new_objfile(OBJFILE) linuxthreads_new_objfile (OBJFILE)
-extern char *
-linuxthreads_pid_to_str PARAMS ((int pid));
+extern char *linuxthreads_pid_to_str (int pid);
#define target_pid_to_str(PID) linuxthreads_pid_to_str (PID)
-extern int
-linuxthreads_prepare_to_proceed PARAMS ((int step));
+extern int linuxthreads_prepare_to_proceed (int step);
#define PREPARE_TO_PROCEED(select_it) linuxthreads_prepare_to_proceed (1)
diff --git a/gdb/config/powerpc/nm-nbsd.h b/gdb/config/powerpc/nm-nbsd.h
new file mode 100644
index 00000000000..a07e14fc28b
--- /dev/null
+++ b/gdb/config/powerpc/nm-nbsd.h
@@ -0,0 +1,29 @@
+/* Native-dependent definitions for PowerPC running NetBSD ELF, for GDB.
+ Copyright (C) 2000, Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef NM_NBSD_H
+#define NM_NBSD_H
+
+#define SVR4_SHARED_LIBS
+
+/* Get generic NetBSD native definitions. */
+#include "nm-nbsd.h"
+
+#endif
diff --git a/gdb/config/powerpc/tm-linux.h b/gdb/config/powerpc/tm-linux.h
index 43fa60ffd44..b1abb0ee8b7 100644
--- a/gdb/config/powerpc/tm-linux.h
+++ b/gdb/config/powerpc/tm-linux.h
@@ -75,7 +75,8 @@ CORE_ADDR ppc_linux_frame_chain (struct frame_info *);
#undef FRAME_CHAIN
#define FRAME_CHAIN(thisframe) ppc_linux_frame_chain (thisframe)
-CORE_ADDR ppc_sysv_abi_push_arguments PARAMS ((int, struct value **, CORE_ADDR, int, CORE_ADDR));
+CORE_ADDR ppc_sysv_abi_push_arguments (int, struct value **, CORE_ADDR, int,
+ CORE_ADDR);
#undef PUSH_ARGUMENTS
#define PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) \
(ppc_sysv_abi_push_arguments((nargs), (args), (sp), (struct_return), (struct_addr)))
diff --git a/gdb/config/powerpc/tm-nbsd.h b/gdb/config/powerpc/tm-nbsd.h
new file mode 100644
index 00000000000..ae3418f4fdb
--- /dev/null
+++ b/gdb/config/powerpc/tm-nbsd.h
@@ -0,0 +1,27 @@
+/* Macro definitions for PowerPC running under NetBSD.
+ Copyright 2000 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef TM_NBSD_H
+#define TM_NBSD_H
+
+#include "powerpc/tm-ppc-eabi.h"
+#include "tm-nbsd.h"
+
+#endif /* TM_NBSD_H */
diff --git a/gdb/config/powerpc/tm-ppc-eabi.h b/gdb/config/powerpc/tm-ppc-eabi.h
index 5b85be8dcd9..2e333a8b031 100644
--- a/gdb/config/powerpc/tm-ppc-eabi.h
+++ b/gdb/config/powerpc/tm-ppc-eabi.h
@@ -54,9 +54,9 @@
/* target-specific dummy_frame stuff */
-extern struct frame_info *rs6000_pop_frame PARAMS ((struct frame_info * frame));
+extern struct frame_info *rs6000_pop_frame (struct frame_info *frame);
-extern CORE_ADDR ppc_push_return_address PARAMS ((CORE_ADDR, CORE_ADDR));
+extern CORE_ADDR ppc_push_return_address (CORE_ADDR, CORE_ADDR);
#undef PUSH_DUMMY_FRAME
#define PUSH_DUMMY_FRAME generic_push_dummy_frame ()
diff --git a/gdb/config/powerpc/tm-solaris.h b/gdb/config/powerpc/tm-solaris.h
index 67ddb5296bb..9d717756eba 100644
--- a/gdb/config/powerpc/tm-solaris.h
+++ b/gdb/config/powerpc/tm-solaris.h
@@ -54,8 +54,7 @@
extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
This routine returns true on success */
-extern int
-get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
#endif /* 0 */
@@ -65,7 +64,7 @@ get_longjmp_target PARAMS ((CORE_ADDR *));
#define SOFUN_ADDRESS_MAYBE_MISSING
#if 0
-extern char *sunpro_static_transform_name PARAMS ((char *));
+extern char *sunpro_static_transform_name (char *);
#define STATIC_TRANSFORM_NAME(x) sunpro_static_transform_name (x)
#endif
diff --git a/gdb/config/powerpc/xm-aix.h b/gdb/config/powerpc/xm-aix.h
index c5a5ca969d4..aeb2995c2db 100644
--- a/gdb/config/powerpc/xm-aix.h
+++ b/gdb/config/powerpc/xm-aix.h
@@ -22,7 +22,7 @@
#include "xm-aix4.h"
/* This doesn't seem to be declared in any header file I can find. */
-char *termdef PARAMS ((int, int));
+char *termdef (int, int);
/* UINT_MAX is defined in <sys/limits.h> as a decimal constant (4294967295)
which is too large to fit in a signed int when it is parsed by the
diff --git a/gdb/config/powerpc/xm-nbsd.h b/gdb/config/powerpc/xm-nbsd.h
new file mode 100644
index 00000000000..36ae321659a
--- /dev/null
+++ b/gdb/config/powerpc/xm-nbsd.h
@@ -0,0 +1,22 @@
+/* Parameters for execution on a PowerPC running NetBSD, for GDB.
+ Copyright 2000 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* Get generic NetBSD host definitions. */
+#include "xm-nbsd.h"
diff --git a/gdb/config/rs6000/nm-rs6000.h b/gdb/config/rs6000/nm-rs6000.h
index 52a98f0da20..3d237bcbe98 100644
--- a/gdb/config/rs6000/nm-rs6000.h
+++ b/gdb/config/rs6000/nm-rs6000.h
@@ -49,11 +49,11 @@
/* Core file. */ \
xcoff_relocate_core (c);
-extern void xcoff_relocate_symtab PARAMS ((unsigned int));
+extern void xcoff_relocate_symtab (unsigned int);
struct target_ops;
-extern void xcoff_relocate_core PARAMS ((struct target_ops *));
+extern void xcoff_relocate_core (struct target_ops *);
/* Return sizeof user struct to callers in less machine dependent routines */
#define KERNEL_U_SIZE kernel_u_size()
-extern int kernel_u_size PARAMS ((void));
+extern int kernel_u_size (void);
diff --git a/gdb/config/rs6000/tm-rs6000.h b/gdb/config/rs6000/tm-rs6000.h
index 3b3e190541c..5bba7782116 100644
--- a/gdb/config/rs6000/tm-rs6000.h
+++ b/gdb/config/rs6000/tm-rs6000.h
@@ -32,7 +32,7 @@ struct value;
/* Load segment of a given pc value. */
#define PC_LOAD_SEGMENT(PC) pc_load_segment_name(PC)
-extern char *pc_load_segment_name PARAMS ((CORE_ADDR));
+extern char *pc_load_segment_name (CORE_ADDR);
/* AIX cc seems to get this right. */
@@ -100,17 +100,17 @@ struct rs6000_framedata
/* Advance PC across any function entry prologue instructions
to reach some "real" code. */
-extern CORE_ADDR rs6000_skip_prologue PARAMS ((CORE_ADDR));
+extern CORE_ADDR rs6000_skip_prologue (CORE_ADDR);
#define SKIP_PROLOGUE(pc) (rs6000_skip_prologue (pc))
-extern CORE_ADDR skip_prologue PARAMS ((CORE_ADDR, struct rs6000_framedata *));
+extern CORE_ADDR skip_prologue (CORE_ADDR, struct rs6000_framedata *);
/* If PC is in some function-call trampoline code, return the PC
where the function itself actually starts. If not, return NULL. */
#define SKIP_TRAMPOLINE_CODE(pc) skip_trampoline_code (pc)
-extern CORE_ADDR skip_trampoline_code PARAMS ((CORE_ADDR));
+extern CORE_ADDR skip_trampoline_code (CORE_ADDR);
/* Number of trap signals we need to skip over, once the inferior process
starts running. */
@@ -136,7 +136,7 @@ extern CORE_ADDR skip_trampoline_code PARAMS ((CORE_ADDR));
once, when we are closing the current symbol table in end_symtab(). */
#define PROCESS_LINENUMBER_HOOK() aix_process_linenos ()
-extern void aix_process_linenos PARAMS ((void));
+extern void aix_process_linenos (void);
/* Immediately after a function call, return the saved pc.
Can't go through the frames for this because on some machines
@@ -160,7 +160,8 @@ extern void aix_process_linenos PARAMS ((void));
#define PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) \
(rs6000_push_arguments((nargs), (args), (sp), (struct_return), (struct_addr)))
-extern CORE_ADDR rs6000_push_arguments PARAMS ((int, struct value **, CORE_ADDR, int, CORE_ADDR));
+extern CORE_ADDR rs6000_push_arguments (int, struct value **, CORE_ADDR, int,
+ CORE_ADDR);
/* BREAKPOINT_FROM_PC uses the program counter value to determine the
breakpoint that should be used */
@@ -334,7 +335,7 @@ extern CORE_ADDR rs6000_struct_return_address;
#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
extract_return_value(TYPE,REGBUF,VALBUF)
-extern void extract_return_value PARAMS ((struct type *, char[], char *));
+extern void extract_return_value (struct type *, char[], char *);
/* Write into appropriate registers a function return value
of type TYPE, given in virtual format. */
@@ -372,7 +373,7 @@ extern void extract_return_value PARAMS ((struct type *, char[], char *));
is the address of a 4-byte word containing the calling frame's address. */
#define FRAME_CHAIN(thisframe) rs6000_frame_chain (thisframe)
-CORE_ADDR rs6000_frame_chain PARAMS ((struct frame_info *));
+CORE_ADDR rs6000_frame_chain (struct frame_info *);
/* Define other aspects of the stack frame. */
@@ -410,7 +411,7 @@ extern void rs6000_init_extra_frame_info (int fromleaf, struct frame_info *);
extern unsigned long rs6000_frame_saved_pc (struct frame_info *);
-extern CORE_ADDR rs6000_frame_args_address PARAMS ((struct frame_info *));
+extern CORE_ADDR rs6000_frame_args_address (struct frame_info *);
#define FRAME_ARGS_ADDRESS(FI) rs6000_frame_args_address (FI)
#define FRAME_LOCALS_ADDRESS(FI) FRAME_ARGS_ADDRESS(FI)
@@ -437,7 +438,7 @@ extern CORE_ADDR rs6000_frame_args_address PARAMS ((struct frame_info *));
not sure if it will be needed. The following macro takes care of gpr's
and fpr's only. */
-extern void rs6000_frame_init_saved_regs PARAMS ((struct frame_info *));
+extern void rs6000_frame_init_saved_regs (struct frame_info *);
#define FRAME_INIT_SAVED_REGS(FI) rs6000_frame_init_saved_regs (FI)
/* Things needed for making the inferior call functions. */
@@ -446,13 +447,13 @@ extern void rs6000_frame_init_saved_regs PARAMS ((struct frame_info *));
/* Change these names into rs6k_{push, pop}_frame(). FIXMEmgo. */
#define PUSH_DUMMY_FRAME push_dummy_frame ()
-extern void push_dummy_frame PARAMS ((void));
+extern void push_dummy_frame (void);
/* Discard from the stack the innermost frame,
restoring all saved registers. */
#define POP_FRAME pop_frame ()
-extern void pop_frame PARAMS ((void));
+extern void pop_frame (void);
/* This sequence of words is the instructions:
@@ -505,14 +506,13 @@ extern void pop_frame PARAMS ((void));
#define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, args, type, gcc_p) \
rs6000_fix_call_dummy (dummyname, pc, fun, nargs, args, type, gcc_p)
-extern void rs6000_fix_call_dummy PARAMS ((char *, CORE_ADDR, CORE_ADDR,
- int, struct value **,
- struct type *, int));
+extern void rs6000_fix_call_dummy (char *, CORE_ADDR, CORE_ADDR,
+ int, struct value **, struct type *, int);
/* Hook in rs6000-tdep.c for determining the TOC address when
calling functions in the inferior. */
extern
-CORE_ADDR (*find_toc_address_hook) PARAMS ((CORE_ADDR));
+CORE_ADDR (*find_toc_address_hook) (CORE_ADDR);
/* xcoffread.c provides a function to determine the TOC offset
for a given object file.
@@ -520,7 +520,7 @@ CORE_ADDR (*find_toc_address_hook) PARAMS ((CORE_ADDR));
TOC address when calling functions in the inferior. */
struct objfile;
-extern CORE_ADDR get_toc_offset PARAMS ((struct objfile *));
+extern CORE_ADDR get_toc_offset (struct objfile *);
/* Usually a function pointer's representation is simply the address
of the function. On the RS/6000 however, a function pointer is
@@ -538,7 +538,7 @@ extern CORE_ADDR get_toc_offset PARAMS ((struct objfile *));
#define CONVERT_FROM_FUNC_PTR_ADDR(ADDR) \
(is_magic_function_pointer (ADDR) ? read_memory_integer (ADDR, 4) : (ADDR))
- extern int is_magic_function_pointer PARAMS ((CORE_ADDR));
+extern int is_magic_function_pointer (CORE_ADDR);
/* Flag for machine-specific stuff in shared files. FIXME */
#define IBM6000_TARGET
@@ -546,7 +546,7 @@ extern CORE_ADDR get_toc_offset PARAMS ((struct objfile *));
/* RS6000/AIX does not support PT_STEP. Has to be simulated. */
#define SOFTWARE_SINGLE_STEP_P 1
- extern void rs6000_software_single_step PARAMS ((unsigned int, int));
+extern void rs6000_software_single_step (unsigned int, int);
#define SOFTWARE_SINGLE_STEP(sig,bp_p) rs6000_software_single_step (sig, bp_p)
/* If the current gcc for for this target does not produce correct debugging
diff --git a/gdb/config/rs6000/xm-rs6000.h b/gdb/config/rs6000/xm-rs6000.h
index 9efeaa6f7f5..24a9e501cd8 100644
--- a/gdb/config/rs6000/xm-rs6000.h
+++ b/gdb/config/rs6000/xm-rs6000.h
@@ -68,15 +68,15 @@
#define SETPGRP_ARGS 1
/* AIX doesn't have strdup, so we need to declare it for libiberty */
-extern char *strdup PARAMS ((char *));
+extern char *strdup (char *);
/* Signal handler for SIGWINCH `window size changed'. */
#define SIGWINCH_HANDLER aix_resizewindow
-extern void aix_resizewindow PARAMS ((int));
+extern void aix_resizewindow (int);
/* This doesn't seem to be declared in any header file I can find. */
-char *termdef PARAMS ((int, int));
+char *termdef (int, int);
/* `lines_per_page' and `chars_per_line' are local to utils.c. Rectify this. */
diff --git a/gdb/config/sh/tm-sh.h b/gdb/config/sh/tm-sh.h
index a3367131180..ca6d9e50029 100644
--- a/gdb/config/sh/tm-sh.h
+++ b/gdb/config/sh/tm-sh.h
@@ -27,7 +27,7 @@ struct type;
#define GDB_TARGET_IS_SH
-#define IEEE_FLOAT 1
+#define IEEE_FLOAT (1)
/* Define the bit, byte, and word ordering of the machine. */
@@ -42,7 +42,7 @@ struct type;
/* Advance PC across any function entry prologue instructions
to reach some "real" code. */
-extern CORE_ADDR sh_skip_prologue PARAMS ((CORE_ADDR));
+extern CORE_ADDR sh_skip_prologue (CORE_ADDR);
#define SKIP_PROLOGUE(ip) (sh_skip_prologue (ip))
/* Immediately after a function call, return the saved pc.
@@ -101,8 +101,10 @@ extern CORE_ADDR sh_skip_prologue PARAMS ((CORE_ADDR));
of data in register N. */
#define REGISTER_VIRTUAL_TYPE(N) \
- ((((N) >= FP0_REGNUM && (N) <= FP15_REGNUM) \
- || (N) == FPUL_REGNUM) \
+ (((((N) >= FP0_REGNUM && (N) <= FP15_REGNUM) \
+ || (N) == FPUL_REGNUM) \
+ && TARGET_ARCHITECTURE->mach != bfd_mach_sh_dsp \
+ && TARGET_ARCHITECTURE->mach != bfd_mach_sh3_dsp) \
? builtin_type_float : builtin_type_int)
/* Initializer for an array of names of registers.
@@ -135,12 +137,27 @@ extern char **sh_register_names;
#define SR_REGNUM 22
#define FPUL_REGNUM 23
#define FPSCR_REGNUM 24
+#define DSR_REGNUM 24
#define FP0_REGNUM 25
#define FP15_REGNUM 40
+#define A0G_REGNUM 25
+#define A0_REGNUM 26
+#define A1G_REGNUM 27
+#define A1_REGNUM 28
+#define M0_REGNUM 29
+#define M1_REGNUM 30
+#define X0_REGNUM 31
+#define X1_REGNUM 32
+#define Y0_REGNUM 33
+#define Y1_REGNUM 34
+#define MOD_REGNUM 40
#define SSR_REGNUM 41
#define SPC_REGNUM 42
#define R0B0_REGNUM 43
#define R0B1_REGNUM 51
+#define RS_REGNUM 43
+#define RE_REGNUM 44
+#define R0B_REGNUM 51
#define NUM_REALREGS 59
@@ -159,7 +176,7 @@ extern use_struct_convention_fn sh_use_struct_convention;
a function return value of type TYPE, and copy that, in virtual format,
into VALBUF. */
-extern void sh_extract_return_value PARAMS ((struct type *, void *, void *));
+extern void sh_extract_return_value (struct type *, void *, void *);
#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
sh_extract_return_value (TYPE, REGBUF, VALBUF)
@@ -190,7 +207,7 @@ extern void sh_extract_return_value PARAMS ((struct type *, void *, void *));
#define INIT_EXTRA_FRAME_INFO(fromleaf, fi) \
sh_init_extra_frame_info(fromleaf, fi)
-extern void sh_init_extra_frame_info PARAMS ((int, struct frame_info *));
+extern void sh_init_extra_frame_info (int, struct frame_info *);
/* 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
@@ -214,8 +231,8 @@ extern void sh_init_extra_frame_info PARAMS ((int, struct frame_info *));
#define FRAME_ARGS_SKIP 0
-extern void sh_frame_find_saved_regs PARAMS ((struct frame_info * fi,
- struct frame_saved_regs * fsr));
+extern void sh_frame_find_saved_regs (struct frame_info *fi,
+ struct frame_saved_regs *fsr);
/* Put here the code to store, into a struct frame_saved_regs,
the addresses of the saved registers of frame described by FRAME_INFO.
@@ -228,11 +245,11 @@ extern void sh_frame_find_saved_regs PARAMS ((struct frame_info * fi,
typedef unsigned short INSN_WORD;
-extern CORE_ADDR sh_push_arguments PARAMS ((int nargs,
- struct value ** args,
- CORE_ADDR sp,
- unsigned char struct_return,
- CORE_ADDR struct_addr));
+extern CORE_ADDR sh_push_arguments (int nargs,
+ struct value **args,
+ CORE_ADDR sp,
+ unsigned char struct_return,
+ CORE_ADDR struct_addr);
#define USE_GENERIC_DUMMY_FRAMES 1
#define CALL_DUMMY {0}
@@ -242,11 +259,11 @@ extern CORE_ADDR sh_push_arguments PARAMS ((int nargs,
#define FIX_CALL_DUMMY(DUMMY, STARTADDR, FUNADDR, NARGS, ARGS, TYPE, GCCP)
#define CALL_DUMMY_LOCATION AT_ENTRY_POINT
#define CALL_DUMMY_ADDRESS() entry_point_address ()
-extern CORE_ADDR sh_push_return_address PARAMS ((CORE_ADDR, CORE_ADDR));
+extern CORE_ADDR sh_push_return_address (CORE_ADDR, CORE_ADDR);
#define PUSH_RETURN_ADDRESS(PC, SP) sh_push_return_address (PC, SP)
-extern CORE_ADDR sh_frame_chain PARAMS ((struct frame_info *));
+extern CORE_ADDR sh_frame_chain (struct frame_info *);
#define FRAME_CHAIN(FRAME) sh_frame_chain(FRAME)
#define PUSH_DUMMY_FRAME generic_push_dummy_frame ()
#define FRAME_CHAIN_VALID(FP, FRAME) generic_file_frame_chain_valid (FP, FRAME)
@@ -262,7 +279,7 @@ extern CORE_ADDR sh_frame_chain PARAMS ((struct frame_info *));
/* Discard from the stack the innermost frame, restoring all saved
registers. */
-extern void sh_pop_frame PARAMS ((void));
+extern void sh_pop_frame (void);
#define POP_FRAME sh_pop_frame();
#define NOP {0x20, 0x0b}
diff --git a/gdb/config/sh/tm-wince.h b/gdb/config/sh/tm-wince.h
index 16816141d35..88e2a6fefc6 100644
--- a/gdb/config/sh/tm-wince.h
+++ b/gdb/config/sh/tm-wince.h
@@ -1,5 +1,5 @@
/* Target-specific definition for Window CE
- Copyright 2000 Free Software Foundation, Inc.
+ Copyright (C) 2000 Free Software Foundation, Inc.
This file is part of GDB.
diff --git a/gdb/config/sparc/nm-linux.h b/gdb/config/sparc/nm-linux.h
index 1b798237202..781b97f1de9 100644
--- a/gdb/config/sparc/nm-linux.h
+++ b/gdb/config/sparc/nm-linux.h
@@ -1,5 +1,5 @@
/* Macro definitions for running gdb on a Sparc running Linux.
- Copyright (C) 1989, 1992, 1996, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1989, 1992, 1996, 1998, 2000 Free Software Foundation, Inc.
This file is part of GDB.
@@ -19,6 +19,7 @@
Boston, MA 02111-1307, USA. */
#include <nm-sysv4.h>
+#include "nm-linux.h"
#include "solib.h"
#define FETCH_INFERIOR_REGISTERS
@@ -26,4 +27,4 @@
/* Return sizeof user struct to callers in less machine dependent routines */
#define KERNEL_U_SIZE kernel_u_size()
-extern int kernel_u_size PARAMS ((void));
+extern int kernel_u_size (void);
diff --git a/gdb/config/sparc/nm-sun4os4.h b/gdb/config/sparc/nm-sun4os4.h
index dcd20fb0fe9..f883c95c500 100644
--- a/gdb/config/sparc/nm-sun4os4.h
+++ b/gdb/config/sparc/nm-sun4os4.h
@@ -33,4 +33,4 @@
/* Return sizeof user struct to callers in less machine dependent routines */
#define KERNEL_U_SIZE kernel_u_size()
-extern int kernel_u_size PARAMS ((void));
+extern int kernel_u_size (void);
diff --git a/gdb/config/sparc/nm-sun4sol2.h b/gdb/config/sparc/nm-sun4sol2.h
index 9d5dd1deec3..2107075ea32 100644
--- a/gdb/config/sparc/nm-sun4sol2.h
+++ b/gdb/config/sparc/nm-sun4sol2.h
@@ -30,6 +30,13 @@
#define PRSVADDR_BROKEN
+/* gdb wants to use the prgregset_t interface rather than
+ the gregset_t interface, partly because that's what's
+ used in core-sol2.c */
+
+#define GDB_GREGSET_T prgregset_t
+#define GDB_FPREGSET_T prfpregset_t
+
#ifdef NEW_PROC_API /* Solaris 6 and above can do HW watchpoints */
#define TARGET_HAS_HARDWARE_WATCHPOINTS
@@ -44,14 +51,14 @@
It will *NOT* be necessary for GDB to step over the watchpoint. */
#define HAVE_CONTINUABLE_WATCHPOINT
-extern int procfs_stopped_by_watchpoint PARAMS ((int));
+extern int procfs_stopped_by_watchpoint (int);
#define STOPPED_BY_WATCHPOINT(W) \
procfs_stopped_by_watchpoint(inferior_pid)
/* Use these macros for watchpoint insertion/deletion. */
/* type can be 0: write watch, 1: read watch, 2: access watch (read/write) */
-extern int procfs_set_watchpoint PARAMS ((int, CORE_ADDR, int, int, int));
+extern int procfs_set_watchpoint (int, CORE_ADDR, int, int, int);
#define target_insert_watchpoint(ADDR, LEN, TYPE) \
procfs_set_watchpoint (inferior_pid, ADDR, LEN, TYPE, 1)
#define target_remove_watchpoint(ADDR, LEN, TYPE) \
diff --git a/gdb/config/sparc/tm-sp64.h b/gdb/config/sparc/tm-sp64.h
index dbdf510906d..099add3c412 100644
--- a/gdb/config/sparc/tm-sp64.h
+++ b/gdb/config/sparc/tm-sp64.h
@@ -22,9 +22,13 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#define GDB_TARGET_IS_SPARC64
+#define GDB_MULTI_ARCH 2
-struct value;
+#ifndef GDB_TARGET_IS_SPARC64
+#define GDB_TARGET_IS_SPARC64 1
+#endif
+
+#include "sparc/tm-sparc.h"
/* Eeeew. Ok, we have to assume (for now) that the processor really is
in sparc64 mode. While this is the same instruction sequence as
@@ -70,6 +74,57 @@ struct value;
nop
*/
+#if !defined (GDB_MULTI_ARCH) || (GDB_MULTI_ARCH == 0)
+/*
+ * The following defines must go away for MULTI_ARCH.
+ */
+
+#ifndef DO_CALL_DUMMY_ON_STACK
+
+/*
+ * These defines will suffice for the AT_ENTRY_POINT call dummy method.
+ */
+
+#undef CALL_DUMMY
+#define CALL_DUMMY {0}
+#undef CALL_DUMMY_LENGTH
+#define CALL_DUMMY_LENGTH 0
+#undef CALL_DUMMY_CALL_OFFSET
+#define CALL_DUMMY_CALL_OFFSET 0
+#undef CALL_DUMMY_START_OFFSET
+#define CALL_DUMMY_START_OFFSET 0
+#undef CALL_DUMMY_BREAKPOINT_OFFSET
+#define CALL_DUMMY_BREAKPOINT_OFFSET 0
+#undef CALL_DUMMY_BREAKPOINT_OFFSET_P
+#define CALL_DUMMY_BREAKPOINT_OFFSET_P 1
+#undef CALL_DUMMY_LOCATION
+#define CALL_DUMMY_LOCATION AT_ENTRY_POINT
+#undef CALL_DUMMY_STACK_ADJUST
+#define CALL_DUMMY_STACK_ADJUST 128
+#undef SIZEOF_CALL_DUMMY_WORDS
+#define SIZEOF_CALL_DUMMY_WORDS 0
+#undef CALL_DUMMY_ADDRESS
+#define CALL_DUMMY_ADDRESS() entry_point_address()
+#undef FIX_CALL_DUMMY
+#define FIX_CALL_DUMMY(DUMMYNAME, PC, FUN, NARGS, ARGS, TYPE, GCC_P)
+#undef PUSH_RETURN_ADDRESS
+#define PUSH_RETURN_ADDRESS(PC, SP) sparc_at_entry_push_return_address (PC, SP)
+extern CORE_ADDR
+sparc_at_entry_push_return_address (CORE_ADDR pc, CORE_ADDR sp);
+
+#undef STORE_STRUCT_RETURN
+#define STORE_STRUCT_RETURN(ADDR, SP) \
+ sparc_at_entry_store_struct_return (ADDR, SP)
+extern void
+sparc_at_entry_store_struct_return (CORE_ADDR addr, CORE_ADDR sp);
+
+
+#else
+/*
+ * Old call dummy method, with CALL_DUMMY on the stack.
+ */
+
+#undef CALL_DUMMY
#define CALL_DUMMY { 0x9de3bec0fd3fa7f7LL, 0xf93fa7eff53fa7e7LL,\
0xf13fa7dfed3fa7d7LL, 0xe93fa7cfe53fa7c7LL,\
0xe13fa7bfdd3fa7b7LL, 0xd93fa7afd53fa7a7LL,\
@@ -86,17 +141,80 @@ struct value;
/* 128 is to reserve space to write the %i/%l registers that will be restored
when we resume. */
+#undef CALL_DUMMY_STACK_ADJUST
#define CALL_DUMMY_STACK_ADJUST 128
+/* Size of the call dummy in bytes. */
+#undef CALL_DUMMY_LENGTH
#define CALL_DUMMY_LENGTH 192
+/* Offset within CALL_DUMMY of the 'call' instruction. */
+#undef CALL_DUMMY_START_OFFSET
#define CALL_DUMMY_START_OFFSET 148
+/* Offset within CALL_DUMMY of the 'call' instruction. */
+#undef CALL_DUMMY_CALL_OFFSET
#define CALL_DUMMY_CALL_OFFSET (CALL_DUMMY_START_OFFSET + (5 * 4))
+/* Offset within CALL_DUMMY of the 'ta 1' instruction. */
+#undef CALL_DUMMY_BREAKPOINT_OFFSET
#define CALL_DUMMY_BREAKPOINT_OFFSET (CALL_DUMMY_START_OFFSET + (8 * 4))
-#include "sparc/tm-sparc.h"
+/* Let's GDB know that it can make a call_dummy breakpoint. */
+#undef CALL_DUMMY_BREAKPOINT_OFFSET_P
+#define CALL_DUMMY_BREAKPOINT_OFFSET_P 1
+
+/* Call dummy will be located on the stack. */
+#undef CALL_DUMMY_LOCATION
+#define CALL_DUMMY_LOCATION ON_STACK
+
+/* Insert the function address into the call dummy. */
+#undef FIX_CALL_DUMMY
+#define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, args, type, gcc_p) \
+ sparc_fix_call_dummy (dummyname, pc, fun, type, gcc_p)
+void sparc_fix_call_dummy (char *dummy, CORE_ADDR pc, CORE_ADDR fun,
+ struct type *value_type, int using_gcc);
+
+
+/* The remainder of these will accept the default definition. */
+#undef SIZEOF_CALL_DUMMY_WORDS
+#undef PUSH_RETURN_ADDRESS
+#undef CALL_DUMMY_ADDRESS
+#undef STORE_STRUCT_RETURN
+
+#endif
+
+/* Does the specified function use the "struct returning" convention
+ or the "value returning" convention? The "value returning" convention
+ almost invariably returns the entire value in registers. The
+ "struct returning" convention often returns the entire value in
+ memory, and passes a pointer (out of or into the function) saying
+ where the value (is or should go).
+
+ Since this sometimes depends on whether it was compiled with GCC,
+ this is also an argument. This is used in call_function to build a
+ stack, and in value_being_returned to print return values.
+
+ On Sparc64, we only pass pointers to structs if they're larger then
+ 32 bytes. Otherwise they're stored in %o0-%o3 (floating-point
+ values go into %fp0-%fp3). */
+
+#undef USE_STRUCT_CONVENTION
+#define USE_STRUCT_CONVENTION(gcc_p, type) (TYPE_LENGTH (type) > 32)
+
+CORE_ADDR sparc64_push_arguments (int,
+ struct value **, CORE_ADDR, int, CORE_ADDR);
+#undef PUSH_ARGUMENTS
+#define PUSH_ARGUMENTS(A,B,C,D,E) \
+ (sparc64_push_arguments ((A), (B), (C), (D), (E)))
+
+/* Store the address of the place in which to copy the structure the
+ subroutine will return. This is called from call_function. */
+/* FIXME: V9 uses %o0 for this. */
+
+#undef STORE_STRUCT_RETURN
+#define STORE_STRUCT_RETURN(ADDR, SP) \
+ { target_write_memory ((SP)+(16*8), (char *)&(ADDR), 8); }
/* Stack must be aligned on 128-bit boundaries when synthesizing
function calls. */
@@ -104,11 +222,6 @@ struct value;
#undef STACK_ALIGN
#define STACK_ALIGN(ADDR) (((ADDR) + 15 ) & -16)
-/* Number of machine registers. */
-
-#undef NUM_REGS
-#define NUM_REGS 125
-
/* Initializer for an array of names of registers.
There should be NUM_REGS strings in this initializer. */
/* Some of these registers are only accessible from priviledged mode.
@@ -148,6 +261,24 @@ struct value;
"icc", "xcc", "fcc0", "fcc1", "fcc2", "fcc3" \
}
+#undef REG_STRUCT_HAS_ADDR
+#define REG_STRUCT_HAS_ADDR(gcc_p,type) (TYPE_LENGTH (type) > 32)
+
+extern CORE_ADDR sparc64_read_sp ();
+extern CORE_ADDR sparc64_read_fp ();
+extern void sparc64_write_sp (CORE_ADDR);
+extern void sparc64_write_fp (CORE_ADDR);
+
+#define TARGET_READ_SP() (sparc64_read_sp ())
+#define TARGET_READ_FP() (sparc64_read_fp ())
+#define TARGET_WRITE_SP(X) (sparc64_write_sp (X))
+#define TARGET_WRITE_FP(X) (sparc64_write_fp (X))
+
+#undef EXTRACT_RETURN_VALUE
+#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
+ sp64_extract_return_value(TYPE, REGBUF, VALBUF, 0)
+extern void sp64_extract_return_value (struct type *, char[], char *, int);
+
/* Register numbers of various important registers.
Note that some of these values are "real" register numbers,
and correspond to the general registers of the machine,
@@ -155,7 +286,8 @@ struct value;
to be actual register numbers as far as the user is concerned
but do serve to get the desired values when passed to read_register. */
-#if 0 /* defined in tm-sparc.h, replicated for doc purposes */
+#if 0 /* defined in tm-sparc.h, replicated
+ for doc purposes */
#define G0_REGNUM 0 /* %g0 */
#define G1_REGNUM 1 /* %g1 */
#define O0_REGNUM 8 /* %o0 */
@@ -172,7 +304,7 @@ struct value;
#define FP0_REGNUM 32 /* Floating point register 0 */
#endif
-#define FP_MAX_REGNUM 80 /* 1 + last fp reg number */
+/*#define FP_MAX_REGNUM 80*/ /* 1 + last fp reg number */
/* #undef v8 misc. regs */
@@ -187,7 +319,8 @@ struct value;
/* v9 misc. and priv. regs */
-#define C0_REGNUM FP_MAX_REGNUM /* Start of control registers */
+#define C0_REGNUM 80 /* Start of control registers */
+
#define PC_REGNUM (C0_REGNUM + 0) /* Current PC */
#define NPC_REGNUM (C0_REGNUM + 1) /* Next PC */
#define CCR_REGNUM (C0_REGNUM + 2) /* Condition Code Register (%xcc,%icc) */
@@ -220,6 +353,11 @@ struct value;
#define FCC2_REGNUM (C0_REGNUM + 43) /* fp cc reg 2 */
#define FCC3_REGNUM (C0_REGNUM + 44) /* fp cc reg 3 */
+/* Number of machine registers. */
+
+#undef NUM_REGS
+#define NUM_REGS 125
+
/* Total amount of space needed to store our copies of the machine's
register state, the array `registers'.
Some of the registers aren't 64 bits, but it's a lot simpler just to assume
@@ -291,40 +429,12 @@ struct value;
#undef TARGET_LONG_LONG_BIT
#define TARGET_LONG_LONG_BIT 64
-/* Does the specified function use the "struct returning" convention
- or the "value returning" convention? The "value returning" convention
- almost invariably returns the entire value in registers. The
- "struct returning" convention often returns the entire value in
- memory, and passes a pointer (out of or into the function) saying
- where the value (is or should go).
-
- Since this sometimes depends on whether it was compiled with GCC,
- this is also an argument. This is used in call_function to build a
- stack, and in value_being_returned to print return values.
-
- On Sparc64, we only pass pointers to structs if they're larger then
- 32 bytes. Otherwise they're stored in %o0-%o3 (floating-point
- values go into %fp0-%fp3). */
-
-
-#undef USE_STRUCT_CONVENTION
-#define USE_STRUCT_CONVENTION(gcc_p, type) (TYPE_LENGTH (type) > 32)
-
-#undef REG_STRUCT_HAS_ADDR
-#define REG_STRUCT_HAS_ADDR(gcc_p,type) (TYPE_LENGTH (type) > 32)
-
-/* Store the address of the place in which to copy the structure the
- subroutine will return. This is called from call_function. */
-/* FIXME: V9 uses %o0 for this. */
-
-#undef STORE_STRUCT_RETURN
-#define STORE_STRUCT_RETURN(ADDR, SP) \
- { target_write_memory ((SP)+(16*8), (char *)&(ADDR), 8); }
-
/* Return number of bytes at start of arglist that are not really args. */
#undef FRAME_ARGS_SKIP
#define FRAME_ARGS_SKIP 136
+
+#endif /* GDB_MULTI_ARCH */
/* Offsets into jmp_buf.
FIXME: This was borrowed from the v8 stuff and will probably have to change
@@ -342,36 +452,17 @@ struct value;
#define JB_O0 7
#define JB_WBCNT 8
-/* Figure out where the longjmp will land. We expect that we have just entered
- longjmp and haven't yet setup the stack frame, so the args are still in the
- output regs. %o0 (O0_REGNUM) points at the jmp_buf structure from which we
- extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
- This routine returns true on success */
+/* Figure out where the longjmp will land. We expect that we have
+ just entered longjmp and haven't yet setup the stack frame, so the
+ args are still in the output regs. %o0 (O0_REGNUM) points at the
+ jmp_buf structure from which we extract the pc (JB_PC) that we will
+ land at. The pc is copied into ADDR. This routine returns true on
+ success */
-extern int
-get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-extern CORE_ADDR sparc64_read_sp ();
-extern CORE_ADDR sparc64_read_fp ();
-extern void sparc64_write_sp PARAMS ((CORE_ADDR));
-extern void sparc64_write_fp PARAMS ((CORE_ADDR));
-
-#define TARGET_READ_SP() (sparc64_read_sp ())
-#define TARGET_READ_FP() (sparc64_read_fp ())
-#define TARGET_WRITE_SP(X) (sparc64_write_sp (X))
-#define TARGET_WRITE_FP(X) (sparc64_write_fp (X))
-
#undef TM_PRINT_INSN_MACH
#define TM_PRINT_INSN_MACH bfd_mach_sparc_v9a
-CORE_ADDR sp64_push_arguments PARAMS ((int, struct value **, CORE_ADDR, unsigned char, CORE_ADDR));
-#undef PUSH_ARGUMENTS
-#define PUSH_ARGUMENTS(A,B,C,D,E) (sp64_push_arguments ((A), (B), (C), (D), (E)))
-
-#undef EXTRACT_RETURN_VALUE
-#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
- sparc64_extract_return_value(TYPE, REGBUF, VALBUF, 0)
-extern void
-sparc64_extract_return_value PARAMS ((struct type *, char[], char *, int));
diff --git a/gdb/config/sparc/tm-sp64sim.h b/gdb/config/sparc/tm-sp64sim.h
index 8d83db1eebf..f4e63e29fff 100644
--- a/gdb/config/sparc/tm-sp64sim.h
+++ b/gdb/config/sparc/tm-sp64sim.h
@@ -45,7 +45,6 @@
extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
This routine returns true on success */
-extern int
-get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
diff --git a/gdb/config/sparc/tm-sparc.h b/gdb/config/sparc/tm-sparc.h
index 5419ecb88e2..49587478822 100644
--- a/gdb/config/sparc/tm-sparc.h
+++ b/gdb/config/sparc/tm-sparc.h
@@ -21,103 +21,148 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-struct frame_info;
struct type;
struct value;
+struct frame_info;
-#define TARGET_BYTE_ORDER BIG_ENDIAN
-
-/* Floating point is IEEE compatible. */
-#define IEEE_FLOAT
-
-/* If an argument is declared "register", Sun cc will keep it in a register,
- never saving it onto the stack. So we better not believe the "p" symbol
- descriptor stab. */
-
-#define USE_REGISTER_NOT_ARG
-
-/* When passing a structure to a function, Sun cc passes the address
- not the structure itself. It (under SunOS4) creates two symbols,
- which we need to combine to a LOC_REGPARM. Gcc version two (as of
- 1.92) behaves like sun cc. REG_STRUCT_HAS_ADDR is smart enough to
- distinguish between Sun cc, gcc version 1 and gcc version 2. */
-
-#define REG_STRUCT_HAS_ADDR(gcc_p,type) (gcc_p != 1)
-
-/* Sun /bin/cc gets this right as of SunOS 4.1.x. We need to define
- BELIEVE_PCC_PROMOTION to get this right now that the code which
- detects gcc2_compiled. is broken. This loses for SunOS 4.0.x and
- earlier. */
+/*
+ * The following enums are purely for the convenience of the GDB
+ * developer, when debugging GDB.
+ */
-#define BELIEVE_PCC_PROMOTION 1
+enum { /* Sparc general registers, for all sparc versions. */
+ G0_REGNUM, G1_REGNUM, G2_REGNUM, G3_REGNUM,
+ G4_REGNUM, G5_REGNUM, G6_REGNUM, G7_REGNUM,
+ O0_REGNUM, O1_REGNUM, O2_REGNUM, O3_REGNUM,
+ O4_REGNUM, O5_REGNUM, O6_REGNUM, O7_REGNUM,
+ L0_REGNUM, L1_REGNUM, L2_REGNUM, L3_REGNUM,
+ L4_REGNUM, L5_REGNUM, L6_REGNUM, L7_REGNUM,
+ I0_REGNUM, I1_REGNUM, I2_REGNUM, I3_REGNUM,
+ I4_REGNUM, I5_REGNUM, I6_REGNUM, I7_REGNUM,
+ FP0_REGNUM /* Floating point register 0 */
+};
+
+enum { /* Sparc general registers, alternate names. */
+ R0_REGNUM, R1_REGNUM, R2_REGNUM, R3_REGNUM,
+ R4_REGNUM, R5_REGNUM, R6_REGNUM, R7_REGNUM,
+ R8_REGNUM, R9_REGNUM, R10_REGNUM, R11_REGNUM,
+ R12_REGNUM, R13_REGNUM, R14_REGNUM, R15_REGNUM,
+ R16_REGNUM, R17_REGNUM, R18_REGNUM, R19_REGNUM,
+ R20_REGNUM, R21_REGNUM, R22_REGNUM, R23_REGNUM,
+ R24_REGNUM, R25_REGNUM, R26_REGNUM, R27_REGNUM,
+ R28_REGNUM, R29_REGNUM, R30_REGNUM, R31_REGNUM
+};
+
+enum { /* Sparc32 control registers. */
+ PS_REGNUM = 65, /* PC, NPC, and Y are omitted because */
+ WIM_REGNUM = 66, /* they have different values depending on */
+ TBR_REGNUM = 67, /* 32-bit / 64-bit mode. */
+ FPS_REGNUM = 70,
+ CPS_REGNUM = 71
+};
+
+/* v9 misc. and priv. regs */
+
+/* Note: specifying values explicitly for documentation purposes. */
+enum { /* Sparc64 control registers, excluding Y, PC, and NPC. */
+ CCR_REGNUM = 82, /* Condition Code Register (%xcc,%icc) */
+ FSR_REGNUM = 83, /* Floating Point State */
+ FPRS_REGNUM = 84, /* Floating Point Registers State */
+ ASI_REGNUM = 86, /* Alternate Space Identifier */
+ VER_REGNUM = 87, /* Version register */
+ TICK_REGNUM = 88, /* Tick register */
+ PIL_REGNUM = 89, /* Processor Interrupt Level */
+ PSTATE_REGNUM = 90, /* Processor State */
+ TSTATE_REGNUM = 91, /* Trap State */
+ TBA_REGNUM = 92, /* Trap Base Address */
+ TL_REGNUM = 93, /* Trap Level */
+ TT_REGNUM = 94, /* Trap Type */
+ TPC_REGNUM = 95, /* Trap pc */
+ TNPC_REGNUM = 96, /* Trap npc */
+ WSTATE_REGNUM = 97, /* Window State */
+ CWP_REGNUM = 98, /* Current Window Pointer */
+ CANSAVE_REGNUM = 99, /* Savable Windows */
+ CANRESTORE_REGNUM = 100, /* Restorable Windows */
+ CLEANWIN_REGNUM = 101, /* Clean Windows */
+ OTHERWIN_REGNUM = 102, /* Other Windows */
+ ASR16_REGNUM = 103, /* Ancillary State Registers */
+ ASR17_REGNUM = 104,
+ ASR18_REGNUM = 105,
+ ASR19_REGNUM = 106,
+ ASR20_REGNUM = 107,
+ ASR21_REGNUM = 108,
+ ASR22_REGNUM = 109,
+ ASR23_REGNUM = 110,
+ ASR24_REGNUM = 111,
+ ASR25_REGNUM = 112,
+ ASR26_REGNUM = 113,
+ ASR27_REGNUM = 114,
+ ASR28_REGNUM = 115,
+ ASR29_REGNUM = 116,
+ ASR30_REGNUM = 117,
+ ASR31_REGNUM = 118,
+ ICC_REGNUM = 119, /* 32 bit condition codes */
+ XCC_REGNUM = 120, /* 64 bit condition codes */
+ FCC0_REGNUM = 121, /* fp cc reg 0 */
+ FCC1_REGNUM = 122, /* fp cc reg 1 */
+ FCC2_REGNUM = 123, /* fp cc reg 2 */
+ FCC3_REGNUM = 124 /* fp cc reg 3 */
+};
-/* For acc, there's no need to correct LBRAC entries by guessing how
- they should work. In fact, this is harmful because the LBRAC
- entries now all appear at the end of the function, not intermixed
- with the SLINE entries. n_opt_found detects acc for Solaris binaries;
- function_stab_type detects acc for SunOS4 binaries.
+/*
+ * Make sparc target multi-archable: April 2000
+ */
- For binary from SunOS4 /bin/cc, need to correct LBRAC's.
+#if defined (GDB_MULTI_ARCH) && (GDB_MULTI_ARCH > 0)
+
+/* Multi-arch definition of TARGET_IS_SPARC64, TARGET_ELF64 */
+#undef GDB_TARGET_IS_SPARC64
+#define GDB_TARGET_IS_SPARC64 \
+ (sparc_intreg_size () == 8)
+#undef TARGET_ELF64
+#define TARGET_ELF64 \
+ (sparc_intreg_size () == 8)
+extern int sparc_intreg_size (void);
+#else
+
+/* Non-multi-arch: if it isn't defined, define it to zero. */
+#ifndef GDB_TARGET_IS_SPARC64
+#define GDB_TARGET_IS_SPARC64 0
+#endif
+#ifndef TARGET_ELF64
+#define TARGET_ELF64 0
+#endif
+#endif
- For gcc, like acc, don't correct. */
+#if !defined (GDB_MULTI_ARCH) || (GDB_MULTI_ARCH == 0)
+/*
+ * The following defines must go away for MULTI_ARCH
+ */
-#define SUN_FIXED_LBRAC_BUG \
- (n_opt_found \
- || function_stab_type == N_STSYM \
- || function_stab_type == N_GSYM \
- || processing_gcc_compilation)
+/* Initializer for an array of names of registers.
+ There should be NUM_REGS strings in this initializer. */
-/* Do variables in the debug stabs occur after the N_LBRAC or before it?
- acc: after, gcc: before, SunOS4 /bin/cc: before. */
+#define 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" \
+}
-#define VARIABLES_INSIDE_BLOCK(desc, gcc_p) \
- (!(gcc_p) \
- && (n_opt_found \
- || function_stab_type == N_STSYM \
- || function_stab_type == N_GSYM))
+#define TARGET_BYTE_ORDER BIG_ENDIAN
/* Offset from address of function to start of its code.
Zero on most machines. */
#define FUNCTION_START_OFFSET 0
-/* Advance PC across any function entry prologue instructions
- to reach some "real" code. SKIP_PROLOGUE_FRAMELESS_P advances
- the PC past some of the prologue, but stops as soon as it
- knows that the function has a frame. Its result is equal
- to its input PC if the function is frameless, unequal otherwise. */
-
-#define SKIP_PROLOGUE(pc) (sparc_skip_prologue (pc, 0))
-#define SKIP_PROLOGUE_FRAMELESS_P(pc) (sparc_skip_prologue (pc, 1))
-extern CORE_ADDR sparc_skip_prologue PARAMS ((CORE_ADDR, int));
-
-/* Immediately after a function call, return the saved pc.
- Can't go through the frames for this because on some machines
- the new frame is not set up until the new function executes
- some instructions. */
-
-/* On the Sun 4 under SunOS, the compile will leave a fake insn which
- encodes the structure size being returned. If we detect such
- a fake insn, step past it. */
-
-#define PC_ADJUST(pc) sparc_pc_adjust(pc)
-extern CORE_ADDR sparc_pc_adjust PARAMS ((CORE_ADDR));
-
-#define SAVED_PC_AFTER_CALL(frame) PC_ADJUST (read_register (RP_REGNUM))
-
-/* Stack grows downward. */
-
-#define INNER_THAN(lhs,rhs) ((lhs) < (rhs))
-
-/* Stack must be aligned on 64-bit boundaries when synthesizing
- function calls. */
-
-#define STACK_ALIGN(ADDR) (((ADDR) + 7) & -8)
-
-/* Sequence of bytes for breakpoint instruction (ta 1). */
-
-#define BREAKPOINT {0x91, 0xd0, 0x20, 0x01}
-
/* Amount PC must be decremented by after a breakpoint.
This is often the number of bytes in BREAKPOINT
but not always. */
@@ -134,91 +179,48 @@ extern CORE_ADDR sparc_pc_adjust PARAMS ((CORE_ADDR));
#define NUM_REGS 72
-/* Initializer for an array of names of registers.
- There should be NUM_REGS strings in this initializer. */
-
-#define 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" }
-
-/* Register numbers of various important registers.
- Note that some of these values are "real" register numbers,
- and correspond to the general registers of the machine,
- and some are "phony" register numbers which are too large
- to be actual register numbers as far as the user is concerned
- but do serve to get the desired values when passed to read_register. */
-
-#define G0_REGNUM 0 /* %g0 */
-#define G1_REGNUM 1 /* %g1 */
-#define O0_REGNUM 8 /* %o0 */
#define SP_REGNUM 14 /* Contains address of top of stack, \
which is also the bottom of the frame. */
-#define RP_REGNUM 15 /* Contains return address value, *before* \
- any windows get switched. */
-#define O7_REGNUM 15 /* Last local reg not saved on stack frame */
-#define L0_REGNUM 16 /* First local reg that's saved on stack frame
- rather than in machine registers */
-#define I0_REGNUM 24 /* %i0 */
#define FP_REGNUM 30 /* Contains address of executing stack frame */
-#define I7_REGNUM 31 /* Last local reg saved on stack frame */
+
#define FP0_REGNUM 32 /* Floating point register 0 */
+
#define Y_REGNUM 64 /* Temp register for multiplication, etc. */
-#define PS_REGNUM 65 /* Contains processor status */
-#define PS_FLAG_CARRY 0x100000 /* Carry bit in PS */
-#define WIM_REGNUM 66 /* Window Invalid Mask (not really supported) */
-#define TBR_REGNUM 67 /* Trap Base Register (not really supported) */
+
#define PC_REGNUM 68 /* Contains program counter */
+
#define NPC_REGNUM 69 /* Contains next PC */
-#define FPS_REGNUM 70 /* Floating point status register */
-#define CPS_REGNUM 71 /* Coprocessor status register */
+
/* Total amount of space needed to store our copies of the machine's
register state, the array `registers'. On the sparc, `registers'
contains the ins and locals, even though they are saved on the
stack rather than with the other registers, and this causes hair
- and confusion in places like pop_frame. It might be
- better to remove the ins and locals from `registers', make sure
- that get_saved_register can get them from the stack (even in the
+ and confusion in places like pop_frame. It might be better to
+ remove the ins and locals from `registers', make sure that
+ get_saved_register can get them from the stack (even in the
innermost frame), and make this the way to access them. For the
- frame pointer we would do that via TARGET_READ_FP. On the other hand,
- that is likely to be confusing or worse for flat frames. */
+ frame pointer we would do that via TARGET_READ_FP. On the other
+ hand, that is likely to be confusing or worse for flat frames. */
#define REGISTER_BYTES (32*4+32*4+8*4)
/* Index within `registers' of the first byte of the space for
register N. */
-/* ?? */
-#define REGISTER_BYTE(N) ((N)*4)
-
-/* We need to override GET_SAVED_REGISTER so that we can deal with the way
- outs change into ins in different frames. HAVE_REGISTER_WINDOWS can't
- deal with this case and also handle flat frames at the same time. */
-struct frame_info;
-void sparc_get_saved_register PARAMS ((char *raw_buffer, int *optimized, CORE_ADDR * addrp, struct frame_info * frame, int regnum, enum lval_type * lvalp));
-#define GET_SAVED_REGISTER(raw_buffer, optimized, addrp, frame, regnum, lval) \
- sparc_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval)
+#define REGISTER_BYTE(N) ((N)*4)
-/* Number of bytes of storage in the actual machine representation
- for register N. */
+/* Number of bytes of storage in the actual machine representation for
+ register N. */
-/* On the SPARC, all regs are 4 bytes. */
+/* On the SPARC, all regs are 4 bytes (except Sparc64, where they're 8). */
#define REGISTER_RAW_SIZE(N) (4)
/* Number of bytes of storage in the program's representation
for register N. */
-/* On the SPARC, all regs are 4 bytes. */
+/* On the SPARC, all regs are 4 bytes (except Sparc64, where they're 8). */
#define REGISTER_VIRTUAL_SIZE(N) (4)
@@ -234,48 +236,186 @@ void sparc_get_saved_register PARAMS ((char *raw_buffer, int *optimized, CORE_AD
of data in register N. */
#define REGISTER_VIRTUAL_TYPE(N) \
- ((N) < 32 ? builtin_type_int : (N) < 64 ? builtin_type_float : \
- builtin_type_int)
+ ((N) < 32 ? builtin_type_int : (N) < 64 ? builtin_type_float : \
+ builtin_type_int)
-/* Writing to %g0 is a noop (not an error or exception or anything like
- that, however). */
+/* Sun /bin/cc gets this right as of SunOS 4.1.x. We need to define
+ BELIEVE_PCC_PROMOTION to get this right now that the code which
+ detects gcc2_compiled. is broken. This loses for SunOS 4.0.x and
+ earlier. */
-#define CANNOT_STORE_REGISTER(regno) ((regno) == G0_REGNUM)
+#define BELIEVE_PCC_PROMOTION 1
-/* Store the address of the place in which to copy the structure the
- subroutine will return. This is called from call_function_by_hand.
- The ultimate mystery is, tho, what is the value "16"? */
+/* Advance PC across any function entry prologue instructions
+ to reach some "real" code. SKIP_PROLOGUE_FRAMELESS_P advances
+ the PC past some of the prologue, but stops as soon as it
+ knows that the function has a frame. Its result is equal
+ to its input PC if the function is frameless, unequal otherwise. */
-#define STORE_STRUCT_RETURN(ADDR, SP) \
- { char val[4]; \
- store_unsigned_integer (val, 4, (ADDR)); \
- write_memory ((SP)+(16*4), val, 4); }
+#define SKIP_PROLOGUE(PC) sparc_skip_prologue (PC, 0)
-/* 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. */
+/* Immediately after a function call, return the saved pc.
+ Can't go through the frames for this because on some machines
+ the new frame is not set up until the new function executes
+ some instructions. */
+
+#define SAVED_PC_AFTER_CALL(FRAME) PC_ADJUST (read_register (RP_REGNUM))
+
+/* Stack grows downward. */
+
+#define INNER_THAN(LHS,RHS) ((LHS) < (RHS))
-#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
- sparc_extract_return_value(TYPE, REGBUF, VALBUF)
-extern void
-sparc_extract_return_value PARAMS ((struct type *, char[], char *));
+/* Write into appropriate registers a function return value of type
+ TYPE, given in virtual format. */
-/* Write into appropriate registers a function return value
- of type TYPE, given in virtual format. */
-#define STORE_RETURN_VALUE(TYPE,VALBUF) \
- sparc_store_return_value(TYPE, VALBUF)
-extern void sparc_store_return_value PARAMS ((struct type *, char *));
+#define STORE_RETURN_VALUE(TYPE, VALBUF) \
+ sparc_store_return_value (TYPE, VALBUF)
+extern void sparc_store_return_value (struct type *, char *);
/* Extract from an array REGBUF containing the (raw) register state
the address in which a function should return its structure value,
as a CORE_ADDR (or an expression that can be used as one). */
#define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) \
- (sparc_extract_struct_value_address (REGBUF))
+ sparc_extract_struct_value_address (REGBUF)
-extern CORE_ADDR
- sparc_extract_struct_value_address PARAMS ((char[REGISTER_BYTES]));
-
+extern CORE_ADDR sparc_extract_struct_value_address (char *);
+
+/* If the current gcc for for this target does not produce correct
+ debugging information for float parameters, both prototyped and
+ unprototyped, then define this macro. This forces gdb to always
+ assume that floats are passed as doubles and then converted in the
+ callee. */
+
+#define COERCE_FLOAT_TO_DOUBLE(FORMAL, ACTUAL) (1)
+
+/* Stack must be aligned on 64-bit boundaries when synthesizing
+ function calls (128-bit for sparc64). */
+
+#define STACK_ALIGN(ADDR) sparc32_stack_align (ADDR)
+extern CORE_ADDR sparc32_stack_align (CORE_ADDR addr);
+
+/* Floating point is IEEE compatible. */
+#define IEEE_FLOAT (1)
+
+/* The Sparc returns long doubles on the stack. */
+
+#define RETURN_VALUE_ON_STACK(TYPE) \
+ (TYPE_CODE(TYPE) == TYPE_CODE_FLT \
+ && TYPE_LENGTH(TYPE) > 8)
+
+/* When passing a structure to a function, Sun cc passes the address
+ not the structure itself. It (under SunOS4) creates two symbols,
+ which we need to combine to a LOC_REGPARM. Gcc version two (as of
+ 1.92) behaves like sun cc. REG_STRUCT_HAS_ADDR is smart enough to
+ distinguish between Sun cc, gcc version 1 and gcc version 2. */
+
+#define REG_STRUCT_HAS_ADDR(GCC_P, TYPE) \
+ sparc_reg_struct_has_addr (GCC_P, TYPE)
+extern int sparc_reg_struct_has_addr (int, struct type *);
+
+#endif /* GDB_MULTI_ARCH */
+
+#if defined (GDB_MULTI_ARCH) && (GDB_MULTI_ARCH > 0)
+/*
+ * The following defines should ONLY appear for MULTI_ARCH.
+ */
+
+/* Multi-arch the nPC and Y registers. */
+#define Y_REGNUM (sparc_y_regnum ())
+extern int sparc_npc_regnum (void);
+extern int sparc_y_regnum (void);
+
+#endif /* GDB_MULTI_ARCH */
+
+/* On the Sun 4 under SunOS, the compile will leave a fake insn which
+ encodes the structure size being returned. If we detect such
+ a fake insn, step past it. */
+
+#define PC_ADJUST(PC) sparc_pc_adjust (PC)
+extern CORE_ADDR sparc_pc_adjust (CORE_ADDR);
+
+/* Advance PC across any function entry prologue instructions to reach
+ some "real" code. SKIP_PROLOGUE_FRAMELESS_P advances the PC past
+ some of the prologue, but stops as soon as it knows that the
+ function has a frame. Its result is equal to its input PC if the
+ function is frameless, unequal otherwise. */
+
+#define SKIP_PROLOGUE_FRAMELESS_P(PC) sparc_skip_prologue (PC, 1)
+extern CORE_ADDR sparc_skip_prologue (CORE_ADDR, int);
+
+/* If an argument is declared "register", Sun cc will keep it in a register,
+ never saving it onto the stack. So we better not believe the "p" symbol
+ descriptor stab. */
+
+#define USE_REGISTER_NOT_ARG
+
+/* For acc, there's no need to correct LBRAC entries by guessing how
+ they should work. In fact, this is harmful because the LBRAC
+ entries now all appear at the end of the function, not intermixed
+ with the SLINE entries. n_opt_found detects acc for Solaris binaries;
+ function_stab_type detects acc for SunOS4 binaries.
+
+ For binary from SunOS4 /bin/cc, need to correct LBRAC's.
+
+ For gcc, like acc, don't correct. */
+
+#define SUN_FIXED_LBRAC_BUG \
+ (n_opt_found \
+ || function_stab_type == N_STSYM \
+ || function_stab_type == N_GSYM \
+ || processing_gcc_compilation)
+
+/* Do variables in the debug stabs occur after the N_LBRAC or before it?
+ acc: after, gcc: before, SunOS4 /bin/cc: before. */
+
+#define VARIABLES_INSIDE_BLOCK(desc, gcc_p) \
+ (!(gcc_p) \
+ && (n_opt_found \
+ || function_stab_type == N_STSYM \
+ || function_stab_type == N_GSYM))
+
+/* Sequence of bytes for breakpoint instruction (ta 1). */
+
+#define BREAKPOINT {0x91, 0xd0, 0x20, 0x01}
+
+/* Register numbers of various important registers.
+ Note that some of these values are "real" register numbers,
+ and correspond to the general registers of the machine,
+ and some are "phony" register numbers which are too large
+ to be actual register numbers as far as the user is concerned
+ but do serve to get the desired values when passed to read_register. */
+
+#define G0_REGNUM 0 /* %g0 */
+#define G1_REGNUM 1 /* %g1 */
+#define O0_REGNUM 8 /* %o0 */
+#define RP_REGNUM 15 /* Contains return address value, *before* \
+ any windows get switched. */
+#define O7_REGNUM 15 /* Last local reg not saved on stack frame */
+#define L0_REGNUM 16 /* First local reg that's saved on stack frame
+ rather than in machine registers */
+#define I0_REGNUM 24 /* %i0 */
+#define I7_REGNUM 31 /* Last local reg saved on stack frame */
+#define PS_REGNUM 65 /* Contains processor status */
+#define PS_FLAG_CARRY 0x100000 /* Carry bit in PS */
+#define WIM_REGNUM 66 /* Window Invalid Mask (not really supported) */
+#define TBR_REGNUM 67 /* Trap Base Register (not really supported) */
+#define FPS_REGNUM 70 /* Floating point status register */
+#define CPS_REGNUM 71 /* Coprocessor status register */
+
+/* Writing to %g0 is a noop (not an error or exception or anything like
+ that, however). */
+
+#define CANNOT_STORE_REGISTER(regno) ((regno) == G0_REGNUM)
+
+/*
+ * FRAME_CHAIN and FRAME_INFO definitions, collected here for convenience.
+ */
+
+#if !defined (GDB_MULTI_ARCH) || (GDB_MULTI_ARCH == 0)
+/*
+ * The following defines must go away for MULTI_ARCH.
+ */
/* Describe the pointer in each stack frame to the previous stack frame
(its caller). */
@@ -310,88 +450,102 @@ extern CORE_ADDR
GCC 2.6 and later can generate ``flat register window'' code that
makes frames by explicitly saving those registers that need to be
- saved. %i7 is used as the frame pointer, and the frame is laid out so
- that flat and non-flat calls can be intermixed freely within a
- program. Unfortunately for GDB, this means it must detect and record
- the flatness of frames.
+ saved. %i7 is used as the frame pointer, and the frame is laid out
+ so that flat and non-flat calls can be intermixed freely within a
+ program. Unfortunately for GDB, this means it must detect and
+ record the flatness of frames.
Since the prologue in a flat frame also tells us where fp and pc
have been stashed (the frame is of variable size, so their location
is not fixed), it's convenient to record them in the frame info. */
-#define EXTRA_FRAME_INFO \
- CORE_ADDR bottom; \
- int in_prologue; \
- int flat; \
+#define EXTRA_FRAME_INFO \
+ CORE_ADDR bottom; \
+ int in_prologue; \
+ int flat; \
/* Following fields only relevant for flat frames. */ \
- CORE_ADDR pc_addr; \
- CORE_ADDR fp_addr; \
+ CORE_ADDR pc_addr; \
+ CORE_ADDR fp_addr; \
/* Add this to ->frame to get the value of the stack pointer at the */ \
/* time of the register saves. */ \
int sp_offset;
-#define FRAME_INIT_SAVED_REGS(fp) /*no-op */
-
-#define INIT_EXTRA_FRAME_INFO(fromleaf, fci) \
- sparc_init_extra_frame_info (fromleaf, fci)
-extern void sparc_init_extra_frame_info PARAMS ((int, struct frame_info *));
+/* We need to override GET_SAVED_REGISTER so that we can deal with the way
+ outs change into ins in different frames. HAVE_REGISTER_WINDOWS can't
+ deal with this case and also handle flat frames at the same time. */
-#define PRINT_EXTRA_FRAME_INFO(fi) \
- { \
- if ((fi) && (fi)->flat) \
- printf_filtered (" flat, pc saved at 0x%s, fp saved at 0x%s\n", \
- paddr_nz ((fi)->pc_addr), paddr_nz ((fi)->fp_addr)); \
- }
+void sparc_get_saved_register (char *raw_buffer,
+ int *optimized,
+ CORE_ADDR * addrp,
+ struct frame_info *frame,
+ int regnum, enum lval_type *lvalp);
-#define FRAME_CHAIN(thisframe) (sparc_frame_chain (thisframe))
-extern CORE_ADDR sparc_frame_chain PARAMS ((struct frame_info *));
+#define GET_SAVED_REGISTER(RAW_BUFFER, OPTIMIZED, ADDRP, FRAME, REGNUM, LVAL) \
+ sparc_get_saved_register (RAW_BUFFER, OPTIMIZED, ADDRP, \
+ FRAME, REGNUM, LVAL)
-/* INIT_EXTRA_FRAME_INFO needs the PC to detect flat frames. */
+#define FRAME_INIT_SAVED_REGS(FP) /*no-op */
-#define INIT_FRAME_PC(fromleaf, prev) /* nothing */
-#define INIT_FRAME_PC_FIRST(fromleaf, prev) \
- (prev)->pc = ((fromleaf) ? SAVED_PC_AFTER_CALL ((prev)->next) : \
- (prev)->next ? FRAME_SAVED_PC ((prev)->next) : read_pc ());
+#define INIT_EXTRA_FRAME_INFO(FROMLEAF, FCI) \
+ sparc_init_extra_frame_info (FROMLEAF, FCI)
+extern void sparc_init_extra_frame_info (int, struct frame_info *);
-/* Define other aspects of the stack frame. */
+#define FRAME_CHAIN(THISFRAME) (sparc_frame_chain (THISFRAME))
+extern CORE_ADDR sparc_frame_chain (struct frame_info *);
/* 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. */
-#define FRAMELESS_FUNCTION_INVOCATION(FI) \
- (frameless_look_for_prologue(FI))
-/* The location of I0 w.r.t SP. This is actually dependent on how the system's
- window overflow/underflow routines are written. Most vendors save the L regs
- followed by the I regs (at the higher address). Some vendors get it wrong.
- */
-
-#define FRAME_SAVED_L0 0
-#define FRAME_SAVED_I0 (8 * REGISTER_RAW_SIZE (L0_REGNUM))
+#define FRAMELESS_FUNCTION_INVOCATION(FI) \
+ frameless_look_for_prologue (FI)
/* Where is the PC for a specific frame */
#define FRAME_SAVED_PC(FRAME) sparc_frame_saved_pc (FRAME)
-extern CORE_ADDR sparc_frame_saved_pc PARAMS ((struct frame_info *));
+extern CORE_ADDR sparc_frame_saved_pc (struct frame_info *);
/* If the argument is on the stack, it will be here. */
-#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame)
-
-#define FRAME_STRUCT_ARGS_ADDRESS(fi) ((fi)->frame)
+#define FRAME_ARGS_ADDRESS(FI) ((FI)->frame)
-#define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame)
+#define FRAME_LOCALS_ADDRESS(FI) ((FI)->frame)
/* Set VAL to the number of args passed to frame described by FI.
Can set VAL to -1, meaning no way to tell. */
/* We can't tell how many args there are
now that the C compiler delays popping them. */
-#define FRAME_NUM_ARGS(fi) (-1)
+#define FRAME_NUM_ARGS(FI) (-1)
/* Return number of bytes at start of arglist that are not really args. */
#define FRAME_ARGS_SKIP 68
-
+
+#endif /* GDB_MULTI_ARCH */
+
+#define PRINT_EXTRA_FRAME_INFO(FI) \
+ sparc_print_extra_frame_info (FI)
+extern void sparc_print_extra_frame_info (struct frame_info *);
+
+/* INIT_EXTRA_FRAME_INFO needs the PC to detect flat frames. */
+
+#define INIT_FRAME_PC(FROMLEAF, PREV) /* nothing */
+#define INIT_FRAME_PC_FIRST(FROMLEAF, PREV) \
+ (PREV)->pc = ((FROMLEAF) ? SAVED_PC_AFTER_CALL ((PREV)->next) : \
+ (PREV)->next ? FRAME_SAVED_PC ((PREV)->next) : read_pc ());
+
+/* Define other aspects of the stack frame. */
+
+/* The location of I0 w.r.t SP. This is actually dependent on how the
+ system's window overflow/underflow routines are written. Most
+ vendors save the L regs followed by the I regs (at the higher
+ address). Some vendors get it wrong. */
+
+#define FRAME_SAVED_L0 0
+#define FRAME_SAVED_I0 (8 * REGISTER_RAW_SIZE (L0_REGNUM))
+
+#define FRAME_STRUCT_ARGS_ADDRESS(FI) ((FI)->frame)
+
/* Things needed for making the inferior call functions. */
/*
* First of all, let me give my opinion of what the DUMMY_FRAME
@@ -455,20 +609,13 @@ extern CORE_ADDR sparc_frame_saved_pc PARAMS ((struct frame_info *));
* CALL_DUMMY, as directed by call_function).
*/
-/* Push an empty stack frame, to record the current PC, etc. */
-
-#define PUSH_DUMMY_FRAME sparc_push_dummy_frame ()
-#define POP_FRAME sparc_pop_frame ()
-
-void sparc_push_dummy_frame PARAMS ((void)), sparc_pop_frame PARAMS ((void));
-
#ifndef CALL_DUMMY
/* This sequence of words is the instructions
- 0: bc 10 00 01 mov %g1, %fp
- 4: 9d e3 80 00 save %sp, %g0, %sp
- 8: bc 10 00 02 mov %g2, %fp
- c: be 10 00 03 mov %g3, %i7
+ 00: bc 10 00 01 mov %g1, %fp
+ 04: 9d e3 80 00 save %sp, %g0, %sp
+ 08: bc 10 00 02 mov %g2, %fp
+ 0c: be 10 00 03 mov %g3, %i7
10: da 03 a0 58 ld [ %sp + 0x58 ], %o5
14: d8 03 a0 54 ld [ %sp + 0x54 ], %o4
18: d6 03 a0 50 ld [ %sp + 0x50 ], %o3
@@ -485,7 +632,12 @@ void sparc_push_dummy_frame PARAMS ((void)), sparc_pop_frame PARAMS ((void));
* this is a multiple of 8 (not only 4) bytes.
* the `call' insn is a relative, not an absolute call.
* the `nop' at the end is needed to keep the trap from
- clobbering things (if NPC pointed to garbage instead).
+ clobbering things (if NPC pointed to garbage instead).
+ */
+
+#if !defined (GDB_MULTI_ARCH) || (GDB_MULTI_ARCH == 0)
+/*
+ * The following defines must go away for MULTI_ARCH.
*/
#define CALL_DUMMY { 0xbc100001, 0x9de38000, 0xbc100002, 0xbe100003, \
@@ -506,38 +658,93 @@ void sparc_push_dummy_frame PARAMS ((void)), sparc_pop_frame PARAMS ((void));
#define CALL_DUMMY_CALL_OFFSET (CALL_DUMMY_START_OFFSET + 0x24)
-/* Offset within CALL_DUMMY of the 'ta 1' instruction. */
+/* Offset within CALL_DUMMY of the 'ta 1' trap instruction. */
#define CALL_DUMMY_BREAKPOINT_OFFSET (CALL_DUMMY_START_OFFSET + 0x30)
#define CALL_DUMMY_STACK_ADJUST 68
-#endif
+/* Call dummy method (eg. on stack, at entry point, etc.) */
+
+#define CALL_DUMMY_LOCATION ON_STACK
+
+/* Method for detecting dummy frames. */
+
+#define PC_IN_CALL_DUMMY(PC, SP, FRAME_ADDRESS) \
+ pc_in_call_dummy_on_stack (PC, SP, FRAME_ADDRESS)
+
+#endif /* GDB_MULTI_ARCH */
+
+#endif /* CALL_DUMMY */
+
+#if !defined (GDB_MULTI_ARCH) || (GDB_MULTI_ARCH == 0)
+/*
+ * The following defines must go away for MULTI_ARCH.
+ */
+
/* Insert the specified number of args and function address
into a call sequence of the above form stored at DUMMYNAME. */
-#define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, args, type, gcc_p) \
- sparc_fix_call_dummy (dummyname, pc, fun, type, gcc_p)
-void sparc_fix_call_dummy PARAMS ((char *dummy, CORE_ADDR pc, CORE_ADDR fun,
- struct type * value_type, int using_gcc));
+#define FIX_CALL_DUMMY(DUMMYNAME, PC, FUN, NARGS, ARGS, TYPE, GCC_P) \
+ sparc_fix_call_dummy (DUMMYNAME, PC, FUN, TYPE, GCC_P)
+void sparc_fix_call_dummy (char *dummy, CORE_ADDR pc, CORE_ADDR fun,
+ struct type *value_type, int using_gcc);
-/* The Sparc returns long doubles on the stack. */
+/* Arguments smaller than an int must be promoted to ints when
+ synthesizing function calls. */
+
+/* Push an empty stack frame, to record the current PC, etc. */
+
+#define PUSH_DUMMY_FRAME sparc_push_dummy_frame ()
+#define POP_FRAME sparc_pop_frame ()
+
+void sparc_push_dummy_frame (void);
+void sparc_pop_frame (void);
+
+#define PUSH_ARGUMENTS(NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR) \
+ sparc32_push_arguments (NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR)
+
+extern CORE_ADDR
+sparc32_push_arguments (int, struct value **, CORE_ADDR, int, CORE_ADDR);
+
+/* Store the address of the place in which to copy the structure the
+ subroutine will return. This is called from call_function_by_hand.
+ The ultimate mystery is, tho, what is the value "16"? */
+
+#define STORE_STRUCT_RETURN(ADDR, SP) \
+ { char val[4]; \
+ store_unsigned_integer (val, 4, (ADDR)); \
+ write_memory ((SP)+(16*4), val, 4); }
+
+/* Default definition of USE_STRUCT_CONVENTION. */
+
+#ifndef USE_STRUCT_CONVENTION
+#define USE_STRUCT_CONVENTION(GCC_P, TYPE) \
+ generic_use_struct_convention (GCC_P, TYPE)
+#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. */
+
+#define EXTRACT_RETURN_VALUE(TYPE, REGBUF, VALBUF) \
+ sparc32_extract_return_value (TYPE, REGBUF, VALBUF)
+extern void sparc32_extract_return_value (struct type *, char[], char *);
+
+#endif /* GDB_MULTI_ARCH */
-#define RETURN_VALUE_ON_STACK(TYPE) \
- (TYPE_CODE(TYPE) == TYPE_CODE_FLT \
- && TYPE_LENGTH(TYPE) > 8)
/* Sparc has no reliable single step ptrace call */
#define SOFTWARE_SINGLE_STEP_P 1
-extern void sparc_software_single_step PARAMS ((unsigned int, int));
+extern void sparc_software_single_step (unsigned int, int);
#define SOFTWARE_SINGLE_STEP(sig,bp_p) sparc_software_single_step (sig,bp_p)
/* We need more arguments in a frame specification for the
"frame" or "info frame" command. */
#define SETUP_ARBITRARY_FRAME(argc, argv) setup_arbitrary_frame (argc, argv)
-extern struct frame_info *setup_arbitrary_frame PARAMS ((int, CORE_ADDR *));
+extern struct frame_info *setup_arbitrary_frame (int, CORE_ADDR *);
/* To print every pair of float registers as a double, we use this hook.
We also print the condition code registers in a readable format
@@ -546,8 +753,7 @@ extern struct frame_info *setup_arbitrary_frame PARAMS ((int, CORE_ADDR *));
#undef PRINT_REGISTER_HOOK
#define PRINT_REGISTER_HOOK(regno) \
sparc_print_register_hook (regno)
-extern void sparc_print_register_hook PARAMS ((int regno));
-
+extern void sparc_print_register_hook (int regno);
/* Optimization for storing registers to the inferior. The hook
DO_DEFERRED_STORES
@@ -564,21 +770,7 @@ extern int deferred_stores;
#define CLEAR_DEFERRED_STORES \
deferred_stores = 0;
-/* If the current gcc for for this target does not produce correct debugging
- information for float parameters, both prototyped and unprototyped, then
- define this macro. This forces gdb to always assume that floats are
- passed as doubles and then converted in the callee. */
-
-#define COERCE_FLOAT_TO_DOUBLE(formal, actual) (1)
-
/* Select the sparc disassembler */
#define TM_PRINT_INSN_MACH bfd_mach_sparc
-/* Arguments smaller than an int must promoted to ints when synthesizing
- function calls. */
-
-#define PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) \
- (sparc_push_arguments((nargs), (args), (sp), (struct_return), (struct_addr)))
-extern CORE_ADDR
- sparc_push_arguments PARAMS ((int, struct value **, CORE_ADDR, int, CORE_ADDR));
diff --git a/gdb/config/sparc/tm-sparclet.h b/gdb/config/sparc/tm-sparclet.h
index 2cec5128b08..b2863bfb824 100644
--- a/gdb/config/sparc/tm-sparclet.h
+++ b/gdb/config/sparc/tm-sparclet.h
@@ -18,9 +18,25 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#define TARGET_SPARCLET 1 /* Still needed for non-multi-arch case */
+
#include "sparc/tm-sparc.h"
-#define TARGET_SPARCLET 1
+/* Note: we are not defining GDB_MULTI_ARCH for the sparclet target
+ at this time, because we have not figured out how to detect the
+ sparclet target from the bfd structure. */
+
+/* Sparclet regs, for debugging purposes. */
+
+enum {
+ CCSR_REGNUM = 72,
+ CCPR_REGNUM = 73,
+ CCCRCR_REGNUM = 74,
+ CCOR_REGNUM = 75,
+ CCOBR_REGNUM = 76,
+ CCIBR_REGNUM = 77,
+ CCIR_REGNUM = 78
+};
/* Select the sparclet disassembler. Slightly different instruction set from
the V8 sparc. */
@@ -38,6 +54,11 @@
#define BIG_BREAKPOINT {0x91, 0xd0, 0x20, 0x01}
#define LITTLE_BREAKPOINT {0x01, 0x20, 0xd0, 0x91}
+#if !defined (GDB_MULTI_ARCH) || (GDB_MULTI_ARCH == 0)
+/*
+ * The following defines must go away for MULTI_ARCH.
+ */
+
#undef NUM_REGS /* formerly "72" */
/* WIN FP CPU CCP ASR AWR APSR */
#define NUM_REGS (32 + 32 + 8 + 8 + 8/*+ 32 + 1*/)
@@ -80,7 +101,7 @@
/* Remove FP dependant code which was defined in tm-sparc.h */
#undef FP0_REGNUM /* Floating point register 0 */
-#undef FPS_REGNUM /* Floating point status register */
+#undef FPS_REGNUM /* Floating point status register */
#undef CPS_REGNUM /* Coprocessor status register */
/* sparclet register numbers */
@@ -103,6 +124,8 @@
TYPE_LENGTH (TYPE)); \
}
+#endif /* GDB_MULTI_ARCH */
+
#undef PRINT_REGISTER_HOOK
#define PRINT_REGISTER_HOOK(regno)
@@ -127,7 +150,6 @@
extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
This routine returns true on success */
-extern int
-get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
diff --git a/gdb/config/sparc/tm-sparclite.h b/gdb/config/sparc/tm-sparclite.h
index 2e63418b639..1ccb37018bf 100644
--- a/gdb/config/sparc/tm-sparclite.h
+++ b/gdb/config/sparc/tm-sparclite.h
@@ -18,10 +18,27 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#define TARGET_SPARCLITE 1
+#define TARGET_SPARCLITE 1 /* Still needed for non-multi-arch case */
#include "sparc/tm-sparc.h"
+/* Note: we are not defining GDB_MULTI_ARCH for the sparclet target
+ at this time, because we have not figured out how to detect the
+ sparclet target from the bfd structure. */
+
+/* Sparclite regs, for debugging purposes */
+
+enum {
+ DIA1_REGNUM = 72, /* debug instr address register 1 */
+ DIA2_REGNUM = 73, /* debug instr address register 2 */
+ DDA1_REGNUM = 74, /* debug data address register 1 */
+ DDA2_REGNUM = 75, /* debug data address register 2 */
+ DDV1_REGNUM = 76, /* debug data value register 1 */
+ DDV2_REGNUM = 77, /* debug data value register 2 */
+ DCR_REGNUM = 78, /* debug control register */
+ DSR_REGNUM = 79 /* debug status regsiter */
+};
+
/* overrides of tm-sparc.h */
#undef TARGET_BYTE_ORDER
@@ -39,7 +56,13 @@
#define DECR_PC_AFTER_HW_BREAK 4
-#define FRAME_CHAIN_VALID(fp,fi) func_frame_chain_valid (fp, fi)
+#if !defined (GDB_MULTI_ARCH) || (GDB_MULTI_ARCH == 0)
+/*
+ * The following defines must go away for MULTI_ARCH.
+ */
+
+#undef FRAME_CHAIN_VALID
+#define FRAME_CHAIN_VALID(FP,FI) func_frame_chain_valid (FP, FI)
#undef NUM_REGS
#define NUM_REGS 80
@@ -71,6 +94,8 @@
#define DCR_REGNUM 78 /* debug control register */
#define DSR_REGNUM 79 /* debug status regsiter */
+#endif /* GDB_MULTI_ARCH */
+
#define TARGET_HW_BREAK_LIMIT 2
#define TARGET_HW_WATCH_LIMIT 2
diff --git a/gdb/config/sparc/tm-spc-em.h b/gdb/config/sparc/tm-spc-em.h
index 2391f83f215..830f89bfdda 100644
--- a/gdb/config/sparc/tm-spc-em.h
+++ b/gdb/config/sparc/tm-spc-em.h
@@ -41,7 +41,6 @@
extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
This routine returns true on success */
-extern int
-get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
diff --git a/gdb/config/sparc/tm-sun4os4.h b/gdb/config/sparc/tm-sun4os4.h
index 5acc70fc845..1026d502d40 100644
--- a/gdb/config/sparc/tm-sun4os4.h
+++ b/gdb/config/sparc/tm-sun4os4.h
@@ -26,7 +26,7 @@
#undef SKIP_TRAMPOLINE_CODE
#define SKIP_TRAMPOLINE_CODE(pc) sunos4_skip_trampoline_code (pc)
-extern CORE_ADDR sunos4_skip_trampoline_code PARAMS ((CORE_ADDR));
+extern CORE_ADDR sunos4_skip_trampoline_code (CORE_ADDR);
/* Offsets into jmp_buf. Not defined by Sun, but at least documented in a
comment in <machine/setjmp.h>! */
@@ -49,11 +49,10 @@ extern CORE_ADDR sunos4_skip_trampoline_code PARAMS ((CORE_ADDR));
extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
This routine returns true on success */
-extern int
-get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-extern char *sunpro_static_transform_name PARAMS ((char *));
+extern char *sunpro_static_transform_name (char *);
#define STATIC_TRANSFORM_NAME(x) sunpro_static_transform_name (x)
#define IS_STATIC_TRANSFORM_NAME(name) ((name)[0] == '$')
diff --git a/gdb/config/sparc/tm-sun4sol2.h b/gdb/config/sparc/tm-sun4sol2.h
index a432d612463..6ff45ee15cf 100644
--- a/gdb/config/sparc/tm-sun4sol2.h
+++ b/gdb/config/sparc/tm-sun4sol2.h
@@ -19,6 +19,8 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#define GDB_MULTI_ARCH 2
+
#include "sparc/tm-sparc.h"
#include "tm-sysv4.h"
@@ -61,8 +63,7 @@
extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
This routine returns true on success */
-extern int
-get_longjmp_target PARAMS ((CORE_ADDR *));
+extern int get_longjmp_target (CORE_ADDR *);
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
#endif /* 0 */
@@ -71,7 +72,7 @@ get_longjmp_target PARAMS ((CORE_ADDR *));
and for SunPRO 3.0, N_FUN symbols too. */
#define SOFUN_ADDRESS_MAYBE_MISSING
-extern char *sunpro_static_transform_name PARAMS ((char *));
+extern char *sunpro_static_transform_name (char *);
#define STATIC_TRANSFORM_NAME(x) sunpro_static_transform_name (x)
#define IS_STATIC_TRANSFORM_NAME(name) ((name)[0] == '$')
diff --git a/gdb/config/sparc/xm-sun4sol2.h b/gdb/config/sparc/xm-sun4sol2.h
index 01218fd2d23..3edb5abdf54 100644
--- a/gdb/config/sparc/xm-sun4sol2.h
+++ b/gdb/config/sparc/xm-sun4sol2.h
@@ -26,13 +26,6 @@
#include "xm-sysv4.h"
-/* gdb wants to use the prgregset_t interface rather than
- the gregset_t interface, partly because that's what's
- used in core-sol2.c */
-
-#define GDB_GREGSET_TYPE prgregset_t
-#define GDB_FPREGSET_TYPE prfpregset_t
-
/* These are not currently used in SVR4 (but should be, FIXME!). */
#undef DO_DEFERRED_STORES
#undef CLEAR_DEFERRED_STORES
diff --git a/gdb/config/tahoe/tm-tahoe.h b/gdb/config/tahoe/tm-tahoe.h
index 5332548c2e0..0dc3e0e6f23 100644
--- a/gdb/config/tahoe/tm-tahoe.h
+++ b/gdb/config/tahoe/tm-tahoe.h
Binary files differ
diff --git a/gdb/config/tic80/tm-tic80.h b/gdb/config/tic80/tm-tic80.h
index a7accac302a..3f43cb9df5f 100644
--- a/gdb/config/tic80/tm-tic80.h
+++ b/gdb/config/tic80/tm-tic80.h
@@ -121,7 +121,7 @@ struct frame_saved_regs;
/* Discard from the stack the innermost frame, restoring all registers. */
#define POP_FRAME tic80_pop_frame(get_current_frame ())
-extern struct frame_info *tic80_pop_frame PARAMS ((struct frame_info * frame));
+extern struct frame_info *tic80_pop_frame (struct frame_info *frame);
/* Return number of bytes at start of arglist that are not really args. */
@@ -149,7 +149,7 @@ extern struct frame_info *tic80_pop_frame PARAMS ((struct frame_info * frame));
int frameoffset; \
int framereg;
-extern void tic80_init_extra_frame_info PARAMS ((struct frame_info * fi));
+extern void tic80_init_extra_frame_info (struct frame_info *fi);
#define INIT_EXTRA_FRAME_INFO(fromleaf, fi) tic80_init_extra_frame_info (fi)
#define INIT_FRAME_PC /* Not necessary */
@@ -161,13 +161,14 @@ extern void tic80_init_extra_frame_info PARAMS ((struct frame_info * fi));
#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \
tic80_frame_find_saved_regs(frame_info, &(frame_saved_regs))
-extern void tic80_frame_find_saved_regs PARAMS ((struct frame_info *, struct frame_saved_regs *));
+extern void tic80_frame_find_saved_regs (struct frame_info *,
+ struct frame_saved_regs *);
/* Advance PC across any function entry prologue instructions
to reach some "real" code. */
#define SKIP_PROLOGUE(pc) (tic80_skip_prologue (pc))
-extern CORE_ADDR tic80_skip_prologue PARAMS ((CORE_ADDR pc));
+extern CORE_ADDR tic80_skip_prologue (CORE_ADDR pc);
/* Immediately after a function call, return the saved pc.
Can't always go through the frames for this because on some machines
@@ -183,10 +184,10 @@ extern CORE_ADDR tic80_skip_prologue PARAMS ((CORE_ADDR pc));
and produces the frame's chain-pointer. */
#define FRAME_CHAIN(thisframe) (CORE_ADDR) tic80_frame_chain (thisframe)
-extern CORE_ADDR tic80_frame_chain PARAMS ((struct frame_info *));
+extern CORE_ADDR tic80_frame_chain (struct frame_info *);
#define FRAME_SAVED_PC(FRAME) tic80_frame_saved_pc (FRAME)
-extern CORE_ADDR tic80_frame_saved_pc PARAMS ((struct frame_info *));
+extern CORE_ADDR tic80_frame_saved_pc (struct frame_info *);
/* Store the address of the place in which to copy the structure the
subroutine will return. This is called from call_function.
@@ -217,17 +218,17 @@ extern CORE_ADDR tic80_frame_saved_pc PARAMS ((struct frame_info *));
/* PUSH_ARGUMENTS */
-extern CORE_ADDR tic80_push_arguments PARAMS ((int nargs,
- struct value ** args,
- CORE_ADDR sp,
- unsigned char struct_return,
- CORE_ADDR struct_addr));
+extern CORE_ADDR tic80_push_arguments (int nargs,
+ struct value **args,
+ CORE_ADDR sp,
+ unsigned char struct_return,
+ CORE_ADDR struct_addr);
#define PUSH_ARGUMENTS(NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR) \
(tic80_push_arguments (NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR))
/* PUSH_RETURN_ADDRESS */
-extern CORE_ADDR tic80_push_return_address PARAMS ((CORE_ADDR, CORE_ADDR));
+extern CORE_ADDR tic80_push_return_address (CORE_ADDR, CORE_ADDR);
#define PUSH_RETURN_ADDRESS(PC, SP) tic80_push_return_address (PC, SP)
/* override the standard get_saved_register function with
diff --git a/gdb/config/tm-sysv4.h b/gdb/config/tm-sysv4.h
index 61f2568f2a5..f6fda358fe0 100644
--- a/gdb/config/tm-sysv4.h
+++ b/gdb/config/tm-sysv4.h
@@ -28,7 +28,7 @@
(e.g. on Irix5). */
#define IN_SOLIB_CALL_TRAMPOLINE(pc, name) in_plt_section((pc), (name))
-extern int in_plt_section PARAMS ((CORE_ADDR, char *));
+extern int in_plt_section (CORE_ADDR, char *);
/* If PC is in a shared library trampoline code, return the PC
where the function itself actually starts. If not, return 0. */
diff --git a/gdb/config/v850/tm-v850.h b/gdb/config/v850/tm-v850.h
index 256606a96c7..405b9acc84d 100644
--- a/gdb/config/v850/tm-v850.h
+++ b/gdb/config/v850/tm-v850.h
@@ -82,7 +82,7 @@ extern char **v850_register_names;
#define MAX_REGISTER_VIRTUAL_SIZE 4
-#define BREAKPOINT {0x40, 0xF8} /* little-ended */
+#define BREAKPOINT {0x85, 0x05} /* little-ended */
#define FUNCTION_START_OFFSET 0
@@ -99,19 +99,20 @@ struct value;
#define EXTRA_FRAME_INFO struct frame_saved_regs fsr;
-extern void v850_init_extra_frame_info PARAMS ((struct frame_info * fi));
+extern void v850_init_extra_frame_info (struct frame_info *fi);
#define INIT_EXTRA_FRAME_INFO(fromleaf, fi) v850_init_extra_frame_info (fi)
#define INIT_FRAME_PC /* Not necessary */
-extern void v850_frame_find_saved_regs PARAMS ((struct frame_info * fi, struct frame_saved_regs * regaddr));
+extern void v850_frame_find_saved_regs (struct frame_info *fi,
+ struct frame_saved_regs *regaddr);
#define FRAME_FIND_SAVED_REGS(fi, regaddr) regaddr = fi->fsr
-extern CORE_ADDR v850_frame_chain PARAMS ((struct frame_info * fi));
+extern CORE_ADDR v850_frame_chain (struct frame_info *fi);
#define FRAME_CHAIN(fi) v850_frame_chain (fi)
#define FRAME_CHAIN_VALID(FP, FI) generic_file_frame_chain_valid (FP, FI)
-extern CORE_ADDR v850_find_callers_reg PARAMS ((struct frame_info * fi, int regnum));
-extern CORE_ADDR v850_frame_saved_pc PARAMS ((struct frame_info *));
+extern CORE_ADDR v850_find_callers_reg (struct frame_info *fi, int regnum);
+extern CORE_ADDR v850_frame_saved_pc (struct frame_info *);
#define FRAME_SAVED_PC(FI) (v850_frame_saved_pc (FI))
#define EXTRACT_RETURN_VALUE(TYPE, REGBUF, VALBUF) \
@@ -124,7 +125,7 @@ extern CORE_ADDR v850_frame_saved_pc PARAMS ((struct frame_info *));
#define STORE_RETURN_VALUE(TYPE, VALBUF) \
write_register_bytes(REGISTER_BYTE (V0_REGNUM), VALBUF, TYPE_LENGTH (TYPE));
-extern CORE_ADDR v850_skip_prologue PARAMS ((CORE_ADDR pc));
+extern CORE_ADDR v850_skip_prologue (CORE_ADDR pc);
#define SKIP_PROLOGUE(pc) (v850_skip_prologue (pc))
#define FRAME_ARGS_SKIP 0
@@ -133,7 +134,7 @@ extern CORE_ADDR v850_skip_prologue PARAMS ((CORE_ADDR pc));
#define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame)
#define FRAME_NUM_ARGS(fi) (-1)
-extern void v850_pop_frame PARAMS ((struct frame_info * frame));
+extern void v850_pop_frame (struct frame_info *frame);
#define POP_FRAME v850_pop_frame (get_current_frame ())
#define USE_GENERIC_DUMMY_FRAMES 1
@@ -143,16 +144,15 @@ extern void v850_pop_frame PARAMS ((struct frame_info * frame));
#define CALL_DUMMY_LOCATION AT_ENTRY_POINT
#define FIX_CALL_DUMMY(DUMMY, START, FUNADDR, NARGS, ARGS, TYPE, GCCP)
#define CALL_DUMMY_ADDRESS() entry_point_address ()
-extern CORE_ADDR v850_push_return_address PARAMS ((CORE_ADDR, CORE_ADDR));
+extern CORE_ADDR v850_push_return_address (CORE_ADDR, CORE_ADDR);
#define PUSH_RETURN_ADDRESS(PC, SP) v850_push_return_address (PC, SP)
#define PUSH_DUMMY_FRAME generic_push_dummy_frame ()
extern CORE_ADDR
- v850_push_arguments PARAMS ((int nargs, struct value ** args, CORE_ADDR sp,
- unsigned char struct_return,
- CORE_ADDR struct_addr));
+v850_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
+ unsigned char struct_return, CORE_ADDR struct_addr);
#define PUSH_ARGUMENTS(NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR) \
(v850_push_arguments (NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR))
diff --git a/gdb/config/vax/tm-vax.h b/gdb/config/vax/tm-vax.h
index 607ee746099..b1439c2c6c2 100644
--- a/gdb/config/vax/tm-vax.h
+++ b/gdb/config/vax/tm-vax.h
@@ -29,7 +29,7 @@
/* Advance PC across any function entry prologue instructions
to reach some "real" code. */
-extern CORE_ADDR vax_skip_prologue PARAMS ((CORE_ADDR));
+extern CORE_ADDR vax_skip_prologue (CORE_ADDR);
#define SKIP_PROLOGUE(pc) (vax_skip_prologue (pc))
/* Immediately after a function call, return the saved pc.
@@ -214,7 +214,7 @@ extern CORE_ADDR vax_skip_prologue PARAMS ((CORE_ADDR));
/* Return number of args passed to a frame.
Can return -1, meaning no way to tell. */
-extern int vax_frame_num_args PARAMS ((struct frame_info * fi));
+extern int vax_frame_num_args (struct frame_info *fi);
#define FRAME_NUM_ARGS(fi) (vax_frame_num_args ((fi)))
/* Return number of bytes at start of arglist that are not really args. */
diff --git a/gdb/config/w65/tm-w65.h b/gdb/config/w65/tm-w65.h
index b1fe4eddceb..b5a5934ba40 100644
--- a/gdb/config/w65/tm-w65.h
+++ b/gdb/config/w65/tm-w65.h
@@ -22,7 +22,7 @@
#define GDB_TARGET_IS_W65
-#define IEEE_FLOAT 1
+#define IEEE_FLOAT (1)
/* Define the bit, byte, and word ordering of the machine. */
@@ -190,7 +190,7 @@ extern CORE_ADDR w65_skip_prologue ();
typedef unsigned short INSN_WORD;
-extern CORE_ADDR w65_addr_bits_remove PARAMS ((CORE_ADDR));
+extern CORE_ADDR w65_addr_bits_remove (CORE_ADDR);
#define ADDR_BITS_REMOVE(addr) w65_addr_bits_remove (addr)
#define CALL_DUMMY_LENGTH 10
diff --git a/gdb/config/xm-aix4.h b/gdb/config/xm-aix4.h
index 14d62448c65..d1d4cdc2c7a 100644
--- a/gdb/config/xm-aix4.h
+++ b/gdb/config/xm-aix4.h
@@ -73,7 +73,7 @@ char *termdef ();
/* Signal handler for SIGWINCH `window size changed'. */
#define SIGWINCH_HANDLER aix_resizewindow
-extern void aix_resizewindow PARAMS ((int));
+extern void aix_resizewindow (int);
/* `lines_per_page' and `chars_per_line' are local to utils.c. Rectify this. */
diff --git a/gdb/config/z8k/tm-z8k.h b/gdb/config/z8k/tm-z8k.h
index f781e0a868e..544dea5936a 100644
--- a/gdb/config/z8k/tm-z8k.h
+++ b/gdb/config/z8k/tm-z8k.h
@@ -18,7 +18,7 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#define IEEE_FLOAT 1
+#define IEEE_FLOAT (1)
#undef TARGET_INT_BIT
#undef TARGET_LONG_BIT
@@ -42,7 +42,7 @@
to reach some "real" code. */
#define SKIP_PROLOGUE(ip) (z8k_skip_prologue (ip))
-extern CORE_ADDR z8k_skip_prologue PARAMS ((CORE_ADDR ip));
+extern CORE_ADDR z8k_skip_prologue (CORE_ADDR ip);
/* Immediately after a function call, return the saved pc.
@@ -203,7 +203,7 @@ extern CORE_ADDR z8k_frame_saved_pc (struct frame_info *frame);
#define FRAME_ARGS_SKIP 8
struct frame_info;
-extern void z8k_frame_init_saved_regs PARAMS ((struct frame_info *));
+extern void z8k_frame_init_saved_regs (struct frame_info *);
#define FRAME_INIT_SAVED_REGS(fi) z8k_frame_init_saved_regs (fi)
@@ -259,9 +259,9 @@ extern void z8k_frame_init_saved_regs PARAMS ((struct frame_info *));
#define PUSH_DUMMY_FRAME { z8k_push_dummy_frame (); }
-extern void z8k_push_dummy_frame PARAMS ((void));
+extern void z8k_push_dummy_frame (void);
-extern void z8k_pop_frame PARAMS ((void));
+extern void z8k_pop_frame (void);
/* Discard from the stack the innermost frame, restoring all registers. */
@@ -271,7 +271,7 @@ extern void z8k_pop_frame PARAMS ((void));
#define SP_ARG0 (1 * 4)
-extern CORE_ADDR z8k_addr_bits_remove PARAMS ((CORE_ADDR));
+extern CORE_ADDR z8k_addr_bits_remove (CORE_ADDR);
#define ADDR_BITS_REMOVE(addr) z8k_addr_bits_remove (addr)
int sim_z8001_mode;
#define BIG (sim_z8001_mode)
diff --git a/gdb/configure b/gdb/configure
index f1d4e743db3..9c5c4a6654d 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -12,6 +12,9 @@ ac_help=
ac_default_prefix=/usr/local
# Any additions from configure.in:
ac_help="$ac_help
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer"
+ac_help="$ac_help
--disable-nls do not use Native Language Support"
ac_help="$ac_help
--with-included-gettext use the GNU gettext library included here"
@@ -70,7 +73,6 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
-sitefile=
srcdir=
target=NONE
verbose=
@@ -185,7 +187,6 @@ Configuration:
--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
@@ -356,11 +357,6 @@ EOF
-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=*)
@@ -526,16 +522,12 @@ fi
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
@@ -575,11 +567,34 @@ fi
+echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
+echo "configure:572: 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"
+ USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ echo "$ac_t""$USE_MAINTAINER_MODE" 1>&6
+
+
+if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:583: checking for $ac_word" >&5
+echo "configure:598: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -609,7 +624,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:613: checking for $ac_word" >&5
+echo "configure:628: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -660,7 +675,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:664: checking for $ac_word" >&5
+echo "configure:679: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -692,7 +707,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:696: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:711: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -703,12 +718,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 707 "configure"
+#line 722 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -734,12 +749,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:738: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:753: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:743: checking whether we are using GNU C" >&5
+echo "configure:758: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -748,7 +763,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:752: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:767: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -767,7 +782,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:771: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:786: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -799,7 +814,7 @@ else
fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:803: checking how to run the C preprocessor" >&5
+echo "configure:818: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -814,13 +829,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 818 "configure"
+#line 833 "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:824: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:839: \"$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
:
@@ -831,13 +846,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 835 "configure"
+#line 850 "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:841: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:856: \"$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
:
@@ -848,13 +863,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 852 "configure"
+#line 867 "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:858: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:873: \"$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
:
@@ -879,9 +894,9 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:883: checking for AIX" >&5
+echo "configure:898: checking for AIX" >&5
cat > conftest.$ac_ext <<EOF
-#line 885 "configure"
+#line 900 "configure"
#include "confdefs.h"
#ifdef _AIX
yes
@@ -903,7 +918,7 @@ rm -f conftest*
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:907: checking for POSIXized ISC" >&5
+echo "configure:922: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -927,7 +942,7 @@ fi
echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:931: checking for ${CC-cc} option to accept ANSI C" >&5
+echo "configure:946: checking for ${CC-cc} option to accept ANSI C" >&5
if eval "test \"`echo '$''{'am_cv_prog_cc_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -943,7 +958,7 @@ for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__
do
CC="$ac_save_CC $ac_arg"
cat > conftest.$ac_ext <<EOF
-#line 947 "configure"
+#line 962 "configure"
#include "confdefs.h"
#include <stdarg.h>
#include <stdio.h>
@@ -980,7 +995,7 @@ return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
; return 0; }
EOF
-if { (eval echo configure:984: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:999: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
am_cv_prog_cc_stdc="$ac_arg"; break
else
@@ -1051,7 +1066,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1055: checking host system type" >&5
+echo "configure:1070: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1072,7 +1087,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1076: checking target system type" >&5
+echo "configure:1091: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1090,7 +1105,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1094: checking build system type" >&5
+echo "configure:1109: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1115,7 +1130,7 @@ test "$host_alias" != "$target_alias" &&
ALL_LINGUAS=
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:1119: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:1134: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1144,7 +1159,7 @@ fi
# 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:1148: checking for $ac_word" >&5
+echo "configure:1163: 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
@@ -1172,12 +1187,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1176: checking for ANSI C header files" >&5
+echo "configure:1191: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1181 "configure"
+#line 1196 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -1185,7 +1200,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1189: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1204: \"$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*
@@ -1202,7 +1217,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 1206 "configure"
+#line 1221 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -1220,7 +1235,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 1224 "configure"
+#line 1239 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -1241,7 +1256,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 1245 "configure"
+#line 1260 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1252,7 +1267,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:1256: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -1276,12 +1291,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1280: checking for working const" >&5
+echo "configure:1295: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1285 "configure"
+#line 1300 "configure"
#include "confdefs.h"
int main() {
@@ -1330,7 +1345,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:1334: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1349: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -1351,21 +1366,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1355: checking for inline" >&5
+echo "configure:1370: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 1362 "configure"
+#line 1377 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:1369: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1384: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1391,12 +1406,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1395: checking for off_t" >&5
+echo "configure:1410: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1400 "configure"
+#line 1415 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1424,12 +1439,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1428: checking for size_t" >&5
+echo "configure:1443: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1433 "configure"
+#line 1448 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1459,19 +1474,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1463: checking for working alloca.h" >&5
+echo "configure:1478: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1468 "configure"
+#line 1483 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1492,12 +1507,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1496: checking for alloca" >&5
+echo "configure:1511: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1501 "configure"
+#line 1516 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1525,7 +1540,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1557,12 +1572,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1561: checking whether alloca needs Cray hooks" >&5
+echo "configure:1576: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1566 "configure"
+#line 1581 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1587,12 +1602,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1591: checking for $ac_func" >&5
+echo "configure:1606: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1596 "configure"
+#line 1611 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1615,7 +1630,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1619: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1642,7 +1657,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1646: checking stack direction for C alloca" >&5
+echo "configure:1661: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1650,7 +1665,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1654 "configure"
+#line 1669 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1669,7 +1684,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1694,17 +1709,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1698: checking for $ac_hdr" >&5
+echo "configure:1713: 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 1703 "configure"
+#line 1718 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1708: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1723: \"$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*
@@ -1733,12 +1748,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1737: checking for $ac_func" >&5
+echo "configure:1752: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1742 "configure"
+#line 1757 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1761,7 +1776,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1786,7 +1801,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1790: checking for working mmap" >&5
+echo "configure:1805: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1794,7 +1809,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1798 "configure"
+#line 1813 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1934,7 +1949,7 @@ main()
}
EOF
-if { (eval echo configure:1938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1953: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1962,17 +1977,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1966: checking for $ac_hdr" >&5
+echo "configure:1981: 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 1971 "configure"
+#line 1986 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1976: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1991: \"$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*
@@ -2002,12 +2017,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2006: checking for $ac_func" >&5
+echo "configure:2021: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2011 "configure"
+#line 2026 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2030,7 +2045,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2059,12 +2074,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2063: checking for $ac_func" >&5
+echo "configure:2078: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2068 "configure"
+#line 2083 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2087,7 +2102,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2121,19 +2136,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2125: checking for LC_MESSAGES" >&5
+echo "configure:2140: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2130 "configure"
+#line 2145 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2152: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2154,7 +2169,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2158: checking whether NLS is requested" >&5
+echo "configure:2173: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2174,7 +2189,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2178: checking whether included gettext is requested" >&5
+echo "configure:2193: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2193,17 +2208,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2197: checking for libintl.h" >&5
+echo "configure:2212: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2202 "configure"
+#line 2217 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2207: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2222: \"$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*
@@ -2220,19 +2235,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2224: checking for gettext in libc" >&5
+echo "configure:2239: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2229 "configure"
+#line 2244 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2248,7 +2263,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2252: checking for bindtextdomain in -lintl" >&5
+echo "configure:2267: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2256,7 +2271,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2260 "configure"
+#line 2275 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2267,7 +2282,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2283,19 +2298,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2287: checking for gettext in libintl" >&5
+echo "configure:2302: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2292 "configure"
+#line 2307 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2323,7 +2338,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2327: checking for $ac_word" >&5
+echo "configure:2342: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2357,12 +2372,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2361: checking for $ac_func" >&5
+echo "configure:2376: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2366 "configure"
+#line 2381 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2385,7 +2400,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2412,7 +2427,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2416: checking for $ac_word" >&5
+echo "configure:2431: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2448,7 +2463,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2452: checking for $ac_word" >&5
+echo "configure:2467: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2480,7 +2495,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2484 "configure"
+#line 2499 "configure"
#include "confdefs.h"
int main() {
@@ -2488,7 +2503,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2492: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2507: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2520,7 +2535,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2524: checking for $ac_word" >&5
+echo "configure:2539: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2554,7 +2569,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2558: checking for $ac_word" >&5
+echo "configure:2573: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2590,7 +2605,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2594: checking for $ac_word" >&5
+echo "configure:2609: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2680,7 +2695,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2684: checking for catalogs to be installed" >&5
+echo "configure:2699: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2708,17 +2723,17 @@ echo "configure:2684: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2712: checking for linux/version.h" >&5
+echo "configure:2727: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2717 "configure"
+#line 2732 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2722: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2737: \"$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*
@@ -2820,7 +2835,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2824: checking for $ac_word" >&5
+echo "configure:2839: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2861,7 +2876,7 @@ done
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2865: checking for a BSD compatible install" >&5
+echo "configure:2880: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2922,7 +2937,7 @@ fi
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2926: checking for $ac_word" >&5
+echo "configure:2941: 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
@@ -2954,7 +2969,7 @@ fi
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2958: checking for $ac_word" >&5
+echo "configure:2973: 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
@@ -2986,7 +3001,7 @@ if test -n "$ac_tool_prefix"; then
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2990: checking for $ac_word" >&5
+echo "configure:3005: 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
@@ -3018,12 +3033,76 @@ else
fi
fi
+# Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:3040: 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
+ if test -n "$DLLTOOL"; then
+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_prog_DLLTOOL" && ac_cv_prog_DLLTOOL="dlltool"
+fi
+fi
+DLLTOOL="$ac_cv_prog_DLLTOOL"
+if test -n "$DLLTOOL"; then
+ echo "$ac_t""$DLLTOOL" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+
+
+# Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
+set dummy ${ac_tool_prefix}windres; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:3072: 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
+ if test -n "$WINDRES"; then
+ ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test.
+else
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+ ac_dummy="$PATH"
+ for ac_dir in $ac_dummy; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ ac_cv_prog_WINDRES="${ac_tool_prefix}windres"
+ break
+ fi
+ done
+ IFS="$ac_save_ifs"
+ test -z "$ac_cv_prog_WINDRES" && ac_cv_prog_WINDRES="windres"
+fi
+fi
+WINDRES="$ac_cv_prog_WINDRES"
+if test -n "$WINDRES"; then
+ echo "$ac_t""$WINDRES" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+
+
for ac_prog in 'bison -y' byacc
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3027: checking for $ac_word" >&5
+echo "configure:3106: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3057,7 +3136,7 @@ test -n "$YACC" || YACC="yacc"
# Extract the first word of "${ac_tool_prefix}mig", so it can be a program name with args.
set dummy ${ac_tool_prefix}mig; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3061: checking for $ac_word" >&5
+echo "configure:3140: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3108,12 +3187,12 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3112: checking return type of signal handlers" >&5
+echo "configure:3191: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3117 "configure"
+#line 3196 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3130,7 +3209,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3134: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3213: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3150,12 +3229,12 @@ EOF
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3154: checking for ANSI C header files" >&5
+echo "configure:3233: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3159 "configure"
+#line 3238 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -3163,7 +3242,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3167: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3246: \"$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*
@@ -3180,7 +3259,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 3184 "configure"
+#line 3263 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -3198,7 +3277,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 3202 "configure"
+#line 3281 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -3219,7 +3298,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 3223 "configure"
+#line 3302 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3230,7 +3309,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:3234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3313: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -3262,26 +3341,28 @@ EOF
esac; esac
-for ac_hdr in ctype.h curses.h endian.h link.h thread_db.h proc_service.h \
+for ac_hdr in ctype.h endian.h link.h thread_db.h proc_service.h \
memory.h objlist.h ptrace.h sgtty.h stddef.h stdlib.h \
string.h sys/procfs.h sys/ptrace.h sys/reg.h stdint.h \
term.h termio.h termios.h unistd.h wait.h sys/wait.h \
wchar.h wctype.h asm/debugreg.h sys/debugreg.h sys/select.h \
- time.h sys/ioctl.h
+ time.h sys/ioctl.h sys/user.h \
+ dirent.h sys/ndir.h sys/dir.h ndir.h \
+ curses.h ncurses.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3275: checking for $ac_hdr" >&5
+echo "configure:3356: 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 3280 "configure"
+#line 3361 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3285: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3366: \"$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*
@@ -3308,12 +3389,12 @@ fi
done
echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6
-echo "configure:3312: checking whether stat file-mode macros are broken" >&5
+echo "configure:3393: checking whether stat file-mode macros are broken" >&5
if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3317 "configure"
+#line 3398 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -3365,12 +3446,12 @@ fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:3369: checking for working const" >&5
+echo "configure:3450: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3374 "configure"
+#line 3455 "configure"
#include "confdefs.h"
int main() {
@@ -3419,7 +3500,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:3423: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3504: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -3443,12 +3524,12 @@ fi
for ac_func in setpgid sbrk sigaction isascii bzero bcopy btowc poll sigprocmask
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3447: checking for $ac_func" >&5
+echo "configure:3528: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3452 "configure"
+#line 3533 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3471,7 +3552,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3498,19 +3579,19 @@ done
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:3502: checking for working alloca.h" >&5
+echo "configure:3583: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3507 "configure"
+#line 3588 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:3514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -3531,12 +3612,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:3535: checking for alloca" >&5
+echo "configure:3616: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3540 "configure"
+#line 3621 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -3564,7 +3645,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:3568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -3596,12 +3677,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:3600: checking whether alloca needs Cray hooks" >&5
+echo "configure:3681: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3605 "configure"
+#line 3686 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -3626,12 +3707,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3630: checking for $ac_func" >&5
+echo "configure:3711: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3635 "configure"
+#line 3716 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3654,7 +3735,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3681,7 +3762,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:3685: checking stack direction for C alloca" >&5
+echo "configure:3766: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3689,7 +3770,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 3693 "configure"
+#line 3774 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -3708,7 +3789,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:3712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -3730,20 +3811,87 @@ EOF
fi
+# See if machine/reg.h supports the %fs and %gs i386 segment registers.
+# Older i386 BSD's don't have the r_fs and r_gs members of `struct reg'.
+echo $ac_n "checking for r_fs in struct reg""... $ac_c" 1>&6
+echo "configure:3818: checking for r_fs in struct reg" >&5
+if eval "test \"`echo '$''{'gdb_cv_struct_reg_r_fs'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3823 "configure"
+#include "confdefs.h"
+#include <machine/reg.h>
+int main() {
+struct reg r; r.r_fs;
+; return 0; }
+EOF
+if { (eval echo configure:3830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ gdb_cv_struct_reg_r_fs=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ gdb_cv_struct_reg_r_fs=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$gdb_cv_struct_reg_r_fs" 1>&6
+if test $gdb_cv_struct_reg_r_fs = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_STRUCT_REG_R_FS 1
+EOF
+
+fi
+echo $ac_n "checking for r_gs in struct reg""... $ac_c" 1>&6
+echo "configure:3850: checking for r_gs in struct reg" >&5
+if eval "test \"`echo '$''{'gdb_cv_struct_reg_r_gs'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 3855 "configure"
+#include "confdefs.h"
+#include <machine/reg.h>
+int main() {
+struct reg r; r.r_gs;
+; return 0; }
+EOF
+if { (eval echo configure:3862: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ gdb_cv_struct_reg_r_gs=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ gdb_cv_struct_reg_r_gs=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$gdb_cv_struct_reg_r_gs" 1>&6
+if test $gdb_cv_struct_reg_r_gs = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_STRUCT_REG_R_GS 1
+EOF
+
+fi
+
echo $ac_n "checking for PTRACE_GETREGS""... $ac_c" 1>&6
-echo "configure:3735: checking for PTRACE_GETREGS" >&5
+echo "configure:3883: checking for PTRACE_GETREGS" >&5
if eval "test \"`echo '$''{'gdb_cv_have_ptrace_getregs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3740 "configure"
+#line 3888 "configure"
#include "confdefs.h"
#include <sys/ptrace.h>
int main() {
PTRACE_GETREGS;
; return 0; }
EOF
-if { (eval echo configure:3747: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3895: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_ptrace_getregs=yes
else
@@ -3764,19 +3912,19 @@ EOF
fi
echo $ac_n "checking for PTRACE_GETXFPREGS""... $ac_c" 1>&6
-echo "configure:3768: checking for PTRACE_GETXFPREGS" >&5
+echo "configure:3916: checking for PTRACE_GETXFPREGS" >&5
if eval "test \"`echo '$''{'gdb_cv_have_ptrace_getxfpregs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3773 "configure"
+#line 3921 "configure"
#include "confdefs.h"
#include <sys/ptrace.h>
int main() {
PTRACE_GETXFPREGS;
; return 0; }
EOF
-if { (eval echo configure:3780: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3928: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_ptrace_getxfpregs=yes
else
@@ -3797,7 +3945,7 @@ EOF
fi
echo $ac_n "checking for socketpair in -lsocket""... $ac_c" 1>&6
-echo "configure:3801: checking for socketpair in -lsocket" >&5
+echo "configure:3949: checking for socketpair in -lsocket" >&5
ac_lib_var=`echo socket'_'socketpair | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3805,7 +3953,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3809 "configure"
+#line 3957 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3816,7 +3964,7 @@ int main() {
socketpair()
; return 0; }
EOF
-if { (eval echo configure:3820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3846,12 +3994,12 @@ fi
for ac_func in socketpair
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3850: checking for $ac_func" >&5
+echo "configure:3998: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3855 "configure"
+#line 4003 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3874,7 +4022,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3901,12 +4049,12 @@ done
echo $ac_n "checking whether malloc must be declared""... $ac_c" 1>&6
-echo "configure:3905: checking whether malloc must be declared" >&5
+echo "configure:4053: checking whether malloc must be declared" >&5
if eval "test \"`echo '$''{'bfd_cv_decl_needed_malloc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3910 "configure"
+#line 4058 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -3927,7 +4075,7 @@ int main() {
char *(*pfn) = (char *(*)) malloc
; return 0; }
EOF
-if { (eval echo configure:3931: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_malloc=no
else
@@ -3948,12 +4096,12 @@ EOF
fi
echo $ac_n "checking whether realloc must be declared""... $ac_c" 1>&6
-echo "configure:3952: checking whether realloc must be declared" >&5
+echo "configure:4100: checking whether realloc must be declared" >&5
if eval "test \"`echo '$''{'bfd_cv_decl_needed_realloc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3957 "configure"
+#line 4105 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -3974,7 +4122,7 @@ int main() {
char *(*pfn) = (char *(*)) realloc
; return 0; }
EOF
-if { (eval echo configure:3978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_realloc=no
else
@@ -3995,12 +4143,12 @@ EOF
fi
echo $ac_n "checking whether free must be declared""... $ac_c" 1>&6
-echo "configure:3999: checking whether free must be declared" >&5
+echo "configure:4147: checking whether free must be declared" >&5
if eval "test \"`echo '$''{'bfd_cv_decl_needed_free'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4004 "configure"
+#line 4152 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4021,7 +4169,7 @@ int main() {
char *(*pfn) = (char *(*)) free
; return 0; }
EOF
-if { (eval echo configure:4025: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4173: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_free=no
else
@@ -4042,12 +4190,12 @@ EOF
fi
echo $ac_n "checking whether strerror must be declared""... $ac_c" 1>&6
-echo "configure:4046: checking whether strerror must be declared" >&5
+echo "configure:4194: checking whether strerror must be declared" >&5
if eval "test \"`echo '$''{'bfd_cv_decl_needed_strerror'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4051 "configure"
+#line 4199 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4068,7 +4216,7 @@ int main() {
char *(*pfn) = (char *(*)) strerror
; return 0; }
EOF
-if { (eval echo configure:4072: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4220: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_strerror=no
else
@@ -4089,12 +4237,12 @@ EOF
fi
echo $ac_n "checking whether strdup must be declared""... $ac_c" 1>&6
-echo "configure:4093: checking whether strdup must be declared" >&5
+echo "configure:4241: checking whether strdup must be declared" >&5
if eval "test \"`echo '$''{'bfd_cv_decl_needed_strdup'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4098 "configure"
+#line 4246 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4115,7 +4263,7 @@ int main() {
char *(*pfn) = (char *(*)) strdup
; return 0; }
EOF
-if { (eval echo configure:4119: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4267: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_strdup=no
else
@@ -4136,12 +4284,12 @@ EOF
fi
echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6
-echo "configure:4140: checking whether strstr must be declared" >&5
+echo "configure:4288: checking whether strstr must be declared" >&5
if eval "test \"`echo '$''{'bfd_cv_decl_needed_strstr'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4145 "configure"
+#line 4293 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4162,7 +4310,7 @@ int main() {
char *(*pfn) = (char *(*)) strstr
; return 0; }
EOF
-if { (eval echo configure:4166: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4314: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_strstr=no
else
@@ -4189,9 +4337,9 @@ fi
# could be expunged. --jsm 1999-03-22
echo $ac_n "checking for HPUX save_state structure""... $ac_c" 1>&6
-echo "configure:4193: checking for HPUX save_state structure" >&5
+echo "configure:4341: checking for HPUX save_state structure" >&5
cat > conftest.$ac_ext <<EOF
-#line 4195 "configure"
+#line 4343 "configure"
#include "confdefs.h"
#include <machine/save_state.h>
EOF
@@ -4206,7 +4354,7 @@ fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 4210 "configure"
+#line 4358 "configure"
#include "confdefs.h"
#include <machine/save_state.h>
EOF
@@ -4270,19 +4418,19 @@ fi
if test "$ac_cv_header_sys_procfs_h" = yes; then
echo $ac_n "checking for pstatus_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:4274: checking for pstatus_t in sys/procfs.h" >&5
+echo "configure:4422: checking for pstatus_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pstatus_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4279 "configure"
+#line 4427 "configure"
#include "confdefs.h"
#include <sys/procfs.h>
int main() {
pstatus_t avar
; return 0; }
EOF
-if { (eval echo configure:4286: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4434: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_pstatus_t=yes
else
@@ -4304,19 +4452,19 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_pstatus_t" 1>&6
echo $ac_n "checking for prrun_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:4308: checking for prrun_t in sys/procfs.h" >&5
+echo "configure:4456: checking for prrun_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prrun_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4313 "configure"
+#line 4461 "configure"
#include "confdefs.h"
#include <sys/procfs.h>
int main() {
prrun_t avar
; return 0; }
EOF
-if { (eval echo configure:4320: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4468: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prrun_t=yes
else
@@ -4338,19 +4486,19 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_prrun_t" 1>&6
echo $ac_n "checking for gregset_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:4342: checking for gregset_t in sys/procfs.h" >&5
+echo "configure:4490: checking for gregset_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_gregset_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4347 "configure"
+#line 4495 "configure"
#include "confdefs.h"
#include <sys/procfs.h>
int main() {
gregset_t avar
; return 0; }
EOF
-if { (eval echo configure:4354: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4502: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_gregset_t=yes
else
@@ -4372,19 +4520,19 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_gregset_t" 1>&6
echo $ac_n "checking for fpregset_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:4376: checking for fpregset_t in sys/procfs.h" >&5
+echo "configure:4524: checking for fpregset_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_fpregset_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4381 "configure"
+#line 4529 "configure"
#include "confdefs.h"
#include <sys/procfs.h>
int main() {
fpregset_t avar
; return 0; }
EOF
-if { (eval echo configure:4388: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4536: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_fpregset_t=yes
else
@@ -4406,19 +4554,19 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_fpregset_t" 1>&6
echo $ac_n "checking for prgregset_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:4410: checking for prgregset_t in sys/procfs.h" >&5
+echo "configure:4558: checking for prgregset_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prgregset_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4415 "configure"
+#line 4563 "configure"
#include "confdefs.h"
#include <sys/procfs.h>
int main() {
prgregset_t avar
; return 0; }
EOF
-if { (eval echo configure:4422: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prgregset_t=yes
else
@@ -4440,19 +4588,19 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_prgregset_t" 1>&6
echo $ac_n "checking for prfpregset_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:4444: checking for prfpregset_t in sys/procfs.h" >&5
+echo "configure:4592: checking for prfpregset_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prfpregset_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4449 "configure"
+#line 4597 "configure"
#include "confdefs.h"
#include <sys/procfs.h>
int main() {
prfpregset_t avar
; return 0; }
EOF
-if { (eval echo configure:4456: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prfpregset_t=yes
else
@@ -4474,19 +4622,19 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_prfpregset_t" 1>&6
echo $ac_n "checking for lwpid_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:4478: checking for lwpid_t in sys/procfs.h" >&5
+echo "configure:4626: checking for lwpid_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_lwpid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4483 "configure"
+#line 4631 "configure"
#include "confdefs.h"
#include <sys/procfs.h>
int main() {
lwpid_t avar
; return 0; }
EOF
-if { (eval echo configure:4490: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4638: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_lwpid_t=yes
else
@@ -4508,19 +4656,19 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_lwpid_t" 1>&6
echo $ac_n "checking for psaddr_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:4512: checking for psaddr_t in sys/procfs.h" >&5
+echo "configure:4660: checking for psaddr_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_psaddr_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4517 "configure"
+#line 4665 "configure"
#include "confdefs.h"
#include <sys/procfs.h>
int main() {
psaddr_t avar
; return 0; }
EOF
-if { (eval echo configure:4524: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4672: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_psaddr_t=yes
else
@@ -4543,13 +4691,58 @@ EOF
+
+ if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
+ echo $ac_n "checking whether prfpregset_t type is broken""... $ac_c" 1>&6
+echo "configure:4698: checking whether prfpregset_t type is broken" >&5
+ if eval "test \"`echo '$''{'gdb_cv_prfpregset_t_broken'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$cross_compiling" = yes; then
+ gdb_cv_prfpregset_t_broken=yes
+else
+ cat > conftest.$ac_ext <<EOF
+#line 4706 "configure"
+#include "confdefs.h"
+#include <sys/procfs.h>
+ int main ()
+ {
+ if (sizeof (prfpregset_t) == sizeof (void *))
+ return 1;
+ return 0;
+ }
+EOF
+if { (eval echo configure:4716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ gdb_cv_prfpregset_t_broken=no
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ gdb_cv_prfpregset_t_broken=yes
+fi
+rm -fr conftest*
+fi
+
+fi
+
+ echo "$ac_t""$gdb_cv_prfpregset_t_broken" 1>&6
+ if test $gdb_cv_prfpregset_t_broken = yes; then
+ cat >> confdefs.h <<\EOF
+#define PRFPREGSET_T_BROKEN 1
+EOF
+
+ fi
+ fi
+
+
echo $ac_n "checking for PIOCSET ioctl entry in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:4548: checking for PIOCSET ioctl entry in sys/procfs.h" >&5
+echo "configure:4741: checking for PIOCSET ioctl entry in sys/procfs.h" >&5
if eval "test \"`echo '$''{'gdb_cv_have_procfs_piocset'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4553 "configure"
+#line 4746 "configure"
#include "confdefs.h"
#include <unistd.h>
#include <sys/types.h>
@@ -4562,7 +4755,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:4566: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4759: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_procfs_piocset=yes
else
@@ -4584,7 +4777,7 @@ EOF
fi
echo $ac_n "checking for main in -lm""... $ac_c" 1>&6
-echo "configure:4588: checking for main in -lm" >&5
+echo "configure:4781: checking for main in -lm" >&5
ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4592,14 +4785,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4596 "configure"
+#line 4789 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:4603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4628,7 +4821,7 @@ fi
echo $ac_n "checking for wctype in -lc""... $ac_c" 1>&6
-echo "configure:4632: checking for wctype in -lc" >&5
+echo "configure:4825: checking for wctype in -lc" >&5
ac_lib_var=`echo c'_'wctype | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4636,7 +4829,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lc $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4640 "configure"
+#line 4833 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4647,7 +4840,7 @@ int main() {
wctype()
; return 0; }
EOF
-if { (eval echo configure:4651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4666,7 +4859,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for wctype in -lw""... $ac_c" 1>&6
-echo "configure:4670: checking for wctype in -lw" >&5
+echo "configure:4863: checking for wctype in -lw" >&5
ac_lib_var=`echo w'_'wctype | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4674,7 +4867,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lw $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4678 "configure"
+#line 4871 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4685,7 +4878,7 @@ int main() {
wctype()
; return 0; }
EOF
-if { (eval echo configure:4689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4882: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4717,12 +4910,12 @@ fi
echo $ac_n "checking for long long support in compiler""... $ac_c" 1>&6
-echo "configure:4721: checking for long long support in compiler" >&5
+echo "configure:4914: checking for long long support in compiler" >&5
if eval "test \"`echo '$''{'gdb_cv_c_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4726 "configure"
+#line 4919 "configure"
#include "confdefs.h"
int main() {
@@ -4732,7 +4925,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:4736: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4929: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_c_long_long=yes
else
@@ -4754,7 +4947,7 @@ fi
echo $ac_n "checking for long long support in printf""... $ac_c" 1>&6
-echo "configure:4758: checking for long long support in printf" >&5
+echo "configure:4951: checking for long long support in printf" >&5
if eval "test \"`echo '$''{'gdb_cv_printf_has_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4762,7 +4955,7 @@ else
gdb_cv_printf_has_long_long=no
else
cat > conftest.$ac_ext <<EOF
-#line 4766 "configure"
+#line 4959 "configure"
#include "confdefs.h"
int main () {
@@ -4776,7 +4969,7 @@ int main () {
return (strcmp ("0x0123456789abcdef", buf));
}
EOF
-if { (eval echo configure:4780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
gdb_cv_printf_has_long_long=yes
else
@@ -4800,19 +4993,19 @@ echo "$ac_t""$gdb_cv_printf_has_long_long" 1>&6
echo $ac_n "checking for long double support in compiler""... $ac_c" 1>&6
-echo "configure:4804: checking for long double support in compiler" >&5
+echo "configure:4997: checking for long double support in compiler" >&5
if eval "test \"`echo '$''{'ac_cv_c_long_double'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4809 "configure"
+#line 5002 "configure"
#include "confdefs.h"
int main() {
long double foo;
; return 0; }
EOF
-if { (eval echo configure:4816: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_long_double=yes
else
@@ -4834,7 +5027,7 @@ fi
echo $ac_n "checking for long double support in printf""... $ac_c" 1>&6
-echo "configure:4838: checking for long double support in printf" >&5
+echo "configure:5031: checking for long double support in printf" >&5
if eval "test \"`echo '$''{'gdb_cv_printf_has_long_double'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4842,7 +5035,7 @@ else
gdb_cv_printf_has_long_double=no
else
cat > conftest.$ac_ext <<EOF
-#line 4846 "configure"
+#line 5039 "configure"
#include "confdefs.h"
int main () {
@@ -4852,7 +5045,7 @@ int main () {
return (strncmp ("3.14159", buf, 7));
}
EOF
-if { (eval echo configure:4856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
gdb_cv_printf_has_long_double=yes
else
@@ -4876,7 +5069,7 @@ echo "$ac_t""$gdb_cv_printf_has_long_double" 1>&6
echo $ac_n "checking for long double support in scanf""... $ac_c" 1>&6
-echo "configure:4880: checking for long double support in scanf" >&5
+echo "configure:5073: checking for long double support in scanf" >&5
if eval "test \"`echo '$''{'gdb_cv_scanf_has_long_double'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4884,7 +5077,7 @@ else
gdb_cv_scanf_has_long_double=no
else
cat > conftest.$ac_ext <<EOF
-#line 4888 "configure"
+#line 5081 "configure"
#include "confdefs.h"
int main () {
@@ -4894,7 +5087,7 @@ int main () {
return !(f > 3.14159 && f < 3.14160);
}
EOF
-if { (eval echo configure:4898: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
gdb_cv_scanf_has_long_double=yes
else
@@ -4920,17 +5113,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4924: checking for $ac_hdr" >&5
+echo "configure:5117: 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 4929 "configure"
+#line 5122 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4934: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5127: \"$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*
@@ -4959,12 +5152,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4963: checking for $ac_func" >&5
+echo "configure:5156: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4968 "configure"
+#line 5161 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4987,7 +5180,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5012,7 +5205,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:5016: checking for working mmap" >&5
+echo "configure:5209: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5020,7 +5213,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 5024 "configure"
+#line 5217 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -5160,7 +5353,7 @@ main()
}
EOF
-if { (eval echo configure:5164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -5189,7 +5382,7 @@ if test ${build} = ${host} -a ${host} = ${target} ; then
case ${host_os} in
hpux*)
echo $ac_n "checking for HPUX/OSF thread support""... $ac_c" 1>&6
-echo "configure:5193: checking for HPUX/OSF thread support" >&5
+echo "configure:5386: checking for HPUX/OSF thread support" >&5
if test -f /usr/include/dce/cma_config.h ; then
if test "$GCC" = "yes" ; then
echo "$ac_t""yes" 1>&6
@@ -5208,7 +5401,7 @@ EOF
;;
solaris*)
echo $ac_n "checking for Solaris thread debugging library""... $ac_c" 1>&6
-echo "configure:5212: checking for Solaris thread debugging library" >&5
+echo "configure:5405: checking for Solaris thread debugging library" >&5
if test -f /usr/lib/libthread_db.so.1 ; then
echo "$ac_t""yes" 1>&6
cat >> confdefs.h <<\EOF
@@ -5218,7 +5411,7 @@ EOF
CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:5222: checking for dlopen in -ldl" >&5
+echo "configure:5415: checking for dlopen in -ldl" >&5
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5226,7 +5419,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5230 "configure"
+#line 5423 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5237,7 +5430,7 @@ int main() {
dlopen()
; return 0; }
EOF
-if { (eval echo configure:5241: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5269,17 +5462,17 @@ fi
# all symbols visible in the dynamic symbol table.
hold_ldflags=$LDFLAGS
echo $ac_n "checking for the ld -export-dynamic flag""... $ac_c" 1>&6
-echo "configure:5273: checking for the ld -export-dynamic flag" >&5
+echo "configure:5466: checking for the ld -export-dynamic flag" >&5
LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
cat > conftest.$ac_ext <<EOF
-#line 5276 "configure"
+#line 5469 "configure"
#include "confdefs.h"
int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:5283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
found=yes
else
@@ -5298,13 +5491,13 @@ rm -f conftest*
# Sun randomly tweaked the prototypes in <proc_service.h>
# at one point.
echo $ac_n "checking if <proc_service.h> is old""... $ac_c" 1>&6
-echo "configure:5302: checking if <proc_service.h> is old" >&5
+echo "configure:5495: checking if <proc_service.h> is old" >&5
if eval "test \"`echo '$''{'gdb_cv_proc_service_is_old'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5308 "configure"
+#line 5501 "configure"
#include "confdefs.h"
#include <proc_service.h>
@@ -5315,7 +5508,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:5319: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5512: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_proc_service_is_old=no
else
@@ -5390,21 +5583,20 @@ fi
case ${enable_tui} in
"yes" )
- cat >> confdefs.h <<\EOF
-#define TUI 1
-EOF
-
- BUILD_TUI=all-tui
- TUI_LIBRARY=tui/libtui.a
- ;;
- * )
- BUILD_TUI=
- TUI_LIBRARY=
- ;;
+ if test -d "${srcdir}/tui" ; then
+ CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_TUI_OBS)"
+ CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_TUI_DEPS)"
+ CONFIG_SRCS="${CONFIG_SRS} \$(SUBDIR_TUI_SRCS)"
+ CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_TUI_INITS)"
+ ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_TUI_CFLAGS)"
+ CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_TUI_ALL)"
+ CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_TUI_CLEAN)"
+ CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_TUI_INSTALL)"
+ CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_TUI_UNINSTALL)"
+ fi
+ ;;
esac
-
-
# Check whether --enable-netrom or --disable-netrom was given.
if test "${enable_netrom+set}" = set; then
enableval="$enable_netrom"
@@ -5422,10 +5614,16 @@ if test "${enable_netrom}" = "yes"; then
fi
+# Don't add -Wall or -Wunused, they include -Wunused-parameter which
+# causes noise.
build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
--Wformat -Wparentheses -Wpointer-arith"
-# Not yet: -Wall -Wpointer-arith -Wstrict-prototypes
-# -Wmissing-prototypes -Wmissing-declarations
+-Wformat -Wparentheses -Wpointer-arith -Wuninitialized"
+# Up for debate: -Wswitch -Wcomment -trigraphs -Wtrigraphs
+# -Wunused-function -Wunused-label -Wunused-variable -Wunused-value
+# -Wchar-subscripts -Wuninitialized -Wtraditional -Wshadow -Wcast-qual
+# -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes
+# -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls
+# -Woverloaded-virtual -Winline -Werror"
# Check whether --enable-build-warnings or --disable-build-warnings was given.
if test "${enable_build_warnings+set}" = set; then
enableval="$enable_build_warnings"
@@ -5439,21 +5637,29 @@ if test "${enable_build_warnings+set}" = set; then
*) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
esac
if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
- echo "Setting warning flags = $build_warnings" 6>&1
+ echo "Setting compiler warning flags = $build_warnings" 6>&1
fi
fi
WARN_CFLAGS=""
WERROR_CFLAGS=""
if test "x${build_warnings}" != x -a "x$GCC" = xyes
then
- # Separate out the -Werror flag as some files just cannot be
- # compiled with it enabled.
- for w in ${build_warnings}; do
- case $w in
- -Werr*) WERROR_CFLAGS=-Werror ;;
- *) WARN_CFLAGS="${WARN_CFLAGS} $w"
- esac
- done
+ echo $ac_n "checking compiler warning flags""... $ac_c" 1>&6
+echo "configure:5649: checking compiler warning flags" >&5
+ # Separate out the -Werror flag as some files just cannot be
+ # compiled with it enabled.
+ for w in ${build_warnings}; do
+ case $w in
+ -Werr*) WERROR_CFLAGS=-Werror ;;
+ *) # Check that GCC accepts it
+ if $CC $w 2>&1 | grep 'unrecognized option' > /dev/null; then
+ :
+ else
+ WARN_CFLAGS="${WARN_CFLAGS} $w"
+ fi
+ esac
+ done
+ echo "$ac_t""${WARN_CFLAGS}${WERROR_CFLAGS}" 1>&6
fi
@@ -5500,16 +5706,14 @@ else
want_included_regex=true
fi
-REGEX="gnu-regex.o"
-REGEX_CFLAGS="-DUSE_INCLUDED_REGEX"
if test $want_included_regex = false; then
echo $ac_n "checking for GNU regex""... $ac_c" 1>&6
-echo "configure:5508: checking for GNU regex" >&5
+echo "configure:5712: checking for GNU regex" >&5
if eval "test \"`echo '$''{'gdb_cv_have_gnu_regex'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5513 "configure"
+#line 5717 "configure"
#include "confdefs.h"
#include <gnu-versions.h>
#include <sys/types.h>
@@ -5521,7 +5725,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:5525: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5729: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_gnu_regex=yes
else
@@ -5534,22 +5738,28 @@ rm -f conftest*
fi
echo "$ac_t""$gdb_cv_have_gnu_regex" 1>&6
- if test $gdb_cv_have_gnu_regex = yes; then
- REGEX=
- REGEX_CFLAGS=
+ if test $gdb_cv_have_gnu_regex = no; then
+ want_included_regex=true
fi
fi
+if test x${want_included_regex} = xtrue; then
+ REGEX="gnu-regex.o"
+ cat >> confdefs.h <<\EOF
+#define USE_INCLUDED_REGEX 1
+EOF
+
+fi
# In the Cygwin environment, we need some additional flags.
echo $ac_n "checking for cygwin""... $ac_c" 1>&6
-echo "configure:5548: checking for cygwin" >&5
+echo "configure:5758: checking for cygwin" >&5
if eval "test \"`echo '$''{'gdb_cv_os_cygwin'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5553 "configure"
+#line 5763 "configure"
#include "confdefs.h"
#if defined (__CYGWIN__) || defined (__CYGWIN32__)
@@ -5570,11 +5780,6 @@ fi
echo "$ac_t""$gdb_cv_os_cygwin" 1>&6
-DLLTOOL=${DLLTOOL-dlltool}
-WINDRES=${WINDRES-windres}
-
-
-
if test x$gdb_host = xgo32; then
TERM_LIB=
else
@@ -5583,7 +5788,7 @@ if test x$gdb_cv_os_cygwin = xyes; then
else
TERM_LIB=
echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:5587: checking for tgetent in -lncurses" >&5
+echo "configure:5792: checking for tgetent in -lncurses" >&5
ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5591,7 +5796,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lncurses $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5595 "configure"
+#line 5800 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5602,7 +5807,7 @@ int main() {
tgetent()
; return 0; }
EOF
-if { (eval echo configure:5606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5621,7 +5826,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for tgetent in -lHcurses""... $ac_c" 1>&6
-echo "configure:5625: checking for tgetent in -lHcurses" >&5
+echo "configure:5830: checking for tgetent in -lHcurses" >&5
ac_lib_var=`echo Hcurses'_'tgetent | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5629,7 +5834,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lHcurses $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5633 "configure"
+#line 5838 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5640,7 +5845,7 @@ int main() {
tgetent()
; return 0; }
EOF
-if { (eval echo configure:5644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5849: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5659,7 +5864,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for tgetent in -ltermlib""... $ac_c" 1>&6
-echo "configure:5663: checking for tgetent in -ltermlib" >&5
+echo "configure:5868: checking for tgetent in -ltermlib" >&5
ac_lib_var=`echo termlib'_'tgetent | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5667,7 +5872,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ltermlib $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5671 "configure"
+#line 5876 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5678,7 +5883,7 @@ int main() {
tgetent()
; return 0; }
EOF
-if { (eval echo configure:5682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5697,7 +5902,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
-echo "configure:5701: checking for tgetent in -ltermcap" >&5
+echo "configure:5906: checking for tgetent in -ltermcap" >&5
ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5705,7 +5910,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ltermcap $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5709 "configure"
+#line 5914 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5716,7 +5921,7 @@ int main() {
tgetent()
; return 0; }
EOF
-if { (eval echo configure:5720: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5735,7 +5940,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6
-echo "configure:5739: checking for tgetent in -lcurses" >&5
+echo "configure:5944: checking for tgetent in -lcurses" >&5
ac_lib_var=`echo curses'_'tgetent | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5743,7 +5948,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lcurses $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5747 "configure"
+#line 5952 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5754,7 +5959,7 @@ int main() {
tgetent()
; return 0; }
EOF
-if { (eval echo configure:5758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5773,7 +5978,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for tgetent in -lterminfo""... $ac_c" 1>&6
-echo "configure:5777: checking for tgetent in -lterminfo" >&5
+echo "configure:5982: checking for tgetent in -lterminfo" >&5
ac_lib_var=`echo terminfo'_'tgetent | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5781,7 +5986,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lterminfo $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5785 "configure"
+#line 5990 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5792,7 +5997,7 @@ int main() {
tgetent()
; return 0; }
EOF
-if { (eval echo configure:5796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5950,7 +6155,7 @@ if test "${with_tclconfig+set}" = set; then
fi
echo $ac_n "checking for Tcl configuration""... $ac_c" 1>&6
-echo "configure:5954: checking for Tcl configuration" >&5
+echo "configure:6159: checking for Tcl configuration" >&5
if eval "test \"`echo '$''{'ac_cv_c_tclconfig'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6058,7 +6263,7 @@ if test "${with_tkconfig+set}" = set; then
fi
echo $ac_n "checking for Tk configuration""... $ac_c" 1>&6
-echo "configure:6062: checking for Tk configuration" >&5
+echo "configure:6267: checking for Tk configuration" >&5
if eval "test \"`echo '$''{'ac_cv_c_tkconfig'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6154,7 +6359,7 @@ fi
no_tcl=true
echo $ac_n "checking for Tcl private headers. dir=${configdir}""... $ac_c" 1>&6
-echo "configure:6158: checking for Tcl private headers. dir=${configdir}" >&5
+echo "configure:6363: checking for Tcl private headers. dir=${configdir}" >&5
# Check whether --with-tclinclude or --without-tclinclude was given.
if test "${with_tclinclude+set}" = set; then
withval="$with_tclinclude"
@@ -6220,17 +6425,17 @@ fi
if test x"${ac_cv_c_tclh}" = x ; then
ac_safe=`echo "tclInt.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for tclInt.h""... $ac_c" 1>&6
-echo "configure:6224: checking for tclInt.h" >&5
+echo "configure:6429: checking for tclInt.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6229 "configure"
+#line 6434 "configure"
#include "confdefs.h"
#include <tclInt.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6439: \"$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*
@@ -6290,7 +6495,7 @@ fi
#
no_tk=true
echo $ac_n "checking for Tk private headers""... $ac_c" 1>&6
-echo "configure:6294: checking for Tk private headers" >&5
+echo "configure:6499: checking for Tk private headers" >&5
# Check whether --with-tkinclude or --without-tkinclude was given.
if test "${with_tkinclude+set}" = set; then
withval="$with_tkinclude"
@@ -6356,17 +6561,17 @@ fi
if test x"${ac_cv_c_tkh}" = x ; then
ac_safe=`echo "tk.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for tk.h""... $ac_c" 1>&6
-echo "configure:6360: checking for tk.h" >&5
+echo "configure:6565: checking for tk.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6365 "configure"
+#line 6570 "configure"
#include "confdefs.h"
#include <tk.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6370: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6575: \"$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*
@@ -6412,7 +6617,7 @@ fi
echo $ac_n "checking for Itcl private headers. srcdir=${srcdir}""... $ac_c" 1>&6
-echo "configure:6416: checking for Itcl private headers. srcdir=${srcdir}" >&5
+echo "configure:6621: checking for Itcl private headers. srcdir=${srcdir}" >&5
if test x"${ac_cv_c_itclh}" = x ; then
for i in ${srcdir}/../itcl ${srcdir}/../../itcl ${srcdir}/../../../itcl ${srcdir}/../itcl/itcl; do
if test -f $i/generic/itcl.h ; then
@@ -6435,7 +6640,7 @@ fi
echo $ac_n "checking for Itk private headers. srcdir=${srcdir}""... $ac_c" 1>&6
-echo "configure:6439: checking for Itk private headers. srcdir=${srcdir}" >&5
+echo "configure:6644: checking for Itk private headers. srcdir=${srcdir}" >&5
if test x"${ac_cv_c_itkh}" = x ; then
for i in ${srcdir}/../itcl ${srcdir}/../../itcl ${srcdir}/../../../itcl ${srcdir}/../itcl/itk; do
if test -f $i/generic/itk.h ; then
@@ -6458,7 +6663,7 @@ fi
echo $ac_n "checking for Tix private headers. srcdir=${srcdir}""... $ac_c" 1>&6
-echo "configure:6462: checking for Tix private headers. srcdir=${srcdir}" >&5
+echo "configure:6667: checking for Tix private headers. srcdir=${srcdir}" >&5
if test x"${ac_cv_c_tixh}" = x ; then
for i in ${srcdir}/../tix ${srcdir}/../../tix ${srcdir}/../../../tix ; do
if test -f $i/generic/tix.h ; then
@@ -6496,7 +6701,7 @@ if test "${with_itclconfig+set}" = set; then
fi
echo $ac_n "checking for Itcl configuration""... $ac_c" 1>&6
-echo "configure:6500: checking for Itcl configuration" >&5
+echo "configure:6705: checking for Itcl configuration" >&5
if eval "test \"`echo '$''{'ac_cv_c_itclconfig'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6608,7 +6813,7 @@ if test "${with_itkconfig+set}" = set; then
fi
echo $ac_n "checking for Itk configuration""... $ac_c" 1>&6
-echo "configure:6612: checking for Itk configuration" >&5
+echo "configure:6817: checking for Itk configuration" >&5
if eval "test \"`echo '$''{'ac_cv_c_itkconfig'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6720,7 +6925,7 @@ if test "${with_tixconfig+set}" = set; then
fi
echo $ac_n "checking for Tix configuration""... $ac_c" 1>&6
-echo "configure:6724: checking for Tix configuration" >&5
+echo "configure:6929: checking for Tix configuration" >&5
if eval "test \"`echo '$''{'ac_cv_c_tixconfig'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6859,7 +7064,7 @@ fi
# Uses ac_ vars as temps to allow command line to override cache and checks.
# --without-x overrides everything else, but does not touch the cache.
echo $ac_n "checking for X""... $ac_c" 1>&6
-echo "configure:6863: checking for X" >&5
+echo "configure:7068: checking for X" >&5
# Check whether --with-x or --without-x was given.
if test "${with_x+set}" = set; then
@@ -6921,12 +7126,12 @@ if test "$ac_x_includes" = NO; then
# First, try using that file with no special directory specified.
cat > conftest.$ac_ext <<EOF
-#line 6925 "configure"
+#line 7130 "configure"
#include "confdefs.h"
#include <$x_direct_test_include>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6930: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7135: \"$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*
@@ -6995,14 +7200,14 @@ if test "$ac_x_libraries" = NO; then
ac_save_LIBS="$LIBS"
LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6999 "configure"
+#line 7204 "configure"
#include "confdefs.h"
int main() {
${x_direct_test_function}()
; return 0; }
EOF
-if { (eval echo configure:7006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
LIBS="$ac_save_LIBS"
# We can link X programs with no special library path.
@@ -7284,7 +7489,7 @@ files="${files} config/nm-empty.h"
links="${links} nm.h"
fi
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:7288: checking whether ln -s works" >&5
+echo "configure:7493: checking whether ln -s works" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7308,12 +7513,12 @@ fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:7312: checking for Cygwin environment" >&5
+echo "configure:7517: 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 7317 "configure"
+#line 7522 "configure"
#include "confdefs.h"
int main() {
@@ -7324,7 +7529,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:7328: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7533: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -7341,19 +7546,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:7345: checking for mingw32 environment" >&5
+echo "configure:7550: 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 7350 "configure"
+#line 7555 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:7357: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -7372,7 +7577,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:7376: checking for executable suffix" >&5
+echo "configure:7581: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7382,10 +7587,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:7386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:7591: \"$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
@@ -7506,7 +7711,7 @@ done
ac_given_srcdir=$srcdir
ac_given_INSTALL="$INSTALL"
-trap 'rm -fr `echo "Makefile tui/Makefile .gdbinit:gdbinit.in config.h:config.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+trap 'rm -fr `echo "Makefile .gdbinit:gdbinit.in config.h:config.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
cat >> $CONFIG_STATUS <<EOF
@@ -7538,6 +7743,9 @@ s%@includedir@%$includedir%g
s%@oldincludedir@%$oldincludedir%g
s%@infodir@%$infodir%g
s%@mandir@%$mandir%g
+s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g
+s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g
+s%@MAINT@%$MAINT%g
s%@CC@%$CC%g
s%@CPP@%$CPP%g
s%@host@%$host%g
@@ -7583,19 +7791,16 @@ s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
s%@INSTALL_DATA@%$INSTALL_DATA%g
s%@AR@%$AR%g
+s%@DLLTOOL@%$DLLTOOL%g
+s%@WINDRES@%$WINDRES%g
s%@YACC@%$YACC%g
s%@MIG@%$MIG%g
s%@CONFIG_LDFLAGS@%$CONFIG_LDFLAGS%g
-s%@BUILD_TUI@%$BUILD_TUI%g
-s%@TUI_LIBRARY@%$TUI_LIBRARY%g
s%@WARN_CFLAGS@%$WARN_CFLAGS%g
s%@WERROR_CFLAGS@%$WERROR_CFLAGS%g
s%@MMALLOC_CFLAGS@%$MMALLOC_CFLAGS%g
s%@MMALLOC@%$MMALLOC%g
s%@REGEX@%$REGEX%g
-s%@REGEX_CFLAGS@%$REGEX_CFLAGS%g
-s%@DLLTOOL@%$DLLTOOL%g
-s%@WINDRES@%$WINDRES%g
s%@TERM_LIB@%$TERM_LIB%g
s%@WIN32LIBS@%$WIN32LIBS%g
s%@LIBGUI@%$LIBGUI%g
@@ -7717,7 +7922,7 @@ EOF
cat >> $CONFIG_STATUS <<EOF
-CONFIG_FILES=\${CONFIG_FILES-"Makefile tui/Makefile .gdbinit:gdbinit.in"}
+CONFIG_FILES=\${CONFIG_FILES-"Makefile .gdbinit:gdbinit.in"}
EOF
cat >> $CONFIG_STATUS <<\EOF
for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
diff --git a/gdb/configure.host b/gdb/configure.host
index 02b6909e3a2..db720b1345f 100644
--- a/gdb/configure.host
+++ b/gdb/configure.host
@@ -17,7 +17,6 @@ hppa*) gdb_host_cpu=pa ;;
i[3456]86*) gdb_host_cpu=i386 ;;
m68*) gdb_host_cpu=m68k ;;
m88*) gdb_host_cpu=m88k ;;
-# OBSOLETE np1) gdb_host_cpu=gould ;;
# OBSOLETE pyramid) gdb_host_cpu=pyr ;;
powerpc*) gdb_host_cpu=powerpc ;;
sparc64) gdb_host_cpu=sparc ;;
@@ -35,6 +34,7 @@ alpha*-*-osf1*) gdb_host=alpha-osf1 ;;
alpha*-*-osf2*) gdb_host=alpha-osf2 ;;
alpha*-*-osf[3456789]*) gdb_host=alpha-osf3 ;;
alpha*-*-linux*) gdb_host=alpha-linux ;;
+alpha*-*-freebsd*) gdb_host=fbsd ;;
arm*-*-linux*) gdb_host=linux ;;
arm*-*-*) gdb_host=arm ;;
@@ -57,6 +57,8 @@ i[3456]86-*-aix*) gdb_host=i386aix ;;
i[3456]86-*-bsd*) gdb_host=i386bsd ;;
i[3456]86-*-dgux*) gdb_host=i386dgux ;;
i[3456]86-*-freebsd*) gdb_host=fbsd ;;
+i[3456]86-*-netbsdelf*) gdb_host=nbsdelf ;;
+i[3456]86-*-netbsdaout*) gdb_host=nbsd ;;
i[3456]86-*-netbsd*) gdb_host=nbsd ;;
i[3456]86-*-go32*) gdb_host=go32 ;;
i[3456]86-*-msdosdjgpp*) gdb_host=go32 ;;
@@ -127,8 +129,6 @@ mips-*-riscos*) gdb_host=riscos ;;
none-*-*) gdb_host=none ;;
-# OBSOLETE np1-*-*) gdb_host=np1 ;;
-
ns32k-*-mach3*) gdb_host=ns32km3 ;;
ns32k-*-netbsd*) gdb_host=nbsd ;;
ns32k-umax-*) gdb_host=umax ;;
@@ -138,6 +138,7 @@ powerpc-*-aix*) gdb_host=aix ;;
powerpcle-*-cygwin*) gdb_host=cygwin ;;
powerpcle-*-solaris*) gdb_host=solaris ;;
powerpc-*-linux*) gdb_host=linux ;;
+powerpc-*-netbsd*) gdb_host=nbsd ;;
# OBSOLETE pn-*-*) gdb_host=pn ;;
diff --git a/gdb/configure.in b/gdb/configure.in
index 4d475140cde..d7a725ea689 100644
--- a/gdb/configure.in
+++ b/gdb/configure.in
@@ -22,6 +22,7 @@ dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.13)dnl
AC_INIT(main.c)
AC_CONFIG_HEADER(config.h:config.in)
+AM_MAINTAINER_MODE
AC_PROG_CC
AC_AIX
@@ -77,6 +78,8 @@ AC_PROG_AWK
AC_PROG_INSTALL
AC_CHECK_TOOL(AR, ar)
AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(DLLTOOL, dlltool)
+AC_CHECK_TOOL(WINDRES, windres)
AC_PROG_YACC
dnl MiG is needed for the Hurd.
@@ -96,12 +99,14 @@ case $host_os in solaris2.7) case "$GCC" in yes)
AC_DEFINE(_MSE_INT_H)
esac; esac
-AC_CHECK_HEADERS(ctype.h curses.h endian.h link.h thread_db.h proc_service.h \
+AC_CHECK_HEADERS(ctype.h endian.h link.h thread_db.h proc_service.h \
memory.h objlist.h ptrace.h sgtty.h stddef.h stdlib.h \
string.h sys/procfs.h sys/ptrace.h sys/reg.h stdint.h \
term.h termio.h termios.h unistd.h wait.h sys/wait.h \
wchar.h wctype.h asm/debugreg.h sys/debugreg.h sys/select.h \
- time.h sys/ioctl.h)
+ time.h sys/ioctl.h sys/user.h \
+ dirent.h sys/ndir.h sys/dir.h ndir.h \
+ curses.h ncurses.h)
AC_HEADER_STAT
AC_C_CONST
@@ -109,6 +114,21 @@ AC_C_CONST
AC_CHECK_FUNCS(setpgid sbrk sigaction isascii bzero bcopy btowc poll sigprocmask)
AC_FUNC_ALLOCA
+# See if machine/reg.h supports the %fs and %gs i386 segment registers.
+# Older i386 BSD's don't have the r_fs and r_gs members of `struct reg'.
+AC_CACHE_CHECK([for r_fs in struct reg], gdb_cv_struct_reg_r_fs,
+[AC_TRY_COMPILE([#include <machine/reg.h>], [struct reg r; r.r_fs;],
+gdb_cv_struct_reg_r_fs=yes, gdb_cv_struct_reg_r_fs=no)])
+if test $gdb_cv_struct_reg_r_fs = yes; then
+ AC_DEFINE(HAVE_STRUCT_REG_R_FS)
+fi
+AC_CACHE_CHECK([for r_gs in struct reg], gdb_cv_struct_reg_r_gs,
+[AC_TRY_COMPILE([#include <machine/reg.h>], [struct reg r; r.r_gs;],
+gdb_cv_struct_reg_r_gs=yes, gdb_cv_struct_reg_r_gs=no)])
+if test $gdb_cv_struct_reg_r_gs = yes; then
+ AC_DEFINE(HAVE_STRUCT_REG_R_GS)
+fi
+
dnl See if ptrace.h provides the PTRACE_GETREGS request.
AC_MSG_CHECKING(for PTRACE_GETREGS)
AC_CACHE_VAL(gdb_cv_have_ptrace_getregs,
@@ -200,6 +220,32 @@ if test "$ac_cv_header_sys_procfs_h" = yes; then
BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
+ dnl Check for broken prfpregset_t type
+
+ dnl For Linux/i386, glibc 2.1.3 was released with a bogus
+ dnl prfpregset_t type (it's a typedef for the pointer to a struct
+ dnl instead of the struct itself). We detect this here, and work
+ dnl around it in lin-thread.c.
+
+ if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
+ AC_MSG_CHECKING(whether prfpregset_t type is broken)
+ AC_CACHE_VAL(gdb_cv_prfpregset_t_broken,
+ [AC_TRY_RUN([#include <sys/procfs.h>
+ int main ()
+ {
+ if (sizeof (prfpregset_t) == sizeof (void *))
+ return 1;
+ return 0;
+ }],
+ gdb_cv_prfpregset_t_broken=no,
+ gdb_cv_prfpregset_t_broken=yes,
+ gdb_cv_prfpregset_t_broken=yes)])
+ AC_MSG_RESULT($gdb_cv_prfpregset_t_broken)
+ if test $gdb_cv_prfpregset_t_broken = yes; then
+ AC_DEFINE(PRFPREGSET_T_BROKEN)
+ fi
+ fi
+
dnl Check for PIOCSET ioctl entry
AC_MSG_CHECKING(for PIOCSET ioctl entry in sys/procfs.h)
@@ -429,17 +475,19 @@ AC_ARG_ENABLE(tui,
])
case ${enable_tui} in
"yes" )
- AC_DEFINE(TUI)
- BUILD_TUI=all-tui
- TUI_LIBRARY=tui/libtui.a
- ;;
- * )
- BUILD_TUI=
- TUI_LIBRARY=
- ;;
+ if test -d "${srcdir}/tui" ; then
+ CONFIG_OBS="${CONFIG_OBS} \$(SUBDIR_TUI_OBS)"
+ CONFIG_DEPS="${CONFIG_DEPS} \$(SUBDIR_TUI_DEPS)"
+ CONFIG_SRCS="${CONFIG_SRS} \$(SUBDIR_TUI_SRCS)"
+ CONFIG_INITS="${CONFIG_INITS} \$(SUBDIR_TUI_INITS)"
+ ENABLE_CFLAGS="${ENABLE_CFLAGS} \$(SUBDIR_TUI_CFLAGS)"
+ CONFIG_ALL="${CONFIG_ALL} \$(SUBDIR_TUI_ALL)"
+ CONFIG_CLEAN="${CONFIG_CLEAN} \$(SUBDIR_TUI_CLEAN)"
+ CONFIG_INSTALL="${CONFIG_INSTALL} \$(SUBDIR_TUI_INSTALL)"
+ CONFIG_UNINSTALL="${CONFIG_UNINSTALL} \$(SUBDIR_TUI_UNINSTALL)"
+ fi
+ ;;
esac
-AC_SUBST(BUILD_TUI)
-AC_SUBST(TUI_LIBRARY)
AC_ARG_ENABLE(netrom,
[ --enable-netrom Enable NetROM support],
@@ -455,10 +503,16 @@ if test "${enable_netrom}" = "yes"; then
fi
+# Don't add -Wall or -Wunused, they include -Wunused-parameter which
+# causes noise.
build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
--Wformat -Wparentheses -Wpointer-arith"
-# Not yet: -Wall -Wpointer-arith -Wstrict-prototypes
-# -Wmissing-prototypes -Wmissing-declarations
+-Wformat -Wparentheses -Wpointer-arith -Wuninitialized"
+# Up for debate: -Wswitch -Wcomment -trigraphs -Wtrigraphs
+# -Wunused-function -Wunused-label -Wunused-variable -Wunused-value
+# -Wchar-subscripts -Wuninitialized -Wtraditional -Wshadow -Wcast-qual
+# -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes
+# -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls
+# -Woverloaded-virtual -Winline -Werror"
AC_ARG_ENABLE(build-warnings,
[ --enable-build-warnings Enable build-time compiler warnings if gcc is used],
[case "${enableval}" in
@@ -471,20 +525,27 @@ AC_ARG_ENABLE(build-warnings,
*) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
esac
if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
- echo "Setting warning flags = $build_warnings" 6>&1
+ echo "Setting compiler warning flags = $build_warnings" 6>&1
fi])dnl
WARN_CFLAGS=""
WERROR_CFLAGS=""
if test "x${build_warnings}" != x -a "x$GCC" = xyes
then
- # Separate out the -Werror flag as some files just cannot be
- # compiled with it enabled.
- for w in ${build_warnings}; do
- case $w in
- -Werr*) WERROR_CFLAGS=-Werror ;;
- *) WARN_CFLAGS="${WARN_CFLAGS} $w"
- esac
- done
+ AC_MSG_CHECKING(compiler warning flags)
+ # Separate out the -Werror flag as some files just cannot be
+ # compiled with it enabled.
+ for w in ${build_warnings}; do
+ case $w in
+ -Werr*) WERROR_CFLAGS=-Werror ;;
+ *) # Check that GCC accepts it
+ if $CC $w 2>&1 | grep 'unrecognized option' > /dev/null; then
+ :
+ else
+ WARN_CFLAGS="${WARN_CFLAGS} $w"
+ fi
+ esac
+ done
+ AC_MSG_RESULT(${WARN_CFLAGS}${WERROR_CFLAGS})
fi
AC_SUBST(WARN_CFLAGS)
AC_SUBST(WERROR_CFLAGS)
@@ -517,8 +578,6 @@ AC_ARG_WITH(included-regex,
*) AC_MSG_ERROR(bad value ${withval} for GDB with-included-regex option) ;;
esac],[want_included_regex=true])dnl
-REGEX="gnu-regex.o"
-REGEX_CFLAGS="-DUSE_INCLUDED_REGEX"
if test $want_included_regex = false; then
AC_MSG_CHECKING(for GNU regex)
AC_CACHE_VAL(gdb_cv_have_gnu_regex,
@@ -532,13 +591,16 @@ if test $want_included_regex = false; then
[gdb_cv_have_gnu_regex=yes],
[gdb_cv_have_gnu_regex=no])])
AC_MSG_RESULT($gdb_cv_have_gnu_regex)
- if test $gdb_cv_have_gnu_regex = yes; then
- REGEX=
- REGEX_CFLAGS=
+ if test $gdb_cv_have_gnu_regex = no; then
+ want_included_regex=true
fi
fi
+
+if test x${want_included_regex} = xtrue; then
+ REGEX="gnu-regex.o"
+ AC_DEFINE(USE_INCLUDED_REGEX)
+fi
AC_SUBST(REGEX)
-AC_SUBST(REGEX_CFLAGS)
# In the Cygwin environment, we need some additional flags.
AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin,
@@ -547,11 +609,6 @@ AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin,
lose
#endif],[gdb_cv_os_cygwin=yes],[gdb_cv_os_cygwin=no])])
-DLLTOOL=${DLLTOOL-dlltool}
-WINDRES=${WINDRES-windres}
-AC_SUBST(DLLTOOL)
-AC_SUBST(WINDRES)
-
dnl Figure out which term library to use.
if test x$gdb_host = xgo32; then
TERM_LIB=
@@ -973,7 +1030,7 @@ dnl Check for exe extension set on certain hosts (e.g. Win32)
AC_EXEEXT
AC_CONFIG_SUBDIRS($configdirs)
-AC_OUTPUT(Makefile tui/Makefile .gdbinit:gdbinit.in,
+AC_OUTPUT(Makefile .gdbinit:gdbinit.in,
[
dnl Autoconf doesn't provide a mechanism for modifying definitions
dnl provided by makefile fragments.
diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index 8ad51e13648..99deff296fc 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -20,9 +20,7 @@ i[3456]86*) gdb_target_cpu=i386 ;;
m68*) gdb_target_cpu=m68k ;;
m88*) gdb_target_cpu=m88k ;;
mips*) gdb_target_cpu=mips ;;
-# OBSOLETE np1) gdb_target_cpu=gould ;;
powerpc*) gdb_target_cpu=powerpc ;;
-# OBSOLETE pn) gdb_target_cpu=gould ;;
# OBSOLETE pyramid) gdb_target_cpu=pyr ;;
sparc*) gdb_target_cpu=sparc ;;
thumb*) gdb_target_cpu=arm ;;
@@ -48,11 +46,14 @@ a29k-*-vxworks*) gdb_target=vx29k ;;
alpha*-*-osf*) gdb_target=alpha-osf1 ;;
alpha*-*-linux*) gdb_target=alpha-linux ;;
+alpha*-*-freebsd*) gdb_target=fbsd ;;
arc-*-*) gdb_target=arc ;;
arm*-wince-pe) gdb_target=wince ;;
-arm*-*-linux*) gdb_target=linux ;;
+arm*-*-linux*) gdb_target=linux
+ configdirs="$configdirs gdbserver"
+ ;;
arm*-*-* | thumb*-*-* | strongarm*-*-*)
gdb_target=embed
configdirs="$configdirs rdi-share"
@@ -87,6 +88,8 @@ i[3456]86-*-elf*) gdb_target=embed ;;
i[3456]86-*-aix*) gdb_target=i386aix ;;
i[3456]86-*-bsd*) gdb_target=i386bsd ;;
i[3456]86-*-freebsd*) gdb_target=fbsd ;;
+i[3456]86-*-netbsdelf*) gdb_target=nbsdelf
+ configdirs="${configdirs} gdbserver" ;;
i[3456]86-*-netbsd*) gdb_target=nbsd
configdirs="${configdirs} gdbserver" ;;
i[3456]86-*-os9k) gdb_target=i386os9k ;;
@@ -211,16 +214,14 @@ mn10300-*-*) gdb_target=mn10300 ;;
none-*-*) gdb_target=none ;;
-# OBSOLETE np1-*-*) gdb_target=np1 ;;
-
ns32k-*-mach3*) gdb_target=ns32km3 ;;
ns32k-*-netbsd*) gdb_target=nbsd ;;
ns32k-utek-sysv*) gdb_target=merlin ;;
ns32k-utek-*) gdb_target=umax ;;
-# OBSOLETE pn-*-*) gdb_target=pn ;;
-
powerpc-*-macos*) gdb_target=macos ;;
+powerpc-*-netbsd*) gdb_target=nbsd
+ configdirs="${configdirs} gdbserver" ;;
powerpc-*-netware*) gdb_target=ppc-nw
configdirs="${configdirs} nlm" ;;
diff --git a/gdb/copying.c b/gdb/copying.c
index a36db1fe0f4..76414bdf122 100644
--- a/gdb/copying.c
+++ b/gdb/copying.c
@@ -5,11 +5,11 @@
#include "command.h"
#include "gdbcmd.h"
-static void show_copying_command PARAMS ((char *, int));
+static void show_copying_command (char *, int);
-static void show_warranty_command PARAMS ((char *, int));
+static void show_warranty_command (char *, int);
-void _initialize_copying PARAMS ((void));
+void _initialize_copying (void);
extern int immediate_quit;
static void
diff --git a/gdb/core-aout.c b/gdb/core-aout.c
index 9af47ab0900..ad64720eb17 100644
--- a/gdb/core-aout.c
+++ b/gdb/core-aout.c
@@ -41,7 +41,7 @@
/* These are needed on various systems to expand REGISTER_U_ADDR. */
#ifndef USG
-#include <sys/dir.h>
+#include "gdb_dirent.h"
#include <sys/file.h>
#include "gdb_stat.h"
#include <sys/user.h>
@@ -55,9 +55,9 @@
#include <sys/core.h>
#endif
-static void fetch_core_registers PARAMS ((char *, unsigned, int, CORE_ADDR));
+static void fetch_core_registers (char *, unsigned, int, CORE_ADDR);
-void _initialize_core_aout PARAMS ((void));
+void _initialize_core_aout (void);
/* Extract the register values out of the core file and store
them where `read_register' will find them.
diff --git a/gdb/core-regset.c b/gdb/core-regset.c
index 8f96c0f1842..2070da6e86e 100644
--- a/gdb/core-regset.c
+++ b/gdb/core-regset.c
@@ -48,9 +48,12 @@
#include "command.h"
#include "gdbcore.h"
-static void fetch_core_registers PARAMS ((char *, unsigned, int, CORE_ADDR));
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
-void _initialize_core_regset PARAMS ((void));
+static void fetch_core_registers (char *, unsigned, int, CORE_ADDR);
+
+void _initialize_core_regset (void);
/*
@@ -109,9 +112,8 @@ fetch_core_registers (core_reg_sect, core_reg_size, which, reg_addr)
else
{
memcpy ((char *) &fpregset, core_reg_sect, sizeof (fpregset));
-#if defined (FP0_REGNUM)
- supply_fpregset (&fpregset);
-#endif
+ if (FP0_REGNUM >= 0)
+ supply_fpregset (&fpregset);
}
}
#endif /* defined(HAVE_GREGSET_T) && defined (HAVE_FPREGSET_T) */
diff --git a/gdb/core-sol2.c b/gdb/core-sol2.c
index 3ce9cd460d0..46b5eb6086c 100644
--- a/gdb/core-sol2.c
+++ b/gdb/core-sol2.c
@@ -40,7 +40,10 @@
#include "command.h"
#include "gdbcore.h"
-static void fetch_core_registers PARAMS ((char *, unsigned, int, CORE_ADDR));
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
+static void fetch_core_registers (char *, unsigned, int, CORE_ADDR);
static void
fetch_core_registers (core_reg_sect, core_reg_size, which, reg_addr)
diff --git a/gdb/corefile.c b/gdb/corefile.c
index 4d11cbdcdf7..c8772de4c0a 100644
--- a/gdb/corefile.c
+++ b/gdb/corefile.c
@@ -40,8 +40,8 @@
/* Local function declarations. */
-extern void _initialize_core PARAMS ((void));
-static void call_extra_exec_file_hooks PARAMS ((char *filename));
+extern void _initialize_core (void);
+static void call_extra_exec_file_hooks (char *filename);
/* You can have any number of hooks for `exec_file_command' command to call.
If there's only one hook, it is set in exec_file_display hook.
@@ -51,7 +51,7 @@ static void call_extra_exec_file_hooks PARAMS ((char *filename));
old code that assumed that only one hook could be set, and which called
exec_file_display_hook directly. */
-typedef void (*hook_type) PARAMS ((char *));
+typedef void (*hook_type) (char *);
hook_type exec_file_display_hook; /* the original hook */
static hook_type *exec_file_extra_hooks; /* array of additional hooks */
@@ -124,7 +124,7 @@ call_extra_exec_file_hooks (filename)
void
specify_exec_file_hook (hook)
- void (*hook) PARAMS ((char *));
+ void (*hook) (char *);
{
hook_type *new_array;
@@ -270,21 +270,7 @@ read_memory (memaddr, myaddr, len)
memory_error (status, memaddr);
}
-void
-read_memory_section (memaddr, myaddr, len, bfd_section)
- CORE_ADDR memaddr;
- char *myaddr;
- int len;
- asection *bfd_section;
-{
- int status;
- status = target_read_memory_section (memaddr, myaddr, len, bfd_section);
- if (status != 0)
- memory_error (status, memaddr);
-}
-
/* Like target_read_memory, but slightly different parameters. */
-
int
dis_asm_read_memory (memaddr, myaddr, len, info)
bfd_vma memaddr;
@@ -430,8 +416,7 @@ char *gnutarget;
/* Same thing, except it is "auto" not NULL for the default case. */
static char *gnutarget_string;
-static void set_gnutarget_command
- PARAMS ((char *, int, struct cmd_list_element *));
+static void set_gnutarget_command (char *, int, struct cmd_list_element *);
static void
set_gnutarget_command (ignore, from_tty, c)
diff --git a/gdb/corelow.c b/gdb/corelow.c
index d5998f4c42d..43163d927bd 100644
--- a/gdb/corelow.c
+++ b/gdb/corelow.c
@@ -1,5 +1,5 @@
/* Core dump and executable file functions below target vector, for GDB.
- Copyright 1986, 87, 89, 91, 92, 93, 94, 95, 96, 97, 1998
+ Copyright 1986, 87, 89, 91, 92, 93, 94, 95, 96, 97, 1998, 2000
Free Software Foundation, Inc.
This file is part of GDB.
@@ -44,35 +44,37 @@ static struct core_fns *core_file_fns = NULL;
static struct core_fns *core_vec = NULL;
-static void core_files_info PARAMS ((struct target_ops *));
+static void core_files_info (struct target_ops *);
#ifdef SOLIB_ADD
-static int solib_add_stub PARAMS ((PTR));
+static int solib_add_stub (PTR);
#endif
-static struct core_fns *sniff_core_bfd PARAMS ((bfd *));
+static struct core_fns *sniff_core_bfd (bfd *);
-static boolean gdb_check_format PARAMS ((bfd *));
+static boolean gdb_check_format (bfd *);
-static void core_open PARAMS ((char *, int));
+static void core_open (char *, int);
-static void core_detach PARAMS ((char *, int));
+static void core_detach (char *, int);
-static void core_close PARAMS ((int));
+static void core_close (int);
-static void get_core_registers PARAMS ((int));
+static void core_close_cleanup (void *ignore);
-static void add_to_thread_list PARAMS ((bfd *, asection *, PTR));
+static void get_core_registers (int);
-static int ignore PARAMS ((CORE_ADDR, char *));
+static void add_to_thread_list (bfd *, asection *, PTR);
-static char *core_file_to_sym_file PARAMS ((char *));
+static int ignore (CORE_ADDR, char *);
-static int core_file_thread_alive PARAMS ((int tid));
+static char *core_file_to_sym_file (char *);
-static void init_core_ops PARAMS ((void));
+static int core_file_thread_alive (int tid);
-void _initialize_corelow PARAMS ((void));
+static void init_core_ops (void);
+
+void _initialize_corelow (void);
struct target_ops core_ops;
@@ -207,6 +209,12 @@ core_close (quitting)
core_vec = NULL;
}
+static void
+core_close_cleanup (void *ignore)
+{
+ core_close (0/*ignored*/);
+}
+
#ifdef SOLIB_ADD
/* Stub function for catch_errors around shared library hacking. FROM_TTYP
is really an int * which points to from_tty. */
@@ -295,7 +303,7 @@ core_open (filename, from_tty)
/* FIXME: should be checking for errors from bfd_close (for one thing,
on error it does not free all the storage associated with the
bfd). */
- make_cleanup ((make_cleanup_func) bfd_close, temp_bfd);
+ make_cleanup_bfd_close (temp_bfd);
error ("\"%s\" is not a core dump: %s",
filename, bfd_errmsg (bfd_get_error ()));
}
@@ -305,7 +313,7 @@ core_open (filename, from_tty)
discard_cleanups (old_chain); /* Don't free filename any more */
unpush_target (&core_ops);
core_bfd = temp_bfd;
- old_chain = make_cleanup ((make_cleanup_func) core_close, core_bfd);
+ old_chain = make_cleanup (core_close_cleanup, 0 /*ignore*/);
/* Find a suitable core file handler to munch on core_bfd */
core_vec = sniff_core_bfd (core_bfd);
@@ -318,6 +326,8 @@ core_open (filename, from_tty)
error ("\"%s\": Can't find sections: %s",
bfd_get_filename (core_bfd), bfd_errmsg (bfd_get_error ()));
+ set_gdbarch_from_file (core_bfd);
+
ontop = !push_target (&core_ops);
discard_cleanups (old_chain);
@@ -327,8 +337,12 @@ core_open (filename, from_tty)
siggy = bfd_core_file_failing_signal (core_bfd);
if (siggy > 0)
+ /* NOTE: target_signal_from_host() converts a target signal value
+ into gdb's internal signal value. Unfortunatly gdb's internal
+ value is called ``target_signal'' and this function got the
+ name ..._from_host(). */
printf_filtered ("Program terminated with signal %d, %s.\n", siggy,
- safe_strsignal (siggy));
+ target_signal_to_string (target_signal_from_host (siggy)));
/* Build up thread list from BFD sections. */
@@ -491,7 +505,7 @@ core_file_to_sym_file (core)
/* FIXME: should be checking for errors from bfd_close (for one thing,
on error it does not free all the storage associated with the
bfd). */
- make_cleanup ((make_cleanup_func) bfd_close, temp_bfd);
+ make_cleanup_bfd_close (temp_bfd);
error ("\"%s\" is not a core dump: %s",
core, bfd_errmsg (bfd_get_error ()));
}
diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c
index b70ef219d6c..58bbc7ca390 100644
--- a/gdb/cp-valprint.c
+++ b/gdb/cp-valprint.c
@@ -45,7 +45,7 @@ int static_field_print; /* Controls printing of static fields. */
static struct obstack dont_print_vb_obstack;
static struct obstack dont_print_statmem_obstack;
-extern void _initialize_cp_valprint PARAMS ((void));
+extern void _initialize_cp_valprint (void);
static void cp_print_static_field (struct type *, value_ptr,
struct ui_file *, int, int,
@@ -429,7 +429,7 @@ cp_print_value_fields (type, real_type, valaddr, offset, address, stream, format
/* pai: FIXME 32x64 problem? */
/* Not sure what the best notation is in the case where there is no
baseclass name. */
- v = value_from_longest (lookup_pointer_type (builtin_type_unsigned_long),
+ v = value_from_pointer (lookup_pointer_type (builtin_type_unsigned_long),
*(unsigned long *) (valaddr + offset));
val_print (VALUE_TYPE (v), VALUE_CONTENTS (v), 0, 0,
diff --git a/gdb/cpu32bug-rom.c b/gdb/cpu32bug-rom.c
index f0a43962054..8bd0ea20040 100644
--- a/gdb/cpu32bug-rom.c
+++ b/gdb/cpu32bug-rom.c
@@ -26,7 +26,7 @@
#include "monitor.h"
#include "serial.h"
-static void cpu32bug_open PARAMS ((char *args, int from_tty));
+static void cpu32bug_open (char *args, int from_tty);
static void
cpu32bug_supply_register (regname, regnamelen, val, vallen)
diff --git a/gdb/cxux-nat.c b/gdb/cxux-nat.c
index 9db528a06b9..93ed232770c 100644
--- a/gdb/cxux-nat.c
+++ b/gdb/cxux-nat.c
@@ -281,6 +281,9 @@ m88k_register_u_addr (blockend, regnum)
#include <sys/procfs.h>
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
/* Given a pointer to a general register set in /proc format (gregset_t *),
unpack the register contents and supply them as gdb's idea of the current
register values. */
@@ -386,7 +389,8 @@ add_shared_symbol_files ()
{
struct section_addr_info section_addrs;
memset (&section_addrs, 0, sizeof (section_addrs));
- section_addrs.text_addr = lms.l_addr;
+ section_addrs.other[0].addr = lms.l_addr;
+ section_addrs.other[0].name = ".text";
symbol_file_add (path_name, 1, &section_addrs, 0, 0);
free (path_name);
}
diff --git a/gdb/d10v-tdep.c b/gdb/d10v-tdep.c
index cfd70b0878e..3aab494e846 100644
--- a/gdb/d10v-tdep.c
+++ b/gdb/d10v-tdep.c
@@ -34,7 +34,9 @@
#include "symfile.h"
#include "objfiles.h"
#include "language.h"
+#include "arch-utils.h"
+#include "floatformat.h"
#include "sim-d10v.h"
#undef XMALLOC
@@ -84,17 +86,18 @@ enum
/* Local functions */
-extern void _initialize_d10v_tdep PARAMS ((void));
+extern void _initialize_d10v_tdep (void);
-static void d10v_eva_prepare_to_trace PARAMS ((void));
+static void d10v_eva_prepare_to_trace (void);
-static void d10v_eva_get_trace_data PARAMS ((void));
+static void d10v_eva_get_trace_data (void);
-static int prologue_find_regs PARAMS ((unsigned short op, struct frame_info * fi, CORE_ADDR addr));
+static int prologue_find_regs (unsigned short op, struct frame_info *fi,
+ CORE_ADDR addr);
-extern void d10v_frame_init_saved_regs PARAMS ((struct frame_info *));
+extern void d10v_frame_init_saved_regs (struct frame_info *);
-static void do_d10v_pop_frame PARAMS ((struct frame_info * fi));
+static void do_d10v_pop_frame (struct frame_info *fi);
int
d10v_frame_chain_valid (chain, frame)
@@ -104,7 +107,7 @@ d10v_frame_chain_valid (chain, frame)
return ((chain) != 0 && (frame) != 0 && (frame)->pc > IMEM_START);
}
-CORE_ADDR
+static CORE_ADDR
d10v_stack_align (CORE_ADDR len)
{
return (len + 1) & ~1;
@@ -1021,7 +1024,8 @@ struct stack_item
void *data;
};
-static struct stack_item *push_stack_item PARAMS ((struct stack_item * prev, void *contents, int len));
+static struct stack_item *push_stack_item (struct stack_item *prev,
+ void *contents, int len);
static struct stack_item *
push_stack_item (prev, contents, len)
struct stack_item *prev;
@@ -1037,7 +1041,7 @@ push_stack_item (prev, contents, len)
return si;
}
-static struct stack_item *pop_stack_item PARAMS ((struct stack_item * si));
+static struct stack_item *pop_stack_item (struct stack_item *si);
static struct stack_item *
pop_stack_item (si)
struct stack_item *si;
@@ -1246,15 +1250,15 @@ remote_d10v_translate_xfer_address (CORE_ADDR memaddr, int nr_bytes,
#define TRACE_BUFFER_BASE (0xf40000)
-static void trace_command PARAMS ((char *, int));
+static void trace_command (char *, int);
-static void untrace_command PARAMS ((char *, int));
+static void untrace_command (char *, int);
-static void trace_info PARAMS ((char *, int));
+static void trace_info (char *, int);
-static void tdisassemble_command PARAMS ((char *, int));
+static void tdisassemble_command (char *, int);
-static void display_trace PARAMS ((int, int));
+static void display_trace (int, int);
/* True when instruction traces are being collected. */
@@ -1593,9 +1597,26 @@ d10v_gdbarch_init (info, arches)
set_gdbarch_int_bit (gdbarch, 2 * TARGET_CHAR_BIT);
set_gdbarch_long_bit (gdbarch, 4 * TARGET_CHAR_BIT);
set_gdbarch_long_long_bit (gdbarch, 4 * TARGET_CHAR_BIT);
+ /* NOTE: The d10v as a 32 bit ``float'' and ``double''. ``long
+ double'' is 64 bits. */
set_gdbarch_float_bit (gdbarch, 4 * TARGET_CHAR_BIT);
set_gdbarch_double_bit (gdbarch, 4 * TARGET_CHAR_BIT);
set_gdbarch_long_double_bit (gdbarch, 8 * TARGET_CHAR_BIT);
+ switch (info.byte_order)
+ {
+ case BIG_ENDIAN:
+ set_gdbarch_float_format (gdbarch, &floatformat_ieee_single_big);
+ set_gdbarch_double_format (gdbarch, &floatformat_ieee_single_big);
+ set_gdbarch_long_double_format (gdbarch, &floatformat_ieee_double_big);
+ break;
+ case LITTLE_ENDIAN:
+ set_gdbarch_float_format (gdbarch, &floatformat_ieee_single_little);
+ set_gdbarch_double_format (gdbarch, &floatformat_ieee_single_little);
+ set_gdbarch_long_double_format (gdbarch, &floatformat_ieee_double_little);
+ break;
+ default:
+ internal_error ("d10v_gdbarch_init: bad byte order for float format");
+ }
set_gdbarch_use_generic_dummy_frames (gdbarch, 1);
set_gdbarch_call_dummy_length (gdbarch, 0);
@@ -1655,13 +1676,14 @@ d10v_gdbarch_init (info, arches)
set_gdbarch_frame_locals_address (gdbarch, d10v_frame_locals_address);
set_gdbarch_saved_pc_after_call (gdbarch, d10v_saved_pc_after_call);
set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
+ set_gdbarch_stack_align (gdbarch, d10v_stack_align);
return gdbarch;
}
-extern void (*target_resume_hook) PARAMS ((void));
-extern void (*target_wait_loop_hook) PARAMS ((void));
+extern void (*target_resume_hook) (void);
+extern void (*target_wait_loop_hook) (void);
void
_initialize_d10v_tdep ()
diff --git a/gdb/d30v-tdep.c b/gdb/d30v-tdep.c
index 94a1362b3fe..cea03508daf 100644
--- a/gdb/d30v-tdep.c
+++ b/gdb/d30v-tdep.c
@@ -36,13 +36,13 @@
#include "language.h" /* For local_hex_string() */
-void d30v_frame_find_saved_regs PARAMS ((struct frame_info * fi,
- struct frame_saved_regs * fsr));
-void d30v_frame_find_saved_regs_offsets PARAMS ((struct frame_info * fi,
- struct frame_saved_regs * fsr));
-static void d30v_pop_dummy_frame PARAMS ((struct frame_info * fi));
-static void d30v_print_flags PARAMS ((void));
-static void print_flags_command PARAMS ((char *, int));
+void d30v_frame_find_saved_regs (struct frame_info *fi,
+ struct frame_saved_regs *fsr);
+void d30v_frame_find_saved_regs_offsets (struct frame_info *fi,
+ struct frame_saved_regs *fsr);
+static void d30v_pop_dummy_frame (struct frame_info *fi);
+static void d30v_print_flags (void);
+static void print_flags_command (char *, int);
/* the following defines assume:
fp is r61, lr is r62, sp is r63, and ?? is r22
@@ -719,7 +719,7 @@ d30v_init_frame_pc (fromleaf, prev)
prev->next ? FRAME_SAVED_PC (prev->next) : read_pc ());
}
-static void d30v_print_register PARAMS ((int regnum, int tabular));
+static void d30v_print_register (int regnum, int tabular);
static void
d30v_print_register (regnum, tabular)
@@ -1091,15 +1091,15 @@ d30v_extract_return_value (valtype, regbuf, valbuf)
#define TRACE_BUFFER_BASE (0xf40000)
-static void trace_command PARAMS ((char *, int));
+static void trace_command (char *, int);
-static void untrace_command PARAMS ((char *, int));
+static void untrace_command (char *, int);
-static void trace_info PARAMS ((char *, int));
+static void trace_info (char *, int);
-static void tdisassemble_command PARAMS ((char *, int));
+static void tdisassemble_command (char *, int);
-static void display_trace PARAMS ((int, int));
+static void display_trace (int, int);
/* True when instruction traces are being collected. */
@@ -1365,8 +1365,8 @@ display_trace (low, high)
}
}
-extern void (*target_resume_hook) PARAMS ((void));
-extern void (*target_wait_loop_hook) PARAMS ((void));
+extern void (*target_resume_hook) (void);
+extern void (*target_wait_loop_hook) (void);
void
_initialize_d30v_tdep ()
diff --git a/gdb/dbug-rom.c b/gdb/dbug-rom.c
index 6b9787f4d4a..4d95012cf92 100644
--- a/gdb/dbug-rom.c
+++ b/gdb/dbug-rom.c
@@ -31,7 +31,7 @@
#include "monitor.h"
#include "serial.h"
-static void dbug_open PARAMS ((char *args, int from_tty));
+static void dbug_open (char *args, int from_tty);
static void
dbug_supply_register (regname, regnamelen, val, vallen)
diff --git a/gdb/dbxread.c b/gdb/dbxread.c
index 74667e4c129..10e153544ea 100644
--- a/gdb/dbxread.c
+++ b/gdb/dbxread.c
@@ -265,77 +265,56 @@ static int bincls_allocated;
/* Local function prototypes */
-extern void _initialize_dbxread PARAMS ((void));
+extern void _initialize_dbxread (void);
-static void
-process_now PARAMS ((struct objfile *));
+static void process_now (struct objfile *);
-static void
-free_header_files PARAMS ((void));
+static void free_header_files (void);
-static void
-init_header_files PARAMS ((void));
+static void init_header_files (void);
-static void
-read_ofile_symtab PARAMS ((struct partial_symtab *));
+static void read_ofile_symtab (struct partial_symtab *);
-static void
-dbx_psymtab_to_symtab PARAMS ((struct partial_symtab *));
+static void dbx_psymtab_to_symtab (struct partial_symtab *);
-static void
-dbx_psymtab_to_symtab_1 PARAMS ((struct partial_symtab *));
+static void dbx_psymtab_to_symtab_1 (struct partial_symtab *);
-static void
-read_dbx_dynamic_symtab PARAMS ((struct objfile * objfile));
+static void read_dbx_dynamic_symtab (struct objfile *objfile);
-static void
-read_dbx_symtab PARAMS ((struct objfile *));
+static void read_dbx_symtab (struct objfile *);
-static void
-free_bincl_list PARAMS ((struct objfile *));
+static void free_bincl_list (struct objfile *);
-static struct partial_symtab *
- find_corresponding_bincl_psymtab PARAMS ((char *, int));
+static struct partial_symtab *find_corresponding_bincl_psymtab (char *, int);
-static void
-add_bincl_to_list PARAMS ((struct partial_symtab *, char *, int));
+static void add_bincl_to_list (struct partial_symtab *, char *, int);
-static void
-init_bincl_list PARAMS ((int, struct objfile *));
+static void init_bincl_list (int, struct objfile *);
-static char *
- dbx_next_symbol_text PARAMS ((struct objfile *));
+static char *dbx_next_symbol_text (struct objfile *);
-static void
-fill_symbuf PARAMS ((bfd *));
+static void fill_symbuf (bfd *);
-static void
-dbx_symfile_init PARAMS ((struct objfile *));
+static void dbx_symfile_init (struct objfile *);
-static void
-dbx_new_init PARAMS ((struct objfile *));
+static void dbx_new_init (struct objfile *);
-static void
-dbx_symfile_read PARAMS ((struct objfile *, int));
+static void dbx_symfile_read (struct objfile *, int);
-static void
-dbx_symfile_finish PARAMS ((struct objfile *));
+static void dbx_symfile_finish (struct objfile *);
-static void
-record_minimal_symbol PARAMS ((char *, CORE_ADDR, int, struct objfile *));
+static void record_minimal_symbol (char *, CORE_ADDR, int, struct objfile *);
-static void
-add_new_header_file PARAMS ((char *, int));
+static void add_new_header_file (char *, int);
-static void
-add_old_header_file PARAMS ((char *, int));
+static void add_old_header_file (char *, int);
-static void
-add_this_object_header_file PARAMS ((int));
+static void add_this_object_header_file (int);
-static struct partial_symtab *
-start_psymtab PARAMS ((struct objfile *, char *, CORE_ADDR, int,
- struct partial_symbol **, struct partial_symbol **));
+static struct partial_symtab *start_psymtab (struct objfile *, char *,
+ CORE_ADDR, int,
+ struct partial_symbol **,
+ struct partial_symbol **);
/* Free up old header file tables */
@@ -488,17 +467,17 @@ record_minimal_symbol (name, address, type, objfile)
{
case N_TEXT | N_EXT:
ms_type = mst_text;
- section = SECT_OFF_TEXT;
+ section = SECT_OFF_TEXT (objfile);
bfd_section = DBX_TEXT_SECTION (objfile);
break;
case N_DATA | N_EXT:
ms_type = mst_data;
- section = SECT_OFF_DATA;
+ section = SECT_OFF_DATA (objfile);
bfd_section = DBX_DATA_SECTION (objfile);
break;
case N_BSS | N_EXT:
ms_type = mst_bss;
- section = SECT_OFF_BSS;
+ section = SECT_OFF_BSS (objfile);
bfd_section = DBX_BSS_SECTION (objfile);
break;
case N_ABS | N_EXT:
@@ -509,7 +488,7 @@ record_minimal_symbol (name, address, type, objfile)
#ifdef N_SETV
case N_SETV | N_EXT:
ms_type = mst_data;
- section = SECT_OFF_DATA;
+ section = SECT_OFF_DATA (objfile);
bfd_section = DBX_DATA_SECTION (objfile);
break;
case N_SETV:
@@ -517,7 +496,7 @@ record_minimal_symbol (name, address, type, objfile)
of going over many .o files, it doesn't make sense to have one
file local. */
ms_type = mst_file_data;
- section = SECT_OFF_DATA;
+ section = SECT_OFF_DATA (objfile);
bfd_section = DBX_DATA_SECTION (objfile);
break;
#endif
@@ -526,7 +505,7 @@ record_minimal_symbol (name, address, type, objfile)
case N_FN:
case N_FN_SEQ:
ms_type = mst_file_text;
- section = SECT_OFF_TEXT;
+ section = SECT_OFF_TEXT (objfile);
bfd_section = DBX_TEXT_SECTION (objfile);
break;
case N_DATA:
@@ -547,12 +526,12 @@ record_minimal_symbol (name, address, type, objfile)
if (VTBL_PREFIX_P ((tempstring)))
ms_type = mst_data;
}
- section = SECT_OFF_DATA;
+ section = SECT_OFF_DATA (objfile);
bfd_section = DBX_DATA_SECTION (objfile);
break;
case N_BSS:
ms_type = mst_file_bss;
- section = SECT_OFF_BSS;
+ section = SECT_OFF_BSS (objfile);
bfd_section = DBX_BSS_SECTION (objfile);
break;
default:
@@ -624,7 +603,7 @@ dbx_symfile_read (objfile, mainline)
back_to = make_cleanup (really_free_pendings, 0);
init_minimal_symbol_collection ();
- make_cleanup ((make_cleanup_func) discard_minimal_symbols, 0);
+ make_cleanup_discard_minimal_symbols ();
/* Read stabs data from executable file and define symbols. */
@@ -830,7 +809,7 @@ struct cont_elem
int sym_idx;
int sym_end;
int symnum;
- int (*func) PARAMS ((struct objfile *, struct symbol *, char *));
+ int (*func) (struct objfile *, struct symbol *, char *);
/* other state dependancies include:
(assumption is that these will not change since process_now FIXME!!)
stringtab_global
@@ -849,7 +828,7 @@ void
process_later (sym, p, f)
struct symbol *sym;
char *p;
- int (*f) PARAMS ((struct objfile *, struct symbol *, char *));
+ int (*f) (struct objfile *, struct symbol *, char *);
{
/* Allocate more space for the deferred list. */
@@ -888,7 +867,7 @@ process_now (objfile)
struct symbol *sym;
char *stabs;
int err;
- int (*func) PARAMS ((struct objfile *, struct symbol *, char *));
+ int (*func) (struct objfile *, struct symbol *, char *);
/* Save the state of our caller, we'll want to restore it before
returning. */
@@ -1094,6 +1073,18 @@ free_bincl_list (objfile)
bincls_allocated = 0;
}
+static void
+do_free_bincl_list_cleanup (void *objfile)
+{
+ free_bincl_list (objfile);
+}
+
+static struct cleanup *
+make_cleanup_free_bincl_list (struct objfile *objfile)
+{
+ return make_cleanup (do_free_bincl_list_cleanup, objfile);
+}
+
/* Scan a SunOs dynamic symbol table for symbols of interest and
add them to the minimal symbol table. */
@@ -1157,17 +1148,17 @@ read_dbx_dynamic_symtab (objfile)
if (bfd_get_section_flags (abfd, sec) & SEC_CODE)
{
- sym_value += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ sym_value += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
type = N_TEXT;
}
else if (bfd_get_section_flags (abfd, sec) & SEC_DATA)
{
- sym_value += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA);
+ sym_value += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
type = N_DATA;
}
else if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC)
{
- sym_value += ANOFFSET (objfile->section_offsets, SECT_OFF_BSS);
+ sym_value += ANOFFSET (objfile->section_offsets, SECT_OFF_BSS (objfile));
type = N_BSS;
}
else
@@ -1208,7 +1199,7 @@ read_dbx_dynamic_symtab (objfile)
{
arelent *rel = *relptr;
CORE_ADDR address =
- rel->address + ANOFFSET (objfile->section_offsets, SECT_OFF_DATA);
+ rel->address + ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
switch (bfd_get_arch (abfd))
{
@@ -1295,7 +1286,7 @@ read_dbx_symtab (objfile)
/* Init bincl list */
init_bincl_list (20, objfile);
- back_to = make_cleanup ((make_cleanup_func) free_bincl_list, objfile);
+ back_to = make_cleanup_free_bincl_list (objfile);
last_source_file = NULL;
@@ -1382,7 +1373,7 @@ read_dbx_symtab (objfile)
/* Don't set pst->texthigh lower than it already is. */
CORE_ADDR text_end =
(lowest_text_address == (CORE_ADDR) -1
- ? (text_addr + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT))
+ ? (text_addr + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)))
: lowest_text_address)
+ text_size;
@@ -1558,6 +1549,7 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset,
struct partial_symtab *subpst =
allocate_psymtab (include_list[i], objfile);
+ /* Copy the sesction_offsets array from the main psymtab. */
subpst->section_offsets = pst->section_offsets;
subpst->read_symtab_private =
(char *) obstack_alloc (&objfile->psymbol_obstack,
@@ -1738,6 +1730,10 @@ read_ofile_symtab (pst)
sym_size = LDSYMLEN (pst);
text_offset = pst->textlow;
text_size = pst->texthigh - pst->textlow;
+ /* This cannot be simply objfile->section_offsets because of
+ elfstab_offset_sections() which initializes the psymtab section
+ offsets information in a special way, and that is different from
+ objfile->section_offsets. */
section_offsets = pst->section_offsets;
current_objfile = objfile;
@@ -1880,7 +1876,7 @@ read_ofile_symtab (pst)
if (last_source_start_addr > text_offset)
last_source_start_addr = text_offset;
- pst->symtab = end_symtab (text_offset + text_size, objfile, SECT_OFF_TEXT);
+ pst->symtab = end_symtab (text_offset + text_size, objfile, SECT_OFF_TEXT (objfile));
/* Process items which we had to "process_later" due to dependancies
on other stabs. */
@@ -1899,6 +1895,8 @@ read_ofile_symtab (pst)
NAME is the symbol name, in our address space.
SECTION_OFFSETS is a set of amounts by which the sections of this object
file were relocated when it was loaded into memory.
+ Note that these section_offsets are not the
+ objfile->section_offsets but the pst->section_offsets.
All symbols that refer
to memory locations need to be offset by these amounts.
OBJFILE is the object file from which we are reading symbols.
@@ -1942,7 +1940,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
if (!block_address_function_relative)
/* N_LBRAC, N_RBRAC and N_SLINE entries are not relative to the
function start address, so just use the text offset. */
- function_start_offset = ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ function_start_offset = ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
/* Something is wrong if we see real data before
seeing a source file name. */
@@ -1982,7 +1980,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
}
/* Relocate for dynamic loading */
- valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
#ifdef SMASH_TEXT_ADDRESS
SMASH_TEXT_ADDRESS (valu);
#endif
@@ -2090,7 +2088,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
case N_FN_SEQ:
/* This kind of symbol indicates the start of an object file. */
/* Relocate for dynamic loading */
- valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
break;
case N_SO:
@@ -2099,7 +2097,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
Finish the symbol table of the previous source file
(if any) and start accumulating a new symbol table. */
/* Relocate for dynamic loading */
- valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
n_opt_found = 0;
@@ -2126,7 +2124,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
patch_subfile_names (current_subfile, name);
break; /* Ignore repeated SOs */
}
- end_symtab (valu, objfile, SECT_OFF_TEXT);
+ end_symtab (valu, objfile, SECT_OFF_TEXT (objfile));
end_stabs ();
}
@@ -2149,7 +2147,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
included in the compilation of the main source file
(whose name was given in the N_SO symbol.) */
/* Relocate for dynamic loading */
- valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
start_subfile (name, current_subfile->dirname);
break;
@@ -2227,7 +2225,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
elfstab_offset_sections ever starts dealing with the
text offset, and we still need to do this, we need to
invent a SECT_OFF_ADDR_KLUDGE or something. */
- valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
goto define_a_symbol;
}
}
@@ -2247,22 +2245,22 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
case_N_STSYM: /* Static symbol in data seg */
case N_DSLINE: /* Source line number, data seg */
- valu += ANOFFSET (section_offsets, SECT_OFF_DATA);
+ valu += ANOFFSET (section_offsets, SECT_OFF_DATA (objfile));
goto define_a_symbol;
case_N_LCSYM: /* Static symbol in BSS seg */
case N_BSLINE: /* Source line number, bss seg */
/* N_BROWS: overlaps with N_BSLINE */
- valu += ANOFFSET (section_offsets, SECT_OFF_BSS);
+ valu += ANOFFSET (section_offsets, SECT_OFF_BSS (objfile));
goto define_a_symbol;
case_N_ROSYM: /* Static symbol in Read-only data seg */
- valu += ANOFFSET (section_offsets, SECT_OFF_RODATA);
+ valu += ANOFFSET (section_offsets, SECT_OFF_RODATA (objfile));
goto define_a_symbol;
case N_ENTRY: /* Alternate entry point */
/* Relocate for dynamic loading */
- valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
goto define_a_symbol;
/* The following symbol types we don't know how to process. Handle
@@ -2314,7 +2312,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
/* Deal with the SunPRO 3.0 compiler which omits the address
from N_FUN symbols. */
if (type == N_FUN
- && valu == ANOFFSET (section_offsets, SECT_OFF_TEXT))
+ && valu == ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile)))
valu =
find_stab_function_addr (name, last_source_file, objfile);
#endif
diff --git a/gdb/dcache.c b/gdb/dcache.c
index c43413965ae..538f77e06a1 100644
--- a/gdb/dcache.c
+++ b/gdb/dcache.c
@@ -149,24 +149,21 @@ struct dcache_struct
int cache_has_stuff;
};
-static int dcache_poke_byte PARAMS ((DCACHE * dcache, CORE_ADDR addr,
- char *ptr));
+static int dcache_poke_byte (DCACHE * dcache, CORE_ADDR addr, char *ptr);
-static int dcache_peek_byte PARAMS ((DCACHE * dcache, CORE_ADDR addr,
- char *ptr));
+static int dcache_peek_byte (DCACHE * dcache, CORE_ADDR addr, char *ptr);
-static struct dcache_block *dcache_hit PARAMS ((DCACHE * dcache,
- CORE_ADDR addr));
+static struct dcache_block *dcache_hit (DCACHE * dcache, CORE_ADDR addr);
-static int dcache_write_line PARAMS ((DCACHE * dcache, struct dcache_block * db));
+static int dcache_write_line (DCACHE * dcache, struct dcache_block *db);
-static struct dcache_block *dcache_alloc PARAMS ((DCACHE * dcache));
+static struct dcache_block *dcache_alloc (DCACHE * dcache);
-static int dcache_writeback PARAMS ((DCACHE * dcache));
+static int dcache_writeback (DCACHE * dcache);
-static void dcache_info PARAMS ((char *exp, int tty));
+static void dcache_info (char *exp, int tty);
-void _initialize_dcache PARAMS ((void));
+void _initialize_dcache (void);
static int dcache_enabled_p = 0;
@@ -481,7 +478,7 @@ dcache_xfer_memory (dcache, memaddr, myaddr, len, should_write)
if (dcache_enabled_p)
{
- int (*xfunc) PARAMS ((DCACHE * dcache, CORE_ADDR addr, char *ptr));
+ int (*xfunc) (DCACHE * dcache, CORE_ADDR addr, char *ptr);
xfunc = should_write ? dcache_poke_byte : dcache_peek_byte;
for (i = 0; i < len; i++)
diff --git a/gdb/dcache.h b/gdb/dcache.h
index 78d17efd181..d13708f2b2e 100644
--- a/gdb/dcache.h
+++ b/gdb/dcache.h
@@ -23,31 +23,30 @@
#ifndef DCACHE_H
#define DCACHE_H
-typedef int (*memxferfunc) PARAMS ((CORE_ADDR memaddr,
- char *myaddr,
- int len));
+typedef int (*memxferfunc) (CORE_ADDR memaddr, char *myaddr, int len);
typedef struct dcache_struct DCACHE;
/* Using the data cache DCACHE return the contents of the word at
address ADDR in the remote machine. */
-int dcache_fetch PARAMS ((DCACHE * dcache, CORE_ADDR addr));
+int dcache_fetch (DCACHE * dcache, CORE_ADDR addr);
/* Flush DCACHE. */
-void dcache_flush PARAMS ((DCACHE * dcache));
+void dcache_flush (DCACHE * dcache);
/* Initialize DCACHE. */
-DCACHE *dcache_init PARAMS ((memxferfunc reading, memxferfunc writing));
+DCACHE *dcache_init (memxferfunc reading, memxferfunc writing);
/* Write the word at ADDR both in the data cache and in the remote machine. */
-int dcache_poke PARAMS ((DCACHE * dcache, CORE_ADDR addr, int data));
+int dcache_poke (DCACHE * dcache, CORE_ADDR addr, int data);
/* Simple to call from <remote>_xfer_memory */
-int dcache_xfer_memory PARAMS ((DCACHE * cache, CORE_ADDR mem, char *my, int len, int should_write));
+int dcache_xfer_memory (DCACHE * cache, CORE_ADDR mem, char *my, int len,
+ int should_write);
/* Write the bytes at ADDR into the data cache and the remote machine. */
-int dcache_poke_block PARAMS ((DCACHE * cache, CORE_ADDR mem, char *my, int len));
+int dcache_poke_block (DCACHE * cache, CORE_ADDR mem, char *my, int len);
/* Turn dcache state on or off */
void set_dcache_state (int);
diff --git a/gdb/defs.h b/gdb/defs.h
index 0270ddd1d8d..400f630b765 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -56,9 +56,6 @@
#include "libiberty.h"
-/* libiberty.h can't declare this one, but evidently we can. */
-extern char *strsignal (int);
-
#include "progress.h"
#ifdef USE_MMALLOC
@@ -106,10 +103,6 @@ typedef bfd_vma CORE_ADDR;
#endif /* ! LONGEST */
-extern int core_addr_lessthan (CORE_ADDR lhs, CORE_ADDR rhs);
-extern int core_addr_greaterthan (CORE_ADDR lhs, CORE_ADDR rhs);
-
-
#ifndef min
#define min(a, b) ((a) < (b) ? (a) : (b))
#endif
@@ -253,7 +246,7 @@ struct cleanup
works everywhere we use it. */
#ifndef ATTR_NORETURN
-#if defined(__GNUC__) && __GNUC__ >= 2 && __GNUC_MINOR__ >= 7
+#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
#define ATTR_NORETURN __attribute__ ((noreturn))
#else
#define ATTR_NORETURN /* nothing */
@@ -261,7 +254,7 @@ struct cleanup
#endif
#ifndef ATTR_FORMAT
-#if defined(__GNUC__) && __GNUC__ >= 2 && __GNUC_MINOR__ >= 4
+#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 4))
#define ATTR_FORMAT(type, x, y) __attribute__ ((format(type, x, y)))
#else
#define ATTR_FORMAT(type, x, y) /* nothing */
@@ -297,8 +290,6 @@ extern int subset_compare (char *, char *);
extern char *safe_strerror (int);
-extern char *safe_strsignal (int);
-
extern void init_malloc (void *);
extern void request_quit (int);
@@ -336,6 +327,10 @@ extern struct cleanup *make_cleanup_freeargv (char **);
struct ui_file;
extern struct cleanup *make_cleanup_ui_file_delete (struct ui_file *);
+extern struct cleanup *make_cleanup_close (int fd);
+
+extern struct cleanup *make_cleanup_bfd_close (bfd *abfd);
+
extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
extern struct cleanup *make_my_cleanup (struct cleanup **,
@@ -354,7 +349,7 @@ extern void restore_cleanups (struct cleanup *);
extern void restore_final_cleanups (struct cleanup *);
extern void restore_my_cleanups (struct cleanup **, struct cleanup *);
-extern void free_current_contents (char **);
+extern void free_current_contents (void *);
extern void null_cleanup (void *);
@@ -374,6 +369,9 @@ extern void mfree (PTR, PTR);
extern void init_page_info (void);
+extern CORE_ADDR host_pointer_to_address (void *ptr);
+extern void *address_to_host_pointer (CORE_ADDR addr);
+
/* From demangle.c */
extern void set_demangling_style (char *);
@@ -484,9 +482,8 @@ extern char *paddr_nz (CORE_ADDR addr);
extern char *paddr_u (CORE_ADDR addr);
extern char *paddr_d (LONGEST addr);
-typedef bfd_vma t_reg;
-extern char *preg (t_reg reg);
-extern char *preg_nz (t_reg reg);
+extern char *phex (ULONGEST l, int sizeof_l);
+extern char *phex_nz (ULONGEST l, int sizeof_l);
extern void fprintf_symbol_filtered (struct ui_file *, char *,
enum language, int);
@@ -984,6 +981,12 @@ extern char *alloca ();
/* Dynamic target-system-dependent parameters for GDB. */
#include "gdbarch.h"
+#if (GDB_MULTI_ARCH == 0)
+/* Multi-arch targets _should_ be including "arch-utils.h" directly
+ into their *-tdep.c file. This is a prop to help old non-
+ multi-arch targets to continue to compile. */
+#include "arch-utils.h"
+#endif
/* Static target-system-dependent parameters for GDB. */
@@ -1067,12 +1070,16 @@ extern int extract_long_unsigned_integer (void *, int, LONGEST *);
extern CORE_ADDR extract_address (void *, int);
+extern CORE_ADDR extract_typed_address (void *buf, struct type *type);
+
extern void store_signed_integer (void *, int, LONGEST);
extern void store_unsigned_integer (void *, int, ULONGEST);
extern void store_address (void *, int, LONGEST);
+extern void store_typed_address (void *buf, struct type *type, CORE_ADDR addr);
+
/* Setup definitions for host and target floating point formats. We need to
consider the format for `float', `double', and `long double' for both target
and host. We need to do this so that we know what kind of conversions need
@@ -1105,21 +1112,6 @@ extern const struct floatformat floatformat_unknown;
#define HOST_LONG_DOUBLE_FORMAT &floatformat_unknown
#endif
-#ifndef TARGET_FLOAT_FORMAT
-#define TARGET_FLOAT_FORMAT (TARGET_BYTE_ORDER == BIG_ENDIAN \
- ? &floatformat_ieee_single_big \
- : &floatformat_ieee_single_little)
-#endif
-#ifndef TARGET_DOUBLE_FORMAT
-#define TARGET_DOUBLE_FORMAT (TARGET_BYTE_ORDER == BIG_ENDIAN \
- ? &floatformat_ieee_double_big \
- : &floatformat_ieee_double_little)
-#endif
-
-#ifndef TARGET_LONG_DOUBLE_FORMAT
-#define TARGET_LONG_DOUBLE_FORMAT &floatformat_unknown
-#endif
-
/* Use `long double' if the host compiler supports it. (Note that this is not
necessarily any longer than `double'. On SunOS/gcc, it's the same as
double.) This is necessary because GDB internally converts all floating
diff --git a/gdb/demangle.c b/gdb/demangle.c
index 29174f5f956..b0fd13851b0 100644
--- a/gdb/demangle.c
+++ b/gdb/demangle.c
@@ -41,7 +41,7 @@
#define DEFAULT_DEMANGLING_STYLE AUTO_DEMANGLING_STYLE_STRING
#endif
-extern void _initialize_demangler PARAMS ((void));
+extern void _initialize_demangler (void);
/* String name for the current demangling style. Set by the
"set demangle-style" command, printed as part of the output by the
@@ -101,8 +101,7 @@ demanglers[] =
}
};
-static void
-set_demangling_command PARAMS ((char *, int, struct cmd_list_element *));
+static void set_demangling_command (char *, int, struct cmd_list_element *);
/* Set current demangling style. Called by the "set demangle-style"
command after it has updated the current_demangling_style_string to
diff --git a/gdb/dink32-rom.c b/gdb/dink32-rom.c
index 2bd004d28cb..1d6f4d0fc25 100644
--- a/gdb/dink32-rom.c
+++ b/gdb/dink32-rom.c
@@ -27,7 +27,7 @@
#include "symfile.h" /* For generic_load() */
#include "inferior.h" /* For write_pc() */
-static void dink32_open PARAMS ((char *args, int from_tty));
+static void dink32_open (char *args, int from_tty);
static void
dink32_supply_register (regname, regnamelen, val, vallen)
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 2c3b6512018..8d95eba1eae 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,120 @@
+Fri May 26 15:55:33 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * Makefile.in (pdf, gdbint.pdf, gdb.pdf, stabs.pdf): New targets.
+ Generate using pdftex.
+ (PDFTEX): Define.
+ (STAGESTUFF, maintainer-clean realclean): Add *.pdf.
+ (gdb.texinfo, gdbint.texinfo, stabs.texinfo): When TeX insert the
+ @contents at the start.
+
+2000-05-24 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * gdb.texinfo: Remove duplicate @syncodeindex. From Brian
+ Youmans.
+
+Wed May 24 21:27:58 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ From Brian Youmans:
+ * gdb.texinfo: Fix ``et al.''.
+
+Tue May 23 22:57:41 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * Makefile.in (refcard.dvi): Remove quotes around REFEDITS in for
+ loop.
+
+2000-05-19 Jimmy Guo <guo@cup.hp.com>
+
+ * configure: Regenerate.
+
+2000-05-17 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * Makefile.in (install-info): Run install-info on installed Info
+ files.
+
+Fri May 12 20:18:04 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * gdb.texinfo: Add Stan Shebs, et.al. as authors. Mention
+ Andrew Cagney.
+
+2000-05-09 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * gdb.texinfo: Proofreading changes from Brian Youmans.
+
+2000-05-01 Nick Duffek <nsd@cygnus.com>
+
+ * gdb.texinfo (Command Files): Mention -x, use @enumerate for
+ startup sequence, minor edits.
+
+2000-05-01 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * annotate.texi: Remove "@syncodeindex fn cp", it causes grief in
+ TeX.
+
+ * gdb.texinfo: Add "@syncodeindex fn cp". Convert all entries
+ "@kindex f" into "@kindex f (foo)", otherwise we get index entries
+ like `n' and `s' which look weird. Convert some of the @kindex to
+ @vindex, when they refer to variables, not commands.
+
+Sat Apr 29 17:01:04 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * gdbint.texinfo (Hints): Do not use @value{GDBN in @nodes.
+
+2000-04-23 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * Makefile.in (GDBMI_DIR): New variable.
+ (SET_TEXINPUTS): Add $(GDBMI_DIR).
+ (SFILES_DOC): Add $(GDBMI_DIR)/gdbmi.texinfo.
+ (gdbmi.texinfo): New target, for texi2roff.
+ (gdb.me, gdb.ms, gdb.mm): Depend on gdbmi.texinfo.
+ (gdb.info, gdb_toc.html): Add "-I ${GDBMI_DIR}".
+
+ * gdb.texinfo (Top): Add GDB/MI to the main menu and @include
+ gdbmi.texinfo.
+ (Mode Options): Add xref to GDB/MI docs and remove a FIXME
+ comment.
+
+2000-04-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
+
+ * gdb.texinfo (Files): Update description of add-symbol-file
+ command.
+
+2000-04-17 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * gdb.texinfo (Porting GDB): Don't use @value in the node name, it
+ prevents the build (and is generally a Bad Idea).
+
+2000-04-17 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * gdb.texinfo (Protocol): Prevent makeinfo from complaining about
+ a comma inside @var.
+ (Command Files): Index markup changes from Dmitry Sivachenko
+ <dima@Chg.RU>.
+
+2000-04-16 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * Makefile.in (LN_S): Define.
+ (gdb-cfg.texi, gdb.dvi, links2roff, inc-hist.texinfo): Don't
+ invoke "ln -s" unless it is known to work.
+
+ * configure.in (AC_PROG_LN_S): Add.
+
+2000-04-14 Jim Blandy <jimb@redhat.com>
+
+ * gdbint.texinfo (Pointers Are Not Always Addresses): New manual
+ section.
+ (Target Conditionals): Document ADDRESS_TO_POINTER,
+ POINTER_TO_ADDRESS.
+
+2000-04-11 Daniel Berlin <dan@cgsoftware.com>
+
+ * gdbint.texinfo: Replaced GDB with @value{GDBN}, @include
+ gdb-cfg.texi to get the value.
+
+2000-04-10 Jim Blandy <jimb@redhat.com>
+
+ * gdbint.texinfo (Target Architecture Definition): Fix
+ cross-references.
+
2000-04-08 Jim Blandy <jimb@redhat.com>
* gdbint.texinfo (Using Different Register and Memory Data
@@ -1847,7 +1964,7 @@ Thu Dec 5 22:46:12 1991 K. Richard Pixley (rich at rtl.cygnus.com)
Local Variables:
-mode: indented-text
+mode: change-log
left-margin: 8
fill-column: 74
version-control: never
diff --git a/gdb/doc/Makefile.in b/gdb/doc/Makefile.in
index 0b703a88c56..025c20ed68d 100644
--- a/gdb/doc/Makefile.in
+++ b/gdb/doc/Makefile.in
@@ -27,6 +27,8 @@ htmldir = $(prefix)/html
SHELL = @SHELL@
+LN_S = @LN_S@
+
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
@@ -54,7 +56,11 @@ TEXI2ROFF=texi2roff
# Traditionally readline is in .. or .
READLINE_DIR = ${gdbdir}/../readline/doc
-SET_TEXINPUTS = TEXINPUTS=${TEXIDIR}:.:$(srcdir):$(READLINE_DIR):$$TEXINPUTS
+# The GDB/MI docs come from a sibling directory ../mi
+GDBMI_DIR = ${gdbdir}/mi
+
+SET_TEXINPUTS = \
+ TEXINPUTS=${TEXIDIR}:.:$(srcdir):$(READLINE_DIR):$(GDBMI_DIR):$$TEXINPUTS
# There may be alternate predefined collections of switches to configure
# the GDB manual. Normally this is not done in synch with the software
@@ -86,12 +92,15 @@ TEXINDEX = texindex
# Program to generate Postscript files from DVI files.
DVIPS = dvips
+# Program to generate PDF files from tex files.
+PDFTEX = pdftex
+
# Main GDB manual's source files
SFILES_INCLUDED = gdb-cfg.texi $(srcdir)/annotate.texi
SFILES_LOCAL = $(srcdir)/gdb.texinfo GDBvn.texi $(SFILES_INCLUDED)
-SFILES_DOC = $(SFILES_LOCAL) \
+SFILES_DOC = $(SFILES_LOCAL) $(GDBMI_DIR)/gdbmi.texinfo \
$(READLINE_DIR)/rluser.texinfo $(READLINE_DIR)/inc-hist.texinfo
#### Host, target, and site specific Makefile fragments come in here.
@@ -103,7 +112,8 @@ info: gdb.info gdbint.info stabs.info
dvi: gdb.dvi gdbint.dvi stabs.dvi refcard.dvi
ps: gdb.ps gdbint.ps stabs.ps refcard.ps
html: gdb_toc.html gdbint_toc.html stabs_toc.html
-all-doc: info dvi ps
+pdf: gdb.pdf gdbint.pdf stabs.pdf
+all-doc: info dvi ps # pdf
diststuff: info
install-info: info
@@ -111,13 +121,20 @@ install-info: info
for i in *.info* ; do \
$(INSTALL_DATA) $$i $(infodir)/$$i ; \
done
+ @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
+ list='gdb.info gdbint.info stabs.info'; \
+ for file in $$list; do \
+ echo " install-info --info-dir=$(infodir) $(infodir)/$$file";\
+ install-info --info-dir=$(infodir) $(infodir)/$$file || :;\
+ done; \
+ else : ; fi
install-html: html
for i in *.html ; do \
$(INSTALL_DATA) $$i $(htmldir)/$$i ; \
done
-STAGESTUFF = *.info* gdb-all.texi GDBvn.texi *.ps *.dvi
+STAGESTUFF = *.info* gdb-all.texi GDBvn.texi *.ps *.dvi *.pdf
# Copy the object files from a particular stage into a subdirectory.
stage1: force
@@ -168,7 +185,7 @@ distclean: clean
# "clean" or "distclean". Use maintainer-clean to remove them.
maintainer-clean realclean: distclean
- rm -f GDBvn.texi *.info* *.dvi *.ps *.html
+ rm -f GDBvn.texi *.info* *.dvi *.ps *.html *.pdf
# GDB QUICK REFERENCE (dvi output)
refcard.dvi : refcard.tex $(REFEDITS)
@@ -176,7 +193,7 @@ refcard.dvi : refcard.tex $(REFEDITS)
cp $(srcdir)/refcard.tex sedref.tex ; \
else \
echo > tmp.sed ; \
- for f in "$(REFEDITS)" ; do \
+ for f in $(REFEDITS) ; do \
cat $(srcdir)/$$f >>tmp.sed ; done ; \
sed -f tmp.sed $(srcdir)/refcard.tex >sedref.tex ; \
fi
@@ -200,7 +217,8 @@ GDBvn.texi : ${gdbdir}/Makefile.in
# not one for their binary config---which may not be specifically
# defined anyways).
gdb-cfg.texi: ${srcdir}/${DOC_CONFIG}-cfg.texi
- ln -s ${srcdir}/${DOC_CONFIG}-cfg.texi gdb-cfg.texi || \
+ (test "$$LN_S" = "ln -s" && \
+ ln -s ${srcdir}/${DOC_CONFIG}-cfg.texi gdb-cfg.texi) || \
ln ${srcdir}/${DOC_CONFIG}-cfg.texi gdb-cfg.texi || \
cp ${srcdir}/${DOC_CONFIG}-cfg.texi gdb-cfg.texi
@@ -216,7 +234,7 @@ gdb-cfg.texi: ${srcdir}/${DOC_CONFIG}-cfg.texi
# GDB MANUAL: TeX dvi file
gdb.dvi: ${SFILES_DOC}
if [ ! -f ./GDBvn.texi ]; then \
- ln -s $(srcdir)/GDBvn.texi . || \
+ (test "$$LN_S" = "ln -s" && ln -s $(srcdir)/GDBvn.texi .) || \
ln $(srcdir)/GDBvn.texi . || \
cp $(srcdir)/GDBvn.texi . ; else true; fi
$(SET_TEXINPUTS) $(TEX) gdb.texinfo
@@ -229,11 +247,23 @@ gdb.dvi: ${SFILES_DOC}
gdb.ps: gdb.dvi
$(DVIPS) -o $@ $?
+gdb.pdf: ${SFILES_DOC}
+ if [ ! -f ./GDBvn.texi ]; then \
+ (test "$$LN_S" = "ln -s" && ln -s $(srcdir)/GDBvn.texi .) || \
+ ln $(srcdir)/GDBvn.texi . || \
+ cp $(srcdir)/GDBvn.texi . ; else true; fi
+ $(SET_TEXINPUTS) $(PDFTEX) gdb.texinfo
+ $(SET_TEXINPUTS) $(PDFTEX) gdb.texinfo
+ $(TEXINDEX) gdb.??
+ $(SET_TEXINPUTS) $(PDFTEX) gdb.texinfo
+ rm -f gdb.aux gdb.cp* gdb.fn* gdb.ky* gdb.log gdb.pg* gdb.toc \
+ gdb.tp* gdb.vr*
+
# GDB MANUAL: info file
-# We're using texinfo2, and older makeinfo's may not be able to
+# We're using texinfo 3.12; older makeinfo's may not be able to
# cope with all the markup.
gdb.info: ${SFILES_DOC}
- $(MAKEINFO) -I ${READLINE_DIR} -I $(srcdir) -o ./gdb.info gdb.texinfo
+ $(MAKEINFO) -I ${READLINE_DIR} -I ${GDBMI_DIR} -I $(srcdir) -o ./gdb.info gdb.texinfo
# GDB MANUAL: roff translations
# Try to use a recent texi2roff. v2 was put on prep in jan91.
@@ -251,7 +281,7 @@ gdb.info: ${SFILES_DOC}
# in main sourcedir.
links2roff: $(SFILES_INCLUDED)
if [ ! -f gdb.texinfo ]; then \
- ln -s $(SFILES_INCLUDED) . || \
+ (test "$$LN_S" = "ln -s" && ln -s $(SFILES_INCLUDED) .) || \
ln $(SFILES_INCLUDED) . || \
cp $(SFILES_INCLUDED) . ; \
fi
@@ -267,12 +297,19 @@ rluser.texinfo: ${READLINE_DIR}/rluser.texinfo
${READLINE_DIR}/rluser.texinfo > ./rluser.texinfo
inc-hist.texinfo: ${READLINE_DIR}/inc-hist.texinfo
- ln -s ${READLINE_DIR}/inc-hist.texinfo . || \
+ (test "$$LN_S" = "ln -s" && \
+ ln -s ${READLINE_DIR}/inc-hist.texinfo .) || \
ln ${READLINE_DIR}/inc-hist.texinfo . || \
cp ${READLINE_DIR}/inc-hist.texinfo .
+gdbmi.texinfo: ${GDBMI_DIR}/gdbmi.texinfo
+ (test "$$LN_S" = "ln -s" && \
+ ln -s ${GDBMI_DIR}/gdbmi.texinfo .) || \
+ ln ${GDBMI_DIR}/gdbmi.texinfo . || \
+ cp ${GDBMI_DIR}/gdbmi.texinfo .
+
# gdb manual suitable for [gtn]roff -me
-gdb.me: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texinfo
+gdb.me: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texinfo gdbmi.texinfo
sed -e '/\\input texinfo/d' \
-e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \
-e '/^@ifinfo/,/^@end ifinfo/d' \
@@ -287,7 +324,7 @@ gdb.me: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texinfo
>gdb.me
# gdb manual suitable for [gtn]roff -ms
-gdb.ms: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texinfo
+gdb.ms: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texinfo gdbmi.texinfo
sed -e '/\\input texinfo/d' \
-e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \
-e '/^@ifinfo/,/^@end ifinfo/d' \
@@ -304,7 +341,7 @@ gdb.ms: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texinfo
# gdb manual suitable for [tn]roff -mm
# '@noindent's removed due to texi2roff-2 mm bug; if yours is newer,
# try leaving them in
-gdb.mm: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texinfo
+gdb.mm: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texinfo gdbmi.texinfo
sed -e '/\\input texinfo/d' \
-e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \
-e '/^@ifinfo/,/^@end ifinfo/d' \
@@ -322,7 +359,7 @@ gdb.mm: $(SFILES_LOCAL) links2roff rluser.texinfo inc-hist.texinfo
# GDB MANUAL: HTML file
gdb_toc.html: ${SFILES_DOC}
- $(MAKEHTML) $(MAKEHTMLFLAGS) -I ${READLINE_DIR} -I $(srcdir) $(srcdir)/gdb.texinfo
+ $(MAKEHTML) $(MAKEHTMLFLAGS) -I ${READLINE_DIR} -I ${GDBMI_DIR} -I $(srcdir) $(srcdir)/gdb.texinfo
# GDB GUI MANUAL: TeX dvi file
gdbgui.dvi : gdbgui.texinfo ${SFILES_DOC}
@@ -349,6 +386,13 @@ gdbint.dvi : gdbint.texinfo
gdbint.ps : gdbint.dvi
$(DVIPS) -o $@ $?
+gdbint.pdf: gdbint.dvi
+ $(SET_TEXINPUTS) $(PDFTEX) gdbint.texinfo
+ $(TEXINDEX) gdbint.??
+ $(SET_TEXINPUTS) $(PDFTEX) gdbint.texinfo
+ rm -f gdbint.aux gdbint.cp* gdbint.fn* gdbint.ky* \
+ gdbint.log gdbint.pg* gdbint.toc gdbint.tp* gdbint.vr*
+
# GDB INTERNALS MANUAL: info file
gdbint.info: gdbint.texinfo
@@ -378,6 +422,13 @@ stabs.dvi : stabs.texinfo
stabs.ps: stabs.dvi
$(DVIPS) -o $@ $?
+stabs.pdf: stabs.dvi
+ $(SET_TEXINPUTS) $(PDFTEX) stabs.texinfo
+ $(TEXINDEX) stabs.??
+ $(SET_TEXINPUTS) $(PDFTEX) stabs.texinfo
+ rm -f stabs.aux stabs.cp* stabs.fn* stabs.ky* \
+ stabs.log stabs.pg* stabs.toc stabs.tp* stabs.vr*
+
force:
Makefile: Makefile.in $(host_makefile_frag) $(target_makefile_frag) config.status
diff --git a/gdb/doc/annotate.texi b/gdb/doc/annotate.texi
index ec79a39e971..e16de05cdfd 100644
--- a/gdb/doc/annotate.texi
+++ b/gdb/doc/annotate.texi
@@ -53,7 +53,7 @@
@c @node Top
@c @top GDB Annotations
-@syncodeindex fn cp
+@c @syncodeindex fn cp
@node Annotations
@chapter @value{GDBN} Annotations
diff --git a/gdb/doc/configure b/gdb/doc/configure
index 8c5591ce05e..2f9ade3e547 100755
--- a/gdb/doc/configure
+++ b/gdb/doc/configure
@@ -1,7 +1,7 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.12.2
+# Generated automatically using autoconf version 2.13
# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
#
# This configure script is free software; the Free Software Foundation
@@ -333,7 +333,7 @@ EOF
verbose=yes ;;
-version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.12.2"
+ echo "configure generated by autoconf version 2.13"
exit 0 ;;
-with-* | --with-*)
@@ -600,8 +600,31 @@ echo "$ac_t""$INSTALL" 1>&6
# It thinks the first close brace ends the variable substitution.
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
+echo "configure:609: checking whether ln -s works" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ rm -f conftestdata
+if ln -s X conftestdata 2>/dev/null
+then
+ rm -f conftestdata
+ ac_cv_prog_LN_S="ln -s"
+else
+ ac_cv_prog_LN_S=ln
+fi
+fi
+LN_S="$ac_cv_prog_LN_S"
+if test "$ac_cv_prog_LN_S" = "ln -s"; then
+ echo "$ac_t""yes" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
trap '' 1 2 15
cat > confcache <<\EOF
# This file is a shell script that caches the results of configure
@@ -625,7 +648,7 @@ EOF
# Ultrix sh set writes to stderr and can't be redirected directly,
# and sets the high bit in the cache file unless we assign to the vars.
(set) 2>&1 |
- case `(ac_space=' '; set) 2>&1 | grep ac_space` in
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
*ac_space=\ *)
# `set' does not quote correctly, so add quotes (double-quote substitution
# turns \\\\ into \\, and sed turns \\ into \).
@@ -704,7 +727,7 @@ do
echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.12.2"
+ echo "$CONFIG_STATUS generated by autoconf version 2.13"
exit 0 ;;
-help | --help | --hel | --he | --h)
echo "\$ac_cs_usage"; exit 0 ;;
@@ -728,6 +751,7 @@ s%@SHELL@%$SHELL%g
s%@CFLAGS@%$CFLAGS%g
s%@CPPFLAGS@%$CPPFLAGS%g
s%@CXXFLAGS@%$CXXFLAGS%g
+s%@FFLAGS@%$FFLAGS%g
s%@DEFS@%$DEFS%g
s%@LDFLAGS@%$LDFLAGS%g
s%@LIBS@%$LIBS%g
@@ -747,7 +771,9 @@ s%@oldincludedir@%$oldincludedir%g
s%@infodir@%$infodir%g
s%@mandir@%$mandir%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
+s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
s%@INSTALL_DATA@%$INSTALL_DATA%g
+s%@LN_S@%$LN_S%g
CEOF
EOF
diff --git a/gdb/doc/configure.in b/gdb/doc/configure.in
index 460efc2b466..fee9eced522 100644
--- a/gdb/doc/configure.in
+++ b/gdb/doc/configure.in
@@ -1,4 +1,5 @@
AC_PREREQ(2.12.1)
AC_INIT(refcard.tex)
AC_PROG_INSTALL
+AC_PROG_LN_S
AC_OUTPUT(Makefile)
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 3b81c128fe4..914e0ab3cb9 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -21,8 +21,10 @@
@finalout
@syncodeindex ky cp
-@c readline appendices use @vindex
+@c readline appendices use @vindex, @findex and @ftable,
+@c annotate.texi and gdbmi use @findex.
@syncodeindex vr cp
+@syncodeindex fn cp
@c !!set GDB manual's edition---not the same as GDB version!
@set EDITION Eighth
@@ -75,7 +77,7 @@ into another language, under the above conditions for modified versions.
@sp 1
@subtitle @value{EDITION} Edition, for @value{GDBN} version @value{GDBVN}
@subtitle @value{DATE}
-@author Richard M. Stallman and Roland H. Pesch
+@author Richard Stallman, Roland Pesch, Stan Shebs, et al.
@page
@tex
{\parskip=0pt
@@ -142,6 +144,7 @@ Copyright (C) 1988-2000 Free Software Foundation, Inc.
* Sequences:: Canned sequences of commands
* Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
* Annotations:: @value{GDBN}'s annotation interface.
+* GDB/MI:: @value{GDBN}'s Machine Interface.
* GDB Bugs:: Reporting bugs in @value{GDBN}
* Formatting Documentation:: How to format and print @value{GDBN} documentation
@@ -203,6 +206,11 @@ Copyright (C) 1988-2000 Free Software Foundation, Inc.
@end ifhtml
+@c TeX can handle the contents at the start but makeinfo 3.12 can not
+@iftex
+@contents
+@end iftex
+
@node Summary
@unnumbered Summary of @value{GDBN}
@@ -291,6 +299,7 @@ omitted from this list, we would like to add your names!
So that they may not regard their many labors as thankless, we
particularly thank those who shepherded @value{GDBN} through major
releases:
+Andrew Cagney (release 5.0);
Jim Blandy (release 4.18);
Jason Molenda (release 4.17);
Stan Shebs (release 4.14);
@@ -1040,9 +1049,7 @@ Use the interpreter @var{interp} for interface with the controlling
program or device. This option is meant to be set by programs which
communicate with @value{GDBN} using it as a back end. For example,
@samp{--interpreter=mi} causes @value{GDBN} to use the @dfn{gdbmi
-interface}.
-@c FIXME: There should be an @xref here to the GDB/MI docs, but
-@c gdbmi.texi doesn't have a single node to reference!
+interface} (@pxref{GDB/MI, , The @sc{gdb/mi} Interface}).
@item -write
@cindex @code{--write}
@@ -1069,7 +1076,7 @@ no-warranty blurb, and exit.
@table @code
@kindex quit @r{[}@var{expression}@r{]}
-@kindex q
+@kindex q @r{(@code{quit})}
@item quit @r{[}@var{expression}@r{]}
@itemx q
To exit @value{GDBN}, use the @code{quit} command (abbreviated
@@ -1154,7 +1161,7 @@ names start with @code{s}. You can test abbreviations by using them as
arguments to the @code{help} command.
@cindex repeating commands
-@kindex RET
+@kindex RET @r{(repeat last command)}
A blank line as input to @value{GDBN} (typing just @key{RET}) means to
repeat the previous command. Certain commands (for example, @code{run})
will not repeat this way; these are commands whose unintentional
@@ -1171,7 +1178,7 @@ output, in a way similar to the common utility @code{more}
@key{RET} too many in this situation, @value{GDBN} disables command
repetition after any command that generates this sort of display.
-@kindex #
+@kindex # @r{(a comment)}
@cindex comment
Any text from a @kbd{#} to the end of the line is a comment; it does
nothing. This is useful mainly in command files (@pxref{Command
@@ -1305,7 +1312,7 @@ You can always ask @value{GDBN} itself for information on its commands,
using the command @code{help}.
@table @code
-@kindex h
+@kindex h @r{(@code{help})}
@item help
@itemx h
You can use @code{help} (abbreviated @code{h}) with no arguments to
@@ -1421,7 +1428,7 @@ all the sub-commands. @xref{Index}.
@c @group
@table @code
@kindex info
-@kindex i
+@kindex i @r{(@code{info})}
@item info
This command (abbreviated @code{i}) is for describing the state of your
program. For example, you can list the arguments given to your program
@@ -1557,6 +1564,7 @@ format; if your @sc{gnu} C compiler has this option, do not use it.
@table @code
@kindex run
+@kindex r @r{(@code{run})}
@item run
@itemx r
Use the @code{run} command to start your program under @value{GDBN}.
@@ -1646,8 +1654,8 @@ the program, not by the shell.
@code{run} with no arguments uses the same arguments used by the previous
@code{run}, or those set by the @code{set args} command.
-@kindex set args
@table @code
+@kindex set args
@item set args
Specify the arguments to be used the next time your program is run. If
@code{set args} has no arguments, @code{run} executes your program
@@ -1954,7 +1962,7 @@ control, one thread in particular is always the focus of debugging.
This thread is called the @dfn{current thread}. Debugging commands show
program information from the perspective of the current thread.
-@kindex New @var{systag}
+@cindex @code{New} @var{systag} message
@cindex thread identifier (system)
@c FIXME-implementors!! It would be more helpful if the [New...] message
@c included GDB's numeric thread handle, so you could just go to that
@@ -2025,8 +2033,8 @@ For debugging purposes, @value{GDBN} associates its own thread
number---a small integer assigned in thread-creation order---with each
thread in your program.
-@kindex New @var{systag}
-@cindex thread identifier (system)
+@cindex @code{New} @var{systag} message, on HP-UX
+@cindex thread identifier (system), on HP-UX
@c FIXME-implementors!! It would be more helpful if the [New...] message
@c included GDB's numeric thread handle, so you could just go to that
@c thread without first checking `info threads'.
@@ -2311,8 +2319,8 @@ all breakpoint in that range are operated on.
@c FIXME 2 is there stuff on this already? break at fun start, already init?
@kindex break
-@kindex b
-@kindex $bpnum
+@kindex b @r{(@code{break})}
+@vindex $bpnum@r{, convenience variable}
@cindex latest breakpoint
Breakpoints are set with the @code{break} command (abbreviated
@code{b}). The debugger convenience variable @samp{$bpnum} records the
@@ -2822,7 +2830,7 @@ Delete any breakpoints set at or within the code of the specified line.
@cindex delete breakpoints
@kindex delete
-@kindex d
+@kindex d @r{(@code{delete})}
@item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
ranges specified as arguments. If no argument is specified, delete all
@@ -2870,7 +2878,7 @@ watchpoints, and catchpoints:
@table @code
@kindex disable breakpoints
@kindex disable
-@kindex dis
+@kindex dis @r{(@code{disable})}
@item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
Disable the specified breakpoints---or all breakpoints, if none are
listed. A disabled breakpoint has no effect but is not forgotten. All
@@ -3218,8 +3226,8 @@ it stops due to a signal, you may want to use @code{handle}, or use
@table @code
@kindex continue
-@kindex c
-@kindex fg
+@kindex c @r{(@code{continue})}
+@kindex fg @r{(resume foreground execution)}
@item continue @r{[}@var{ignore-count}@r{]}
@itemx c @r{[}@var{ignore-count}@r{]}
@itemx fg @r{[}@var{ignore-count}@r{]}
@@ -3253,7 +3261,7 @@ interesting, until you see the problem happen.
@table @code
@kindex step
-@kindex s
+@kindex s @r{(@code{step})}
@item step
Continue running your program until control reaches a different source
line, then stop it and return control to @value{GDBN}. This command is
@@ -3292,7 +3300,7 @@ breakpoint is reached, or a signal not related to stepping occurs before
@var{count} steps, stepping stops right away.
@kindex next
-@kindex n
+@kindex n @r{(@code{next})}
@item next @r{[}@var{count}@r{]}
Continue to the next source line in the current (innermost) stack frame.
This is similar to @code{step}, but function calls that appear within
@@ -3324,7 +3332,7 @@ Contrast this with the @code{return} command (@pxref{Returning,
,Returning from a function}).
@kindex until
-@kindex u
+@kindex u @r{(@code{until})}
@item until
@itemx u
Continue running until a source line past the current line, in the
@@ -3378,7 +3386,7 @@ the forms of argument acceptable to @code{break} (@pxref{Set Breaks,
and hence is quicker than @code{until} without an argument.
@kindex stepi
-@kindex si
+@kindex si @r{(@code{stepi})}
@item stepi
@itemx stepi @var{arg}
@itemx si
@@ -3393,7 +3401,7 @@ An argument is a repeat count, as in @code{step}.
@need 750
@kindex nexti
-@kindex ni
+@kindex ni @r{(@code{nexti})}
@item nexti
@itemx nexti @var{arg}
@itemx ni
@@ -3680,6 +3688,7 @@ no provision for frameless functions elsewhere in the stack.
@table @code
@kindex frame@r{, command}
+@cindex current stack frame
@item frame @var{args}
The @code{frame} command allows you to move from one stack frame to another,
and to print the stack frame you select. @var{args} may be either the
@@ -3687,6 +3696,7 @@ address of the frame or the stack frame number. Without an argument,
@code{frame} prints the current stack frame.
@kindex select-frame
+@cindex selecting frame silently
@item select-frame
The @code{select-frame} command allows you to move from one stack frame
to another without printing the frame. This is the silent version of
@@ -3706,7 +3716,7 @@ stack.
@table @code
@kindex backtrace
-@kindex bt
+@kindex bt @r{(@code{backtrace})}
@item backtrace
@itemx bt
Print a backtrace of the entire stack: one line per frame for all
@@ -3726,7 +3736,7 @@ Similar, but print only the outermost @var{n} frames.
@kindex where
@kindex info stack
-@kindex info s
+@kindex info s @r{(@code{info stack})}
The names @code{where} and @code{info stack} (abbreviated @code{info s})
are additional aliases for @code{backtrace}.
@@ -3766,7 +3776,7 @@ of the stack frame just selected.
@table @code
@kindex frame@r{, selecting}
-@kindex f
+@kindex f @r{(@code{frame})}
@item frame @var{n}
@itemx f @var{n}
Select frame number @var{n}. Recall that frame zero is the innermost
@@ -3801,7 +3811,7 @@ advances toward the outermost frame, to higher frame numbers, to frames
that have existed longer. @var{n} defaults to one.
@kindex down
-@kindex do
+@kindex do @r{(@code{down})}
@item down @var{n}
Move @var{n} frames down the stack. For positive numbers @var{n}, this
advances toward the innermost frame, to lower frame numbers, to frames
@@ -3858,7 +3868,7 @@ argument, this command is used to select a stack frame.
@xref{Selection, ,Selecting a frame}.
@kindex info frame
-@kindex info f
+@kindex info f @r{(@code{info frame})}
@item info frame
@itemx info f
This command prints a verbose description of the selected stack frame,
@@ -3944,7 +3954,7 @@ prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
@section Printing source lines
@kindex list
-@kindex l
+@kindex l @r{(@code{list})}
To print lines from a source file, use the @code{list} command
(abbreviated @code{l}). By default, ten lines are printed.
There are several ways to specify what part of the file you want to print.
@@ -4127,8 +4137,8 @@ path; this moves it forward, so @value{GDBN} searches it sooner.
@kindex cdir
@kindex cwd
-@kindex $cdir
-@kindex $cwd
+@vindex $cdir@r{, convenience variable}
+@vindex $cwdr@r{, convenience variable}
@cindex compilation directory
@cindex current directory
@cindex working directory
@@ -4205,7 +4215,7 @@ Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
@end smallexample
@cindex @code{$_} and @code{info line}
-@kindex x@r{, and }@code{info line}
+@kindex x@r{(examine), and} info line
After @code{info line}, the default address for the @code{x} command
is changed to the starting address of the line, so that @samp{x/i} is
sufficient to begin examining the machine code (@pxref{Memory,
@@ -4429,7 +4439,7 @@ using the colon-colon notation:
@cindex colon-colon, context for variables/functions
@iftex
@c info cannot cope with a :: index entry, but why deprive hard copy readers?
-@kindex ::
+@cindex @code{::}, context for variables/functions
@end iftex
@example
@var{file}::@var{variable}
@@ -4500,7 +4510,7 @@ information.
@section Artificial arrays
@cindex artificial array
-@kindex @@
+@kindex @@@r{, referencing memory as an array}
It is often useful to print out several successive objects of the
same type in memory; a section of an array, or an array of
dynamically determined size for which only a pointer exists in the
@@ -4645,7 +4655,7 @@ any of several formats, independently of your program's data types.
@cindex examining memory
@table @code
-@kindex x
+@kindex x @r{(examine memory)}
@item x/@var{nfu} @var{addr}
@itemx x @var{addr}
@itemx x
@@ -5336,7 +5346,7 @@ Some convenience variables are created automatically by @value{GDBN} and given
values likely to be useful.
@table @code
-@kindex $_
+@vindex $_@r{, convenience variable}
@item $_
The variable @code{$_} is automatically set by the @code{x} command to
the last address examined (@pxref{Memory, ,Examining memory}). Other
@@ -5346,14 +5356,14 @@ and @code{info breakpoint}. The type of @code{$_} is @code{void *}
except when set by the @code{x} command, in which case it is a pointer
to the type of @code{$__}.
-@kindex $__
+@vindex $__@r{, convenience variable}
@item $__
The variable @code{$__} is automatically set by the @code{x} command
to the value found in the last address examined. Its type is chosen
to match the format in which the data was printed.
@item $_exitcode
-@kindex $_exitcode
+@vindex $_exitcode@r{, convenience variable}
The variable @code{$_exitcode} is automatically set to the exit code when
the program being debugged terminates.
@end table
@@ -5868,8 +5878,8 @@ Since C and C++ are so closely related, many features of @value{GDBN} apply
to both languages. Whenever this is the case, we discuss those languages
together.
-@cindex C++
-@kindex g++
+@cindex C@t{++}
+@cindex @code{g++}, @sc{gnu} C@t{++} compiler
@cindex @sc{gnu} C++
The C++ debugging facilities are jointly implemented by the C++
compiler and @value{GDBN}. Therefore, to debug your C++ code
@@ -6161,7 +6171,7 @@ Member function calls are allowed; you can use expressions like
count = aml->GetOriginal(x, y)
@end example
-@kindex this
+@vindex this@r{, inside C@t{++} member functions}
@cindex namespace in C++
@item
While a member function is active (in the selected stack frame), your
@@ -6762,14 +6772,14 @@ index bounds, and all built-in functions and procedures.
@node M2 Scope
@subsubsection The scope operators @code{::} and @code{.}
@cindex scope
-@kindex .
+@cindex @code{.}, Modula-2 scope operator
@cindex colon, doubled as scope operator
@ifinfo
-@kindex colon-colon@r{, in Modula-2}
+@vindex colon-colon@r{, in Modula-2}
@c Info cannot handle :: but TeX can.
@end ifinfo
@iftex
-@kindex ::
+@vindex ::@r{, in Modula-2}
@end iftex
There are a few subtle differences between the Modula-2 scope operator
@@ -8012,19 +8022,16 @@ the program is running. To do this, use the @code{kill} command
@cindex dynamic linking
@item add-symbol-file @var{filename} @var{address}
@itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
-@itemx add-symbol-file @var{filename} @var{address} @var{data_address} @var{bss_address}
-@itemx add-symbol-file @var{filename} @r{-T}@var{section} @var{address}
+@itemx add-symbol-file @var{filename} @r{-s}@var{section} @var{address}
The @code{add-symbol-file} command reads additional symbol table
information from the file @var{filename}. You would use this command
when @var{filename} has been dynamically loaded (by some other means)
into the program that is running. @var{address} should be the memory
address at which the file has been loaded; @value{GDBN} cannot figure
-this out for itself. You can specify up to three addresses, in which
-case they are taken to be the addresses of the text, data, and bss
-segments respectively. For complicated cases, you can specify an
-arbitrary number of @samp{@r{-T}@var{section} @var{address}} pairs, to
-give an explicit section name and base address for that section. You
-can specify any @var{address} as an expression.
+this out for itself. You can additionally specify an arbitrary number
+of @samp{@r{-s}@var{section} @var{address}} pairs, to give an explicit
+section name and base address for that section. You can specify any
+@var{address} as an expression.
The symbol table of the file @var{filename} is added to the symbol table
originally read with the @code{symbol-file} command. You can use the
@@ -8421,10 +8428,6 @@ specifies a fixed address.
@cindex choosing target byte order
@cindex target byte order
-@kindex set endian big
-@kindex set endian little
-@kindex set endian auto
-@kindex show endian
Some types of processors, such as the MIPS, PowerPC, and Hitachi SH,
offer the ability to run either big-endian or little-endian byte
@@ -8536,30 +8539,30 @@ These working remote stubs are distributed with @value{GDBN}:
@table @code
@item i386-stub.c
-@kindex i386-stub.c
+@cindex @file{i386-stub.c}
@cindex Intel
@cindex i386
For Intel 386 and compatible architectures.
@item m68k-stub.c
-@kindex m68k-stub.c
+@cindex @file{m68k-stub.c}
@cindex Motorola 680x0
@cindex m680x0
For Motorola 680x0 architectures.
@item sh-stub.c
-@kindex sh-stub.c
+@cindex @file{sh-stub.c}
@cindex Hitachi
@cindex SH
For Hitachi SH architectures.
@item sparc-stub.c
-@kindex sparc-stub.c
+@cindex @file{sparc-stub.c}
@cindex Sparc
For @sc{sparc} architectures.
@item sparcl-stub.c
-@kindex sparcl-stub.c
+@cindex @file{sparcl-stub.c}
@cindex Fujitsu
@cindex SparcLite
For Fujitsu @sc{sparclite} architectures.
@@ -8754,7 +8757,7 @@ void (*exceptionHook)() = 0;
@noindent
but if before calling @code{set_debug_traps}, you set it to point to a
-function in your program; that function is called when
+function in your program, that function is called when
@code{@value{GDBN}} continues after stopping on a trap (for example, bus
error). The function indicated by @code{exceptionHook} is called with
one parameter: an @code{int} which is the exception number.
@@ -8928,7 +8931,7 @@ So:
@noindent
means the same as "0000".
-The error response, returned for some packets includes a two character
+The error response returned for some packets includes a two character
error number. That number is not well defined.
For any @var{command} not supported by the stub, an empty response
@@ -8942,7 +8945,7 @@ optional.
Below is a complete list of all currently defined @var{command}s and
their corresponding response @var{data}:
-
+@page
@multitable @columnfractions .30 .30 .40
@item Packet
@tab Request
@@ -8952,7 +8955,7 @@ their corresponding response @var{data}:
@tab @code{!}
@tab
Use the extended remote protocol. Sticky---only needs to be set once.
-The extended remote protocol support the @samp{R} packet.
+The extended remote protocol supports the @samp{R} packet.
@item
@tab reply @samp{}
@tab
@@ -8977,6 +8980,9 @@ and continue.
@item set program arguments @strong{(reserved)}
@tab @code{A}@var{arglen}@code{,}@var{argnum}@code{,}@var{arg}@code{,...}
@tab
+@item
+@tab
+@tab
Initialized @samp{argv[]} array passed into program. @var{arglen}
specifies the number of bytes in the hex encoded byte stream @var{arg}.
See @file{gdbserver} for more details.
@@ -9023,7 +9029,7 @@ Continue with signal @var{sig} (hex signal number). If
@tab reply
@tab see below
-@item toggle debug @emph{(deprecated)}
+@item toggle debug @strong{(deprecated)}
@tab @code{d}
@tab
toggle debug flag.
@@ -9036,7 +9042,7 @@ Detach @value{GDBN} from the remote system. Sent to the remote target before
@item
@tab reply @emph{no response}
@tab
-@value{GDBN} does not check for any response after sending this packet
+@value{GDBN} does not check for any response after sending this packet.
@item reserved
@tab @code{e}
@@ -9219,7 +9225,7 @@ digits for each byte in the register (target byte order).
@item general query
@tab @code{q}@var{query}
@tab
-Request info about @var{query}. In general @value{GDBN} @var{query}'s
+Request info about @var{query}. In general @value{GDBN} queries
have a leading upper case letter. Custom vendor queries should use a
company prefix (in lower case) ex: @samp{qfsf.var}. @var{query} may
optionally be followed by a @samp{,} or @samp{;} separated list. Stubs
@@ -9240,7 +9246,7 @@ must ensure that they match the full @var{query} name.
Set value of @var{var} to @var{val}. See @samp{q} for a discussing of
naming conventions.
-@item reset @emph{(deprecated)}
+@item reset @strong{(deprecated)}
@tab @code{r}
@tab
Reset the entire system.
@@ -9448,7 +9454,7 @@ sequence will be the @code{qs}@code{ThreadInfo} query.
@tab reply @code{m}@var{<id>}
@tab A single thread id
@item
-@tab reply @code{m}@var{<id>,}@var{<id>...}
+@tab reply @code{m}@var{<id>},@var{<id>...}
@tab a comma-separated list of thread ids
@item
@tab reply @code{l}
@@ -9534,6 +9540,9 @@ offset to the @code{Bss} section.}
@item thread info request
@tab @code{q}@code{P}@var{mode}@var{threadid}
@tab
+@item
+@tab
+@tab
Returns information on @var{threadid}. Where: @var{mode} is a hex
encoded 32 bit mode; @var{threadid} is a hex encoded 64 bit thread ID.
@item
@@ -9544,6 +9553,9 @@ See @code{remote.c:remote_unpack_thread_info_response()}.
@item remote command
@tab @code{q}@code{Rcmd,}@var{COMMAND}
@tab
+@item
+@tab
+@tab
@var{COMMAND} (hex encoded) is passed to the local interpreter for
execution. Invalid commands should be reported using the output string.
Before the final result packet, the target may also respond with a
@@ -10339,7 +10351,7 @@ and type @kbd{~.} to leave @code{tip} or @code{cu}.
@node Remote Log
@subsubsection Remote log
-@kindex eb.log
+@cindex @file{eb.log}, a log file for EB29K
@cindex log file for EB29K
The @code{target amd-eb} command creates a file @file{eb.log} in the
@@ -10598,6 +10610,7 @@ memory}. The accepted values for @var{mod} are @code{small},
@item target mon960 @var{dev}
MON960 monitor for Intel i960.
+@kindex target nindy
@item target nindy @var{devicename}
An Intel 960 board controlled by a Nindy Monitor. @var{devicename} is
the name of the serial device to use for the connection, e.g.
@@ -10623,12 +10636,6 @@ By responding to a prompt on startup;
By using the @code{target} command at any point during your @value{GDBN}
session. @xref{Target Commands, ,Commands for managing targets}.
-@kindex target nindy
-@item target nindy @var{devicename}
-An Intel 960 board controlled by a Nindy Monitor. @var{devicename} is
-the name of the serial device to use for the connection, e.g.
-@file{/dev/ttya}.
-
@end itemize
@cindex download to Nindy-960
@@ -11004,14 +11011,14 @@ both the Unix host and on the Sparclet target. The program
@code{@value{GDBP}} is installed and executed on the Unix host.
@table @code
-@item timeout @var{args}
+@item remotetimeout @var{args}
@kindex remotetimeout
@value{GDBN} supports the option @code{remotetimeout}.
This option is set by the user, and @var{args} represents the number of
seconds @value{GDBN} waits for responses.
@end table
-@kindex Compiling
+@cindex compiling, on Sparclet
When compiling for debugging, include the options @samp{-g} to get debug
information and @samp{-Ttext} to relocate the program to where you wish to
load it on the target. You may also want to add the options @samp{-n} or
@@ -11027,7 +11034,7 @@ You can use @code{objdump} to verify that the addresses are what you intended:
sparclet-aout-objdump --headers --syms prog
@end example
-@kindex Running
+@cindex running, on Sparclet
Once you have set
your Unix execution search path to find @value{GDBN}, you are ready to
run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
@@ -11316,7 +11323,7 @@ you may want to limit the size of this search, using one of these
commands:
@table @code
-@cindex @code{heuristic-fence-post} (Alpha,MIPS)
+@cindex @code{heuristic-fence-post} (Alpha, MIPS)
@item set heuristic-fence-post @var{limit}
Restrict @value{GDBN} to examining at most @var{limit} bytes in its
search for the beginning of a function. A value of @var{0} (the
@@ -11493,7 +11500,7 @@ These commands display the state of the @value{GDBN} history parameters.
@end table
@table @code
-@kindex show commands
+@kindex shows
@item show commands
Display the last ten commands in the command history.
@@ -11907,16 +11914,30 @@ the last command, as it would from the terminal.
@cindex @file{.gdbinit}
@cindex @file{gdb.ini}
When you start @value{GDBN}, it automatically executes commands from its
-@dfn{init files}. These are files named @file{.gdbinit} on Unix, or
-@file{gdb.ini} on DOS/Windows. @value{GDBN} reads the init file (if
-any) in your home directory@footnote{On DOS/Windows systems, the home
-directory is the one pointed to by the @code{HOME} environment
-variable.}, then processes command line options and operands, and then
-reads the init file (if any) in the current working directory. This is
-so the init file in your home directory can set options (such as
-@code{set complaints}) which affect the processing of the command line
-options and operands. The init files are not executed if you use the
-@samp{-nx} option; @pxref{Mode Options, ,Choosing modes}.
+@dfn{init files}. These are files named @file{.gdbinit} on Unix and
+@file{gdb.ini} on DOS/Windows. During startup, @value{GDBN} does the
+following:
+
+@enumerate
+@item
+Reads the init file (if any) in your home directory@footnote{On
+DOS/Windows systems, the home directory is the one pointed to by the
+@code{HOME} environment variable.}.
+
+@item
+Processes command line options and operands.
+
+@item
+Reads the init file (if any) in the current working directory.
+
+@item
+Reads command files specified by the @samp{-x} option.
+@end enumerate
+
+The init file in your home directory can set options (such as @samp{set
+complaints}) that affect subsequent processing of command line options
+and operands. Init files are not executed if you use the @samp{-nx}
+option (@pxref{Mode Options, ,Choosing modes}).
@cindex init file name
On some configurations of @value{GDBN}, the init file is known by a
@@ -11925,18 +11946,18 @@ form of @value{GDBN} may need to coexist with other forms, hence a
different name for the specialized version's init file). These are the
environments with special init file names:
-@kindex .vxgdbinit
+@cindex @file{.vxgdbinit}
@itemize @bullet
@item
-VxWorks (Wind River Systems real-time OS): @samp{.vxgdbinit}
+VxWorks (Wind River Systems real-time OS): @file{.vxgdbinit}
-@kindex .os68gdbinit
+@cindex @file{.os68gdbinit}
@item
-OS68K (Enea Data Systems real-time OS): @samp{.os68gdbinit}
+OS68K (Enea Data Systems real-time OS): @file{.os68gdbinit}
-@kindex .esgdbinit
+@cindex @file{.esgdbinit}
@item
-ES-1800 (Ericsson Telecom AB M68000 emulator): @samp{.esgdbinit}
+ES-1800 (Ericsson Telecom AB M68000 emulator): @file{.esgdbinit}
@end itemize
You can also request the execution of a command file with the
@@ -12212,6 +12233,7 @@ each value is printed in its own window.
@end ignore
@include annotate.texi
+@include gdbmi.texinfo
@node GDB Bugs
@chapter Reporting Bugs in @value{GDBN}
@@ -12857,5 +12879,12 @@ needed for special purposes only.
% Blame: doc@cygnus.com, 1991.
@end tex
+@c TeX can handle the contents at the start but makeinfo 3.12 can not
+@ifinfo
@contents
+@end ifinfo
+@ifhtml
+@contents
+@end ifhtml
+
@bye
diff --git a/gdb/doc/gdbint.texinfo b/gdb/doc/gdbint.texinfo
index 25b116e16e8..532d22351b8 100644
--- a/gdb/doc/gdbint.texinfo
+++ b/gdb/doc/gdbint.texinfo
@@ -1,6 +1,6 @@
\input texinfo
@setfilename gdbint.info
-
+@include gdb-cfg.texi
@ifinfo
@format
START-INFO-DIR-ENTRY
@@ -10,7 +10,7 @@ END-INFO-DIR-ENTRY
@end ifinfo
@ifinfo
-This file documents the internals of the GNU debugger GDB.
+This file documents the internals of the GNU debugger @value{GDBN}.
Copyright 1990-1999 Free Software Foundation, Inc.
Contributed by Cygnus Solutions. Written by John Gilmore.
@@ -33,10 +33,10 @@ regarded as a program in the language TeX).
@end ifinfo
@setchapternewpage off
-@settitle GDB Internals
+@settitle @value{GDBN} Internals
@titlepage
-@title{GDB Internals}
+@title @value{GDBN} Internals
@subtitle{A guide to the internals of the GNU debugger}
@author John Gilmore
@author Cygnus Solutions
@@ -63,14 +63,19 @@ are preserved on all copies.
@end titlepage
+@c TeX can handle the contents at the start but makeinfo 3.12 can not
+@iftex
+@contents
+@end iftex
+
@node Top
@c Perhaps this should be the title of the document (but only for info,
@c not for TeX). Existing GNU manuals seem inconsistent on this point.
@top Scope of this Document
-This document documents the internals of the GNU debugger, GDB. It
-includes description of GDB's key algorithms and operations, as well
-as the mechanisms that adapt GDB to specific hosts and targets.
+This document documents the internals of the GNU debugger, @value{GDBN}. It
+includes description of @value{GDBN}'s key algorithms and operations, as well
+as the mechanisms that adapt @value{GDBN} to specific hosts and targets.
@menu
* Requirements::
@@ -95,41 +100,41 @@ as the mechanisms that adapt GDB to specific hosts and targets.
@chapter Requirements
Before diving into the internals, you should understand the formal
-requirements and other expectations for GDB. Although some of these may
-seem obvious, there have been proposals for GDB that have run counter to
+requirements and other expectations for @value{GDBN}. Although some of these may
+seem obvious, there have been proposals for @value{GDBN} that have run counter to
these requirements.
-First of all, GDB is a debugger. It's not designed to be a front panel
+First of all, @value{GDBN} is a debugger. It's not designed to be a front panel
for embedded systems. It's not a text editor. It's not a shell. It's
not a programming environment.
-GDB is an interactive tool. Although a batch mode is available, GDB's
+@value{GDBN} is an interactive tool. Although a batch mode is available, @value{GDBN}'s
primary role is to interact with a human programmer.
-GDB should be responsive to the user. A programmer hot on the trail of
+@value{GDBN} should be responsive to the user. A programmer hot on the trail of
a nasty bug, and operating under a looming deadline, is going to be very
impatient of everything, including the response time to debugger
commands.
-GDB should be relatively permissive, such as for expressions. While the
+@value{GDBN} should be relatively permissive, such as for expressions. While the
compiler should be picky (or have the option to be made picky), since
source code lives for a long time usually, the programmer doing
debugging shouldn't be spending time figuring out to mollify the
debugger.
-GDB will be called upon to deal with really large programs. Executable
+@value{GDBN} will be called upon to deal with really large programs. Executable
sizes of 50 to 100 megabytes occur regularly, and we've heard reports of
programs approaching 1 gigabyte in size.
-GDB should be able to run everywhere. No other debugger is available
-for even half as many configurations as GDB supports.
+@value{GDBN} should be able to run everywhere. No other debugger is available
+for even half as many configurations as @value{GDBN} supports.
@node Overall Structure
@chapter Overall Structure
-GDB consists of three major subsystems: user interface, symbol handling
+@value{GDBN} consists of three major subsystems: user interface, symbol handling
(the ``symbol side''), and target system handling (the ``target side'').
Ther user interface consists of several actual interfaces, plus
@@ -151,26 +156,26 @@ should fit together.
@section The Symbol Side
-The symbolic side of GDB can be thought of as ``everything you can do in
-GDB without having a live program running''. For instance, you can look
+The symbolic side of @value{GDBN} can be thought of as ``everything you can do in
+@value{GDBN} without having a live program running''. For instance, you can look
at the types of variables, and evaluate many kinds of expressions.
@section The Target Side
-The target side of GDB is the ``bits and bytes manipulator''. Although
+The target side of @value{GDBN} is the ``bits and bytes manipulator''. Although
it may make reference to symbolic info here and there, most of the
target side will run with only a stripped executable available -- or
even no executable at all, in remote debugging cases.
Operations such as disassembly, stack frame crawls, and register
display, are able to work with no symbolic info at all. In some cases,
-such as disassembly, GDB will use symbolic info to present addresses
+such as disassembly, @value{GDBN} will use symbolic info to present addresses
relative to symbols rather than as raw numbers, but it will work either
way.
@section Configurations
-@dfn{Host} refers to attributes of the system where GDB runs.
+@dfn{Host} refers to attributes of the system where @value{GDBN} runs.
@dfn{Target} refers to the system where the program being debugged
executes. In most cases they are the same machine, in which case a
third type of @dfn{Native} attributes come into play.
@@ -196,7 +201,7 @@ are really part of the target environment, but which require
@code{#include} files that are only available on the host system. Core
file handling and @code{setjmp} handling are two common cases.
-When you want to make GDB work ``native'' on a particular machine, you
+When you want to make @value{GDBN} work ``native'' on a particular machine, you
have to include all three kinds of information.
@@ -204,18 +209,18 @@ have to include all three kinds of information.
@chapter Algorithms
-GDB uses a number of debugging-specific algorithms. They are often not
+@value{GDBN} uses a number of debugging-specific algorithms. They are often not
very complicated, but get lost in the thicket of special cases and
real-world issues. This chapter describes the basic algorithms and
mentions some of the specific target definitions that they use.
@section Frames
-A frame is a construct that GDB uses to keep track of calling and called
+A frame is a construct that @value{GDBN} uses to keep track of calling and called
functions.
@code{FRAME_FP} in the machine description has no meaning to the
-machine-independent part of GDB, except that it is used when setting up
+machine-independent part of @value{GDBN}, except that it is used when setting up
a new frame from scratch, as follows:
@example
@@ -229,8 +234,8 @@ any value that is convenient for the code that creates new frames.
defined; that is where you should use the @code{FP_REGNUM} value, if
your frames are nonstandard.)
-Given a GDB frame, define @code{FRAME_CHAIN} to determine the address of
-the calling function's frame. This will be used to create a new GDB
+Given a @value{GDBN} frame, define @code{FRAME_CHAIN} to determine the address of
+the calling function's frame. This will be used to create a new @value{GDBN}
frame struct, and then @code{INIT_EXTRA_FRAME_INFO} and
@code{INIT_FRAME_PC} will be called for the new frame.
@@ -247,25 +252,25 @@ Hardware breakpoints are sometimes available as a builtin debugging
features with some chips. Typically these work by having dedicated
register into which the breakpoint address may be stored. If the PC
ever matches a value in a breakpoint registers, the CPU raises an
-exception and reports it to GDB. Another possibility is when an
+exception and reports it to @value{GDBN}. Another possibility is when an
emulator is in use; many emulators include circuitry that watches the
address lines coming out from the processor, and force it to stop if the
address matches a breakpoint's address. A third possibility is that the
target already has the ability to do breakpoints somehow; for instance,
a ROM monitor may do its own software breakpoints. So although these
-are not literally ``hardware breakpoints'', from GDB's point of view
-they work the same; GDB need not do nothing more than set the breakpoint
+are not literally ``hardware breakpoints'', from @value{GDBN}'s point of view
+they work the same; @value{GDBN} need not do nothing more than set the breakpoint
and wait for something to happen.
Since they depend on hardware resources, hardware breakpoints may be
-limited in number; when the user asks for more, GDB will start trying to
+limited in number; when the user asks for more, @value{GDBN} will start trying to
set software breakpoints.
-Software breakpoints require GDB to do somewhat more work. The basic
-theory is that GDB will replace a program instruction with a trap,
+Software breakpoints require @value{GDBN} to do somewhat more work. The basic
+theory is that @value{GDBN} will replace a program instruction with a trap,
illegal divide, or some other instruction that will cause an exception,
-and then when it's encountered, GDB will take the exception and stop the
-program. When the user says to continue, GDB will restore the original
+and then when it's encountered, @value{GDBN} will take the exception and stop the
+program. When the user says to continue, @value{GDBN} will restore the original
instruction, single-step, re-insert the trap, and continue on.
Since it literally overwrites the program being tested, the program area
@@ -300,7 +305,7 @@ much of the interesting breakpoint action is in @file{infrun.c}.
@section Longjmp Support
-GDB has support for figuring out that the target is doing a
+@value{GDBN} has support for figuring out that the target is doing a
@code{longjmp} and for stopping at the target of the jump, if we are
stepping. This is done with a few specialized internal breakpoints,
which are visible in the @code{maint info breakpoint} command.
@@ -316,12 +321,12 @@ is target specific, you will need to define it in the appropriate
@chapter User Interface
-GDB has several user interfaces. Although the command-line interface
+@value{GDBN} has several user interfaces. Although the command-line interface
is the most common and most familiar, there are others.
@section Command Interpreter
-The command interpreter in GDB is fairly simple. It is designed to
+The command interpreter in @value{GDBN} is fairly simple. It is designed to
allow for the set of commands to be augmented dynamically, and also
has a recursive subcommand capability, where the first argument to
a command may itself direct a lookup on a different command list.
@@ -354,19 +359,19 @@ entire string the user should type at the command line.
@section libgdb
@code{libgdb} was an abortive project of years ago. The theory was to
-provide an API to GDB's functionality.
+provide an API to @value{GDBN}'s functionality.
@node Symbol Handling
@chapter Symbol Handling
-Symbols are a key part of GDB's operation. Symbols include variables,
+Symbols are a key part of @value{GDBN}'s operation. Symbols include variables,
functions, and types.
@section Symbol Reading
-GDB reads symbols from ``symbol files''. The usual symbol file is the
-file containing the program which GDB is debugging. GDB can be directed
+@value{GDBN} reads symbols from ``symbol files''. The usual symbol file is the
+file containing the program which @value{GDBN} is debugging. @value{GDBN} can be directed
to use a different file for symbols (with the @code{symbol-file}
command), and it can also read more symbols via the ``add-file'' and
``load'' commands, or while reading symbols from shared libraries.
@@ -376,7 +381,7 @@ BFD library. BFD identifies the type of the file by examining its
header. @code{find_sym_fns} then uses this identification to locate a
set of symbol-reading functions.
-Symbol reading modules identify themselves to GDB by calling
+Symbol reading modules identify themselves to @value{GDBN} by calling
@code{add_symtab_fns} during their module initialization. The argument
to @code{add_symtab_fns} is a @code{struct sym_fns} which contains the
name (or name prefix) of the symbol format, the length of the prefix,
@@ -410,7 +415,7 @@ There is no result from @code{@var{xyz}_symfile_init}, but it can call
Called from @code{symbol_file_add} when discarding existing symbols.
This function need only handle the symbol-reading module's internal
-state; the symbol table data structures visible to the rest of GDB will
+state; the symbol table data structures visible to the rest of @value{GDBN} will
be discarded by @code{symbol_file_add}. It has no arguments and no
result. It may be called after @code{@var{xyz}_symfile_init}, if a new
symbol table is being read, or may be called alone if all symbols are
@@ -432,7 +437,7 @@ or dynamically loaded file) is being read.@refill
In addition, if a symbol-reading module creates psymtabs when
@var{xyz}_symfile_read is called, these psymtabs will contain a pointer
to a function @code{@var{xyz}_psymtab_to_symtab}, which can be called
-from any point in the GDB symbol-handling code.
+from any point in the @value{GDBN} symbol-handling code.
@table @code
@item @var{xyz}_psymtab_to_symtab (struct partial_symtab *pst)
@@ -447,7 +452,7 @@ zero if there were no symbols in that part of the symbol file.
@section Partial Symbol Tables
-GDB has three types of symbol tables.
+@value{GDBN} has three types of symbol tables.
@itemize @bullet
@@ -469,7 +474,7 @@ A psymtab is constructed by doing a very quick pass over an executable
file's debugging information. Small amounts of information are
extracted -- enough to identify which parts of the symbol table will
need to be re-read and fully digested later, when the user needs the
-information. The speed of this pass causes GDB to start up very
+information. The speed of this pass causes @value{GDBN} to start up very
quickly. Later, as the detailed rereading occurs, it occurs in small
pieces, at various times, and the delay therefrom is mostly invisible to
the user.
@@ -515,7 +520,7 @@ them anyway. Psymtabs don't have the idea of the type of a symbol,
either, so types need not appear, unless they will be referenced by
name.
-It is a bug for GDB to behave one way when only a psymtab has been read,
+It is a bug for @value{GDBN} to behave one way when only a psymtab has been read,
and another way if the corresponding symtab has been read in. Such bugs
are typically caused by a psymtab that does not contain all the visible
symbols, or which has the wrong instruction address ranges.
@@ -532,14 +537,14 @@ unless you want to do a lot more work.
Fundamental Types (e.g., FT_VOID, FT_BOOLEAN).
-These are the fundamental types that GDB uses internally. Fundamental
+These are the fundamental types that @value{GDBN} uses internally. Fundamental
types from the various debugging formats (stabs, ELF, etc) are mapped
into one of these. They are basically a union of all fundamental types
-that gdb knows about for all the languages that GDB knows about.
+that gdb knows about for all the languages that @value{GDBN} knows about.
Type Codes (e.g., TYPE_CODE_PTR, TYPE_CODE_ARRAY).
-Each time GDB builds an internal type, it marks it with one of these
+Each time @value{GDBN} builds an internal type, it marks it with one of these
types. The type may be a fundamental type, such as TYPE_CODE_INT, or a
derived type, such as TYPE_CODE_PTR which is a pointer to another type.
Typically, several FT_* types map to one TYPE_CODE_* type, and are
@@ -549,7 +554,7 @@ type is signed or unsigned, and how many bits it uses.
Builtin Types (e.g., builtin_type_void, builtin_type_char).
These are instances of type structs that roughly correspond to
-fundamental types and are created as global types for GDB to use for
+fundamental types and are created as global types for @value{GDBN} to use for
various ugly historical reasons. We eventually want to eliminate these.
Note for example that builtin_type_int initialized in gdbtypes.c is
basically the same as a TYPE_CODE_INT type that is initialized in
@@ -614,7 +619,7 @@ been run (or the core file has been read).
Windows 95 and NT use the PE (Portable Executable) format for their
executables. PE is basically COFF with additional headers.
-While BFD includes special PE support, GDB needs only the basic
+While BFD includes special PE support, @value{GDBN} needs only the basic
COFF reader.
@subsection ELF
@@ -634,7 +639,7 @@ The SOM reader is in @file{hpread.c}.
@subsection Other File Formats
-Other file formats that have been supported by GDB include Netware
+Other file formats that have been supported by @value{GDBN} include Netware
Loadable Modules (@file{nlmread.c}.
@section Debugging File Formats
@@ -687,7 +692,7 @@ The DWARF 2 reader is in @file{dwarf2read.c}.
Like COFF, the SOM definition includes debugging information.
-@section Adding a New Symbol Reader to GDB
+@section Adding a New Symbol Reader to @value{GDBN}
If you are using an existing object file format (a.out, COFF, ELF, etc),
there is probably little to be done.
@@ -696,9 +701,9 @@ If you need to add a new object file format, you must first add it to
BFD. This is beyond the scope of this document.
You must then arrange for the BFD code to provide access to the
-debugging symbols. Generally GDB will have to call swapping routines
+debugging symbols. Generally @value{GDBN} will have to call swapping routines
from BFD and a few other BFD internal routines to locate the debugging
-information. As much as possible, GDB should not depend on the BFD
+information. As much as possible, @value{GDBN} should not depend on the BFD
internal data structures.
For some targets (e.g., COFF), there is a special transfer vector used
@@ -706,24 +711,24 @@ to call swapping routines, since the external data structures on various
platforms have different sizes and layouts. Specialized routines that
will only ever be implemented by one object file format may be called
directly. This interface should be described in a file
-@file{bfd/libxyz.h}, which is included by GDB.
+@file{bfd/libxyz.h}, which is included by @value{GDBN}.
@node Language Support
@chapter Language Support
-GDB's language support is mainly driven by the symbol reader, although
+@value{GDBN}'s language support is mainly driven by the symbol reader, although
it is possible for the user to set the source language manually.
-GDB chooses the source language by looking at the extension of the file
+@value{GDBN} chooses the source language by looking at the extension of the file
recorded in the debug info; @code{.c} means C, @code{.f} means Fortran,
etc. It may also use a special-purpose language identifier if the debug
format supports it, such as DWARF.
-@section Adding a Source Language to GDB
+@section Adding a Source Language to @value{GDBN}
-To add other languages to GDB's expression parser, follow the following
+To add other languages to @value{GDBN}'s expression parser, follow the following
steps:
@table @emph
@@ -760,7 +765,7 @@ various parsers from defining the same global names:
At the bottom of your parser, define a @code{struct language_defn} and
initialize it with the right values for your language. Define an
@code{initialize_@var{lang}} routine and have it call
-@samp{add_language(@var{lang}_language_defn)} to tell the rest of GDB
+@samp{add_language(@var{lang}_language_defn)} to tell the rest of @value{GDBN}
that your language exists. You'll need some other supporting variables
and functions, which will be used via pointers from your
@code{@var{lang}_language_defn}. See the declaration of @code{struct
@@ -793,7 +798,7 @@ string.
Update the function @code{_initialize_language} to include your
language. This function picks the default language upon startup, so is
-dependent upon which languages that GDB is built for.
+dependent upon which languages that @value{GDBN} is built for.
Update @code{allocate_symtab} in @file{symfile.c} and/or symbol-reading
code so that the language of each symtab (source file) is set properly.
@@ -814,18 +819,18 @@ Add a call to @code{@var{lang}_parse()} and @code{@var{lang}_error} in
@item Use macros to trim code
-The user has the option of building GDB for some or all of the
-languages. If the user decides to build GDB for the language
+The user has the option of building @value{GDBN} for some or all of the
+languages. If the user decides to build @value{GDBN} for the language
@var{lang}, then every file dependent on @file{language.h} will have the
macro @code{_LANG_@var{lang}} defined in it. Use @code{#ifdef}s to
leave out large routines that the user won't need if he or she is not
using your language.
-Note that you do not need to do this in your YACC parser, since if GDB
+Note that you do not need to do this in your YACC parser, since if @value{GDBN}
is not build for @var{lang}, then @file{@var{lang}-exp.tab.o} (the
-compiled form of your parser) is not linked into GDB at all.
+compiled form of your parser) is not linked into @value{GDBN} at all.
-See the file @file{configure.in} for how GDB is configured for different
+See the file @file{configure.in} for how @value{GDBN} is configured for different
languages.
@item Edit @file{Makefile.in}
@@ -847,12 +852,12 @@ definition machinery anymore.
@section Adding a New Host
-Most of GDB's host configuration support happens via autoconf. It
-should be rare to need new host-specific definitions. GDB still uses
+Most of @value{GDBN}'s host configuration support happens via autoconf. It
+should be rare to need new host-specific definitions. @value{GDBN} still uses
the host-specific definitions and files listed below, but these mostly
exist for historical reasons, and should eventually disappear.
-Several files control GDB's configuration for host systems:
+Several files control @value{GDBN}'s configuration for host systems:
@table @file
@@ -909,7 +914,7 @@ This contains generic TCP support using sockets.
@section Host Conditionals
-When GDB is configured and compiled, various macros are defined or left
+When @value{GDBN} is configured and compiled, various macros are defined or left
undefined, to control compilation based on the attributes of the host
system. These macros and their meanings (or if the meaning is not
documented here, then one of the source files where they are used is
@@ -917,8 +922,8 @@ indicated) are:
@table @code
-@item GDBINIT_FILENAME
-The default name of GDB's initialization file (normally @file{.gdbinit}).
+@item @value{GDBN}INIT_FILENAME
+The default name of @value{GDBN}'s initialization file (normally @file{.gdbinit}).
@item MEM_FNS_DECLARED
Your host config file defines this if it includes declarations of
@@ -1065,7 +1070,7 @@ Define this to 1 if the target is using the generic inferior function
call code. See @code{blockframe.c} for more information.
@item USE_MMALLOC
-GDB will use the @code{mmalloc} library for memory allocation for symbol
+@value{GDBN} will use the @code{mmalloc} library for memory allocation for symbol
reading if this symbol is defined. Be careful defining it since there
are systems on which @code{mmalloc} does not work for some reason. One
example is the DECstation, where its RPC library can't cope with our
@@ -1105,7 +1110,7 @@ Define these to appropriate value for the system lseek(), if not already
defined.
@item STOP_SIGNAL
-This is the signal for stopping GDB. Defaults to SIGTSTP. (Only
+This is the signal for stopping @value{GDBN}. Defaults to SIGTSTP. (Only
redefined for the Convex.)
@item USE_O_NOCTTY
@@ -1133,25 +1138,186 @@ Define this to override the defaults of @code{__volatile__} or
@chapter Target Architecture Definition
-GDB's target architecture defines what sort of machine-language programs
-GDB can work with, and how it works with them.
+@value{GDBN}'s target architecture defines what sort of machine-language programs
+@value{GDBN} can work with, and how it works with them.
At present, the target architecture definition consists of a number of C
macros.
@section Registers and Memory
-GDB's model of the target machine is rather simple. GDB assumes the
+@value{GDBN}'s model of the target machine is rather simple. @value{GDBN} assumes the
machine includes a bank of registers and a block of memory. Each
register may have a different size.
-GDB does not have a magical way to match up with the compiler's idea of
+@value{GDBN} does not have a magical way to match up with the compiler's idea of
which registers are which; however, it is critical that they do match up
accurately. The only way to make this work is to get accurate
information about the order that the compiler uses, and to reflect that
in the @code{REGISTER_NAME} and related macros.
-GDB can handle big-endian, little-endian, and bi-endian architectures.
+@value{GDBN} can handle big-endian, little-endian, and bi-endian architectures.
+
+@section Pointers Are Not Always Addresses
+@cindex pointer representation
+@cindex address representation
+@cindex word-addressed machines
+@cindex separate data and code address spaces
+@cindex spaces, separate data and code address
+@cindex address spaces, separate data and code
+@cindex code pointers, word-addressed
+@cindex converting between pointers and addresses
+@cindex D10V addresses
+
+On almost all 32-bit architectures, the representation of a pointer is
+indistinguishable from the representation of some fixed-length number
+whose value is the byte address of the object pointed to. On such
+machines, the words `pointer' and `address' can be used interchangeably.
+However, architectures with smaller word sizes are often cramped for
+address space, so they may choose a pointer representation that breaks this
+identity, and allows a larger code address space.
+
+For example, the Mitsubishi D10V is a 16-bit VLIW processor whose
+instructions are 32 bits long@footnote{Some D10V instructions are
+actually pairs of 16-bit sub-instructions. However, since you can't
+jump into the middle of such a pair, code addresses can only refer to
+full 32 bit instructions, which is what matters in this explanation.}.
+If the D10V used ordinary byte addresses to refer to code locations,
+then the processor would only be able to address 64kb of instructions.
+However, since instructions must be aligned on four-byte boundaries, the
+low two bits of any valid instruction's byte address are always zero ---
+byte addresses waste two bits. So instead of byte addresses, the D10V
+uses word addresses --- byte addresses shifted right two bits --- to
+refer to code. Thus, the D10V can use 16-bit words to address 256kb of
+code space.
+
+However, this means that code pointers and data pointers have different
+forms on the D10V. The 16-bit word @code{0xC020} refers to byte address
+@code{0xC020} when used as a data address, but refers to byte address
+@code{0x30080} when used as a code address.
+
+(The D10V also uses separate code and data address spaces, which also
+affects the correspondence between pointers and addresses, but we're
+going to ignore that here; this example is already too long.)
+
+To cope with architectures like this --- the D10V is not the only one!
+--- @value{GDBN} tries to distinguish between @dfn{addresses}, which are
+byte numbers, and @dfn{pointers}, which are the target's representation
+of an address of a particular type of data. In the example above,
+@code{0xC020} is the pointer, which refers to one of the addresses
+@code{0xC020} or @code{0x30080}, depending on the type imposed upon it.
+@value{GDBN} provides functions for turning a pointer into an address
+and vice versa, in the appropriate way for the current architecture.
+
+Unfortunately, since addresses and pointers are identical on almost all
+processors, this distinction tends to bit-rot pretty quickly. Thus,
+each time you port @value{GDBN} to an architecture which does
+distinguish between pointers and addresses, you'll probably need to
+clean up some architecture-independent code.
+
+Here are functions which convert between pointers and addresses:
+
+@deftypefun CORE_ADDR extract_typed_address (void *@var{buf}, struct type *@var{type})
+Treat the bytes at @var{buf} as a pointer or reference of type
+@var{type}, and return the address it represents, in a manner
+appropriate for the current architecture. This yields an address
+@value{GDBN} can use to read target memory, disassemble, etc. Note that
+@var{buf} refers to a buffer in @value{GDBN}'s memory, not the
+inferior's.
+
+For example, if the current architecture is the Intel x86, this function
+extracts a little-endian integer of the appropriate length from
+@var{buf} and returns it. However, if the current architecture is the
+D10V, this function will return a 16-bit integer extracted from
+@var{buf}, multiplied by four if @var{type} is a pointer to a function.
+
+If @var{type} is not a pointer or reference type, then this function
+will signal an internal error.
+@end deftypefun
+
+@deftypefun CORE_ADDR store_typed_address (void *@var{buf}, struct type *@var{type}, CORE_ADDR @var{addr})
+Store the address @var{addr} in @var{buf}, in the proper format for a
+pointer of type @var{type} in the current architecture. Note that
+@var{buf} refers to a buffer in @value{GDBN}'s memory, not the
+inferior's.
+
+For example, if the current architecture is the Intel x86, this function
+stores @var{addr} unmodified as a little-endian integer of the
+appropriate length in @var{buf}. However, if the current architecture
+is the D10V, this function divides @var{addr} by four if @var{type} is
+a pointer to a function, and then stores it in @var{buf}.
+
+If @var{type} is not a pointer or reference type, then this function
+will signal an internal error.
+@end deftypefun
+
+@deftypefun CORE_ADDR value_as_pointer (value_ptr @var{val})
+Assuming that @var{val} is a pointer, return the address it represents,
+as appropriate for the current architecture.
+
+This function actually works on integral values, as well as pointers.
+For pointers, it performs architecture-specific conversions as
+described above for @code{extract_typed_address}.
+@end deftypefun
+
+@deftypefun CORE_ADDR value_from_pointer (struct type *@var{type}, CORE_ADDR @var{addr})
+Create and return a value representing a pointer of type @var{type} to
+the address @var{addr}, as appropriate for the current architecture.
+This function performs architecture-specific conversions as described
+above for @code{store_typed_address}.
+@end deftypefun
+
+
+@value{GDBN} also provides functions that do the same tasks, but assume
+that pointers are simply byte addresses; they aren't sensitive to the
+current architecture, beyond knowing the appropriate endianness.
+
+@deftypefun CORE_ADDR extract_address (void *@var{addr}, int len)
+Extract a @var{len}-byte number from @var{addr} in the appropriate
+endianness for the current architecture, and return it. Note that
+@var{addr} refers to @value{GDBN}'s memory, not the inferior's.
+
+This function should only be used in architecture-specific code; it
+doesn't have enough information to turn bits into a true address in the
+appropriate way for the current architecture. If you can, use
+@code{extract_typed_address} instead.
+@end deftypefun
+
+@deftypefun void store_address (void *@var{addr}, int @var{len}, LONGEST @var{val})
+Store @var{val} at @var{addr} as a @var{len}-byte integer, in the
+appropriate endianness for the current architecture. Note that
+@var{addr} refers to a buffer in @value{GDBN}'s memory, not the
+inferior's.
+
+This function should only be used in architecture-specific code; it
+doesn't have enough information to turn a true address into bits in the
+appropriate way for the current architecture. If you can, use
+@code{store_typed_address} instead.
+@end deftypefun
+
+
+Here are some macros which architectures can define to indicate the
+relationship between pointers and addresses. These have default
+definitions, appropriate for architectures on which all pointers are
+simple byte addresses.
+
+@deftypefn {Target Macro} CORE_ADDR POINTER_TO_ADDRESS (struct type *@var{type}, char *@var{buf})
+Assume that @var{buf} holds a pointer of type @var{type}, in the
+appropriate format for the current architecture. Return the byte
+address the pointer refers to.
+
+This function may safely assume that @var{type} is either a pointer or a
+C++ reference type.
+@end deftypefn
+
+@deftypefn {Target Macro} void ADDRESS_TO_POINTER (struct type *@var{type}, char *@var{buf}, CORE_ADDR @var{addr})
+Store in @var{buf} a pointer of type @var{type} representing the address
+@var{addr}, in the appropriate format for the current architecture.
+
+This function may safely assume that @var{type} is either a pointer or a
+C++ reference type.
+@end deftypefn
+
@section Using Different Register and Memory Data Representations
@cindex raw representation
@@ -1162,9 +1328,9 @@ GDB can handle big-endian, little-endian, and bi-endian architectures.
Some architectures use one representation for a value when it lives in a
register, but use a different representation when it lives in memory.
-In GDB's terminology, the @dfn{raw} representation is the one used in
+In @value{GDBN}'s terminology, the @dfn{raw} representation is the one used in
the target registers, and the @dfn{virtual} representation is the one
-used in memory, and within GDB @code{struct value} objects.
+used in memory, and within @value{GDBN} @code{struct value} objects.
For almost all data types on almost all architectures, the virtual and
raw representations are identical, and no special handling is needed.
@@ -1182,8 +1348,8 @@ type is the raw representation, and the twelve-byte loosely-packed
arrangement is the virtual representation.
@item
-Some 64-bit MIPS targets present 32-bit registers to GDB as 64-bit
-registers, with garbage in their upper bits. GDB ignores the top 32
+Some 64-bit MIPS targets present 32-bit registers to @value{GDBN} as 64-bit
+registers, with garbage in their upper bits. @value{GDBN} ignores the top 32
bits. Thus, the 64-bit form, with garbage in the upper 32 bits, is the
raw representation, and the trimmed 32-bit representation is the
virtual representation.
@@ -1191,9 +1357,9 @@ virtual representation.
@end itemize
In general, the raw representation is determined by the architecture, or
-GDB's interface to the architecture, while the virtual representation
-can be chosen for GDB's convenience. GDB's register file,
-@code{registers}, holds the register contents in raw format, and the GDB
+@value{GDBN}'s interface to the architecture, while the virtual representation
+can be chosen for @value{GDBN}'s convenience. @value{GDBN}'s register file,
+@code{registers}, holds the register contents in raw format, and the @value{GDBN}
remote protocol transmits register values in raw format.
Your architecture may define the following macros to request raw /
@@ -1206,7 +1372,7 @@ and virtual formats.
@deftypefn {Target Macro} int REGISTER_RAW_SIZE (int @var{reg})
The size of register number @var{reg}'s raw value. This is the number
-of bytes the register will occupy in @code{registers}, or in a GDB
+of bytes the register will occupy in @code{registers}, or in a @value{GDBN}
remote protocol packet.
@end deftypefn
@@ -1219,7 +1385,7 @@ register's value.
@deftypefn {Target Macro} struct type *REGISTER_VIRTUAL_TYPE (int @var{reg})
This is the type of the virtual representation of register number
@var{reg}. Note that there is no need for a macro giving a type for the
-register's raw form; once the register's value has been obtained, GDB
+register's raw form; once the register's value has been obtained, @value{GDBN}
always uses the virtual form.
@end deftypefn
@@ -1262,7 +1428,7 @@ machine.
@item ADDITIONAL_OPTION_HANDLER
@item ADDITIONAL_OPTION_HELP
These are a set of macros that allow the addition of additional command
-line options to GDB. They are currently used only for the unsupported
+line options to @value{GDBN}. They are currently used only for the unsupported
i960 Nindy target, and should not be used in any other configuration.
@item ADDR_BITS_REMOVE (addr)
@@ -1278,12 +1444,19 @@ boundaries, the processor masks out these bits to generate the actual
address of the instruction. ADDR_BITS_REMOVE should filter out these
bits with an expression such as @code{((addr) & ~3)}.
+@item ADDRESS_TO_POINTER (@var{type}, @var{buf}, @var{addr})
+Store in @var{buf} a pointer of type @var{type} representing the address
+@var{addr}, in the appropriate format for the current architecture.
+This macro may safely assume that @var{type} is either a pointer or a
+C++ reference type.
+@xref{Target Architecture Definition, , Pointers Are Not Always Addresses}.
+
@item BEFORE_MAIN_LOOP_HOOK
Define this to expand into any code that you want to execute before the
main loop starts. Although this is not, strictly speaking, a target
conditional, that is how it is currently being used. Note that if a
configuration were to define it one way for a host and a different way
-for the target, GDB will probably not compile, let alone run correctly.
+for the target, @value{GDBN} will probably not compile, let alone run correctly.
This is currently used only for the unsupported i960 Nindy target, and
should not be used in any other configuration.
@@ -1293,7 +1466,7 @@ still reports the parameter as its original type, rather than the
promoted type.
@item BELIEVE_PCC_PROMOTION_TYPE
-Define this if GDB should believe the type of a short argument when
+Define this if @value{GDBN} should believe the type of a short argument when
compiled by pcc, but look within a full int space to get its value.
Only defined for Sun-3 at present.
@@ -1400,7 +1573,7 @@ from an inferior process. This is only relevant if
@item CANNOT_STORE_REGISTER (regno)
A C expression that should be nonzero if @var{regno} should not be
written to the target. This is often the case for program counters,
-status words, and other special registers. If this is not defined, GDB
+status words, and other special registers. If this is not defined, @value{GDBN}
will assume that all registers may be written.
@item DO_DEFERRED_STORES
@@ -1428,7 +1601,7 @@ The default behavior is to promote only when we have no type information
for the formal parameter. This is different from the obvious behavior,
which would be to promote whenever we have no prototype, just as the
compiler does. It's annoying, but some older targets rely on this. If
-you want GDB to follow the typical compiler behavior --- to always
+you want @value{GDBN} to follow the typical compiler behavior --- to always
promote when there is no prototype in scope --- your gdbarch init
function can call @code{set_gdbarch_coerce_float_to_double} and select
the @code{standard_coerce_float_to_double} function.
@@ -1559,21 +1732,21 @@ be 2 on the VAX.
@item GCC_COMPILED_FLAG_SYMBOL
@item GCC2_COMPILED_FLAG_SYMBOL
-If defined, these are the names of the symbols that GDB will look for to
+If defined, these are the names of the symbols that @value{GDBN} will look for to
detect that GCC compiled the file. The default symbols are
@code{gcc_compiled.} and @code{gcc2_compiled.}, respectively. (Currently
only defined for the Delta 68.)
-@item GDB_MULTI_ARCH
+@item @value{GDBN}_MULTI_ARCH
If defined and non-zero, enables suport for multiple architectures
-within GDB.
+within @value{GDBN}.
The support can be enabled at two levels. At level one, only
definitions for previously undefined macros are provided; at level two,
a multi-arch definition of all architecture dependant macros will be
defined.
-@item GDB_TARGET_IS_HPPA
+@item @value{GDBN}_TARGET_IS_HPPA
This determines whether horrible kludge code in dbxread.c and
partial-stab.h is used to mangle multiple-symbol-table files from
HPPA's. This should all be ripped out, and a scheme like elfread.c
@@ -1607,7 +1780,7 @@ repenting at leisure.
@item SYMBOLS_CAN_START_WITH_DOLLAR
Some systems have routines whose names start with @samp{$}. Giving this
-macro a non-zero value tells GDB's expression parser to check for such
+macro a non-zero value tells @value{GDBN}'s expression parser to check for such
routines when parsing tokens that begin with @samp{$}.
On HP-UX, certain system routines (millicode) have names beginning with
@@ -1665,39 +1838,84 @@ stepping will suffice.
@item IS_TRAPPED_INTERNALVAR (name)
This is an ugly hook to allow the specification of special actions that
should occur as a side-effect of setting the value of a variable
-internal to GDB. Currently only used by the h8500. Note that this
+internal to @value{GDBN}. Currently only used by the h8500. Note that this
could be either a host or target conditional.
@item NEED_TEXT_START_END
-Define this if GDB should determine the start and end addresses of the
+Define this if @value{GDBN} should determine the start and end addresses of the
text section. (Seems dubious.)
@item NO_HIF_SUPPORT
(Specific to the a29k.)
+@item POINTER_TO_ADDRESS (@var{type}, @var{buf})
+Assume that @var{buf} holds a pointer of type @var{type}, in the
+appropriate format for the current architecture. Return the byte
+address the pointer refers to.
+@xref{Target Architecture Definition, , Pointers Are Not Always Addresses}.
+
@item REGISTER_CONVERTIBLE (@var{reg})
Return non-zero if @var{reg} uses different raw and virtual formats.
-@xref{Using Different Target and Host Data Representations}.
+@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
@item REGISTER_RAW_SIZE (@var{reg})
Return the raw size of @var{reg}.
-@xref{Using Different Target and Host Data Representations}.
+@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
@item REGISTER_VIRTUAL_SIZE (@var{reg})
Return the virtual size of @var{reg}.
-@xref{Using Different Target and Host Data Representations}.
+@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
@item REGISTER_VIRTUAL_TYPE (@var{reg})
Return the virtual type of @var{reg}.
-@xref{Using Different Target and Host Data Representations}.
+@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
@item REGISTER_CONVERT_TO_VIRTUAL(@var{reg}, @var{type}, @var{from}, @var{to})
Convert the value of register @var{reg} from its raw form to its virtual
-form. @xref{Using Different Target and Host Data Representations}.
+form.
+@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
@item REGISTER_CONVERT_TO_RAW(@var{type}, @var{reg}, @var{from}, @var{to})
Convert the value of register @var{reg} from its virtual form to its raw
-form. @xref{Using Different Target and Host Data Representations}.
+form.
+@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
+
+@item RETURN_VALUE_ON_STACK(@var{type})
+@findex RETURN_VALUE_ON_STACK
+@cindex returning structures by value
+@cindex structures, returning by value
+
+Return non-zero if values of type TYPE are returned on the stack, using
+the ``struct convention'' (i.e., the caller provides a pointer to a
+buffer in which the callee should store the return value). This
+controls how the @samp{finish} command finds a function's return value,
+and whether an inferior function call reserves space on the stack for
+the return value.
+
+The full logic @value{GDBN} uses here is kind of odd.
+@itemize @bullet
+
+@item
+If the type being returned by value is not a structure, union, or array,
+and @code{RETURN_VALUE_ON_STACK} returns zero, then @value{GDBN}
+concludes the value is not returned using the struct convention.
+
+@item
+Otherwise, @value{GDBN} calls @code{USE_STRUCT_CONVENTION} (see below).
+If that returns non-zero, @value{GDBN} assumes the struct convention is
+in use.
+
+@end itemize
+
+In other words, to indicate that a given type is returned by value using
+the struct convention, that type must be either a struct, union, array,
+or something @code{RETURN_VALUE_ON_STACK} likes, @emph{and} something
+that @code{USE_STRUCT_CONVENTION} likes.
+
+Note that, in C and C++, arrays are never returned by value. In those
+languages, these predicates will always see a pointer type, never an
+array type. All the references above to arrays being returned by value
+apply only to other languages.
@item SOFTWARE_SINGLE_STEP_P
Define this as 1 if the target does not have a hardware single-step
@@ -1800,7 +2018,7 @@ call. Return the updated stack pointer value.
Used in @samp{call_function_by_hand} to create an artificial stack frame.
@item REGISTER_BYTES
-The total amount of space needed to store GDB's copy of the machine's
+The total amount of space needed to store @value{GDBN}'s copy of the machine's
register state.
@item REGISTER_NAME(i)
@@ -1821,14 +2039,14 @@ This is the value of the @var{SP} after both the dummy frame and space
for parameters/results have been allocated on the stack.
@item SDB_REG_TO_REGNUM
-Define this to convert sdb register numbers into GDB regnums. If not
+Define this to convert sdb register numbers into @value{GDBN} regnums. If not
defined, no conversion will be done.
@item SHIFT_INST_REGS
(Only used for m88k targets.)
@item SKIP_PERMANENT_BREAKPOINT
-Advance the inferior's PC past a permanent breakpoint. GDB normally
+Advance the inferior's PC past a permanent breakpoint. @value{GDBN} normally
steps over a breakpoint by removing it, stepping one instruction, and
re-inserting the breakpoint. However, permanent breakpoints are
hardwired into the inferior, and can't be removed, so this strategy
@@ -1860,7 +2078,7 @@ This should only need to be defined if @code{TARGET_WRITE_SP} and
@item STAB_REG_TO_REGNUM
Define this to convert stab register numbers (as gotten from `r'
-declarations) into GDB regnums. If not defined, no conversion will be
+declarations) into @value{GDBN} regnums. If not defined, no conversion will be
done.
@item STACK_ALIGN (addr)
@@ -1870,7 +2088,7 @@ processor's stack.
@item STEP_SKIPS_DELAY (addr)
Define this to return true if the address is of an instruction with a
delay slot. If a breakpoint has been placed in the instruction's delay
-slot, GDB will single-step over that instruction before resuming
+slot, @value{GDBN} will single-step over that instruction before resuming
normally. Currently only defined for the Mips.
@item STORE_RETURN_VALUE (type, valbuf)
@@ -1940,7 +2158,7 @@ Number of bits in a short integer; defaults to @code{2 * TARGET_CHAR_BIT}.
@item TARGET_WRITE_FP
These change the behavior of @code{read_pc}, @code{write_pc},
@code{read_sp}, @code{write_sp}, @code{read_fp} and @code{write_fp}.
-For most targets, these may be left undefined. GDB will call the read
+For most targets, these may be left undefined. @value{GDBN} will call the read
and write register functions with the relevant @code{_REGNUM} argument.
These macros are useful when a target keeps one of these registers in a
@@ -1965,7 +2183,7 @@ other compilers.
For dbx-style debugging information, if the compiler puts variable
declarations inside LBRAC/RBRAC blocks, this should be defined to be
nonzero. @var{desc} is the value of @code{n_desc} from the
-@code{N_RBRAC} symbol, and @var{gcc_p} is true if GDB has noticed the
+@code{N_RBRAC} symbol, and @var{gcc_p} is true if @value{GDBN} has noticed the
presence of either the @code{GCC_COMPILED_SYMBOL} or the
@code{GCC2_COMPILED_SYMBOL}. By default, this is 0.
@@ -1989,7 +2207,7 @@ Defaults to @code{1}.
@section Adding a New Target
-The following files define a target to GDB:
+The following files define a target to @value{GDBN}:
@table @file
@@ -2002,7 +2220,7 @@ tm-@var{ttt}.h}.
You can also define @samp{TM_CFLAGS}, @samp{TM_CLIBS}, @samp{TM_CDEPS},
but these are now deprecated, replaced by autoconf, and may go away in
-future versions of GDB.
+future versions of @value{GDBN}.
@item gdb/config/@var{arch}/tm-@var{ttt}.h
(@file{tm.h} is a link to this file, created by configure). Contains
@@ -2041,10 +2259,10 @@ that just @code{#include}s @file{tm-@var{arch}.h} and
@chapter Target Vector Definition
-The target vector defines the interface between GDB's abstract handling
+The target vector defines the interface between @value{GDBN}'s abstract handling
of target systems, and the nitty-gritty code that actually exercises
-control over a process or a serial port. GDB includes some 30-40
-different target vectors; however, each configuration of GDB includes
+control over a process or a serial port. @value{GDBN} includes some 30-40
+different target vectors; however, each configuration of @value{GDBN} includes
only a few of them.
@section File Targets
@@ -2053,12 +2271,12 @@ Both executables and core files have target vectors.
@section Standard Protocol and Remote Stubs
-GDB's file @file{remote.c} talks a serial protocol to code that runs in
-the target system. GDB provides several sample ``stubs'' that can be
+@value{GDBN}'s file @file{remote.c} talks a serial protocol to code that runs in
+the target system. @value{GDBN} provides several sample ``stubs'' that can be
integrated into target programs or operating systems for this purpose;
they are named @file{*-stub.c}.
-The GDB user's manual describes how to put such a stub into your target
+The @value{GDBN} user's manual describes how to put such a stub into your target
code. What follows is a discussion of integrating the SPARC stub into a
complicated operating system (rather than a simple program), by Stu
Grossman, the author of this stub.
@@ -2093,7 +2311,7 @@ do breakpoints. Everything else is unnecessary for the proper operation
of the debugger/stub.
From reading the stub, it's probably not obvious how breakpoints work.
-They are simply done by deposit/examine operations from GDB.
+They are simply done by deposit/examine operations from @value{GDBN}.
@section ROM Monitor Interface
@@ -2108,7 +2326,7 @@ They are simply done by deposit/examine operations from GDB.
@chapter Native Debugging
-Several files control GDB's configuration for native support:
+Several files control @value{GDBN}'s configuration for native support:
@table @file
@@ -2177,7 +2395,7 @@ just provide @code{fetch_core_registers} in @code{@var{xyz}-nat.c} (or
@item core-aout.c::register_addr()
If your @code{nm-@var{xyz}.h} file defines the macro
@code{REGISTER_U_ADDR(addr, blockend, regno)}, it should be defined to
-set @code{addr} to the offset within the @samp{user} struct of GDB
+set @code{addr} to the offset within the @samp{user} struct of @value{GDBN}
register number @code{regno}. @code{blockend} is the offset within the
``upage'' of @code{u.u_ar0}. If @code{REGISTER_U_ADDR} is defined,
@file{core-aout.c} will define the @code{register_addr()} function and
@@ -2192,7 +2410,7 @@ implementations simply locate the registers themselves.@refill
@end table
-When making GDB run native on a new operating system, to make it
+When making @value{GDBN} run native on a new operating system, to make it
possible to debug core files, you will need to either write specific
code for parsing your OS's core files, or customize
@file{bfd/trad-core.c}. First, use whatever @code{#include} files your
@@ -2209,13 +2427,13 @@ section information basically delimits areas in the core file in a
standard way, which the section-reading routines in BFD know how to seek
around in.
-Then back in GDB, you need a matching routine called
+Then back in @value{GDBN}, you need a matching routine called
@code{fetch_core_registers()}. If you can use the generic one, it's in
@file{core-aout.c}; if not, it's in your @file{@var{xyz}-nat.c} file.
It will be passed a char pointer to the entire ``registers'' segment,
its length, and a zero; or a char pointer to the entire ``regs2''
segment, its length, and a 2. The routine should suck out the supplied
-register values and install them into GDB's ``registers'' array.
+register values and install them into @value{GDBN}'s ``registers'' array.
If your system uses @file{/proc} to control processes, and uses ELF
format core files, then you may be able to use the same routines for
@@ -2231,7 +2449,7 @@ reading the registers out of processes and out of core files.
@section Native Conditionals
-When GDB is configured and compiled, various macros are defined or left
+When @value{GDBN} is configured and compiled, various macros are defined or left
undefined, to control compilation when the host and target systems are
the same. These macros should be defined (or left undefined) in
@file{nm-@var{system}.h}.
@@ -2239,7 +2457,7 @@ the same. These macros should be defined (or left undefined) in
@table @code
@item ATTACH_DETACH
-If defined, then GDB will include support for the @code{attach} and
+If defined, then @value{GDBN} will include support for the @code{attach} and
@code{detach} commands.
@item CHILD_PREPARE_TO_STORE
@@ -2278,18 +2496,18 @@ pointer. It examines the current state of the machine as needed.
@item KERNEL_U_ADDR
Define this to the address of the @code{u} structure (the ``user
-struct'', also known as the ``u-page'') in kernel virtual memory. GDB
+struct'', also known as the ``u-page'') in kernel virtual memory. @value{GDBN}
needs to know this so that it can subtract this address from absolute
addresses in the upage, that are obtained via ptrace or from core files.
On systems that don't need this value, set it to zero.
@item KERNEL_U_ADDR_BSD
-Define this to cause GDB to determine the address of @code{u} at
+Define this to cause @value{GDBN} to determine the address of @code{u} at
runtime, by using Berkeley-style @code{nlist} on the kernel's image in
the root directory.
@item KERNEL_U_ADDR_HPUX
-Define this to cause GDB to determine the address of @code{u} at
+Define this to cause @value{GDBN} to determine the address of @code{u} at
runtime, by using HP-style @code{nlist} on the kernel's image in the
root directory.
@@ -2305,7 +2523,7 @@ threads.
In a multi-threaded task we may select another thread and then continue
or step. But if the old thread was stopped at a breakpoint, it will
immediately cause another breakpoint stop without any execution (i.e. it
-will report a breakpoint hit incorrectly). So GDB must step over it
+will report a breakpoint hit incorrectly). So @value{GDBN} must step over it
first.
If defined, @code{PREPARE_TO_PROCEED} should check the current thread
@@ -2338,14 +2556,14 @@ Defaults to @code{"/bin/sh"}.
@item SOLIB_ADD (filename, from_tty, targ)
Define this to expand into an expression that will cause the symbols in
-@var{filename} to be added to GDB's symbol table.
+@var{filename} to be added to @value{GDBN}'s symbol table.
@item SOLIB_CREATE_INFERIOR_HOOK
Define this to expand into any shared-library-relocation code that you
want to be run just after the child process has been forked.
@item START_INFERIOR_TRAPS_EXPECTED
-When starting an inferior, GDB normally expects to trap twice; once when
+When starting an inferior, @value{GDBN} normally expects to trap twice; once when
the shell execs, and once when the program itself execs. If the actual
number of traps is something other than 2, then define this macro to
expand into the number expected.
@@ -2355,7 +2573,7 @@ Define this to indicate that SVR4-style shared libraries are in use.
@item USE_PROC_FS
This determines whether small routines in @file{*-tdep.c}, which
-translate register values between GDB's internal representation and the
+translate register values between @value{GDBN}'s internal representation and the
/proc representation, are compiled.
@item U_REGS_OFFSET
@@ -2385,7 +2603,7 @@ Define this to debug ptrace calls.
@section BFD
-BFD provides support for GDB in several ways:
+BFD provides support for @value{GDBN} in several ways:
@table @emph
@@ -2396,7 +2614,7 @@ several variants thereof, as well as several kinds of core files.
@item access to sections of files
BFD parses the file headers to determine the names, virtual addresses,
sizes, and file locations of all the various named sections in files
-(such as the text section or the data section). GDB simply calls BFD to
+(such as the text section or the data section). @value{GDBN} simply calls BFD to
read or write section X at byte offset Y for length Z.
@item specialized core file support
@@ -2406,17 +2624,17 @@ file matches (i.e. could be a core dump of) a particular executable
file.
@item locating the symbol information
-GDB uses an internal interface of BFD to determine where to find the
-symbol information in an executable file or symbol-file. GDB itself
+@value{GDBN} uses an internal interface of BFD to determine where to find the
+symbol information in an executable file or symbol-file. @value{GDBN} itself
handles the reading of symbols, since BFD does not ``understand'' debug
-symbols, but GDB uses BFD's cached information to find the symbols,
+symbols, but @value{GDBN} uses BFD's cached information to find the symbols,
string table, etc.
@end table
@section opcodes
-The opcodes library provides GDB's disassembler. (It's a separate
+The opcodes library provides @value{GDBN}'s disassembler. (It's a separate
library because it's also used in binutils, for @file{objdump}).
@section readline
@@ -2456,7 +2674,7 @@ Regex conditionals.
@chapter Coding
This chapter covers topics that are lower-level than the major
-algorithms of GDB.
+algorithms of @value{GDBN}.
@section Cleanups
@@ -2536,19 +2754,19 @@ finish by printing a newline, to flush the wrap buffer, before switching
to unfiltered (``@code{printf}'') output. Symbol reading routines that
print warnings are a good example.
-@section GDB Coding Standards
+@section @value{GDBN} Coding Standards
-GDB follows the GNU coding standards, as described in
+@value{GDBN} follows the GNU coding standards, as described in
@file{etc/standards.texi}. This file is also available for anonymous
-FTP from GNU archive sites. GDB takes a strict interpretation of the
+FTP from GNU archive sites. @value{GDBN} takes a strict interpretation of the
standard; in general, when the GNU standard recommends a practice but
-does not require it, GDB requires it.
+does not require it, @value{GDBN} requires it.
-GDB follows an additional set of coding standards specific to GDB,
+@value{GDBN} follows an additional set of coding standards specific to @value{GDBN},
as described in the following sections.
You can configure with @samp{--enable-build-warnings} to get GCC to
-check on a number of these rules. GDB sources ought not to engender any
+check on a number of these rules. @value{GDBN} sources ought not to engender any
complaints, unless they are caused by bogus host systems. (The exact
set of enabled warnings is currently @samp{-Wall -Wpointer-arith
-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations}.
@@ -2585,7 +2803,7 @@ Block comments must appear in the following form, with no `/*'- or
gets a signal, we may decide to start it up again instead of
returning. That is why there is a loop in this function. When
this function actually returns it means the inferior should be left
- stopped and GDB should read more commands. */
+ stopped and @value{GDBN} should read more commands. */
@end example
(Note that this format is encouraged by Emacs; tabbing for a multi-line
@@ -2606,8 +2824,8 @@ host's floating point numbers, the alignment of anything, or the order
of evaluation of expressions.
Use functions freely. There are only a handful of compute-bound areas
-in GDB that might be affected by the overhead of a function call, mainly
-in symbol reading. Most of GDB's performance is limited by the target
+in @value{GDBN} that might be affected by the overhead of a function call, mainly
+in symbol reading. Most of @value{GDBN}'s performance is limited by the target
interface (whether serial line or system call).
However, use functions with moderation. A thousand one-line functions
@@ -2616,7 +2834,7 @@ are just as hard to understand as a single thousand-line function.
@subsection Function Prototypes
Prototypes must be used to @emph{declare} functions, and may be used to
-@emph{define} them. Prototypes for GDB functions must include both the
+@emph{define} them. Prototypes for @value{GDBN} functions must include both the
argument type and name, with the name matching that used in the actual
function definition.
@@ -2631,13 +2849,13 @@ source file.
@subsection Clean Design
In addition to getting the syntax right, there's the little question of
-semantics. Some things are done in certain ways in GDB because long
+semantics. Some things are done in certain ways in @value{GDBN} because long
experience has shown that the more obvious ways caused various kinds of
trouble.
You can't assume the byte order of anything that comes from a target
(including @var{value}s, object files, and instructions). Such things
-must be byte-swapped using @code{SWAP_TARGET_AND_HOST} in GDB, or one of
+must be byte-swapped using @code{SWAP_TARGET_AND_HOST} in @value{GDBN}, or one of
the swap routines defined in @file{bfd.h}, such as @code{bfd_get_32}.
You can't assume that you know what interface is being used to talk to
@@ -2696,7 +2914,7 @@ where the macro is used or in an appropriate header file.
Whether to include a @dfn{small} hook, a hook around the exact pieces of
code which are system-dependent, or whether to replace a whole function
with a hook depends on the case. A good example of this dilemma can be
-found in @code{get_saved_register}. All machines that GDB 2.8 ran on
+found in @code{get_saved_register}. All machines that @value{GDBN} 2.8 ran on
just needed the @code{FRAME_FIND_SAVED_REGS} hook to find the saved
registers. Then the SPARC and Pyramid came along, and
@code{HAVE_REGISTER_WINDOWS} and @code{REGISTER_IN_WINDOW_P} were
@@ -2708,8 +2926,8 @@ with @code{GET_SAVED_REGISTER}, since that would result in much
duplicated code. Other times, duplicating a few lines of code here or
there is much cleaner than introducing a large number of small hooks.
-Another way to generalize GDB along a particular interface is with an
-attribute struct. For example, GDB has been generalized to handle
+Another way to generalize @value{GDBN} along a particular interface is with an
+attribute struct. For example, @value{GDBN} has been generalized to handle
multiple kinds of remote interfaces -- not by #ifdef's everywhere, but
by defining the "target_ops" structure and having a current target (as
well as a stack of targets below it, for memory references). Whenever
@@ -2720,11 +2938,11 @@ current target_ops structure. In this way, when a new remote interface
is added, only one module needs to be touched -- the one that actually
implements the new remote interface. Other examples of
attribute-structs are BFD access to multiple kinds of object file
-formats, or GDB's access to multiple source languages.
+formats, or @value{GDBN}'s access to multiple source languages.
-Please avoid duplicating code. For example, in GDB 3.x all the code
-interfacing between @code{ptrace} and the rest of GDB was duplicated in
-@file{*-dep.c}, and so changing something was very painful. In GDB 4.x,
+Please avoid duplicating code. For example, in @value{GDBN} 3.x all the code
+interfacing between @code{ptrace} and the rest of @value{GDBN} was duplicated in
+@file{*-dep.c}, and so changing something was very painful. In @value{GDBN} 4.x,
these have all been consolidated into @file{infptrace.c}.
@file{infptrace.c} can deal with variations between systems the same way
any system-independent file would (hooks, #if defined, etc.), and
@@ -2735,9 +2953,9 @@ Don't put debugging printfs in the code.
@node Porting GDB
-@chapter Porting GDB
+@chapter Porting @value{GDBN}
-Most of the work in making GDB compile on a new machine is in specifying
+Most of the work in making @value{GDBN} compile on a new machine is in specifying
the configuration of the machine. This is done in a dizzying variety of
header files and configuration scripts, which we hope to make more
sensible soon. Let's say your new host is called an @var{xyz} (e.g.
@@ -2767,17 +2985,17 @@ and no error messages.
You need to port BFD, if that hasn't been done already. Porting BFD is
beyond the scope of this manual.
-To configure GDB itself, edit @file{gdb/configure.host} to recognize
+To configure @value{GDBN} itself, edit @file{gdb/configure.host} to recognize
your system and set @code{gdb_host} to @var{xyz}, and (unless your
desired target is already available) also edit @file{gdb/configure.tgt},
setting @code{gdb_target} to something appropriate (for instance,
@var{xyz}).
-Finally, you'll need to specify and define GDB's host-, native-, and
+Finally, you'll need to specify and define @value{GDBN}'s host-, native-, and
target-dependent @file{.h} and @file{.c} files used for your
configuration.
-@section Configuring GDB for Release
+@section Configuring @value{GDBN} for Release
From the top level directory (containing @file{gdb}, @file{bfd},
@file{libiberty}, and so on):
@@ -2820,20 +3038,20 @@ or so included files.
@chapter Testsuite
-The testsuite is an important component of the GDB package. While it is
+The testsuite is an important component of the @value{GDBN} package. While it is
always worthwhile to encourage user testing, in practice this is rarely
sufficient; users typically use only a small subset of the available
commands, and it has proven all too common for a change to cause a
significant regression that went unnoticed for some time.
-The GDB testsuite uses the DejaGNU testing framework. DejaGNU is built
+The @value{GDBN} testsuite uses the DejaGNU testing framework. DejaGNU is built
using tcl and expect. The tests themselves are calls to various tcl
procs; the framework runs all the procs and summarizes the passes and
fails.
@section Using the Testsuite
-To run the testsuite, simply go to the GDB object directory (or to the
+To run the testsuite, simply go to the @value{GDBN} object directory (or to the
testsuite's objdir) and type @code{make check}. This just sets up some
environment variables and invokes DejaGNU's @code{runtest} script. While
the testsuite is running, you'll get mentions of which test file is in use,
@@ -2851,17 +3069,17 @@ finished, you'll get a summary that looks like this:
@end example
The ideal test run consists of expected passes only; however, reality
conspires to keep us from this ideal. Unexpected failures indicate
-real problems, whether in GDB or in the testsuite. Expected failures
+real problems, whether in @value{GDBN} or in the testsuite. Expected failures
are still failures, but ones which have been decided are too hard to
deal with at the time; for instance, a test case might work everywhere
except on AIX, and there is no prospect of the AIX case being fixed in
the near future. Expected failures should not be added lightly, since
-you may be masking serious bugs in GDB. Unexpected successes are expected
+you may be masking serious bugs in @value{GDBN}. Unexpected successes are expected
fails that are passing for some reason, while unresolved and untested
cases often indicate some minor catastrophe, such as the compiler being
unable to deal with a test program.
-When making any significant change to GDB, you should run the testsuite
+When making any significant change to @value{GDBN}, you should run the testsuite
before and after the change, to confirm that there are no regressions.
Note that truly complete testing would require that you run the
testsuite with all supported configurations and a variety of compilers;
@@ -2871,8 +3089,8 @@ one big-endian (Sparc) and one little-endian (x86) host, a cross config
with a builtin simulator (powerpc-eabi, mips-elf), or a 64-bit host
(Alpha).
-If you add new functionality to GDB, please consider adding tests for it
-as well; this way future GDB hackers can detect and fix their changes
+If you add new functionality to @value{GDBN}, please consider adding tests for it
+as well; this way future @value{GDBN} hackers can detect and fix their changes
that break the functionality you added. Similarly, if you fix a bug
that was not previously reported as a test failure, please add a test
case for it. Some cases are extremely difficult to test, such as code
@@ -2884,9 +3102,9 @@ compilers, and it's OK not to try to write tests for all of those.
The testsuite is entirely contained in @file{gdb/testsuite}. While the
testsuite includes some makefiles and configury, these are very minimal,
and used for little besides cleaning up, since the tests themselves
-handle the compilation of the programs that GDB will run. The file
+handle the compilation of the programs that @value{GDBN} will run. The file
@file{testsuite/lib/gdb.exp} contains common utility procs useful for
-all GDB tests, while the directory @file{testsuite/config} contains
+all @value{GDBN} tests, while the directory @file{testsuite/config} contains
configuration-specific files, typically used for special-purpose
definitions of procs like @code{gdb_load} and @code{gdb_start}.
@@ -2907,7 +3125,7 @@ intelligibility.
@item gdb.base
This is the base testsuite. The tests in it should apply to all
-configurations of GDB (but generic native-only tests may live here).
+configurations of @value{GDBN} (but generic native-only tests may live here).
The test programs should be in the subset of C that is valid K&R,
ANSI/ISO, and C++ (ifdefs are allowed if necessary, for instance
for prototypes).
@@ -2928,11 +3146,11 @@ HP-UX.
Tests specific to a particular compiler. As of this writing (June
1999), there aren't currently any groups of tests in this category that
couldn't just as sensibly be made platform-specific, but one could
-imagine a gdb.gcc, for tests of GDB's handling of GCC extensions.
+imagine a gdb.gcc, for tests of @value{GDBN}'s handling of GCC extensions.
@item gdb.@var{subsystem}
-Tests that exercise a specific GDB subsystem in more depth. For
+Tests that exercise a specific @value{GDBN} subsystem in more depth. For
instance, @file{gdb.disasm} exercises various disassemblers, while
@file{gdb.stabs} tests pathways through the stabs symbol reader.
@@ -2940,7 +3158,7 @@ instance, @file{gdb.disasm} exercises various disassemblers, while
@section Writing Tests
-In many areas, the GDB tests are already quite comprehensive; you
+In many areas, the @value{GDBN} tests are already quite comprehensive; you
should be able to copy existing tests to handle new cases.
You should try to use @code{gdb_test} whenever possible, since it
@@ -2950,12 +3168,12 @@ instance, @file{gdb.base/exprs.exp} defines a @code{test_expr} that
calls @code{gdb_test} multiple times.
Only use @code{send_gdb} and @code{gdb_expect} when absolutely
-necessary, such as when GDB has several valid responses to a command.
+necessary, such as when @value{GDBN} has several valid responses to a command.
The source language programs do @emph{not} need to be in a consistent
-style. Since GDB is used to debug programs written in many different
+style. Since @value{GDBN} is used to debug programs written in many different
styles, it's worth having a mix of styles in the testsuite; for
-instance, some GDB bugs involving the display of source lines would
+instance, some @value{GDBN} bugs involving the display of source lines would
never manifest themselves if the programs used GNU coding style
uniformly.
@@ -2967,25 +3185,25 @@ Check the @file{README} file, it often has useful information that does not
appear anywhere else in the directory.
@menu
-* Getting Started:: Getting started working on GDB
-* Debugging GDB:: Debugging GDB with itself
+* Getting Started:: Getting started working on @value{GDBN}
+* Debugging GDB:: Debugging @value{GDBN} with itself
@end menu
@node Getting Started,,, Hints
@section Getting Started
-GDB is a large and complicated program, and if you first starting to
+@value{GDBN} is a large and complicated program, and if you first starting to
work on it, it can be hard to know where to start. Fortunately, if you
know how to go about it, there are ways to figure out what is going on.
-This manual, the GDB Internals manual, has information which applies
-generally to many parts of GDB.
+This manual, the @value{GDBN} Internals manual, has information which applies
+generally to many parts of @value{GDBN}.
Information about particular functions or data structures are located in
comments with those functions or data structures. If you run across a
function or a global variable which does not have a comment correctly
-explaining what is does, this can be thought of as a bug in GDB; feel
+explaining what is does, this can be thought of as a bug in @value{GDBN}; feel
free to submit a bug report, with a suggested comment if you can figure
out what the comment should say. If you find a comment which is
actually wrong, be especially sure to report that.
@@ -3000,20 +3218,20 @@ also documents all the available macros.
@c Conditionals}, @pxref{Native Conditionals}, and @pxref{Obsolete
@c Conditionals})
-Start with the header files. Once you have some idea of how GDB's internal
+Start with the header files. Once you have some idea of how @value{GDBN}'s internal
symbol tables are stored (see @file{symtab.h}, @file{gdbtypes.h}), you
will find it much easier to understand the code which uses and creates
those symbol tables.
You may wish to process the information you are getting somehow, to
enhance your understanding of it. Summarize it, translate it to another
-language, add some (perhaps trivial or non-useful) feature to GDB, use
+language, add some (perhaps trivial or non-useful) feature to @value{GDBN}, use
the code to predict what a test case would do and write the test case
and verify your prediction, etc. If you are reading code and your eyes
are starting to glaze over, this is a sign you need to use a more active
approach.
-Once you have a part of GDB to start with, you can find more
+Once you have a part of @value{GDBN} to start with, you can find more
specifically the part you are looking for by stepping through each
function with the @code{next} command. Do not use @code{step} or you
will quickly get distracted; when the function you are stepping through
@@ -3034,7 +3252,7 @@ rather than worrying about all its details.
A good place to start when tracking down some particular area is with a
command which invokes that feature. Suppose you want to know how
-single-stepping works. As a GDB user, you know that the @code{step}
+single-stepping works. As a @value{GDBN} user, you know that the @code{step}
command invokes single-stepping. The command is invoked via command
tables (see @file{command.h}); by convention the function which actually
performs the command is formed by taking the name of the command and
@@ -3042,30 +3260,30 @@ adding @samp{_command}, or in the case of an @code{info} subcommand,
@samp{_info}. For example, the @code{step} command invokes the
@code{step_command} function and the @code{info display} command invokes
@code{display_info}. When this convention is not followed, you might
-have to use @code{grep} or @kbd{M-x tags-search} in emacs, or run GDB on
+have to use @code{grep} or @kbd{M-x tags-search} in emacs, or run @value{GDBN} on
itself and set a breakpoint in @code{execute_command}.
If all of the above fail, it may be appropriate to ask for information
on @code{bug-gdb}. But @emph{never} post a generic question like ``I was
wondering if anyone could give me some tips about understanding
-GDB''---if we had some magic secret we would put it in this manual.
+@value{GDBN}''---if we had some magic secret we would put it in this manual.
Suggestions for improving the manual are always welcome, of course.
@node Debugging GDB,,,Hints
-@section Debugging GDB with itself
+@section Debugging @value{GDBN} with itself
-If GDB is limping on your machine, this is the preferred way to get it
+If @value{GDBN} is limping on your machine, this is the preferred way to get it
fully functional. Be warned that in some ancient Unix systems, like
Ultrix 4.2, a program can't be running in one process while it is being
debugged in another. Rather than typing the command @code{@w{./gdb
./gdb}}, which works on Suns and such, you can copy @file{gdb} to
@file{gdb2} and then type @code{@w{./gdb ./gdb2}}.
-When you run GDB in the GDB source directory, it will read a
+When you run @value{GDBN} in the @value{GDBN} source directory, it will read a
@file{.gdbinit} file that sets up some simple things to make debugging
gdb easier. The @code{info} command, when executed without a subcommand
-in a GDB being debugged by gdb, will pop you back up to the top level
+in a @value{GDBN} being debugged by gdb, will pop you back up to the top level
gdb. See @file{.gdbinit} for details.
If you use emacs, you will probably want to do a @code{make TAGS} after
@@ -3073,18 +3291,18 @@ you configure your distribution; this will put the machine dependent
routines for your local machine where they will be accessed first by
@kbd{M-.}
-Also, make sure that you've either compiled GDB with your local cc, or
+Also, make sure that you've either compiled @value{GDBN} with your local cc, or
have run @code{fixincludes} if you are compiling with gcc.
@section Submitting Patches
Thanks for thinking of offering your changes back to the community of
-GDB users. In general we like to get well designed enhancements.
+@value{GDBN} users. In general we like to get well designed enhancements.
Thanks also for checking in advance about the best way to transfer the
changes.
-The GDB maintainers will only install ``cleanly designed'' patches.
-This manual summarizes what we believe to be clean design for GDB.
+The @value{GDBN} maintainers will only install ``cleanly designed'' patches.
+This manual summarizes what we believe to be clean design for @value{GDBN}.
If the maintainers don't have time to put the patch in when it arrives,
or if there is any question about a patch, it goes into a large queue
@@ -3096,7 +3314,7 @@ of the changes to the Free Software Foundation. You can get the
standard documents for doing this by sending mail to @code{gnu@@gnu.org}
and asking for it. We recommend that people write in "All programs
owned by the Free Software Foundation" as "NAME OF PROGRAM", so that
-changes in many programs (not just GDB, but GAS, Emacs, GCC, etc) can be
+changes in many programs (not just @value{GDBN}, but GAS, Emacs, GCC, etc) can be
contributed with only one piece of legalese pushed through the
bureacracy and filed with the FSF. We can't start merging changes until
this paperwork is received by the FSF (their rules, which we follow
@@ -3136,12 +3354,12 @@ they arrive. The others go into a queue and get installed as time
permits, which, since the maintainers have many demands to meet, may not
be for quite some time.
-Please send patches directly to the GDB maintainers at
+Please send patches directly to the @value{GDBN} maintainers at
@code{gdb-patches@@sourceware.cygnus.com}.
@section Obsolete Conditionals
-Fragments of old code in GDB sometimes reference or set the following
+Fragments of old code in @value{GDBN} sometimes reference or set the following
configuration macros. They should not be used by new code, and old uses
should be removed as those parts of the debugger are otherwise touched.
@@ -3150,10 +3368,10 @@ should be removed as those parts of the debugger are otherwise touched.
@item STACK_END_ADDR
This macro used to define where the end of the stack appeared, for use
in interpreting core file formats that don't record this address in the
-core file itself. This information is now configured in BFD, and GDB
-gets the info portably from there. The values in GDB's configuration
+core file itself. This information is now configured in BFD, and @value{GDBN}
+gets the info portably from there. The values in @value{GDBN}'s configuration
files should be moved into BFD configuration files (if needed there),
-and deleted from all of GDB's config files.
+and deleted from all of @value{GDBN}'s config files.
Any @file{@var{foo}-xdep.c} file that references STACK_END_ADDR
is so old that it has never been converted to use BFD. Now that's old!
@@ -3170,6 +3388,12 @@ exec.c
@end table
-
+@c TeX can handle the contents at the start but makeinfo 3.12 can not
+@ifinfo
@contents
+@end ifinfo
+@ifhtml
+@contents
+@end ifhtml
+
@bye
diff --git a/gdb/doc/stabs.texinfo b/gdb/doc/stabs.texinfo
index 8239ce70045..a4ea1dc9c70 100644
--- a/gdb/doc/stabs.texinfo
+++ b/gdb/doc/stabs.texinfo
@@ -86,6 +86,10 @@ This document describes the stabs debugging format.
@end menu
@end ifinfo
+@c TeX can handle the contents at the start but makeinfo 3.12 can not
+@iftex
+@contents
+@end iftex
@node Overview
@chapter Overview of Stabs
@@ -4015,5 +4019,12 @@ However, no one has yet designed or implemented such a scheme.
@printindex fn
+@c TeX can handle the contents at the start but makeinfo 3.12 can not
+@ifinfo
@contents
+@end ifinfo
+@ifhtml
+@contents
+@end ifhtml
+
@bye
diff --git a/gdb/dsrec.c b/gdb/dsrec.c
index b51d857daef..31b8fc277df 100644
--- a/gdb/dsrec.c
+++ b/gdb/dsrec.c
@@ -23,13 +23,13 @@
#include "srec.h"
#include <time.h>
-extern void report_transfer_performance PARAMS ((unsigned long, time_t, time_t));
+extern void report_transfer_performance (unsigned long, time_t, time_t);
extern int remote_debug;
-static int make_srec PARAMS ((char *srec, CORE_ADDR targ_addr, bfd * abfd,
- asection * sect, int sectoff, int *maxrecsize,
- int flags));
+static int make_srec (char *srec, CORE_ADDR targ_addr, bfd * abfd,
+ asection * sect, int sectoff, int *maxrecsize,
+ int flags);
/* Download an executable by converting it to S records. DESC is a
serial_t to send the data to. FILE is the name of the file to be
@@ -51,7 +51,7 @@ load_srec (desc, file, load_offset, maxrecsize, flags, hashmark, waitack)
int maxrecsize;
int flags;
int hashmark;
- int (*waitack) PARAMS ((void));
+ int (*waitack) (void);
{
bfd *abfd;
asection *s;
diff --git a/gdb/dstread.c b/gdb/dstread.c
index c10c1fe18cc..a5f7f35289a 100644
--- a/gdb/dstread.c
+++ b/gdb/dstread.c
@@ -52,38 +52,27 @@ static int prev_line_number;
static int line_vector_length;
-static int
-init_dst_sections PARAMS ((int));
+static int init_dst_sections (int);
-static void
-read_dst_symtab PARAMS ((struct objfile *));
+static void read_dst_symtab (struct objfile *);
-static void
-find_dst_sections PARAMS ((bfd *, sec_ptr, PTR));
+static void find_dst_sections (bfd *, sec_ptr, PTR);
-static void
-dst_symfile_init PARAMS ((struct objfile *));
+static void dst_symfile_init (struct objfile *);
-static void
-dst_new_init PARAMS ((struct objfile *));
+static void dst_new_init (struct objfile *);
-static void
-dst_symfile_read PARAMS ((struct objfile *, int));
+static void dst_symfile_read (struct objfile *, int);
-static void
-dst_symfile_finish PARAMS ((struct objfile *));
+static void dst_symfile_finish (struct objfile *);
-static void
-dst_end_symtab PARAMS ((struct objfile *));
+static void dst_end_symtab (struct objfile *);
-static void
-complete_symtab PARAMS ((char *, CORE_ADDR, unsigned int));
+static void complete_symtab (char *, CORE_ADDR, unsigned int);
-static void
-dst_start_symtab PARAMS ((void));
+static void dst_start_symtab (void);
-static void
-dst_record_line PARAMS ((int, CORE_ADDR));
+static void dst_record_line (int, CORE_ADDR);
/* Manage the vector of line numbers. */
/* FIXME: Use record_line instead. */
@@ -288,7 +277,7 @@ dst_symfile_read (objfile, mainline)
error ("\"%s\": error reading debugging symbol tables\n", name);
init_minimal_symbol_collection ();
- make_cleanup (discard_minimal_symbols, 0);
+ make_cleanup_discard_minimal_symbols ();
/* Now that the executable file is positioned at symbol table,
process it and define symbols accordingly. */
@@ -769,8 +758,7 @@ create_new_symbol (objfile, name)
return sym;
};
-static struct type *
- decode_dst_type PARAMS ((struct objfile *, dst_rec_ptr_t));
+static struct type *decode_dst_type (struct objfile *, dst_rec_ptr_t);
static struct type *
decode_type_desc (objfile, type_desc, base)
diff --git a/gdb/dve3900-rom.c b/gdb/dve3900-rom.c
index 60a177dbed1..4cd035fbf34 100644
--- a/gdb/dve3900-rom.c
+++ b/gdb/dve3900-rom.c
@@ -31,7 +31,7 @@
/* Type of function passed to bfd_map_over_sections. */
-typedef void (*section_map_func) PARAMS ((bfd * abfd, asection * sect, PTR obj));
+typedef void (*section_map_func) (bfd * abfd, asection * sect, PTR obj);
/* Packet escape character used by Densan monitor. */
@@ -44,8 +44,7 @@ typedef void (*section_map_func) PARAMS ((bfd * abfd, asection * sect, PTR obj))
/* External functions. */
-extern void report_transfer_performance PARAMS ((unsigned long,
- time_t, time_t));
+extern void report_transfer_performance (unsigned long, time_t, time_t);
/* Certain registers are "bitmapped", in that the monitor can only display
them or let the user modify them as a series of named bitfields.
@@ -62,36 +61,32 @@ struct bit_field
/* Local functions for register manipulation. */
-static void r3900_supply_register PARAMS ((char *regname, int regnamelen,
- char *val, int vallen));
-static void fetch_bad_vaddr PARAMS ((void));
-static unsigned long fetch_fields PARAMS ((struct bit_field * bf));
-static void fetch_bitmapped_register PARAMS ((int regno,
- struct bit_field * bf));
-static void r3900_fetch_registers PARAMS ((int regno));
-static void store_bitmapped_register PARAMS ((int regno,
- struct bit_field * bf));
-static void r3900_store_registers PARAMS ((int regno));
+static void r3900_supply_register (char *regname, int regnamelen,
+ char *val, int vallen);
+static void fetch_bad_vaddr (void);
+static unsigned long fetch_fields (struct bit_field *bf);
+static void fetch_bitmapped_register (int regno, struct bit_field *bf);
+static void r3900_fetch_registers (int regno);
+static void store_bitmapped_register (int regno, struct bit_field *bf);
+static void r3900_store_registers (int regno);
/* Local functions for fast binary loading. */
-static void write_long PARAMS ((char *buf, long n));
-static void write_long_le PARAMS ((char *buf, long n));
-static int debug_readchar PARAMS ((int hex));
-static void debug_write PARAMS ((unsigned char *buf, int buflen));
-static void ignore_packet PARAMS ((void));
-static void send_packet PARAMS ((char type, unsigned char *buf, int buflen,
- int seq));
-static void process_read_request PARAMS ((unsigned char *buf, int buflen));
-static void count_section PARAMS ((bfd * abfd, asection * s,
- unsigned int *section_count));
-static void load_section PARAMS ((bfd * abfd, asection * s,
- unsigned int *data_count));
-static void r3900_load PARAMS ((char *filename, int from_tty));
+static void write_long (char *buf, long n);
+static void write_long_le (char *buf, long n);
+static int debug_readchar (int hex);
+static void debug_write (unsigned char *buf, int buflen);
+static void ignore_packet (void);
+static void send_packet (char type, unsigned char *buf, int buflen, int seq);
+static void process_read_request (unsigned char *buf, int buflen);
+static void count_section (bfd * abfd, asection * s,
+ unsigned int *section_count);
+static void load_section (bfd * abfd, asection * s, unsigned int *data_count);
+static void r3900_load (char *filename, int from_tty);
/* Miscellaneous local functions. */
-static void r3900_open PARAMS ((char *args, int from_tty));
+static void r3900_open (char *args, int from_tty);
/* Pointers to static functions in monitor.c for fetching and storing
@@ -100,13 +95,13 @@ static void r3900_open PARAMS ((char *args, int from_tty));
format, and those that can't be modified at all. In those cases
we have to use our own functions to fetch and store their values. */
-static void (*orig_monitor_fetch_registers) PARAMS ((int regno));
-static void (*orig_monitor_store_registers) PARAMS ((int regno));
+static void (*orig_monitor_fetch_registers) (int regno);
+static void (*orig_monitor_store_registers) (int regno);
/* Pointer to static function in monitor. for loading programs.
We use this function for loading S-records via the serial link. */
-static void (*orig_monitor_load) PARAMS ((char *file, int from_tty));
+static void (*orig_monitor_load) (char *file, int from_tty);
/* This flag is set if a fast ethernet download should be used. */
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index b8b648ac8d0..b6a340f7f4a 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -35,14 +35,15 @@
#include "buildsym.h"
#include "demangle.h"
#include "expression.h"
+
#include "language.h"
#include "complaints.h"
-
+#include "bcache.h"
#include <fcntl.h>
#include "gdb_string.h"
#include <sys/types.h>
-/* .debug_info header for a compilation unit
+/* .debug_info header for a compilation unit
Because of alignment constraints, this structure has padding and cannot
be mapped directly onto the beginning of the .debug_info section. */
typedef struct comp_unit_header
@@ -267,6 +268,11 @@ static struct abbrev_info *dwarf2_abbrevs[ABBREV_HASH_SIZE];
static struct die_info *die_ref_table[REF_HASH_SIZE];
+#ifndef TYPE_HASH_SIZE
+#define TYPE_HASH_SIZE 4096
+#endif
+static struct type *dwarf2_cached_types[TYPE_HASH_SIZE];
+
/* Obstack for allocating temporary storage used during symbol reading. */
static struct obstack dwarf2_tmp_obstack;
@@ -333,7 +339,7 @@ static int islocal; /* Variable is at the returned offset
static int frame_base_reg;
static CORE_ADDR frame_base_offset;
-/* This value is added to each symbol value. FIXME: Generalize to
+/* This value is added to each symbol value. FIXME: Generalize to
the section_offsets structure used by dbxread (once this is done,
pass the appropriate section number to end_symtab). */
static CORE_ADDR baseaddr; /* Add to each symbol value */
@@ -550,211 +556,196 @@ extern int info_verbose; /* From main.c; nonzero => verbose */
/* local function prototypes */
-static void dwarf2_locate_sections PARAMS ((bfd *, asection *, PTR));
+static void dwarf2_locate_sections (bfd *, asection *, PTR);
#if 0
-static void dwarf2_build_psymtabs_easy PARAMS ((struct objfile *, int));
+static void dwarf2_build_psymtabs_easy (struct objfile *, int);
#endif
-static void dwarf2_build_psymtabs_hard PARAMS ((struct objfile *, int));
+static void dwarf2_build_psymtabs_hard (struct objfile *, int);
-static char *scan_partial_symbols PARAMS ((char *, struct objfile *,
- CORE_ADDR *, CORE_ADDR *));
+static char *scan_partial_symbols (char *, struct objfile *,
+ CORE_ADDR *, CORE_ADDR *);
-static void add_partial_symbol PARAMS ((struct partial_die_info *,
- struct objfile *));
+static void add_partial_symbol (struct partial_die_info *, struct objfile *);
-static void dwarf2_psymtab_to_symtab PARAMS ((struct partial_symtab *));
+static void dwarf2_psymtab_to_symtab (struct partial_symtab *);
-static void psymtab_to_symtab_1 PARAMS ((struct partial_symtab *));
+static void psymtab_to_symtab_1 (struct partial_symtab *);
-static char *dwarf2_read_section PARAMS ((struct objfile *, file_ptr,
- unsigned int));
+static char *dwarf2_read_section (struct objfile *, file_ptr, unsigned int);
-static void dwarf2_read_abbrevs PARAMS ((bfd *, unsigned int));
+static void dwarf2_read_abbrevs (bfd *, unsigned int);
-static void dwarf2_empty_abbrev_table PARAMS ((PTR));
+static void dwarf2_empty_abbrev_table (PTR);
-static struct abbrev_info *dwarf2_lookup_abbrev PARAMS ((unsigned int));
+static struct abbrev_info *dwarf2_lookup_abbrev (unsigned int);
-static char *read_partial_die PARAMS ((struct partial_die_info *,
- bfd *, char *, int *));
+static char *read_partial_die (struct partial_die_info *,
+ bfd *, char *, int *);
-static char *read_full_die PARAMS ((struct die_info **, bfd *, char *));
+static char *read_full_die (struct die_info **, bfd *, char *);
-static char *read_attribute PARAMS ((struct attribute *, struct attr_abbrev *,
- bfd *, char *));
+static char *read_attribute (struct attribute *, struct attr_abbrev *,
+ bfd *, char *);
-static unsigned int read_1_byte PARAMS ((bfd *, char *));
+static unsigned int read_1_byte (bfd *, char *);
-static int read_1_signed_byte PARAMS ((bfd *, char *));
+static int read_1_signed_byte (bfd *, char *);
-static unsigned int read_2_bytes PARAMS ((bfd *, char *));
+static unsigned int read_2_bytes (bfd *, char *);
-static unsigned int read_4_bytes PARAMS ((bfd *, char *));
+static unsigned int read_4_bytes (bfd *, char *);
-static unsigned int read_8_bytes PARAMS ((bfd *, char *));
+static unsigned int read_8_bytes (bfd *, char *);
-static CORE_ADDR read_address PARAMS ((bfd *, char *));
+static CORE_ADDR read_address (bfd *, char *);
-static char *read_n_bytes PARAMS ((bfd *, char *, unsigned int));
+static char *read_n_bytes (bfd *, char *, unsigned int);
-static char *read_string PARAMS ((bfd *, char *, unsigned int *));
+static char *read_string (bfd *, char *, unsigned int *);
-static unsigned int read_unsigned_leb128 PARAMS ((bfd *, char *,
- unsigned int *));
+static unsigned int read_unsigned_leb128 (bfd *, char *, unsigned int *);
-static int read_signed_leb128 PARAMS ((bfd *, char *, unsigned int *));
+static int read_signed_leb128 (bfd *, char *, unsigned int *);
-static void set_cu_language PARAMS ((unsigned int));
+static void set_cu_language (unsigned int);
-static struct attribute *dwarf_attr PARAMS ((struct die_info *,
- unsigned int));
+static struct attribute *dwarf_attr (struct die_info *, unsigned int);
static int die_is_declaration (struct die_info *);
-static void dwarf_decode_lines PARAMS ((unsigned int, char *, bfd *));
+static void dwarf_decode_lines (unsigned int, char *, bfd *);
-static void dwarf2_start_subfile PARAMS ((char *, char *));
+static void dwarf2_start_subfile (char *, char *);
-static struct symbol *new_symbol PARAMS ((struct die_info *, struct type *,
- struct objfile *));
+static struct symbol *new_symbol (struct die_info *, struct type *,
+ struct objfile *);
-static void dwarf2_const_value PARAMS ((struct attribute *, struct symbol *,
- struct objfile *));
+static void dwarf2_const_value (struct attribute *, struct symbol *,
+ struct objfile *);
static void dwarf2_const_value_data (struct attribute *attr,
struct symbol *sym,
int bits);
-static struct type *die_type PARAMS ((struct die_info *, struct objfile *));
+static struct type *die_type (struct die_info *, struct objfile *);
-static struct type *die_containing_type PARAMS ((struct die_info *,
- struct objfile *));
+static struct type *die_containing_type (struct die_info *, struct objfile *);
#if 0
-static struct type *type_at_offset PARAMS ((unsigned int, struct objfile *));
+static struct type *type_at_offset (unsigned int, struct objfile *);
#endif
-static struct type *tag_type_to_type PARAMS ((struct die_info *,
- struct objfile *));
+static struct type *tag_type_to_type (struct die_info *, struct objfile *);
+
+static void read_type_die (struct die_info *, struct objfile *);
-static void read_type_die PARAMS ((struct die_info *, struct objfile *));
+static void read_typedef (struct die_info *, struct objfile *);
-static void read_typedef PARAMS ((struct die_info *, struct objfile *));
+static void read_base_type (struct die_info *, struct objfile *);
-static void read_base_type PARAMS ((struct die_info *, struct objfile *));
+static void read_file_scope (struct die_info *, struct objfile *);
-static void read_file_scope PARAMS ((struct die_info *, struct objfile *));
+static void read_func_scope (struct die_info *, struct objfile *);
-static void read_func_scope PARAMS ((struct die_info *, struct objfile *));
+static void read_lexical_block_scope (struct die_info *, struct objfile *);
-static void read_lexical_block_scope PARAMS ((struct die_info *,
- struct objfile *));
+static int dwarf2_get_pc_bounds (struct die_info *,
+ CORE_ADDR *, CORE_ADDR *, struct objfile *);
-static int dwarf2_get_pc_bounds PARAMS ((struct die_info *,
- CORE_ADDR *, CORE_ADDR *,
- struct objfile *));
+static void dwarf2_add_field (struct field_info *, struct die_info *,
+ struct objfile *);
-static void dwarf2_add_field PARAMS ((struct field_info *, struct die_info *,
- struct objfile *));
+static void dwarf2_attach_fields_to_type (struct field_info *,
+ struct type *, struct objfile *);
-static void dwarf2_attach_fields_to_type PARAMS ((struct field_info *,
- struct type *,
- struct objfile *));
+static void dwarf2_add_member_fn (struct field_info *,
+ struct die_info *, struct type *,
+ struct objfile *objfile);
-static void dwarf2_add_member_fn PARAMS ((struct field_info *,
- struct die_info *, struct type *,
- struct objfile * objfile));
+static void dwarf2_attach_fn_fields_to_type (struct field_info *,
+ struct type *, struct objfile *);
-static void dwarf2_attach_fn_fields_to_type PARAMS ((struct field_info *,
- struct type *,
- struct objfile *));
+static void read_structure_scope (struct die_info *, struct objfile *);
-static void read_structure_scope PARAMS ((struct die_info *, struct objfile *));
+static void read_common_block (struct die_info *, struct objfile *);
-static void read_common_block PARAMS ((struct die_info *, struct objfile *));
+static void read_enumeration (struct die_info *, struct objfile *);
-static void read_enumeration PARAMS ((struct die_info *, struct objfile *));
+static struct type *dwarf_base_type (int, int, struct objfile *);
-static struct type *dwarf_base_type PARAMS ((int, int, struct objfile *));
+static CORE_ADDR decode_locdesc (struct dwarf_block *, struct objfile *);
-static CORE_ADDR decode_locdesc PARAMS ((struct dwarf_block *,
- struct objfile *));
+static void read_array_type (struct die_info *, struct objfile *);
-static void read_array_type PARAMS ((struct die_info *, struct objfile *));
+static void read_tag_pointer_type (struct die_info *, struct objfile *);
-static void read_tag_pointer_type PARAMS ((struct die_info *,
- struct objfile *));
+static void read_tag_ptr_to_member_type (struct die_info *, struct objfile *);
-static void read_tag_ptr_to_member_type PARAMS ((struct die_info *,
- struct objfile *));
+static void read_tag_reference_type (struct die_info *, struct objfile *);
-static void read_tag_reference_type PARAMS ((struct die_info *,
- struct objfile *));
+static void read_tag_const_type (struct die_info *, struct objfile *);
-static void read_tag_const_type PARAMS ((struct die_info *, struct objfile *));
+static void read_tag_volatile_type (struct die_info *, struct objfile *);
-static void read_tag_volatile_type PARAMS ((struct die_info *,
- struct objfile *));
+static void read_tag_string_type (struct die_info *, struct objfile *);
-static void read_tag_string_type PARAMS ((struct die_info *,
- struct objfile *));
+static void read_subroutine_type (struct die_info *, struct objfile *);
-static void read_subroutine_type PARAMS ((struct die_info *,
- struct objfile *));
+struct die_info *read_comp_unit (char *, bfd *);
-struct die_info *read_comp_unit PARAMS ((char *, bfd *));
+static void free_die_list (struct die_info *);
-static void free_die_list PARAMS ((struct die_info *));
+static struct cleanup *make_cleanup_free_die_list (struct die_info *);
-static void process_die PARAMS ((struct die_info *, struct objfile *));
+static void process_die (struct die_info *, struct objfile *);
-static char *dwarf2_linkage_name PARAMS ((struct die_info *));
+static char *dwarf2_linkage_name (struct die_info *);
-static char *dwarf_tag_name PARAMS ((unsigned int));
+static char *dwarf_tag_name (unsigned int);
-static char *dwarf_attr_name PARAMS ((unsigned int));
+static char *dwarf_attr_name (unsigned int);
-static char *dwarf_form_name PARAMS ((unsigned int));
+static char *dwarf_form_name (unsigned int);
-static char *dwarf_stack_op_name PARAMS ((unsigned int));
+static char *dwarf_stack_op_name (unsigned int);
-static char *dwarf_bool_name PARAMS ((unsigned int));
+static char *dwarf_bool_name (unsigned int);
-static char *dwarf_type_encoding_name PARAMS ((unsigned int));
+static char *dwarf_type_encoding_name (unsigned int);
#if 0
-static char *dwarf_cfi_name PARAMS ((unsigned int));
+static char *dwarf_cfi_name (unsigned int);
-struct die_info *copy_die PARAMS ((struct die_info *));
+struct die_info *copy_die (struct die_info *);
#endif
-struct die_info *sibling_die PARAMS ((struct die_info *));
+struct die_info *sibling_die (struct die_info *);
-void dump_die PARAMS ((struct die_info *));
+void dump_die (struct die_info *);
-void dump_die_list PARAMS ((struct die_info *));
+void dump_die_list (struct die_info *);
-void store_in_ref_table PARAMS ((unsigned int, struct die_info *));
+void store_in_ref_table (unsigned int, struct die_info *);
-static void dwarf2_empty_die_ref_table PARAMS ((void));
+static void dwarf2_empty_die_ref_table (void);
-static unsigned int dwarf2_get_ref_die_offset PARAMS ((struct attribute *));
+static unsigned int dwarf2_get_ref_die_offset (struct attribute *);
-struct die_info *follow_die_ref PARAMS ((unsigned int));
+struct die_info *follow_die_ref (unsigned int);
-static struct type *dwarf2_fundamental_type PARAMS ((struct objfile *, int));
+static struct type *dwarf2_fundamental_type (struct objfile *, int);
/* memory allocation interface */
-static void dwarf2_free_tmp_obstack PARAMS ((PTR));
+static void dwarf2_free_tmp_obstack (PTR);
-static struct dwarf_block *dwarf_alloc_block PARAMS ((void));
+static struct dwarf_block *dwarf_alloc_block (void);
-static struct abbrev_info *dwarf_alloc_abbrev PARAMS ((void));
+static struct abbrev_info *dwarf_alloc_abbrev (void);
-static struct die_info *dwarf_alloc_die PARAMS ((void));
+static struct die_info *dwarf_alloc_die (void);
/* Try to locate the sections we need for DWARF 2 debugging
information and return true if we have enough to do something. */
@@ -1322,7 +1313,7 @@ psymtab_to_symtab_1 (pst)
dies = read_comp_unit (info_ptr, abfd);
- make_cleanup ((make_cleanup_func) free_die_list, dies);
+ make_cleanup_free_die_list (dies);
/* Do line number decoding in read_file_scope () */
process_die (dies, objfile);
@@ -1998,8 +1989,7 @@ dwarf2_add_member_fn (fip, die, type, objfile)
(fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
* sizeof (struct fnfieldlist));
if (fip->nfnfields == 0)
- make_cleanup ((make_cleanup_func) free_current_contents,
- &fip->fnfieldlists);
+ make_cleanup (free_current_contents, &fip->fnfieldlists);
}
flp = &fip->fnfieldlists[fip->nfnfields];
flp->name = fieldname;
@@ -2506,8 +2496,7 @@ read_array_type (die, objfile)
xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
* sizeof (struct type *));
if (ndim == 0)
- make_cleanup ((make_cleanup_func) free_current_contents,
- &range_types);
+ make_cleanup (free_current_contents, &range_types);
}
range_types[ndim++] = create_range_type (NULL, index_type, low, high);
}
@@ -2958,6 +2947,19 @@ free_die_list (dies)
}
}
+static void
+do_free_die_list_cleanup (void *dies)
+{
+ free_die_list (dies);
+}
+
+static struct cleanup *
+make_cleanup_free_die_list (struct die_info *dies)
+{
+ return make_cleanup (do_free_die_list_cleanup, dies);
+}
+
+
/* Read the contents of the section at OFFSET and of size SIZE from the
object file specified by OBJFILE into the psymbol_obstack and return it. */
@@ -3760,8 +3762,7 @@ dwarf_decode_lines (offset, comp_dir, abfd)
line_ptr += 1;
lh.standard_opcode_lengths = (unsigned char *)
xmalloc (lh.opcode_base * sizeof (unsigned char));
- back_to = make_cleanup ((make_cleanup_func) free_current_contents,
- &lh.standard_opcode_lengths);
+ back_to = make_cleanup (free_current_contents, &lh.standard_opcode_lengths);
lh.standard_opcode_lengths[0] = 1;
for (i = 1; i < lh.opcode_base; ++i)
@@ -3780,7 +3781,7 @@ dwarf_decode_lines (offset, comp_dir, abfd)
xrealloc (dirs.dirs,
(dirs.num_dirs + DIR_ALLOC_CHUNK) * sizeof (char *));
if (dirs.num_dirs == 0)
- make_cleanup ((make_cleanup_func) free_current_contents, &dirs.dirs);
+ make_cleanup (free_current_contents, &dirs.dirs);
}
dirs.dirs[dirs.num_dirs++] = cur_dir;
}
@@ -3797,8 +3798,7 @@ dwarf_decode_lines (offset, comp_dir, abfd)
(files.num_files + FILE_ALLOC_CHUNK)
* sizeof (struct fileinfo));
if (files.num_files == 0)
- make_cleanup ((make_cleanup_func) free_current_contents,
- &files.files);
+ make_cleanup (free_current_contents, &files.files);
}
files.files[files.num_files].name = cur_file;
files.files[files.num_files].dir =
@@ -3873,8 +3873,7 @@ dwarf_decode_lines (offset, comp_dir, abfd)
(files.num_files + FILE_ALLOC_CHUNK)
* sizeof (struct fileinfo));
if (files.num_files == 0)
- make_cleanup ((make_cleanup_func) free_current_contents,
- &files.files);
+ make_cleanup (free_current_contents, &files.files);
}
files.files[files.num_files].name = cur_file;
files.files[files.num_files].dir =
@@ -3967,9 +3966,9 @@ done:
DW_AT_name: /srcdir/list0.c
DW_AT_comp_dir: /compdir
- files.files[0].name: list0.h
+ files.files[0].name: list0.h
files.files[0].dir: /srcdir
- files.files[1].name: list0.c
+ files.files[1].name: list0.c
files.files[1].dir: /srcdir
The line number information for list0.c has to end up in a single
@@ -4346,7 +4345,7 @@ dwarf2_const_value_data (struct attribute *attr,
if (TYPE_UNSIGNED (SYMBOL_TYPE (sym)))
l &= ((LONGEST) 1 << bits) - 1;
else
- l = (l << (sizeof (l) - bits)) >> (sizeof (l) - bits);
+ l = (l << (sizeof (l) * 8 - bits)) >> (sizeof (l) * 8 - bits);
}
SYMBOL_VALUE (sym) = l;
@@ -4456,7 +4455,38 @@ tag_type_to_type (die, objfile)
}
else
{
- read_type_die (die, objfile);
+ struct attribute *attr;
+ attr = dwarf_attr (die, DW_AT_name);
+ if (attr && DW_STRING (attr))
+ {
+ char *attrname=DW_STRING (attr);
+ unsigned long hashval=hash(attrname, strlen(attrname)) % TYPE_HASH_SIZE;
+
+ if (dwarf2_cached_types[hashval] != NULL)
+ {
+ const char *nameoftype;
+ nameoftype = TYPE_NAME(dwarf2_cached_types[hashval]) == NULL ? TYPE_TAG_NAME(dwarf2_cached_types[hashval]) : TYPE_NAME(dwarf2_cached_types[hashval]);
+ if (strcmp(attrname, nameoftype) == 0)
+ {
+ die->type=dwarf2_cached_types[hashval];
+ }
+ else
+ {
+ read_type_die (die, objfile);
+ dwarf2_cached_types[hashval] = die->type;
+ }
+ }
+ else
+ {
+ read_type_die (die, objfile);
+ dwarf2_cached_types[hashval] = die->type;
+ }
+ }
+ else
+ {
+ read_type_die (die, objfile);
+ }
+
if (!die->type)
{
dump_die (die);
diff --git a/gdb/dwarfread.c b/gdb/dwarfread.c
index 18727c2b923..c56155e87c4 100644
--- a/gdb/dwarfread.c
+++ b/gdb/dwarfread.c
@@ -450,132 +450,95 @@ static const struct language_defn *cu_language_defn;
/* Forward declarations of static functions so we don't have to worry
about ordering within this file. */
-static void
-free_utypes PARAMS ((PTR));
+static void free_utypes (PTR);
-static int
-attribute_size PARAMS ((unsigned int));
+static int attribute_size (unsigned int);
-static CORE_ADDR
- target_to_host PARAMS ((char *, int, int, struct objfile *));
+static CORE_ADDR target_to_host (char *, int, int, struct objfile *);
-static void
-add_enum_psymbol PARAMS ((struct dieinfo *, struct objfile *));
+static void add_enum_psymbol (struct dieinfo *, struct objfile *);
-static void
-handle_producer PARAMS ((char *));
+static void handle_producer (char *);
static void
-read_file_scope PARAMS ((struct dieinfo *, char *, char *, struct objfile *));
+read_file_scope (struct dieinfo *, char *, char *, struct objfile *);
static void
-read_func_scope PARAMS ((struct dieinfo *, char *, char *, struct objfile *));
+read_func_scope (struct dieinfo *, char *, char *, struct objfile *);
static void
-read_lexical_block_scope PARAMS ((struct dieinfo *, char *, char *,
- struct objfile *));
+read_lexical_block_scope (struct dieinfo *, char *, char *, struct objfile *);
-static void
-scan_partial_symbols PARAMS ((char *, char *, struct objfile *));
+static void scan_partial_symbols (char *, char *, struct objfile *);
static void
-scan_compilation_units PARAMS ((char *, char *, file_ptr,
- file_ptr, struct objfile *));
+scan_compilation_units (char *, char *, file_ptr, file_ptr, struct objfile *);
-static void
-add_partial_symbol PARAMS ((struct dieinfo *, struct objfile *));
+static void add_partial_symbol (struct dieinfo *, struct objfile *);
-static void
-basicdieinfo PARAMS ((struct dieinfo *, char *, struct objfile *));
+static void basicdieinfo (struct dieinfo *, char *, struct objfile *);
-static void
-completedieinfo PARAMS ((struct dieinfo *, struct objfile *));
+static void completedieinfo (struct dieinfo *, struct objfile *);
-static void
-dwarf_psymtab_to_symtab PARAMS ((struct partial_symtab *));
+static void dwarf_psymtab_to_symtab (struct partial_symtab *);
-static void
-psymtab_to_symtab_1 PARAMS ((struct partial_symtab *));
+static void psymtab_to_symtab_1 (struct partial_symtab *);
-static void
-read_ofile_symtab PARAMS ((struct partial_symtab *));
+static void read_ofile_symtab (struct partial_symtab *);
-static void
-process_dies PARAMS ((char *, char *, struct objfile *));
+static void process_dies (char *, char *, struct objfile *);
static void
-read_structure_scope PARAMS ((struct dieinfo *, char *, char *,
- struct objfile *));
+read_structure_scope (struct dieinfo *, char *, char *, struct objfile *);
-static struct type *
- decode_array_element_type PARAMS ((char *));
+static struct type *decode_array_element_type (char *);
-static struct type *
- decode_subscript_data_item PARAMS ((char *, char *));
+static struct type *decode_subscript_data_item (char *, char *);
-static void
-dwarf_read_array_type PARAMS ((struct dieinfo *));
+static void dwarf_read_array_type (struct dieinfo *);
-static void
-read_tag_pointer_type PARAMS ((struct dieinfo * dip));
+static void read_tag_pointer_type (struct dieinfo *dip);
-static void
-read_tag_string_type PARAMS ((struct dieinfo * dip));
+static void read_tag_string_type (struct dieinfo *dip);
-static void
-read_subroutine_type PARAMS ((struct dieinfo *, char *, char *));
+static void read_subroutine_type (struct dieinfo *, char *, char *);
static void
-read_enumeration PARAMS ((struct dieinfo *, char *, char *, struct objfile *));
+read_enumeration (struct dieinfo *, char *, char *, struct objfile *);
-static struct type *
- struct_type PARAMS ((struct dieinfo *, char *, char *, struct objfile *));
+static struct type *struct_type (struct dieinfo *, char *, char *,
+ struct objfile *);
-static struct type *
- enum_type PARAMS ((struct dieinfo *, struct objfile *));
+static struct type *enum_type (struct dieinfo *, struct objfile *);
-static void
-decode_line_numbers PARAMS ((char *));
+static void decode_line_numbers (char *);
-static struct type *
- decode_die_type PARAMS ((struct dieinfo *));
+static struct type *decode_die_type (struct dieinfo *);
-static struct type *
- decode_mod_fund_type PARAMS ((char *));
+static struct type *decode_mod_fund_type (char *);
-static struct type *
- decode_mod_u_d_type PARAMS ((char *));
+static struct type *decode_mod_u_d_type (char *);
-static struct type *
- decode_modified_type PARAMS ((char *, unsigned int, int));
+static struct type *decode_modified_type (char *, unsigned int, int);
-static struct type *
- decode_fund_type PARAMS ((unsigned int));
+static struct type *decode_fund_type (unsigned int);
-static char *
- create_name PARAMS ((char *, struct obstack *));
+static char *create_name (char *, struct obstack *);
-static struct type *
- lookup_utype PARAMS ((DIE_REF));
+static struct type *lookup_utype (DIE_REF);
-static struct type *
- alloc_utype PARAMS ((DIE_REF, struct type *));
+static struct type *alloc_utype (DIE_REF, struct type *);
-static struct symbol *
- new_symbol PARAMS ((struct dieinfo *, struct objfile *));
+static struct symbol *new_symbol (struct dieinfo *, struct objfile *);
static void
-synthesize_typedef PARAMS ((struct dieinfo *, struct objfile *,
- struct type *));
+synthesize_typedef (struct dieinfo *, struct objfile *, struct type *);
-static int
-locval PARAMS ((struct dieinfo *));
+static int locval (struct dieinfo *);
-static void
-set_cu_language PARAMS ((struct dieinfo *));
+static void set_cu_language (struct dieinfo *);
-static struct type *
- dwarf_fundamental_type PARAMS ((struct objfile *, int));
+static struct type *dwarf_fundamental_type (struct objfile *, int);
/*
diff --git a/gdb/elfread.c b/gdb/elfread.c
index d63d16a30fa..edd4786d3ee 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -33,7 +33,7 @@
#include "complaints.h"
#include "demangle.h"
-extern void _initialize_elfread PARAMS ((void));
+extern void _initialize_elfread (void);
/* The struct elfinfo is available only during ELF symbol table and
psymtab reading. It is destroyed at the completion of psymtab-reading.
@@ -64,32 +64,29 @@ struct complaint stab_info_mismatch_complaint =
struct complaint stab_info_questionable_complaint =
{"elf/stab section information questionable for %s", 0, 0};
-static void
-elf_symfile_init PARAMS ((struct objfile *));
+static void elf_symfile_init (struct objfile *);
-static void
-elf_new_init PARAMS ((struct objfile *));
+static void elf_new_init (struct objfile *);
-static void
-elf_symfile_read PARAMS ((struct objfile *, int));
+static void elf_symfile_read (struct objfile *, int);
-static void
-elf_symfile_finish PARAMS ((struct objfile *));
+static void elf_symfile_finish (struct objfile *);
-static void
-elf_symtab_read PARAMS ((struct objfile *, int));
+static void elf_symtab_read (struct objfile *, int);
-static void
-free_elfinfo PARAMS ((void *));
+static void free_elfinfo (void *);
-static struct minimal_symbol *
- record_minimal_symbol_and_info PARAMS ((char *, CORE_ADDR,
- enum minimal_symbol_type, char *,
- asection * bfd_section,
- struct objfile *));
+static struct minimal_symbol *record_minimal_symbol_and_info (char *,
+ CORE_ADDR,
+ enum
+ minimal_symbol_type,
+ char *,
+ asection *
+ bfd_section,
+ struct objfile
+ *);
-static void
-elf_locate_sections PARAMS ((bfd *, asection *, void *));
+static void elf_locate_sections (bfd *, asection *, void *);
/* We are called once per section from elf_symfile_read. We
need to examine each section we are passed, check to see
@@ -191,18 +188,16 @@ record_minimal_symbol_and_info (name, address, ms_type, info, bfd_section,
{
case mst_text:
case mst_file_text:
- section = SECT_OFF_TEXT;
+ section = bfd_section->index;
#ifdef SMASH_TEXT_ADDRESS
SMASH_TEXT_ADDRESS (address);
#endif
break;
case mst_data:
case mst_file_data:
- section = SECT_OFF_DATA;
- break;
case mst_bss:
case mst_file_bss:
- section = SECT_OFF_BSS;
+ section = bfd_section->index;
break;
default:
section = -1;
@@ -293,8 +288,7 @@ elf_symtab_read (objfile, dynamic)
if (number_of_symbols < 0)
error ("Can't read symbols from %s: %s", bfd_get_filename (objfile->obfd),
bfd_errmsg (bfd_get_error ()));
- /* FIXME: Should use section specific offset, not SECT_OFF_TEXT. */
- offset = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+
for (i = 0; i < number_of_symbols; i++)
{
sym = symbol_table[i];
@@ -305,6 +299,7 @@ elf_symtab_read (objfile, dynamic)
continue;
}
+ offset = ANOFFSET (objfile->section_offsets, sym->section->index);
if (dynamic
&& sym->section == &bfd_und_section
&& (sym->flags & BSF_FUNCTION))
@@ -460,15 +455,15 @@ elf_symtab_read (objfile, dynamic)
index = SECT_OFF_MAX;
if (STREQ ("Bbss.bss", sym->name))
{
- index = SECT_OFF_BSS;
+ index = SECT_OFF_BSS (objfile);
}
else if (STREQ ("Ddata.data", sym->name))
{
- index = SECT_OFF_DATA;
+ index = SECT_OFF_DATA (objfile);
}
else if (STREQ ("Drodata.rodata", sym->name))
{
- index = SECT_OFF_RODATA;
+ index = SECT_OFF_RODATA (objfile);
}
if (index != SECT_OFF_MAX)
{
@@ -593,7 +588,7 @@ elf_symfile_read (objfile, mainline)
CORE_ADDR offset;
init_minimal_symbol_collection ();
- back_to = make_cleanup ((make_cleanup_func) discard_minimal_symbols, 0);
+ back_to = make_cleanup_discard_minimal_symbols ();
memset ((char *) &ei, 0, sizeof (ei));
diff --git a/gdb/environ.h b/gdb/environ.h
index 0a6e848082a..b683e168aa8 100644
--- a/gdb/environ.h
+++ b/gdb/environ.h
@@ -34,26 +34,18 @@ struct environ
char **vector;
};
-extern struct environ *
- make_environ PARAMS ((void));
+extern struct environ *make_environ (void);
-extern void
-free_environ PARAMS ((struct environ *));
+extern void free_environ (struct environ *);
-extern void
-init_environ PARAMS ((struct environ *));
+extern void init_environ (struct environ *);
-extern char *
- get_in_environ PARAMS ((const struct environ *, const char *));
+extern char *get_in_environ (const struct environ *, const char *);
-extern void
-set_in_environ PARAMS ((struct environ *, const char *,
- const char *));
+extern void set_in_environ (struct environ *, const char *, const char *);
-extern void
-unset_in_environ PARAMS ((struct environ *, char *));
+extern void unset_in_environ (struct environ *, char *);
-extern char **
- environ_vector PARAMS ((struct environ *));
+extern char **environ_vector (struct environ *);
#endif /* defined (ENVIRON_H) */
diff --git a/gdb/eval.c b/gdb/eval.c
index c2ff903d998..9cfac7b2eb6 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -43,24 +43,23 @@ extern int objectprint;
/* Prototypes for local functions. */
-static value_ptr evaluate_subexp_for_sizeof PARAMS ((struct expression *,
- int *));
+static value_ptr evaluate_subexp_for_sizeof (struct expression *, int *);
-static value_ptr evaluate_subexp_for_address PARAMS ((struct expression *,
- int *, enum noside));
+static value_ptr evaluate_subexp_for_address (struct expression *,
+ int *, enum noside);
-static value_ptr evaluate_subexp PARAMS ((struct type *, struct expression *,
- int *, enum noside));
+static value_ptr evaluate_subexp (struct type *, struct expression *,
+ int *, enum noside);
-static char *get_label PARAMS ((struct expression *, int *));
+static char *get_label (struct expression *, int *);
static value_ptr
- evaluate_struct_tuple PARAMS ((value_ptr, struct expression *, int *,
- enum noside, int));
+evaluate_struct_tuple (value_ptr, struct expression *, int *,
+ enum noside, int);
static LONGEST
- init_array_element PARAMS ((value_ptr, value_ptr, struct expression *,
- int *, enum noside, LONGEST, LONGEST));
+init_array_element (value_ptr, value_ptr, struct expression *,
+ int *, enum noside, LONGEST, LONGEST);
#if defined (__GNUC__) && !__STDC__
inline
@@ -85,7 +84,7 @@ parse_and_eval_address (exp)
struct expression *expr = parse_expression (exp);
register CORE_ADDR addr;
register struct cleanup *old_chain =
- make_cleanup ((make_cleanup_func) free_current_contents, &expr);
+ make_cleanup (free_current_contents, &expr);
addr = value_as_pointer (evaluate_expression (expr));
do_cleanups (old_chain);
@@ -102,7 +101,7 @@ parse_and_eval_address_1 (expptr)
struct expression *expr = parse_exp_1 (expptr, (struct block *) 0, 0);
register CORE_ADDR addr;
register struct cleanup *old_chain =
- make_cleanup ((make_cleanup_func) free_current_contents, &expr);
+ make_cleanup (free_current_contents, &expr);
addr = value_as_pointer (evaluate_expression (expr));
do_cleanups (old_chain);
@@ -116,7 +115,7 @@ parse_and_eval (exp)
struct expression *expr = parse_expression (exp);
register value_ptr val;
register struct cleanup *old_chain
- = make_cleanup ((make_cleanup_func) free_current_contents, &expr);
+ = make_cleanup (free_current_contents, &expr);
val = evaluate_expression (expr);
do_cleanups (old_chain);
@@ -134,7 +133,7 @@ parse_to_comma_and_eval (expp)
struct expression *expr = parse_exp_1 (expp, (struct block *) 0, 1);
register value_ptr val;
register struct cleanup *old_chain
- = make_cleanup ((make_cleanup_func) free_current_contents, &expr);
+ = make_cleanup (free_current_contents, &expr);
val = evaluate_expression (expr);
do_cleanups (old_chain);
@@ -832,8 +831,9 @@ evaluate_subexp_standard (expect_type, exp, pos, noside)
/* Method invocation : stuff "this" as first parameter */
/* pai: this used to have lookup_pointer_type for some reason,
* but temp is already a pointer to the object */
- argvec[1] = value_from_longest (VALUE_TYPE (temp),
- VALUE_ADDRESS (temp) + VALUE_OFFSET (temp));
+ argvec[1]
+ = value_from_pointer (VALUE_TYPE (temp),
+ VALUE_ADDRESS (temp) + VALUE_OFFSET (temp));
/* Name of method from expression */
strcpy (tstr, &exp->elts[pc2 + 2].string);
@@ -1122,7 +1122,7 @@ evaluate_subexp_standard (expect_type, exp, pos, noside)
/* Now, convert these values to an address. */
arg1 = value_cast (lookup_pointer_type (TYPE_DOMAIN_TYPE (type)),
arg1);
- arg3 = value_from_longest (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
+ arg3 = value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
value_as_long (arg1) + mem_offset);
return value_ind (arg3);
bad_pointer_to_member:
diff --git a/gdb/event-top.c b/gdb/event-top.c
index 622b70f020d..34bf5dffc8c 100644
--- a/gdb/event-top.c
+++ b/gdb/event-top.c
@@ -487,7 +487,7 @@ command_handler (char *command)
quit_flag = 0;
if (instream == stdin && stdin_is_tty)
reinitialize_more_filter ();
- old_chain = make_cleanup ((make_cleanup_func) command_loop_marker, 0);
+ old_chain = make_cleanup (command_loop_marker, 0);
#if defined(TUI)
insert_mode = 0;
diff --git a/gdb/exec.c b/gdb/exec.c
index 6381e63e358..76d49286647 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -45,29 +45,29 @@
#include "xcoffsolib.h"
-struct vmap *map_vmap PARAMS ((bfd *, bfd *));
+struct vmap *map_vmap (bfd *, bfd *);
-void (*file_changed_hook) PARAMS ((char *));
+void (*file_changed_hook) (char *);
/* Prototypes for local functions */
-static void add_to_section_table PARAMS ((bfd *, sec_ptr, PTR));
+static void add_to_section_table (bfd *, sec_ptr, PTR);
-static void exec_close PARAMS ((int));
+static void exec_close (int);
-static void file_command PARAMS ((char *, int));
+static void file_command (char *, int);
-static void set_section_command PARAMS ((char *, int));
+static void set_section_command (char *, int);
-static void exec_files_info PARAMS ((struct target_ops *));
+static void exec_files_info (struct target_ops *);
-static void bfdsec_to_vmap PARAMS ((bfd *, sec_ptr, PTR));
+static void bfdsec_to_vmap (bfd *, sec_ptr, PTR);
-static int ignore PARAMS ((CORE_ADDR, char *));
+static int ignore (CORE_ADDR, char *);
-static void init_exec_ops PARAMS ((void));
+static void init_exec_ops (void);
-void _initialize_exec PARAMS ((void));
+void _initialize_exec (void);
extern int info_verbose;
@@ -473,7 +473,7 @@ xfer_memory (memaddr, myaddr, len, write, target)
boolean res;
struct section_table *p;
CORE_ADDR nextsectaddr, memend;
- boolean (*xfer_fn) PARAMS ((bfd *, sec_ptr, PTR, file_ptr, bfd_size_type));
+ boolean (*xfer_fn) (bfd *, sec_ptr, PTR, file_ptr, bfd_size_type);
asection *section;
if (len <= 0)
@@ -490,49 +490,6 @@ xfer_memory (memaddr, myaddr, len, write, target)
xfer_fn = write ? bfd_set_section_contents : bfd_get_section_contents;
nextsectaddr = memend;
-#if 0 /* Stu's implementation */
-/* If a section has been specified, try to use it. Note that we cannot use the
- specified section directly. This is because it usually comes from the
- symbol file, which may be different from the exec or core file. Instead, we
- have to lookup the specified section by name in the bfd associated with
- to_sections. */
-
- if (target_memory_bfd_section)
- {
- asection *s;
- bfd *abfd;
- asection *target_section;
- bfd *target_bfd;
-
- s = target_memory_bfd_section;
- abfd = s->owner;
-
- target_bfd = target->to_sections->bfd;
- target_section = bfd_get_section_by_name (target_bfd, bfd_section_name (abfd, s));
-
- if (target_section)
- {
- bfd_vma sec_addr;
- bfd_size_type sec_size;
-
- sec_addr = bfd_section_vma (target_bfd, target_section);
- sec_size = target_section->_raw_size;
-
- /* Make sure the requested memory starts inside the section. */
-
- if (memaddr >= sec_addr
- && memaddr < sec_addr + sec_size)
- {
- /* Cut back length in case request overflows the end of the section. */
- len = min (len, sec_addr + sec_size - memaddr);
-
- res = xfer_fn (target_bfd, target_section, myaddr, memaddr - sec_addr, len);
-
- return res ? len : 0;
- }
- }
- }
-#endif /* 0, Stu's implementation */
for (p = target->to_sections; p < target->to_sections_end; p++)
{
if (overlay_debugging && section && p->the_bfd_section &&
diff --git a/gdb/expprint.c b/gdb/expprint.c
index 4b5245cd64f..edf4f8c7fd7 100644
--- a/gdb/expprint.c
+++ b/gdb/expprint.c
@@ -504,7 +504,7 @@ op_string (op)
/* Support for dumping the raw data from expressions in a human readable
form. */
-static char *op_name PARAMS ((int opcode));
+static char *op_name (int opcode);
static char *
op_name (opcode)
@@ -736,7 +736,8 @@ dump_prefix_expression (exp, stream, note)
}
}
-static int dump_subexp PARAMS ((struct expression * exp, struct ui_file * stream, int elt));
+static int dump_subexp (struct expression *exp, struct ui_file *stream,
+ int elt);
static int
dump_subexp (exp, stream, elt)
diff --git a/gdb/expression.h b/gdb/expression.h
index 16dbb154500..1320643bb0d 100644
--- a/gdb/expression.h
+++ b/gdb/expression.h
@@ -333,9 +333,9 @@ struct expression
/* From parse.c */
-extern struct expression *parse_expression PARAMS ((char *));
+extern struct expression *parse_expression (char *);
-extern struct expression *parse_exp_1 PARAMS ((char **, struct block *, int));
+extern struct expression *parse_exp_1 (char **, struct block *, int);
/* The innermost context required by the stack and register variables
we've encountered so far. To use this, set it to NULL, then call
@@ -362,13 +362,13 @@ enum noside
};
extern struct value *evaluate_subexp_standard
- PARAMS ((struct type *, struct expression *, int *, enum noside));
+ (struct type *, struct expression *, int *, enum noside);
/* From expprint.c */
extern void print_expression (struct expression *, struct ui_file *);
-extern char *op_string PARAMS ((enum exp_opcode));
+extern char *op_string (enum exp_opcode);
extern void dump_prefix_expression (struct expression *,
struct ui_file *,
diff --git a/gdb/f-exp.y b/gdb/f-exp.y
index 4a1f747605c..9e67561d34f 100644
--- a/gdb/f-exp.y
+++ b/gdb/f-exp.y
@@ -103,15 +103,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define YYDEBUG 1 /* Default to no yydebug support */
#endif
-int yyparse PARAMS ((void));
+int yyparse (void);
-static int yylex PARAMS ((void));
+static int yylex (void);
-void yyerror PARAMS ((char *));
+void yyerror (char *);
-static void growbuf_by_size PARAMS ((int));
+static void growbuf_by_size (int);
-static int match_string_literal PARAMS ((void));
+static int match_string_literal (void);
%}
@@ -143,7 +143,7 @@ static int match_string_literal PARAMS ((void));
%{
/* YYSTYPE gets defined by %union */
-static int parse_number PARAMS ((char *, int, int, YYSTYPE *));
+static int parse_number (char *, int, int, YYSTYPE *);
%}
%type <voidval> exp type_exp start variable
diff --git a/gdb/f-lang.c b/gdb/f-lang.c
index 53d92ec1509..7a5f86109c5 100644
--- a/gdb/f-lang.c
+++ b/gdb/f-lang.c
@@ -68,23 +68,23 @@ typedef struct saved_bf_symnum SAVED_BF, *SAVED_BF_PTR;
/* Local functions */
-extern void _initialize_f_language PARAMS ((void));
+extern void _initialize_f_language (void);
#if 0
-static void clear_function_list PARAMS ((void));
-static long get_bf_for_fcn PARAMS ((long));
-static void clear_bf_list PARAMS ((void));
-static void patch_all_commons_by_name PARAMS ((char *, CORE_ADDR, int));
-static SAVED_F77_COMMON_PTR find_first_common_named PARAMS ((char *));
-static void add_common_entry PARAMS ((struct symbol *));
-static void add_common_block PARAMS ((char *, CORE_ADDR, int, char *));
-static SAVED_FUNCTION *allocate_saved_function_node PARAMS ((void));
-static SAVED_BF_PTR allocate_saved_bf_node PARAMS ((void));
-static COMMON_ENTRY_PTR allocate_common_entry_node PARAMS ((void));
-static SAVED_F77_COMMON_PTR allocate_saved_f77_common_node PARAMS ((void));
-static void patch_common_entries PARAMS ((SAVED_F77_COMMON_PTR, CORE_ADDR, int));
+static void clear_function_list (void);
+static long get_bf_for_fcn (long);
+static void clear_bf_list (void);
+static void patch_all_commons_by_name (char *, CORE_ADDR, int);
+static SAVED_F77_COMMON_PTR find_first_common_named (char *);
+static void add_common_entry (struct symbol *);
+static void add_common_block (char *, CORE_ADDR, int, char *);
+static SAVED_FUNCTION *allocate_saved_function_node (void);
+static SAVED_BF_PTR allocate_saved_bf_node (void);
+static COMMON_ENTRY_PTR allocate_common_entry_node (void);
+static SAVED_F77_COMMON_PTR allocate_saved_f77_common_node (void);
+static void patch_common_entries (SAVED_F77_COMMON_PTR, CORE_ADDR, int);
#endif
-static struct type *f_create_fundamental_type PARAMS ((struct objfile *, int));
+static struct type *f_create_fundamental_type (struct objfile *, int);
static void f_printstr (struct ui_file * stream, char *string,
unsigned int length, int width,
int force_ellipses);
diff --git a/gdb/f-lang.h b/gdb/f-lang.h
index 0dbe55f3aee..8b3fa6b5a3c 100644
--- a/gdb/f-lang.h
+++ b/gdb/f-lang.h
@@ -20,9 +20,9 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-extern int f_parse PARAMS ((void));
+extern int f_parse (void);
-extern void f_error PARAMS ((char *)); /* Defined in f-exp.y */
+extern void f_error (char *); /* Defined in f-exp.y */
extern void f_print_type (struct type *, char *, struct ui_file *, int,
int);
@@ -60,7 +60,7 @@ extern SAVED_F77_COMMON_PTR head_common_list; /* Ptr to 1st saved COMMON */
extern SAVED_F77_COMMON_PTR tail_common_list; /* Ptr to last saved COMMON */
extern SAVED_F77_COMMON_PTR current_common; /* Ptr to current COMMON */
-extern SAVED_F77_COMMON_PTR find_common_for_function PARAMS ((char *, char *));
+extern SAVED_F77_COMMON_PTR find_common_for_function (char *, char *);
#define UNINITIALIZED_SECNUM -1
#define COMMON_NEEDS_PATCHING(blk) ((blk)->secnum == UNINITIALIZED_SECNUM)
@@ -83,13 +83,13 @@ extern SAVED_F77_COMMON_PTR find_common_for_function PARAMS ((char *, char *));
extern char *real_main_name; /* Name of main function */
extern int real_main_c_value; /* C_value field of main function */
-extern int f77_get_dynamic_upperbound PARAMS ((struct type *, int *));
+extern int f77_get_dynamic_upperbound (struct type *, int *);
-extern int f77_get_dynamic_lowerbound PARAMS ((struct type *, int *));
+extern int f77_get_dynamic_lowerbound (struct type *, int *);
-extern void f77_get_dynamic_array_length PARAMS ((struct type *));
+extern void f77_get_dynamic_array_length (struct type *);
-extern int calc_f77_array_dims PARAMS ((struct type *));
+extern int calc_f77_array_dims (struct type *);
#define DEFAULT_DOTMAIN_NAME_IN_MF77 ".MAIN_"
#define DEFAULT_MAIN_NAME_IN_MF77 "MAIN_"
diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
index a007c871c1e..a91766d8a5b 100644
--- a/gdb/f-valprint.c
+++ b/gdb/f-valprint.c
@@ -35,12 +35,12 @@
#include "command.h"
#if 0
-static int there_is_a_visible_common_named PARAMS ((char *));
+static int there_is_a_visible_common_named (char *);
#endif
-extern void _initialize_f_valprint PARAMS ((void));
-static void info_common_command PARAMS ((char *, int));
-static void list_all_visible_commons PARAMS ((char *));
+extern void _initialize_f_valprint (void);
+static void info_common_command (char *, int);
+static void list_all_visible_commons (char *);
static void f77_print_array (struct type *, char *, CORE_ADDR,
struct ui_file *, int, int, int,
enum val_prettyprint);
@@ -49,7 +49,7 @@ static void f77_print_array_1 (int, int, struct type *, char *,
enum val_prettyprint);
static void f77_create_arrayprint_offset_tbl (struct type *,
struct ui_file *);
-static void f77_get_dynamic_length_of_aggregate PARAMS ((struct type *));
+static void f77_get_dynamic_length_of_aggregate (struct type *);
int f77_array_offset_tbl[MAX_FORTRAN_DIMS + 1][2];
@@ -564,7 +564,7 @@ f_val_print (type, valaddr, embedded_offset, address, stream, format, deref_ref,
fputs_filtered ("(", stream);
print_floating (valaddr, type, stream);
fputs_filtered (",", stream);
- print_floating (valaddr, type, stream);
+ print_floating (valaddr + TYPE_LENGTH (type), type, stream);
fputs_filtered (")", stream);
break;
diff --git a/gdb/findvar.c b/gdb/findvar.c
index 98a7133b79f..5571ede4a66 100644
--- a/gdb/findvar.c
+++ b/gdb/findvar.c
@@ -42,9 +42,12 @@ const struct floatformat floatformat_unknown;
#define CANNOT_STORE_REGISTER(regno) 0
#endif
-static void write_register_gen PARAMS ((int, char *));
+void write_register_gen (int, char *);
-static int read_relative_register_raw_bytes_for_frame PARAMS ((int regnum, char *myaddr, struct frame_info * frame));
+static int
+read_relative_register_raw_bytes_for_frame (int regnum,
+ char *myaddr,
+ struct frame_info *frame);
/* Basic byte-swapping routines. GDB has needed these for a long time...
All extract a target-format integer at ADDR which is LEN bytes long. */
@@ -169,6 +172,20 @@ extract_long_unsigned_integer (void *addr, int orig_len, LONGEST *pval)
return 0;
}
+
+/* Treat the LEN bytes at ADDR as a target-format address, and return
+ that address. ADDR is a buffer in the GDB process, not in the
+ inferior.
+
+ This function should only be used by target-specific code. It
+ assumes that a pointer has the same representation as that thing's
+ address represented as an integer. Some machines use word
+ addresses, or similarly munged things, for certain types of
+ pointers, so that assumption doesn't hold everywhere.
+
+ Common code should use extract_typed_address instead, or something
+ else based on POINTER_TO_ADDRESS. */
+
CORE_ADDR
extract_address (void *addr, int len)
{
@@ -177,6 +194,21 @@ extract_address (void *addr, int len)
return (CORE_ADDR) extract_unsigned_integer (addr, len);
}
+
+/* Treat the bytes at BUF as a pointer of type TYPE, and return the
+ address it represents. */
+CORE_ADDR
+extract_typed_address (void *buf, struct type *type)
+{
+ if (TYPE_CODE (type) != TYPE_CODE_PTR
+ && TYPE_CODE (type) != TYPE_CODE_REF)
+ internal_error ("findvar.c (extract_typed_address): "
+ "type is not a pointer or reference");
+
+ return POINTER_TO_ADDRESS (type, buf);
+}
+
+
void
store_signed_integer (void *addr, int len, LONGEST val)
{
@@ -231,14 +263,39 @@ store_unsigned_integer (void *addr, int len, ULONGEST val)
}
}
-/* Store the literal address "val" into
- gdb-local memory pointed to by "addr"
- for "len" bytes. */
+/* Store the address VAL as a LEN-byte value in target byte order at
+ ADDR. ADDR is a buffer in the GDB process, not in the inferior.
+
+ This function should only be used by target-specific code. It
+ assumes that a pointer has the same representation as that thing's
+ address represented as an integer. Some machines use word
+ addresses, or similarly munged things, for certain types of
+ pointers, so that assumption doesn't hold everywhere.
+
+ Common code should use store_typed_address instead, or something else
+ based on ADDRESS_TO_POINTER. */
void
store_address (void *addr, int len, LONGEST val)
{
store_unsigned_integer (addr, len, val);
}
+
+
+/* Store the address ADDR as a pointer of type TYPE at BUF, in target
+ form. */
+void
+store_typed_address (void *buf, struct type *type, CORE_ADDR addr)
+{
+ if (TYPE_CODE (type) != TYPE_CODE_PTR
+ && TYPE_CODE (type) != TYPE_CODE_REF)
+ internal_error ("findvar.c (store_typed_address): "
+ "type is not a pointer or reference");
+
+ ADDRESS_TO_POINTER (type, buf, addr);
+}
+
+
+
/* Extract a floating-point number from a target-order byte-stream at ADDR.
Returns the value as type DOUBLEST.
@@ -445,7 +502,8 @@ default_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval)
if (raw_buffer != NULL)
{
/* Put it back in target format. */
- store_address (raw_buffer, REGISTER_RAW_SIZE (regnum), (LONGEST) addr);
+ store_address (raw_buffer, REGISTER_RAW_SIZE (regnum),
+ (LONGEST) addr);
}
if (addrp != NULL)
*addrp = 0;
@@ -722,7 +780,7 @@ read_register_gen (regno, myaddr)
/* Write register REGNO at MYADDR to the target. MYADDR points at
REGISTER_RAW_BYTES(REGNO), which must be in target byte-order. */
-static void
+void
write_register_gen (regno, myaddr)
int regno;
char *myaddr;
@@ -831,8 +889,9 @@ read_register (regno)
if (!register_valid[regno])
target_fetch_registers (regno);
- return (CORE_ADDR) extract_address (&registers[REGISTER_BYTE (regno)],
- REGISTER_RAW_SIZE (regno));
+ return ((CORE_ADDR)
+ extract_unsigned_integer (&registers[REGISTER_BYTE (regno)],
+ REGISTER_RAW_SIZE (regno)));
}
CORE_ADDR
@@ -1023,14 +1082,10 @@ generic_target_write_pc (pc, pid)
#ifdef PC_REGNUM
if (PC_REGNUM >= 0)
write_register_pid (PC_REGNUM, pc, pid);
-#ifdef NPC_REGNUM
if (NPC_REGNUM >= 0)
write_register_pid (NPC_REGNUM, pc + 4, pid);
-#ifdef NNPC_REGNUM
if (NNPC_REGNUM >= 0)
write_register_pid (NNPC_REGNUM, pc + 8, pid);
-#endif
-#endif
#else
internal_error ("generic_target_write_pc");
#endif
@@ -1150,6 +1205,35 @@ write_fp (val)
{
TARGET_WRITE_FP (val);
}
+
+
+/* Given a pointer of type TYPE in target form in BUF, return the
+ address it represents. */
+CORE_ADDR
+unsigned_pointer_to_address (struct type *type, void *buf)
+{
+ return extract_address (buf, TYPE_LENGTH (type));
+}
+
+CORE_ADDR
+signed_pointer_to_address (struct type *type, void *buf)
+{
+ return extract_signed_integer (buf, TYPE_LENGTH (type));
+}
+
+/* Given an address, store it as a pointer of type TYPE in target
+ format in BUF. */
+void
+unsigned_address_to_pointer (struct type *type, void *buf, CORE_ADDR addr)
+{
+ store_address (buf, TYPE_LENGTH (type), addr);
+}
+
+void
+address_to_signed_pointer (struct type *type, void *buf, CORE_ADDR addr)
+{
+ store_signed_integer (buf, TYPE_LENGTH (type), addr);
+}
/* Will calling read_var_value or locate_var_value on SYM end
up caring what frame it is being evaluated relative to? SYM must
@@ -1231,12 +1315,15 @@ read_var_value (var, frame)
case LOC_LABEL:
/* Put the constant back in target format. */
if (overlay_debugging)
- store_address (VALUE_CONTENTS_RAW (v), len,
- (LONGEST) symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var),
- SYMBOL_BFD_SECTION (var)));
+ {
+ CORE_ADDR addr
+ = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var),
+ SYMBOL_BFD_SECTION (var));
+ store_typed_address (VALUE_CONTENTS_RAW (v), type, addr);
+ }
else
- store_address (VALUE_CONTENTS_RAW (v), len,
- (LONGEST) SYMBOL_VALUE_ADDRESS (var));
+ store_typed_address (VALUE_CONTENTS_RAW (v), type,
+ SYMBOL_VALUE_ADDRESS (var));
VALUE_LVAL (v) = not_lval;
return v;
@@ -1399,7 +1486,7 @@ addresses have not been bound by the dynamic loader. Try again when executable i
}
/* Return a value of type TYPE, stored in register REGNUM, in frame
- FRAME.
+ FRAME.
NOTE: returns NULL if register value is not available.
Caller will check return value or die! */
@@ -1423,7 +1510,8 @@ value_from_register (type, regnum, frame)
CHECK_TYPEDEF (type);
len = TYPE_LENGTH (type);
- /* Pointers on D10V are really only 16 bits, but we lie to gdb elsewhere... */
+ /* Pointers on D10V are really only 16 bits,
+ but we lie to gdb elsewhere... */
if (GDB_TARGET_IS_D10V && TYPE_CODE (type) == TYPE_CODE_PTR)
len = 2;
@@ -1626,25 +1714,20 @@ value_from_register (type, regnum, frame)
}
if (GDB_TARGET_IS_D10V
- && TYPE_CODE (type) == TYPE_CODE_PTR
- && TYPE_TARGET_TYPE (type)
- && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC))
+ && TYPE_CODE (type) == TYPE_CODE_PTR)
{
- /* pointer to function */
unsigned long num;
unsigned short snum;
- snum = (unsigned short) extract_unsigned_integer (VALUE_CONTENTS_RAW (v), 2);
- num = D10V_MAKE_IADDR (snum);
- store_address (VALUE_CONTENTS_RAW (v), 4, num);
- }
- else if (GDB_TARGET_IS_D10V
- && TYPE_CODE (type) == TYPE_CODE_PTR)
- {
- /* pointer to data */
- unsigned long num;
- unsigned short snum;
- snum = (unsigned short) extract_unsigned_integer (VALUE_CONTENTS_RAW (v), 2);
- num = D10V_MAKE_DADDR (snum);
+
+ snum = (unsigned short)
+ extract_unsigned_integer (VALUE_CONTENTS_RAW (v), 2);
+
+ if (TYPE_TARGET_TYPE (type) /* pointer to function */
+ && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC))
+ num = D10V_MAKE_IADDR (snum);
+ else /* pointer to data */
+ num = D10V_MAKE_DADDR (snum);
+
store_address (VALUE_CONTENTS_RAW (v), 4, num);
}
@@ -1678,7 +1761,7 @@ locate_var_value (var, frame)
value_ptr val;
addr = VALUE_ADDRESS (lazy_value);
- val = value_from_longest (lookup_pointer_type (type), (LONGEST) addr);
+ val = value_from_pointer (lookup_pointer_type (type), addr);
VALUE_BFD_SECTION (val) = VALUE_BFD_SECTION (lazy_value);
return val;
}
@@ -1701,7 +1784,7 @@ locate_var_value (var, frame)
}
-static void build_findvar PARAMS ((void));
+static void build_findvar (void);
static void
build_findvar ()
{
@@ -1715,7 +1798,7 @@ build_findvar ()
memset (register_valid, 0, sizeof_register_valid);
}
-void _initialize_findvar PARAMS ((void));
+void _initialize_findvar (void);
void
_initialize_findvar ()
{
diff --git a/gdb/fork-child.c b/gdb/fork-child.c
index 1acb28ad422..0996fbd4590 100644
--- a/gdb/fork-child.c
+++ b/gdb/fork-child.c
@@ -103,9 +103,9 @@ fork_inferior (exec_file, allargs, env, traceme_fun, init_trace_fun,
char *exec_file;
char *allargs;
char **env;
- void (*traceme_fun) PARAMS ((void));
- void (*init_trace_fun) PARAMS ((int));
- void (*pre_trace_fun) PARAMS ((void));
+ void (*traceme_fun) (void);
+ void (*init_trace_fun) (int);
+ void (*pre_trace_fun) (void);
char *shell_file;
{
int pid;
diff --git a/gdb/fr30-tdep.c b/gdb/fr30-tdep.c
index 55b713a1359..c35201d3372 100644
--- a/gdb/fr30-tdep.c
+++ b/gdb/fr30-tdep.c
@@ -242,7 +242,7 @@ fr30_push_arguments (nargs, args, sp, struct_return, struct_addr)
return sp;
}
-void _initialize_fr30_tdep PARAMS ((void));
+void _initialize_fr30_tdep (void);
void
_initialize_fr30_tdep ()
diff --git a/gdb/frame.h b/gdb/frame.h
index f82ae362d30..37fa97ccc34 100644
--- a/gdb/frame.h
+++ b/gdb/frame.h
@@ -118,8 +118,8 @@ enum print_what
#ifndef SIZEOF_FRAME_SAVED_REGS
#define SIZEOF_FRAME_SAVED_REGS (sizeof (CORE_ADDR) * (NUM_REGS))
#endif
-extern void *frame_obstack_alloc PARAMS ((unsigned long size));
-extern void frame_saved_regs_zalloc PARAMS ((struct frame_info *));
+extern void *frame_obstack_alloc (unsigned long size);
+extern void frame_saved_regs_zalloc (struct frame_info *);
/* Return the frame address from FR. Except in the machine-dependent
*FRAME* macros, a frame address has no defined meaning other than
@@ -148,10 +148,10 @@ extern void frame_saved_regs_zalloc PARAMS ((struct frame_info *));
extern int file_frame_chain_valid (CORE_ADDR, struct frame_info *);
extern int func_frame_chain_valid (CORE_ADDR, struct frame_info *);
-extern int nonnull_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *));
+extern int nonnull_frame_chain_valid (CORE_ADDR, struct frame_info *);
extern int generic_file_frame_chain_valid (CORE_ADDR, struct frame_info *);
extern int generic_func_frame_chain_valid (CORE_ADDR, struct frame_info *);
-extern void generic_save_dummy_frame_tos PARAMS ((CORE_ADDR sp));
+extern void generic_save_dummy_frame_tos (CORE_ADDR sp);
#if !defined (FRAME_CHAIN_VALID)
#if !defined (FRAME_CHAIN_VALID_ALTERNATE)
@@ -175,94 +175,94 @@ extern struct frame_info *selected_frame;
extern int selected_frame_level;
-extern struct frame_info *create_new_frame PARAMS ((CORE_ADDR, CORE_ADDR));
+extern struct frame_info *create_new_frame (CORE_ADDR, CORE_ADDR);
-extern void flush_cached_frames PARAMS ((void));
+extern void flush_cached_frames (void);
-extern void reinit_frame_cache PARAMS ((void));
+extern void reinit_frame_cache (void);
#ifdef FRAME_FIND_SAVED_REGS
/* XXX - deprecated */
#define FRAME_INIT_SAVED_REGS(FI) get_frame_saved_regs (FI, NULL)
-extern void get_frame_saved_regs PARAMS ((struct frame_info *,
- struct frame_saved_regs *));
+extern void get_frame_saved_regs (struct frame_info *,
+ struct frame_saved_regs *);
#endif
-extern void set_current_frame PARAMS ((struct frame_info *));
+extern void set_current_frame (struct frame_info *);
-extern struct frame_info *get_prev_frame PARAMS ((struct frame_info *));
+extern struct frame_info *get_prev_frame (struct frame_info *);
-extern struct frame_info *get_current_frame PARAMS ((void));
+extern struct frame_info *get_current_frame (void);
-extern struct frame_info *get_next_frame PARAMS ((struct frame_info *));
+extern struct frame_info *get_next_frame (struct frame_info *);
-extern struct block *get_frame_block PARAMS ((struct frame_info *));
+extern struct block *get_frame_block (struct frame_info *);
-extern struct block *get_current_block PARAMS ((void));
+extern struct block *get_current_block (void);
-extern struct block *get_selected_block PARAMS ((void));
+extern struct block *get_selected_block (void);
-extern struct symbol *get_frame_function PARAMS ((struct frame_info *));
+extern struct symbol *get_frame_function (struct frame_info *);
-extern CORE_ADDR get_frame_pc PARAMS ((struct frame_info *));
+extern CORE_ADDR get_frame_pc (struct frame_info *);
-extern CORE_ADDR get_pc_function_start PARAMS ((CORE_ADDR));
+extern CORE_ADDR get_pc_function_start (CORE_ADDR);
-extern struct block *block_for_pc PARAMS ((CORE_ADDR));
+extern struct block *block_for_pc (CORE_ADDR);
-extern struct block *block_for_pc_sect PARAMS ((CORE_ADDR, asection *));
+extern struct block *block_for_pc_sect (CORE_ADDR, asection *);
-extern int frameless_look_for_prologue PARAMS ((struct frame_info *));
+extern int frameless_look_for_prologue (struct frame_info *);
-extern void print_frame_args PARAMS ((struct symbol *, struct frame_info *,
- int, struct ui_file *));
+extern void print_frame_args (struct symbol *, struct frame_info *,
+ int, struct ui_file *);
-extern struct frame_info *find_relative_frame PARAMS ((struct frame_info *, int *));
+extern struct frame_info *find_relative_frame (struct frame_info *, int *);
-extern void show_and_print_stack_frame PARAMS ((struct frame_info * fi, int level, int source));
+extern void show_and_print_stack_frame (struct frame_info *fi, int level,
+ int source);
-extern void print_stack_frame PARAMS ((struct frame_info *, int, int));
+extern void print_stack_frame (struct frame_info *, int, int);
-extern void print_only_stack_frame PARAMS ((struct frame_info *, int, int));
+extern void print_only_stack_frame (struct frame_info *, int, int);
-extern void show_stack_frame PARAMS ((struct frame_info *));
+extern void show_stack_frame (struct frame_info *);
-extern void select_frame PARAMS ((struct frame_info *, int));
+extern void select_frame (struct frame_info *, int);
-extern void record_selected_frame PARAMS ((CORE_ADDR *, int *));
+extern void record_selected_frame (CORE_ADDR *, int *);
-extern void select_and_print_frame PARAMS ((struct frame_info *, int));
+extern void select_and_print_frame (struct frame_info *, int);
-extern void print_frame_info PARAMS ((struct frame_info *, int, int, int));
+extern void print_frame_info (struct frame_info *, int, int, int);
-extern void show_frame_info PARAMS ((struct frame_info *, int, int, int));
+extern void show_frame_info (struct frame_info *, int, int, int);
-extern CORE_ADDR find_saved_register PARAMS ((struct frame_info *, int));
+extern CORE_ADDR find_saved_register (struct frame_info *, int);
-extern struct frame_info *block_innermost_frame PARAMS ((struct block *));
+extern struct frame_info *block_innermost_frame (struct block *);
-extern struct frame_info *find_frame_addr_in_frame_chain PARAMS ((CORE_ADDR));
+extern struct frame_info *find_frame_addr_in_frame_chain (CORE_ADDR);
-extern CORE_ADDR sigtramp_saved_pc PARAMS ((struct frame_info *));
+extern CORE_ADDR sigtramp_saved_pc (struct frame_info *);
-extern CORE_ADDR generic_read_register_dummy PARAMS ((CORE_ADDR pc,
- CORE_ADDR fp,
- int));
-extern void generic_push_dummy_frame PARAMS ((void));
-extern void generic_pop_current_frame PARAMS ((void (*)(struct frame_info *)));
-extern void generic_pop_dummy_frame PARAMS ((void));
+extern CORE_ADDR generic_read_register_dummy (CORE_ADDR pc,
+ CORE_ADDR fp, int);
+extern void generic_push_dummy_frame (void);
+extern void generic_pop_current_frame (void (*)(struct frame_info *));
+extern void generic_pop_dummy_frame (void);
-extern int generic_pc_in_call_dummy PARAMS ((CORE_ADDR pc,
- CORE_ADDR sp,
- CORE_ADDR fp));
-extern char *generic_find_dummy_frame PARAMS ((CORE_ADDR pc,
- CORE_ADDR fp));
+extern int generic_pc_in_call_dummy (CORE_ADDR pc,
+ CORE_ADDR sp, CORE_ADDR fp);
+extern char *generic_find_dummy_frame (CORE_ADDR pc, CORE_ADDR fp);
-extern void generic_fix_call_dummy PARAMS ((char *dummy, CORE_ADDR pc, CORE_ADDR fun,
- int nargs, struct value ** args,
- struct type * type, int gcc_p));
+extern void generic_fix_call_dummy (char *dummy, CORE_ADDR pc, CORE_ADDR fun,
+ int nargs, struct value **args,
+ struct type *type, int gcc_p);
-extern void generic_get_saved_register PARAMS ((char *, int *, CORE_ADDR *, struct frame_info *, int, enum lval_type *));
+extern void generic_get_saved_register (char *, int *, CORE_ADDR *,
+ struct frame_info *, int,
+ enum lval_type *);
#endif /* !defined (FRAME_H) */
diff --git a/gdb/gdb-stabs.h b/gdb/gdb-stabs.h
index 92301f14123..3ec13930f5d 100644
--- a/gdb/gdb-stabs.h
+++ b/gdb/gdb-stabs.h
@@ -28,16 +28,7 @@
#if !defined (GDBSTABS_H)
#define GDBSTABS_H
-/* Offsets in the psymtab's section_offsets array for various kinds of
- stabs symbols. Every psymtab built from stabs will have these offsets
- filled in by these guidelines, so that when actually reading symbols, the
- proper offset can simply be selected and added to the symbol value. */
-
-#define SECT_OFF_TEXT 0
-#define SECT_OFF_DATA 1
-#define SECT_OFF_BSS 2
-#define SECT_OFF_RODATA 3
-#define SECT_OFF_MAX 16 /* Count of possible values */
+#define SECT_OFF_MAX 40 /* Count of possible values */
/* The stab_section_info chain remembers info from the ELF symbol table,
while psymtabs are being built for the other symbol tables in the
diff --git a/gdb/gdb_dirent.h b/gdb/gdb_dirent.h
new file mode 100644
index 00000000000..9cb40061420
--- /dev/null
+++ b/gdb/gdb_dirent.h
@@ -0,0 +1,40 @@
+/* Portable <dirent.h>
+ Copyright 2000 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#if !defined(GDB_DIRENT_H)
+#define GDB_DIRENT_H
+
+/* From bfd/hpux-core.c. */
+
+#ifdef HAVE_DIRENT_H
+# include <dirent.h>
+#else
+# ifdef HAVE_SYS_NDIR_H
+# include <sys/ndir.h>
+# endif
+# ifdef HAVE_SYS_DIR_H
+# include <sys/dir.h>
+# endif
+# ifdef HAVE_NDIR_H
+# include <ndir.h>
+# endif
+#endif
+
+#endif /* !defined(GDB_DIRENT_H) */
diff --git a/gdb/gdb_string.h b/gdb/gdb_string.h
index 9824f1f8c92..e6417b59078 100644
--- a/gdb/gdb_string.h
+++ b/gdb/gdb_string.h
@@ -31,15 +31,15 @@
#endif
#ifndef strchr
-extern char *strchr PARAMS ((const char *, int)); /* X3.159-1989 4.11.5.2 */
+extern char *strchr (const char *, int); /* X3.159-1989 4.11.5.2 */
#endif
#ifndef strrchr
-extern char *strrchr PARAMS ((const char *, int)); /* X3.159-1989 4.11.5.5 */
+extern char *strrchr (const char *, int); /* X3.159-1989 4.11.5.5 */
#endif
#ifndef strtok
-extern char *strtok PARAMS ((char *, const char *)); /* X3.159-1989 4.11.5.8 */
+extern char *strtok (char *, const char *); /* X3.159-1989 4.11.5.8 */
#endif
#ifdef HAVE_MEMORY_H
@@ -54,7 +54,7 @@ extern int memcmp ();
#ifdef NEED_DECLARATION_STRERROR
#ifndef strerror
-extern char *strerror PARAMS ((int)); /* X3.159-1989 4.11.6.2 */
+extern char *strerror (int); /* X3.159-1989 4.11.6.2 */
#endif
#endif
@@ -64,7 +64,7 @@ extern char *strdup (); /* full prototype collides w/ some OSes (AIX 3.2.5) */
#ifdef NEED_DECLARATION_STRSTR
#ifndef strstr
-extern char *strstr PARAMS ((const char *, const char *)); /* X3.159-1989 4.11.5.7 */
+extern char *strstr (const char *, const char *); /* X3.159-1989 4.11.5.7 */
#endif
#endif
diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c
index 98e0743374b..55afe114e6a 100644
--- a/gdb/gdbarch.c
+++ b/gdb/gdbarch.c
@@ -58,6 +58,7 @@
#endif
#include "symcat.h"
+#include "floatformat.h"
/* Static function declarations */
@@ -135,6 +136,7 @@ struct gdbarch
int float_bit;
int double_bit;
int long_double_bit;
+ int ieee_float;
gdbarch_read_pc_ftype *read_pc;
gdbarch_write_pc_ftype *write_pc;
gdbarch_read_fp_ftype *read_fp;
@@ -145,6 +147,9 @@ struct gdbarch
int sp_regnum;
int fp_regnum;
int pc_regnum;
+ int fp0_regnum;
+ int npc_regnum;
+ int nnpc_regnum;
gdbarch_register_name_ftype *register_name;
int register_size;
int register_bytes;
@@ -175,6 +180,9 @@ struct gdbarch
gdbarch_register_convertible_ftype *register_convertible;
gdbarch_register_convert_to_virtual_ftype *register_convert_to_virtual;
gdbarch_register_convert_to_raw_ftype *register_convert_to_raw;
+ gdbarch_pointer_to_address_ftype *pointer_to_address;
+ gdbarch_address_to_pointer_ftype *address_to_pointer;
+ gdbarch_return_value_on_stack_ftype *return_value_on_stack;
gdbarch_extract_return_value_ftype *extract_return_value;
gdbarch_push_arguments_ftype *push_arguments;
gdbarch_push_dummy_frame_ftype *push_dummy_frame;
@@ -193,6 +201,7 @@ struct gdbarch
gdbarch_frame_init_saved_regs_ftype *frame_init_saved_regs;
gdbarch_init_extra_frame_info_ftype *init_extra_frame_info;
gdbarch_skip_prologue_ftype *skip_prologue;
+ gdbarch_prologue_frameless_p_ftype *prologue_frameless_p;
gdbarch_inner_than_ftype *inner_than;
gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc;
gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint;
@@ -209,6 +218,12 @@ struct gdbarch
gdbarch_frame_locals_address_ftype *frame_locals_address;
gdbarch_saved_pc_after_call_ftype *saved_pc_after_call;
gdbarch_frame_num_args_ftype *frame_num_args;
+ gdbarch_stack_align_ftype *stack_align;
+ gdbarch_reg_struct_has_addr_ftype *reg_struct_has_addr;
+ gdbarch_save_dummy_frame_tos_ftype *save_dummy_frame_tos;
+ const struct floatformat * float_format;
+ const struct floatformat * double_format;
+ const struct floatformat * long_double_format;
};
@@ -271,6 +286,10 @@ struct gdbarch startup_gdbarch = {
0,
0,
0,
+ 0,
+ 0,
+ 0,
+ 0,
generic_get_saved_register,
0,
0,
@@ -309,6 +328,16 @@ struct gdbarch startup_gdbarch = {
0,
0,
0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
/* startup_gdbarch() */
};
struct gdbarch *current_gdbarch = &startup_gdbarch;
@@ -335,6 +364,9 @@ gdbarch_alloc (const struct gdbarch_info *info,
gdbarch->sp_regnum = -1;
gdbarch->fp_regnum = -1;
gdbarch->pc_regnum = -1;
+ gdbarch->fp0_regnum = -1;
+ gdbarch->npc_regnum = -1;
+ gdbarch->nnpc_regnum = -1;
gdbarch->register_name = legacy_register_name;
gdbarch->register_size = -1;
gdbarch->register_bytes = -1;
@@ -351,6 +383,10 @@ gdbarch_alloc (const struct gdbarch_info *info,
gdbarch->call_dummy_stack_adjust_p = -1;
gdbarch->coerce_float_to_double = default_coerce_float_to_double;
gdbarch->register_convertible = generic_register_convertible_not;
+ gdbarch->pointer_to_address = unsigned_pointer_to_address;
+ gdbarch->address_to_pointer = unsigned_address_to_pointer;
+ gdbarch->return_value_on_stack = generic_return_value_on_stack_not;
+ gdbarch->prologue_frameless_p = generic_prologue_frameless_p;
gdbarch->breakpoint_from_pc = legacy_breakpoint_from_pc;
gdbarch->memory_insert_breakpoint = default_memory_insert_breakpoint;
gdbarch->memory_remove_breakpoint = default_memory_remove_breakpoint;
@@ -417,6 +453,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
if ((GDB_MULTI_ARCH >= 1)
&& (gdbarch->long_double_bit == 0))
internal_error ("gdbarch: verify_gdbarch: long_double_bit invalid");
+ /* Skip verify of ieee_float, invalid_p == 0 */
if ((GDB_MULTI_ARCH >= 1)
&& (gdbarch->read_pc == 0))
internal_error ("gdbarch: verify_gdbarch: read_pc invalid");
@@ -447,6 +484,9 @@ verify_gdbarch (struct gdbarch *gdbarch)
if ((GDB_MULTI_ARCH >= 2)
&& (gdbarch->pc_regnum == -1))
internal_error ("gdbarch: verify_gdbarch: pc_regnum invalid");
+ /* Skip verify of fp0_regnum, invalid_p == 0 */
+ /* Skip verify of npc_regnum, invalid_p == 0 */
+ /* Skip verify of nnpc_regnum, invalid_p == 0 */
/* Skip verify of register_name, invalid_p == 0 */
if ((GDB_MULTI_ARCH >= 2)
&& (gdbarch->register_size == -1))
@@ -517,6 +557,9 @@ verify_gdbarch (struct gdbarch *gdbarch)
/* Skip verify of register_convertible, invalid_p == 0 */
/* Skip verify of register_convert_to_virtual, invalid_p == 0 */
/* Skip verify of register_convert_to_raw, invalid_p == 0 */
+ /* Skip verify of pointer_to_address, invalid_p == 0 */
+ /* Skip verify of address_to_pointer, invalid_p == 0 */
+ /* Skip verify of return_value_on_stack, invalid_p == 0 */
if ((GDB_MULTI_ARCH >= 2)
&& (gdbarch->extract_return_value == 0))
internal_error ("gdbarch: verify_gdbarch: extract_return_value invalid");
@@ -534,18 +577,10 @@ verify_gdbarch (struct gdbarch *gdbarch)
internal_error ("gdbarch: verify_gdbarch: pop_frame invalid");
/* Skip verify of d10v_make_daddr, invalid_p == 0 */
/* Skip verify of d10v_make_iaddr, invalid_p == 0 */
- if ((GDB_MULTI_ARCH >= 2)
- && (gdbarch->d10v_daddr_p == 0))
- internal_error ("gdbarch: verify_gdbarch: d10v_daddr_p invalid");
- if ((GDB_MULTI_ARCH >= 2)
- && (gdbarch->d10v_iaddr_p == 0))
- internal_error ("gdbarch: verify_gdbarch: d10v_iaddr_p invalid");
- if ((GDB_MULTI_ARCH >= 2)
- && (gdbarch->d10v_convert_daddr_to_raw == 0))
- internal_error ("gdbarch: verify_gdbarch: d10v_convert_daddr_to_raw invalid");
- if ((GDB_MULTI_ARCH >= 2)
- && (gdbarch->d10v_convert_iaddr_to_raw == 0))
- internal_error ("gdbarch: verify_gdbarch: d10v_convert_iaddr_to_raw invalid");
+ /* Skip verify of d10v_daddr_p, invalid_p == 0 */
+ /* Skip verify of d10v_iaddr_p, invalid_p == 0 */
+ /* Skip verify of d10v_convert_daddr_to_raw, invalid_p == 0 */
+ /* Skip verify of d10v_convert_iaddr_to_raw, invalid_p == 0 */
if ((GDB_MULTI_ARCH >= 2)
&& (gdbarch->store_struct_return == 0))
internal_error ("gdbarch: verify_gdbarch: store_struct_return invalid");
@@ -567,6 +602,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
if ((GDB_MULTI_ARCH >= 2)
&& (gdbarch->skip_prologue == 0))
internal_error ("gdbarch: verify_gdbarch: skip_prologue invalid");
+ /* Skip verify of prologue_frameless_p, invalid_p == 0 */
if ((GDB_MULTI_ARCH >= 2)
&& (gdbarch->inner_than == 0))
internal_error ("gdbarch: verify_gdbarch: inner_than invalid");
@@ -605,6 +641,15 @@ verify_gdbarch (struct gdbarch *gdbarch)
if ((GDB_MULTI_ARCH >= 2)
&& (gdbarch->frame_num_args == 0))
internal_error ("gdbarch: verify_gdbarch: frame_num_args invalid");
+ /* Skip verify of stack_align, has predicate */
+ /* Skip verify of reg_struct_has_addr, has predicate */
+ /* Skip verify of save_dummy_frame_tos, has predicate */
+ if (gdbarch->float_format == 0)
+ gdbarch->float_format = default_float_format (gdbarch);
+ if (gdbarch->double_format == 0)
+ gdbarch->double_format = default_double_format (gdbarch);
+ if (gdbarch->long_double_format == 0)
+ gdbarch->long_double_format = &floatformat_unknown;
}
@@ -613,155 +658,263 @@ verify_gdbarch (struct gdbarch *gdbarch)
void
gdbarch_dump (void)
{
+#ifdef TARGET_ARCHITECTURE
if (TARGET_ARCHITECTURE != NULL)
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_ARCHITECTURE = %s\n",
TARGET_ARCHITECTURE->printable_name);
+#endif
+#ifdef TARGET_BYTE_ORDER
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_BYTE_ORDER = %ld\n",
(long) TARGET_BYTE_ORDER);
+#endif
+#ifdef TARGET_BFD_VMA_BIT
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_BFD_VMA_BIT = %ld\n",
(long) TARGET_BFD_VMA_BIT);
+#endif
+#ifdef TARGET_PTR_BIT
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_PTR_BIT = %ld\n",
(long) TARGET_PTR_BIT);
+#endif
+#ifdef TARGET_SHORT_BIT
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_SHORT_BIT = %ld\n",
(long) TARGET_SHORT_BIT);
+#endif
+#ifdef TARGET_INT_BIT
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_INT_BIT = %ld\n",
(long) TARGET_INT_BIT);
+#endif
+#ifdef TARGET_LONG_BIT
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_LONG_BIT = %ld\n",
(long) TARGET_LONG_BIT);
+#endif
+#ifdef TARGET_LONG_LONG_BIT
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_LONG_LONG_BIT = %ld\n",
(long) TARGET_LONG_LONG_BIT);
+#endif
+#ifdef TARGET_FLOAT_BIT
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_FLOAT_BIT = %ld\n",
(long) TARGET_FLOAT_BIT);
+#endif
+#ifdef TARGET_DOUBLE_BIT
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_DOUBLE_BIT = %ld\n",
(long) TARGET_DOUBLE_BIT);
+#endif
+#ifdef TARGET_LONG_DOUBLE_BIT
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_LONG_DOUBLE_BIT = %ld\n",
(long) TARGET_LONG_DOUBLE_BIT);
+#endif
+#ifdef IEEE_FLOAT
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: IEEE_FLOAT = %ld\n",
+ (long) IEEE_FLOAT);
+#endif
+#ifdef TARGET_READ_PC
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_READ_PC = 0x%08lx\n",
(long) current_gdbarch->read_pc
/*TARGET_READ_PC ()*/);
+#endif
+#ifdef TARGET_WRITE_PC
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_WRITE_PC = 0x%08lx\n",
(long) current_gdbarch->write_pc
/*TARGET_WRITE_PC ()*/);
+#endif
+#ifdef TARGET_READ_FP
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_READ_FP = 0x%08lx\n",
(long) current_gdbarch->read_fp
/*TARGET_READ_FP ()*/);
+#endif
+#ifdef TARGET_WRITE_FP
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_WRITE_FP = 0x%08lx\n",
(long) current_gdbarch->write_fp
/*TARGET_WRITE_FP ()*/);
+#endif
+#ifdef TARGET_READ_SP
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_READ_SP = 0x%08lx\n",
(long) current_gdbarch->read_sp
/*TARGET_READ_SP ()*/);
+#endif
+#ifdef TARGET_WRITE_SP
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: TARGET_WRITE_SP = 0x%08lx\n",
(long) current_gdbarch->write_sp
/*TARGET_WRITE_SP ()*/);
+#endif
+#ifdef NUM_REGS
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: NUM_REGS = %ld\n",
(long) NUM_REGS);
+#endif
+#ifdef SP_REGNUM
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: SP_REGNUM = %ld\n",
(long) SP_REGNUM);
+#endif
+#ifdef FP_REGNUM
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: FP_REGNUM = %ld\n",
(long) FP_REGNUM);
+#endif
+#ifdef PC_REGNUM
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: PC_REGNUM = %ld\n",
(long) PC_REGNUM);
+#endif
+#ifdef FP0_REGNUM
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: FP0_REGNUM = %ld\n",
+ (long) FP0_REGNUM);
+#endif
+#ifdef NPC_REGNUM
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: NPC_REGNUM = %ld\n",
+ (long) NPC_REGNUM);
+#endif
+#ifdef NNPC_REGNUM
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: NNPC_REGNUM = %ld\n",
+ (long) NNPC_REGNUM);
+#endif
+#ifdef REGISTER_NAME
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: REGISTER_NAME = 0x%08lx\n",
(long) current_gdbarch->register_name
/*REGISTER_NAME ()*/);
+#endif
+#ifdef REGISTER_SIZE
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: REGISTER_SIZE = %ld\n",
(long) REGISTER_SIZE);
+#endif
+#ifdef REGISTER_BYTES
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: REGISTER_BYTES = %ld\n",
(long) REGISTER_BYTES);
+#endif
+#ifdef REGISTER_BYTE
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: REGISTER_BYTE = 0x%08lx\n",
(long) current_gdbarch->register_byte
/*REGISTER_BYTE ()*/);
+#endif
+#ifdef REGISTER_RAW_SIZE
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: REGISTER_RAW_SIZE = 0x%08lx\n",
(long) current_gdbarch->register_raw_size
/*REGISTER_RAW_SIZE ()*/);
+#endif
+#ifdef MAX_REGISTER_RAW_SIZE
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: MAX_REGISTER_RAW_SIZE = %ld\n",
(long) MAX_REGISTER_RAW_SIZE);
+#endif
+#ifdef REGISTER_VIRTUAL_SIZE
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: REGISTER_VIRTUAL_SIZE = 0x%08lx\n",
(long) current_gdbarch->register_virtual_size
/*REGISTER_VIRTUAL_SIZE ()*/);
+#endif
+#ifdef MAX_REGISTER_VIRTUAL_SIZE
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: MAX_REGISTER_VIRTUAL_SIZE = %ld\n",
(long) MAX_REGISTER_VIRTUAL_SIZE);
+#endif
+#ifdef REGISTER_VIRTUAL_TYPE
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: REGISTER_VIRTUAL_TYPE = 0x%08lx\n",
(long) current_gdbarch->register_virtual_type
/*REGISTER_VIRTUAL_TYPE ()*/);
+#endif
+#ifdef USE_GENERIC_DUMMY_FRAMES
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: USE_GENERIC_DUMMY_FRAMES = %ld\n",
(long) USE_GENERIC_DUMMY_FRAMES);
+#endif
+#ifdef CALL_DUMMY_LOCATION
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: CALL_DUMMY_LOCATION = %ld\n",
(long) CALL_DUMMY_LOCATION);
+#endif
+#ifdef CALL_DUMMY_ADDRESS
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: CALL_DUMMY_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->call_dummy_address
/*CALL_DUMMY_ADDRESS ()*/);
+#endif
+#ifdef CALL_DUMMY_START_OFFSET
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: CALL_DUMMY_START_OFFSET = 0x%08lx\n",
(long) CALL_DUMMY_START_OFFSET);
+#endif
+#ifdef CALL_DUMMY_BREAKPOINT_OFFSET
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: CALL_DUMMY_BREAKPOINT_OFFSET = 0x%08lx\n",
(long) CALL_DUMMY_BREAKPOINT_OFFSET);
+#endif
+#ifdef CALL_DUMMY_BREAKPOINT_OFFSET_P
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: CALL_DUMMY_BREAKPOINT_OFFSET_P = %ld\n",
(long) CALL_DUMMY_BREAKPOINT_OFFSET_P);
+#endif
+#ifdef CALL_DUMMY_LENGTH
if (CALL_DUMMY_LOCATION == BEFORE_TEXT_END || CALL_DUMMY_LOCATION == AFTER_TEXT_END)
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: CALL_DUMMY_LENGTH = %ld\n",
(long) CALL_DUMMY_LENGTH);
+#endif
+#ifdef PC_IN_CALL_DUMMY
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: PC_IN_CALL_DUMMY = 0x%08lx\n",
(long) current_gdbarch->pc_in_call_dummy
/*PC_IN_CALL_DUMMY ()*/);
+#endif
+#ifdef CALL_DUMMY_P
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: CALL_DUMMY_P = %ld\n",
(long) CALL_DUMMY_P);
+#endif
+#ifdef CALL_DUMMY_WORDS
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: CALL_DUMMY_WORDS = 0x%08lx\n",
(long) CALL_DUMMY_WORDS);
+#endif
+#ifdef SIZEOF_CALL_DUMMY_WORDS
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: SIZEOF_CALL_DUMMY_WORDS = 0x%08lx\n",
(long) SIZEOF_CALL_DUMMY_WORDS);
+#endif
+#ifdef CALL_DUMMY_STACK_ADJUST_P
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: CALL_DUMMY_STACK_ADJUST_P = 0x%08lx\n",
(long) CALL_DUMMY_STACK_ADJUST_P);
+#endif
+#ifdef CALL_DUMMY_STACK_ADJUST
if (CALL_DUMMY_STACK_ADJUST_P)
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: CALL_DUMMY_STACK_ADJUST = 0x%08lx\n",
(long) CALL_DUMMY_STACK_ADJUST);
+#endif
+#ifdef FIX_CALL_DUMMY
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: FIX_CALL_DUMMY = 0x%08lx\n",
(long) current_gdbarch->fix_call_dummy
/*FIX_CALL_DUMMY ()*/);
+#endif
#ifdef BELIEVE_PCC_PROMOTION
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: BELIEVE_PCC_PROMOTION = %ld\n",
@@ -772,159 +925,297 @@ gdbarch_dump (void)
"gdbarch_update: BELIEVE_PCC_PROMOTION_TYPE = %ld\n",
(long) BELIEVE_PCC_PROMOTION_TYPE);
#endif
+#ifdef COERCE_FLOAT_TO_DOUBLE
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: COERCE_FLOAT_TO_DOUBLE = 0x%08lx\n",
(long) current_gdbarch->coerce_float_to_double
/*COERCE_FLOAT_TO_DOUBLE ()*/);
+#endif
+#ifdef GET_SAVED_REGISTER
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: GET_SAVED_REGISTER = 0x%08lx\n",
(long) current_gdbarch->get_saved_register
/*GET_SAVED_REGISTER ()*/);
+#endif
+#ifdef REGISTER_CONVERTIBLE
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: REGISTER_CONVERTIBLE = 0x%08lx\n",
(long) current_gdbarch->register_convertible
/*REGISTER_CONVERTIBLE ()*/);
+#endif
+#ifdef REGISTER_CONVERT_TO_VIRTUAL
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: REGISTER_CONVERT_TO_VIRTUAL = 0x%08lx\n",
(long) current_gdbarch->register_convert_to_virtual
/*REGISTER_CONVERT_TO_VIRTUAL ()*/);
+#endif
+#ifdef REGISTER_CONVERT_TO_RAW
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: REGISTER_CONVERT_TO_RAW = 0x%08lx\n",
(long) current_gdbarch->register_convert_to_raw
/*REGISTER_CONVERT_TO_RAW ()*/);
+#endif
+#ifdef POINTER_TO_ADDRESS
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: POINTER_TO_ADDRESS = 0x%08lx\n",
+ (long) current_gdbarch->pointer_to_address
+ /*POINTER_TO_ADDRESS ()*/);
+#endif
+#ifdef ADDRESS_TO_POINTER
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: ADDRESS_TO_POINTER = 0x%08lx\n",
+ (long) current_gdbarch->address_to_pointer
+ /*ADDRESS_TO_POINTER ()*/);
+#endif
+#ifdef RETURN_VALUE_ON_STACK
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: RETURN_VALUE_ON_STACK = 0x%08lx\n",
+ (long) current_gdbarch->return_value_on_stack
+ /*RETURN_VALUE_ON_STACK ()*/);
+#endif
+#ifdef EXTRACT_RETURN_VALUE
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: EXTRACT_RETURN_VALUE = 0x%08lx\n",
(long) current_gdbarch->extract_return_value
/*EXTRACT_RETURN_VALUE ()*/);
+#endif
+#ifdef PUSH_ARGUMENTS
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: PUSH_ARGUMENTS = 0x%08lx\n",
(long) current_gdbarch->push_arguments
/*PUSH_ARGUMENTS ()*/);
+#endif
+#ifdef PUSH_DUMMY_FRAME
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: PUSH_DUMMY_FRAME = 0x%08lx\n",
(long) current_gdbarch->push_dummy_frame
/*PUSH_DUMMY_FRAME ()*/);
+#endif
+#ifdef PUSH_RETURN_ADDRESS
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: PUSH_RETURN_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->push_return_address
/*PUSH_RETURN_ADDRESS ()*/);
+#endif
+#ifdef POP_FRAME
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: POP_FRAME = 0x%08lx\n",
(long) current_gdbarch->pop_frame
/*POP_FRAME ()*/);
+#endif
+#ifdef D10V_MAKE_DADDR
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: D10V_MAKE_DADDR = 0x%08lx\n",
(long) current_gdbarch->d10v_make_daddr
/*D10V_MAKE_DADDR ()*/);
+#endif
+#ifdef D10V_MAKE_IADDR
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: D10V_MAKE_IADDR = 0x%08lx\n",
(long) current_gdbarch->d10v_make_iaddr
/*D10V_MAKE_IADDR ()*/);
+#endif
+#ifdef D10V_DADDR_P
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: D10V_DADDR_P = 0x%08lx\n",
(long) current_gdbarch->d10v_daddr_p
/*D10V_DADDR_P ()*/);
+#endif
+#ifdef D10V_IADDR_P
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: D10V_IADDR_P = 0x%08lx\n",
(long) current_gdbarch->d10v_iaddr_p
/*D10V_IADDR_P ()*/);
+#endif
+#ifdef D10V_CONVERT_DADDR_TO_RAW
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: D10V_CONVERT_DADDR_TO_RAW = 0x%08lx\n",
(long) current_gdbarch->d10v_convert_daddr_to_raw
/*D10V_CONVERT_DADDR_TO_RAW ()*/);
+#endif
+#ifdef D10V_CONVERT_IADDR_TO_RAW
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: D10V_CONVERT_IADDR_TO_RAW = 0x%08lx\n",
(long) current_gdbarch->d10v_convert_iaddr_to_raw
/*D10V_CONVERT_IADDR_TO_RAW ()*/);
+#endif
+#ifdef STORE_STRUCT_RETURN
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: STORE_STRUCT_RETURN = 0x%08lx\n",
(long) current_gdbarch->store_struct_return
/*STORE_STRUCT_RETURN ()*/);
+#endif
+#ifdef STORE_RETURN_VALUE
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: STORE_RETURN_VALUE = 0x%08lx\n",
(long) current_gdbarch->store_return_value
/*STORE_RETURN_VALUE ()*/);
+#endif
+#ifdef EXTRACT_STRUCT_VALUE_ADDRESS
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: EXTRACT_STRUCT_VALUE_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->extract_struct_value_address
/*EXTRACT_STRUCT_VALUE_ADDRESS ()*/);
+#endif
+#ifdef USE_STRUCT_CONVENTION
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: USE_STRUCT_CONVENTION = 0x%08lx\n",
(long) current_gdbarch->use_struct_convention
/*USE_STRUCT_CONVENTION ()*/);
+#endif
+#ifdef FRAME_INIT_SAVED_REGS
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: FRAME_INIT_SAVED_REGS = 0x%08lx\n",
(long) current_gdbarch->frame_init_saved_regs
/*FRAME_INIT_SAVED_REGS ()*/);
+#endif
+#ifdef INIT_EXTRA_FRAME_INFO
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: INIT_EXTRA_FRAME_INFO = 0x%08lx\n",
(long) current_gdbarch->init_extra_frame_info
/*INIT_EXTRA_FRAME_INFO ()*/);
+#endif
+#ifdef SKIP_PROLOGUE
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: SKIP_PROLOGUE = 0x%08lx\n",
(long) current_gdbarch->skip_prologue
/*SKIP_PROLOGUE ()*/);
+#endif
+#ifdef PROLOGUE_FRAMELESS_P
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: PROLOGUE_FRAMELESS_P = 0x%08lx\n",
+ (long) current_gdbarch->prologue_frameless_p
+ /*PROLOGUE_FRAMELESS_P ()*/);
+#endif
+#ifdef INNER_THAN
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: INNER_THAN = 0x%08lx\n",
(long) current_gdbarch->inner_than
/*INNER_THAN ()*/);
+#endif
+#ifdef BREAKPOINT_FROM_PC
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: BREAKPOINT_FROM_PC = 0x%08lx\n",
(long) current_gdbarch->breakpoint_from_pc
/*BREAKPOINT_FROM_PC ()*/);
+#endif
+#ifdef MEMORY_INSERT_BREAKPOINT
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: MEMORY_INSERT_BREAKPOINT = 0x%08lx\n",
(long) current_gdbarch->memory_insert_breakpoint
/*MEMORY_INSERT_BREAKPOINT ()*/);
+#endif
+#ifdef MEMORY_REMOVE_BREAKPOINT
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: MEMORY_REMOVE_BREAKPOINT = 0x%08lx\n",
(long) current_gdbarch->memory_remove_breakpoint
/*MEMORY_REMOVE_BREAKPOINT ()*/);
+#endif
+#ifdef DECR_PC_AFTER_BREAK
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: DECR_PC_AFTER_BREAK = %ld\n",
(long) DECR_PC_AFTER_BREAK);
+#endif
+#ifdef FUNCTION_START_OFFSET
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: FUNCTION_START_OFFSET = %ld\n",
(long) FUNCTION_START_OFFSET);
+#endif
+#ifdef REMOTE_TRANSLATE_XFER_ADDRESS
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: REMOTE_TRANSLATE_XFER_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->remote_translate_xfer_address
/*REMOTE_TRANSLATE_XFER_ADDRESS ()*/);
+#endif
+#ifdef FRAME_ARGS_SKIP
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: FRAME_ARGS_SKIP = %ld\n",
(long) FRAME_ARGS_SKIP);
+#endif
+#ifdef FRAMELESS_FUNCTION_INVOCATION
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: FRAMELESS_FUNCTION_INVOCATION = 0x%08lx\n",
(long) current_gdbarch->frameless_function_invocation
/*FRAMELESS_FUNCTION_INVOCATION ()*/);
+#endif
+#ifdef FRAME_CHAIN
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: FRAME_CHAIN = 0x%08lx\n",
(long) current_gdbarch->frame_chain
/*FRAME_CHAIN ()*/);
+#endif
+#ifdef FRAME_CHAIN_VALID
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: FRAME_CHAIN_VALID = 0x%08lx\n",
(long) current_gdbarch->frame_chain_valid
/*FRAME_CHAIN_VALID ()*/);
+#endif
+#ifdef FRAME_SAVED_PC
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: FRAME_SAVED_PC = 0x%08lx\n",
(long) current_gdbarch->frame_saved_pc
/*FRAME_SAVED_PC ()*/);
+#endif
+#ifdef FRAME_ARGS_ADDRESS
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: FRAME_ARGS_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->frame_args_address
/*FRAME_ARGS_ADDRESS ()*/);
+#endif
+#ifdef FRAME_LOCALS_ADDRESS
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: FRAME_LOCALS_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->frame_locals_address
/*FRAME_LOCALS_ADDRESS ()*/);
+#endif
+#ifdef SAVED_PC_AFTER_CALL
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: SAVED_PC_AFTER_CALL = 0x%08lx\n",
(long) current_gdbarch->saved_pc_after_call
/*SAVED_PC_AFTER_CALL ()*/);
+#endif
+#ifdef FRAME_NUM_ARGS
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: FRAME_NUM_ARGS = 0x%08lx\n",
(long) current_gdbarch->frame_num_args
/*FRAME_NUM_ARGS ()*/);
+#endif
+#ifdef STACK_ALIGN
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: STACK_ALIGN = 0x%08lx\n",
+ (long) current_gdbarch->stack_align
+ /*STACK_ALIGN ()*/);
+#endif
+#ifdef REG_STRUCT_HAS_ADDR
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: REG_STRUCT_HAS_ADDR = 0x%08lx\n",
+ (long) current_gdbarch->reg_struct_has_addr
+ /*REG_STRUCT_HAS_ADDR ()*/);
+#endif
+#ifdef SAVE_DUMMY_FRAME_TOS
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: SAVE_DUMMY_FRAME_TOS = 0x%08lx\n",
+ (long) current_gdbarch->save_dummy_frame_tos
+ /*SAVE_DUMMY_FRAME_TOS ()*/);
+#endif
+#ifdef TARGET_FLOAT_FORMAT
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: TARGET_FLOAT_FORMAT = %ld\n",
+ (long) TARGET_FLOAT_FORMAT);
+#endif
+#ifdef TARGET_DOUBLE_FORMAT
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: TARGET_DOUBLE_FORMAT = %ld\n",
+ (long) TARGET_DOUBLE_FORMAT);
+#endif
+#ifdef TARGET_LONG_DOUBLE_FORMAT
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: TARGET_LONG_DOUBLE_FORMAT = %ld\n",
+ (long) TARGET_LONG_DOUBLE_FORMAT);
+#endif
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: GDB_MULTI_ARCH = %d\n",
+ GDB_MULTI_ARCH);
}
struct gdbarch_tdep *
@@ -1104,6 +1395,22 @@ set_gdbarch_long_double_bit (struct gdbarch *gdbarch,
gdbarch->long_double_bit = long_double_bit;
}
+int
+gdbarch_ieee_float (struct gdbarch *gdbarch)
+{
+ /* Skip verify of ieee_float, invalid_p == 0 */
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_ieee_float called\n");
+ return gdbarch->ieee_float;
+}
+
+void
+set_gdbarch_ieee_float (struct gdbarch *gdbarch,
+ int ieee_float)
+{
+ gdbarch->ieee_float = ieee_float;
+}
+
CORE_ADDR
gdbarch_read_pc (struct gdbarch *gdbarch, int pid)
{
@@ -1274,6 +1581,54 @@ set_gdbarch_pc_regnum (struct gdbarch *gdbarch,
gdbarch->pc_regnum = pc_regnum;
}
+int
+gdbarch_fp0_regnum (struct gdbarch *gdbarch)
+{
+ /* Skip verify of fp0_regnum, invalid_p == 0 */
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_fp0_regnum called\n");
+ return gdbarch->fp0_regnum;
+}
+
+void
+set_gdbarch_fp0_regnum (struct gdbarch *gdbarch,
+ int fp0_regnum)
+{
+ gdbarch->fp0_regnum = fp0_regnum;
+}
+
+int
+gdbarch_npc_regnum (struct gdbarch *gdbarch)
+{
+ /* Skip verify of npc_regnum, invalid_p == 0 */
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_npc_regnum called\n");
+ return gdbarch->npc_regnum;
+}
+
+void
+set_gdbarch_npc_regnum (struct gdbarch *gdbarch,
+ int npc_regnum)
+{
+ gdbarch->npc_regnum = npc_regnum;
+}
+
+int
+gdbarch_nnpc_regnum (struct gdbarch *gdbarch)
+{
+ /* Skip verify of nnpc_regnum, invalid_p == 0 */
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_nnpc_regnum called\n");
+ return gdbarch->nnpc_regnum;
+}
+
+void
+set_gdbarch_nnpc_regnum (struct gdbarch *gdbarch,
+ int nnpc_regnum)
+{
+ gdbarch->nnpc_regnum = nnpc_regnum;
+}
+
char *
gdbarch_register_name (struct gdbarch *gdbarch, int regnr)
{
@@ -1778,6 +2133,57 @@ set_gdbarch_register_convert_to_raw (struct gdbarch *gdbarch,
gdbarch->register_convert_to_raw = register_convert_to_raw;
}
+CORE_ADDR
+gdbarch_pointer_to_address (struct gdbarch *gdbarch, struct type *type, void *buf)
+{
+ if (gdbarch->pointer_to_address == 0)
+ internal_error ("gdbarch: gdbarch_pointer_to_address invalid");
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_pointer_to_address called\n");
+ return gdbarch->pointer_to_address (type, buf);
+}
+
+void
+set_gdbarch_pointer_to_address (struct gdbarch *gdbarch,
+ gdbarch_pointer_to_address_ftype pointer_to_address)
+{
+ gdbarch->pointer_to_address = pointer_to_address;
+}
+
+void
+gdbarch_address_to_pointer (struct gdbarch *gdbarch, struct type *type, void *buf, CORE_ADDR addr)
+{
+ if (gdbarch->address_to_pointer == 0)
+ internal_error ("gdbarch: gdbarch_address_to_pointer invalid");
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_address_to_pointer called\n");
+ gdbarch->address_to_pointer (type, buf, addr);
+}
+
+void
+set_gdbarch_address_to_pointer (struct gdbarch *gdbarch,
+ gdbarch_address_to_pointer_ftype address_to_pointer)
+{
+ gdbarch->address_to_pointer = address_to_pointer;
+}
+
+int
+gdbarch_return_value_on_stack (struct gdbarch *gdbarch, struct type *type)
+{
+ if (gdbarch->return_value_on_stack == 0)
+ internal_error ("gdbarch: gdbarch_return_value_on_stack invalid");
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_return_value_on_stack called\n");
+ return gdbarch->return_value_on_stack (type);
+}
+
+void
+set_gdbarch_return_value_on_stack (struct gdbarch *gdbarch,
+ gdbarch_return_value_on_stack_ftype return_value_on_stack)
+{
+ gdbarch->return_value_on_stack = return_value_on_stack;
+}
+
void
gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, char *regbuf, char *valbuf)
{
@@ -2085,6 +2491,23 @@ set_gdbarch_skip_prologue (struct gdbarch *gdbarch,
}
int
+gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, CORE_ADDR ip)
+{
+ if (gdbarch->prologue_frameless_p == 0)
+ internal_error ("gdbarch: gdbarch_prologue_frameless_p invalid");
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_prologue_frameless_p called\n");
+ return gdbarch->prologue_frameless_p (ip);
+}
+
+void
+set_gdbarch_prologue_frameless_p (struct gdbarch *gdbarch,
+ gdbarch_prologue_frameless_p_ftype prologue_frameless_p)
+{
+ gdbarch->prologue_frameless_p = prologue_frameless_p;
+}
+
+int
gdbarch_inner_than (struct gdbarch *gdbarch, CORE_ADDR lhs, CORE_ADDR rhs)
{
if (gdbarch->inner_than == 0)
@@ -2356,6 +2779,120 @@ set_gdbarch_frame_num_args (struct gdbarch *gdbarch,
gdbarch->frame_num_args = frame_num_args;
}
+int
+gdbarch_stack_align_p (struct gdbarch *gdbarch)
+{
+ return gdbarch->stack_align != 0;
+}
+
+CORE_ADDR
+gdbarch_stack_align (struct gdbarch *gdbarch, CORE_ADDR sp)
+{
+ if (gdbarch->stack_align == 0)
+ internal_error ("gdbarch: gdbarch_stack_align invalid");
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_stack_align called\n");
+ return gdbarch->stack_align (sp);
+}
+
+void
+set_gdbarch_stack_align (struct gdbarch *gdbarch,
+ gdbarch_stack_align_ftype stack_align)
+{
+ gdbarch->stack_align = stack_align;
+}
+
+int
+gdbarch_reg_struct_has_addr_p (struct gdbarch *gdbarch)
+{
+ return gdbarch->reg_struct_has_addr != 0;
+}
+
+int
+gdbarch_reg_struct_has_addr (struct gdbarch *gdbarch, int gcc_p, struct type *type)
+{
+ if (gdbarch->reg_struct_has_addr == 0)
+ internal_error ("gdbarch: gdbarch_reg_struct_has_addr invalid");
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_reg_struct_has_addr called\n");
+ return gdbarch->reg_struct_has_addr (gcc_p, type);
+}
+
+void
+set_gdbarch_reg_struct_has_addr (struct gdbarch *gdbarch,
+ gdbarch_reg_struct_has_addr_ftype reg_struct_has_addr)
+{
+ gdbarch->reg_struct_has_addr = reg_struct_has_addr;
+}
+
+int
+gdbarch_save_dummy_frame_tos_p (struct gdbarch *gdbarch)
+{
+ return gdbarch->save_dummy_frame_tos != 0;
+}
+
+void
+gdbarch_save_dummy_frame_tos (struct gdbarch *gdbarch, CORE_ADDR sp)
+{
+ if (gdbarch->save_dummy_frame_tos == 0)
+ internal_error ("gdbarch: gdbarch_save_dummy_frame_tos invalid");
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_save_dummy_frame_tos called\n");
+ gdbarch->save_dummy_frame_tos (sp);
+}
+
+void
+set_gdbarch_save_dummy_frame_tos (struct gdbarch *gdbarch,
+ gdbarch_save_dummy_frame_tos_ftype save_dummy_frame_tos)
+{
+ gdbarch->save_dummy_frame_tos = save_dummy_frame_tos;
+}
+
+const struct floatformat *
+gdbarch_float_format (struct gdbarch *gdbarch)
+{
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_float_format called\n");
+ return gdbarch->float_format;
+}
+
+void
+set_gdbarch_float_format (struct gdbarch *gdbarch,
+ const struct floatformat * float_format)
+{
+ gdbarch->float_format = float_format;
+}
+
+const struct floatformat *
+gdbarch_double_format (struct gdbarch *gdbarch)
+{
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_double_format called\n");
+ return gdbarch->double_format;
+}
+
+void
+set_gdbarch_double_format (struct gdbarch *gdbarch,
+ const struct floatformat * double_format)
+{
+ gdbarch->double_format = double_format;
+}
+
+const struct floatformat *
+gdbarch_long_double_format (struct gdbarch *gdbarch)
+{
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_long_double_format called\n");
+ return gdbarch->long_double_format;
+}
+
+void
+set_gdbarch_long_double_format (struct gdbarch *gdbarch,
+ const struct floatformat * long_double_format)
+{
+ gdbarch->long_double_format = long_double_format;
+}
+
/* Keep a registrary of per-architecture data-pointers required by GDB
modules. */
@@ -3093,6 +3630,7 @@ generic_register_convertible_not (num)
return 0;
}
+
/* Disassembler */
/* Pointer to the target-dependent disassembly function. */
@@ -3121,13 +3659,6 @@ set_gdbarch_from_file (abfd)
}
-#if defined (CALL_DUMMY)
-/* FIXME - this should go away */
-LONGEST call_dummy_words[] = CALL_DUMMY;
-int sizeof_call_dummy_words = sizeof (call_dummy_words);
-#endif
-
-
/* Initialize the current architecture. */
void
initialize_current_architecture ()
diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h
index e7b4e014d6e..1875774e4e7 100644
--- a/gdb/gdbarch.h
+++ b/gdb/gdbarch.h
@@ -54,18 +54,6 @@ extern struct gdbarch *current_gdbarch;
converted. */
#if GDB_MULTI_ARCH
-#if defined (CALL_DUMMY)
-#error "CALL_DUMMY: replaced by CALL_DUMMY_WORDS/SIZEOF_CALL_DUMMY_WORDS"
-#endif
-#endif
-
-#if GDB_MULTI_ARCH
-#if defined (REGISTER_NAMES)
-#error "REGISTER_NAMES: replaced by REGISTER_NAME"
-#endif
-#endif
-
-#if GDB_MULTI_ARCH
#if defined (EXTRA_FRAME_INFO)
#error "EXTRA_FRAME_INFO: replaced by struct frame_extra_info"
#endif
@@ -99,6 +87,11 @@ extern int gdbarch_byte_order (struct gdbarch *gdbarch);
/* The following are initialized by the target dependant code. */
+/* Default (value) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !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
@@ -171,6 +164,19 @@ extern void set_gdbarch_long_double_bit (struct gdbarch *gdbarch, int long_doubl
#endif
#endif
+/* Default (value) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (IEEE_FLOAT)
+#define IEEE_FLOAT (0)
+#endif
+
+extern int gdbarch_ieee_float (struct gdbarch *gdbarch);
+extern void set_gdbarch_ieee_float (struct gdbarch *gdbarch, int ieee_float);
+#if GDB_MULTI_ARCH
+#if (GDB_MULTI_ARCH > 1) || !defined (IEEE_FLOAT)
+#define IEEE_FLOAT (gdbarch_ieee_float (current_gdbarch))
+#endif
+#endif
+
typedef CORE_ADDR (gdbarch_read_pc_ftype) (int pid);
extern CORE_ADDR gdbarch_read_pc (struct gdbarch *gdbarch, int pid);
extern void set_gdbarch_read_pc (struct gdbarch *gdbarch, gdbarch_read_pc_ftype *read_pc);
@@ -257,6 +263,50 @@ extern void set_gdbarch_pc_regnum (struct gdbarch *gdbarch, int pc_regnum);
#endif
#endif
+/* Default (value) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !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
+#if (GDB_MULTI_ARCH > 1) || !defined (FP0_REGNUM)
+#define FP0_REGNUM (gdbarch_fp0_regnum (current_gdbarch))
+#endif
+#endif
+
+/* Default (value) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !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
+#if (GDB_MULTI_ARCH > 1) || !defined (NPC_REGNUM)
+#define NPC_REGNUM (gdbarch_npc_regnum (current_gdbarch))
+#endif
+#endif
+
+/* Default (value) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (NNPC_REGNUM)
+#define NNPC_REGNUM (-1)
+#endif
+
+extern int gdbarch_nnpc_regnum (struct gdbarch *gdbarch);
+extern void set_gdbarch_nnpc_regnum (struct gdbarch *gdbarch, int nnpc_regnum);
+#if GDB_MULTI_ARCH
+#if (GDB_MULTI_ARCH > 1) || !defined (NNPC_REGNUM)
+#define NNPC_REGNUM (gdbarch_nnpc_regnum (current_gdbarch))
+#endif
+#endif
+
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (REGISTER_NAME)
+#define REGISTER_NAME(regnr) (legacy_register_name (regnr))
+#endif
+
typedef char * (gdbarch_register_name_ftype) (int regnr);
extern char * gdbarch_register_name (struct gdbarch *gdbarch, int regnr);
extern void set_gdbarch_register_name (struct gdbarch *gdbarch, gdbarch_register_name_ftype *register_name);
@@ -408,6 +458,11 @@ extern void set_gdbarch_call_dummy_p (struct gdbarch *gdbarch, int call_dummy_p)
#endif
#endif
+/* Default (value) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (CALL_DUMMY_WORDS)
+#define CALL_DUMMY_WORDS (legacy_call_dummy_words)
+#endif
+
extern LONGEST * gdbarch_call_dummy_words (struct gdbarch *gdbarch);
extern void set_gdbarch_call_dummy_words (struct gdbarch *gdbarch, LONGEST * call_dummy_words);
#if GDB_MULTI_ARCH
@@ -416,6 +471,11 @@ extern void set_gdbarch_call_dummy_words (struct gdbarch *gdbarch, LONGEST * cal
#endif
#endif
+/* Default (value) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (SIZEOF_CALL_DUMMY_WORDS)
+#define SIZEOF_CALL_DUMMY_WORDS (legacy_sizeof_call_dummy_words)
+#endif
+
extern int gdbarch_sizeof_call_dummy_words (struct gdbarch *gdbarch);
extern void set_gdbarch_sizeof_call_dummy_words (struct gdbarch *gdbarch, int sizeof_call_dummy_words);
#if GDB_MULTI_ARCH
@@ -465,6 +525,11 @@ extern void set_gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch, int
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (COERCE_FLOAT_TO_DOUBLE)
+#define COERCE_FLOAT_TO_DOUBLE(formal, actual) (default_coerce_float_to_double (formal, actual))
+#endif
+
typedef int (gdbarch_coerce_float_to_double_ftype) (struct type *formal, struct type *actual);
extern int gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, struct type *formal, struct type *actual);
extern void set_gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, gdbarch_coerce_float_to_double_ftype *coerce_float_to_double);
@@ -483,6 +548,11 @@ extern void set_gdbarch_get_saved_register (struct gdbarch *gdbarch, gdbarch_get
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (REGISTER_CONVERTIBLE)
+#define REGISTER_CONVERTIBLE(nr) (generic_register_convertible_not (nr))
+#endif
+
typedef int (gdbarch_register_convertible_ftype) (int nr);
extern int gdbarch_register_convertible (struct gdbarch *gdbarch, int nr);
extern void set_gdbarch_register_convertible (struct gdbarch *gdbarch, gdbarch_register_convertible_ftype *register_convertible);
@@ -492,6 +562,11 @@ extern void set_gdbarch_register_convertible (struct gdbarch *gdbarch, gdbarch_r
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (REGISTER_CONVERT_TO_VIRTUAL)
+#define REGISTER_CONVERT_TO_VIRTUAL(regnum, type, from, to) (internal_error ("REGISTER_CONVERT_TO_VIRTUAL"), 0)
+#endif
+
typedef void (gdbarch_register_convert_to_virtual_ftype) (int regnum, struct type *type, char *from, char *to);
extern void gdbarch_register_convert_to_virtual (struct gdbarch *gdbarch, int regnum, struct type *type, char *from, char *to);
extern void set_gdbarch_register_convert_to_virtual (struct gdbarch *gdbarch, gdbarch_register_convert_to_virtual_ftype *register_convert_to_virtual);
@@ -501,6 +576,11 @@ extern void set_gdbarch_register_convert_to_virtual (struct gdbarch *gdbarch, gd
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (REGISTER_CONVERT_TO_RAW)
+#define REGISTER_CONVERT_TO_RAW(type, regnum, from, to) (internal_error ("REGISTER_CONVERT_TO_RAW"), 0)
+#endif
+
typedef void (gdbarch_register_convert_to_raw_ftype) (struct type *type, int regnum, char *from, char *to);
extern void gdbarch_register_convert_to_raw (struct gdbarch *gdbarch, struct type *type, int regnum, char *from, char *to);
extern void set_gdbarch_register_convert_to_raw (struct gdbarch *gdbarch, gdbarch_register_convert_to_raw_ftype *register_convert_to_raw);
@@ -510,6 +590,48 @@ extern void set_gdbarch_register_convert_to_raw (struct gdbarch *gdbarch, gdbarc
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !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, void *buf);
+extern CORE_ADDR gdbarch_pointer_to_address (struct gdbarch *gdbarch, struct type *type, void *buf);
+extern void set_gdbarch_pointer_to_address (struct gdbarch *gdbarch, gdbarch_pointer_to_address_ftype *pointer_to_address);
+#if GDB_MULTI_ARCH
+#if (GDB_MULTI_ARCH > 1) || !defined (POINTER_TO_ADDRESS)
+#define POINTER_TO_ADDRESS(type, buf) (gdbarch_pointer_to_address (current_gdbarch, type, buf))
+#endif
+#endif
+
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !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);
+#if GDB_MULTI_ARCH
+#if (GDB_MULTI_ARCH > 1) || !defined (ADDRESS_TO_POINTER)
+#define ADDRESS_TO_POINTER(type, buf, addr) (gdbarch_address_to_pointer (current_gdbarch, type, buf, addr))
+#endif
+#endif
+
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !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);
+#if GDB_MULTI_ARCH
+#if (GDB_MULTI_ARCH > 1) || !defined (RETURN_VALUE_ON_STACK)
+#define RETURN_VALUE_ON_STACK(type) (gdbarch_return_value_on_stack (current_gdbarch, type))
+#endif
+#endif
+
typedef void (gdbarch_extract_return_value_ftype) (struct type *type, char *regbuf, char *valbuf);
extern void gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, char *regbuf, char *valbuf);
extern void set_gdbarch_extract_return_value (struct gdbarch *gdbarch, gdbarch_extract_return_value_ftype *extract_return_value);
@@ -555,6 +677,11 @@ extern void set_gdbarch_pop_frame (struct gdbarch *gdbarch, gdbarch_pop_frame_ft
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (D10V_MAKE_DADDR)
+#define D10V_MAKE_DADDR(x) (internal_error ("D10V_MAKE_DADDR"), 0)
+#endif
+
typedef CORE_ADDR (gdbarch_d10v_make_daddr_ftype) (CORE_ADDR x);
extern CORE_ADDR gdbarch_d10v_make_daddr (struct gdbarch *gdbarch, CORE_ADDR x);
extern void set_gdbarch_d10v_make_daddr (struct gdbarch *gdbarch, gdbarch_d10v_make_daddr_ftype *d10v_make_daddr);
@@ -564,6 +691,11 @@ extern void set_gdbarch_d10v_make_daddr (struct gdbarch *gdbarch, gdbarch_d10v_m
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (D10V_MAKE_IADDR)
+#define D10V_MAKE_IADDR(x) (internal_error ("D10V_MAKE_IADDR"), 0)
+#endif
+
typedef CORE_ADDR (gdbarch_d10v_make_iaddr_ftype) (CORE_ADDR x);
extern CORE_ADDR gdbarch_d10v_make_iaddr (struct gdbarch *gdbarch, CORE_ADDR x);
extern void set_gdbarch_d10v_make_iaddr (struct gdbarch *gdbarch, gdbarch_d10v_make_iaddr_ftype *d10v_make_iaddr);
@@ -573,6 +705,11 @@ extern void set_gdbarch_d10v_make_iaddr (struct gdbarch *gdbarch, gdbarch_d10v_m
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (D10V_DADDR_P)
+#define D10V_DADDR_P(x) (internal_error ("D10V_DADDR_P"), 0)
+#endif
+
typedef int (gdbarch_d10v_daddr_p_ftype) (CORE_ADDR x);
extern int gdbarch_d10v_daddr_p (struct gdbarch *gdbarch, CORE_ADDR x);
extern void set_gdbarch_d10v_daddr_p (struct gdbarch *gdbarch, gdbarch_d10v_daddr_p_ftype *d10v_daddr_p);
@@ -582,6 +719,11 @@ extern void set_gdbarch_d10v_daddr_p (struct gdbarch *gdbarch, gdbarch_d10v_dadd
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (D10V_IADDR_P)
+#define D10V_IADDR_P(x) (internal_error ("D10V_IADDR_P"), 0)
+#endif
+
typedef int (gdbarch_d10v_iaddr_p_ftype) (CORE_ADDR x);
extern int gdbarch_d10v_iaddr_p (struct gdbarch *gdbarch, CORE_ADDR x);
extern void set_gdbarch_d10v_iaddr_p (struct gdbarch *gdbarch, gdbarch_d10v_iaddr_p_ftype *d10v_iaddr_p);
@@ -591,6 +733,11 @@ extern void set_gdbarch_d10v_iaddr_p (struct gdbarch *gdbarch, gdbarch_d10v_iadd
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (D10V_CONVERT_DADDR_TO_RAW)
+#define D10V_CONVERT_DADDR_TO_RAW(x) (internal_error ("D10V_CONVERT_DADDR_TO_RAW"), 0)
+#endif
+
typedef CORE_ADDR (gdbarch_d10v_convert_daddr_to_raw_ftype) (CORE_ADDR x);
extern CORE_ADDR gdbarch_d10v_convert_daddr_to_raw (struct gdbarch *gdbarch, CORE_ADDR x);
extern void set_gdbarch_d10v_convert_daddr_to_raw (struct gdbarch *gdbarch, gdbarch_d10v_convert_daddr_to_raw_ftype *d10v_convert_daddr_to_raw);
@@ -600,6 +747,11 @@ extern void set_gdbarch_d10v_convert_daddr_to_raw (struct gdbarch *gdbarch, gdba
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (D10V_CONVERT_IADDR_TO_RAW)
+#define D10V_CONVERT_IADDR_TO_RAW(x) (internal_error ("D10V_CONVERT_IADDR_TO_RAW"), 0)
+#endif
+
typedef CORE_ADDR (gdbarch_d10v_convert_iaddr_to_raw_ftype) (CORE_ADDR x);
extern CORE_ADDR gdbarch_d10v_convert_iaddr_to_raw (struct gdbarch *gdbarch, CORE_ADDR x);
extern void set_gdbarch_d10v_convert_iaddr_to_raw (struct gdbarch *gdbarch, gdbarch_d10v_convert_iaddr_to_raw_ftype *d10v_convert_iaddr_to_raw);
@@ -672,6 +824,20 @@ extern void set_gdbarch_skip_prologue (struct gdbarch *gdbarch, gdbarch_skip_pro
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !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);
+#if GDB_MULTI_ARCH
+#if (GDB_MULTI_ARCH > 1) || !defined (PROLOGUE_FRAMELESS_P)
+#define PROLOGUE_FRAMELESS_P(ip) (gdbarch_prologue_frameless_p (current_gdbarch, ip))
+#endif
+#endif
+
typedef int (gdbarch_inner_than_ftype) (CORE_ADDR lhs, CORE_ADDR rhs);
extern int gdbarch_inner_than (struct gdbarch *gdbarch, CORE_ADDR lhs, CORE_ADDR rhs);
extern void set_gdbarch_inner_than (struct gdbarch *gdbarch, gdbarch_inner_than_ftype *inner_than);
@@ -681,6 +847,11 @@ extern void set_gdbarch_inner_than (struct gdbarch *gdbarch, gdbarch_inner_than_
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (BREAKPOINT_FROM_PC)
+#define BREAKPOINT_FROM_PC(pcptr, lenptr) (legacy_breakpoint_from_pc (pcptr, lenptr))
+#endif
+
typedef unsigned char * (gdbarch_breakpoint_from_pc_ftype) (CORE_ADDR *pcptr, int *lenptr);
extern unsigned char * gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr);
extern void set_gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc);
@@ -690,6 +861,11 @@ extern void set_gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, gdbarch_bre
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !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);
@@ -699,6 +875,11 @@ extern void set_gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, gdbar
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !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);
@@ -724,6 +905,11 @@ extern void set_gdbarch_function_start_offset (struct gdbarch *gdbarch, CORE_ADD
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (REMOTE_TRANSLATE_XFER_ADDRESS)
+#define REMOTE_TRANSLATE_XFER_ADDRESS(gdb_addr, gdb_len, rem_addr, rem_len) (generic_remote_translate_xfer_address (gdb_addr, gdb_len, rem_addr, rem_len))
+#endif
+
typedef void (gdbarch_remote_translate_xfer_address_ftype) (CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len);
extern void gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch, CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len);
extern void set_gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch, gdbarch_remote_translate_xfer_address_ftype *remote_translate_xfer_address);
@@ -741,6 +927,11 @@ extern void set_gdbarch_frame_args_skip (struct gdbarch *gdbarch, CORE_ADDR fram
#endif
#endif
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !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);
@@ -813,6 +1004,132 @@ extern void set_gdbarch_frame_num_args (struct gdbarch *gdbarch, gdbarch_frame_n
#endif
#endif
+#if defined (STACK_ALIGN)
+/* Legacy for systems yet to multi-arch STACK_ALIGN */
+#define STACK_ALIGN_P() (1)
+#endif
+
+/* Default predicate for non- multi-arch targets. */
+#if (GDB_MULTI_ARCH == 0) && !defined (STACK_ALIGN_P)
+#define STACK_ALIGN_P() (0)
+#endif
+
+extern int gdbarch_stack_align_p (struct gdbarch *gdbarch);
+#if (GDB_MULTI_ARCH > 1) || !defined (STACK_ALIGN_P)
+#define STACK_ALIGN_P() (gdbarch_stack_align_p (current_gdbarch))
+#endif
+
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (STACK_ALIGN)
+#define STACK_ALIGN(sp) (internal_error ("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);
+#if GDB_MULTI_ARCH
+#if (GDB_MULTI_ARCH > 1) || !defined (STACK_ALIGN)
+#define STACK_ALIGN(sp) (gdbarch_stack_align (current_gdbarch, sp))
+#endif
+#endif
+
+#if defined (REG_STRUCT_HAS_ADDR)
+/* Legacy for systems yet to multi-arch REG_STRUCT_HAS_ADDR */
+#define REG_STRUCT_HAS_ADDR_P() (1)
+#endif
+
+/* Default predicate for non- multi-arch targets. */
+#if (GDB_MULTI_ARCH == 0) && !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 > 1) || !defined (REG_STRUCT_HAS_ADDR_P)
+#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 == 0) && !defined (REG_STRUCT_HAS_ADDR)
+#define REG_STRUCT_HAS_ADDR(gcc_p, type) (internal_error ("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);
+#if GDB_MULTI_ARCH
+#if (GDB_MULTI_ARCH > 1) || !defined (REG_STRUCT_HAS_ADDR)
+#define REG_STRUCT_HAS_ADDR(gcc_p, type) (gdbarch_reg_struct_has_addr (current_gdbarch, gcc_p, type))
+#endif
+#endif
+
+#if defined (SAVE_DUMMY_FRAME_TOS)
+/* Legacy for systems yet to multi-arch SAVE_DUMMY_FRAME_TOS */
+#define SAVE_DUMMY_FRAME_TOS_P() (1)
+#endif
+
+/* Default predicate for non- multi-arch targets. */
+#if (GDB_MULTI_ARCH == 0) && !defined (SAVE_DUMMY_FRAME_TOS_P)
+#define SAVE_DUMMY_FRAME_TOS_P() (0)
+#endif
+
+extern int gdbarch_save_dummy_frame_tos_p (struct gdbarch *gdbarch);
+#if (GDB_MULTI_ARCH > 1) || !defined (SAVE_DUMMY_FRAME_TOS_P)
+#define SAVE_DUMMY_FRAME_TOS_P() (gdbarch_save_dummy_frame_tos_p (current_gdbarch))
+#endif
+
+/* Default (function) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (SAVE_DUMMY_FRAME_TOS)
+#define SAVE_DUMMY_FRAME_TOS(sp) (internal_error ("SAVE_DUMMY_FRAME_TOS"), 0)
+#endif
+
+typedef void (gdbarch_save_dummy_frame_tos_ftype) (CORE_ADDR sp);
+extern void gdbarch_save_dummy_frame_tos (struct gdbarch *gdbarch, CORE_ADDR sp);
+extern void set_gdbarch_save_dummy_frame_tos (struct gdbarch *gdbarch, gdbarch_save_dummy_frame_tos_ftype *save_dummy_frame_tos);
+#if GDB_MULTI_ARCH
+#if (GDB_MULTI_ARCH > 1) || !defined (SAVE_DUMMY_FRAME_TOS)
+#define SAVE_DUMMY_FRAME_TOS(sp) (gdbarch_save_dummy_frame_tos (current_gdbarch, sp))
+#endif
+#endif
+
+/* Default (value) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !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
+#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_FLOAT_FORMAT)
+#define TARGET_FLOAT_FORMAT (gdbarch_float_format (current_gdbarch))
+#endif
+#endif
+
+/* Default (value) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !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
+#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_DOUBLE_FORMAT)
+#define TARGET_DOUBLE_FORMAT (gdbarch_double_format (current_gdbarch))
+#endif
+#endif
+
+/* Default (value) for non- multi-arch platforms. */
+#if (GDB_MULTI_ARCH == 0) && !defined (TARGET_LONG_DOUBLE_FORMAT)
+#define TARGET_LONG_DOUBLE_FORMAT (&floatformat_unknown)
+#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
+#if (GDB_MULTI_ARCH > 1) || !defined (TARGET_LONG_DOUBLE_FORMAT)
+#define TARGET_LONG_DOUBLE_FORMAT (gdbarch_long_double_format (current_gdbarch))
+#endif
+#endif
+
extern struct gdbarch_tdep *gdbarch_tdep (struct gdbarch *gdbarch);
@@ -1061,31 +1378,6 @@ extern disassemble_info tm_print_insn_info;
USE of these macro's is *STRONGLY* discouraged. */
#define GDB_TARGET_IS_D10V (TARGET_ARCHITECTURE->arch == bfd_arch_d10v)
-#ifndef D10V_MAKE_DADDR
-#define D10V_MAKE_DADDR(X) (internal_error ("gdbarch: D10V_MAKE_DADDR"), 0)
-#endif
-#ifndef D10V_MAKE_IADDR
-#define D10V_MAKE_IADDR(X) (internal_error ("gdbarch: D10V_MAKE_IADDR"), 0)
-#endif
-
-
-/* Fallback definition of FRAMELESS_FUNCTION_INVOCATION */
-#ifndef FRAMELESS_FUNCTION_INVOCATION
-#define FRAMELESS_FUNCTION_INVOCATION(FI) (0)
-#endif
-
-
-/* Fallback definition of REGISTER_CONVERTIBLE etc */
-extern int generic_register_convertible_not (int reg_nr);
-#ifndef REGISTER_CONVERTIBLE
-#define REGISTER_CONVERTIBLE(x) (0)
-#endif
-#ifndef REGISTER_CONVERT_TO_VIRTUAL
-#define REGISTER_CONVERT_TO_VIRTUAL(x, y, z, a)
-#endif
-#ifndef REGISTER_CONVERT_TO_RAW
-#define REGISTER_CONVERT_TO_RAW(x, y, z, a)
-#endif
/* Fallback definition for EXTRACT_STRUCT_VALUE_ADDRESS */
@@ -1099,14 +1391,6 @@ extern int generic_register_convertible_not (int reg_nr);
#endif
-/* Fallback definition for REGISTER_NAME for systems still defining
- REGISTER_NAMES. */
-#ifndef REGISTER_NAME
-extern char *gdb_register_names[];
-#define REGISTER_NAME(i) gdb_register_names[i]
-#endif
-
-
/* Set the dynamic target-system-dependant parameters (architecture,
byte-order, ...) using information found in the BFD */
diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh
index 8a907cc37db..bf7b47c1e5d 100755
--- a/gdb/gdbarch.sh
+++ b/gdb/gdbarch.sh
@@ -1,4 +1,4 @@
-#!/usr/local/bin/bash
+#!/usr/local/bin/bash -u
# Architecture commands for GDB, the GNU debugger.
# Copyright 1998-2000 Free Software Foundation, Inc.
@@ -34,26 +34,50 @@ compare_new ()
}
-# DEFAULT is a valid fallback definition of a MACRO when
-# multi-arch is not enabled.
-default_is_fallback_p ()
-{
- [ "${default}" != "" -a "${invalid_p}" = "0" ]
- # FIXME: cagney - not until after 5.0
- false
-}
-
# Format of the input table
-read="class level macro returntype function formal actual attrib startup default invalid_p fmt print print_p description"
+read="class level macro returntype function formal actual attrib staticdefault predefault postdefault invalid_p fmt print print_p description"
do_read ()
{
if eval read $read
then
- test "${startup}" || startup=0
+ test "${staticdefault}" || staticdefault=0
+ # NOT YET: Breaks BELIEVE_PCC_PROMOTION and confuses non-
+ # multi-arch defaults.
+ # test "${predefault}" || predefault=0
test "${fmt}" || fmt="%ld"
test "${print}" || print="(long) ${macro}"
- #test "${default}" || default=0
+ case "${invalid_p}" in
+ 0 ) valid_p=1 ;;
+ "" )
+ if [ "${predefault}" ]
+ then
+ #invalid_p="gdbarch->${function} == ${predefault}"
+ valid_p="gdbarch->${function} != ${predefault}"
+ else
+ #invalid_p="gdbarch->${function} == 0"
+ valid_p="gdbarch->${function} != 0"
+ fi
+ ;;
+ * ) valid_p="!(${invalid_p})"
+ esac
+
+ # PREDEFAULT is a valid fallback definition of MEMBER when
+ # multi-arch is not enabled. This ensures that the default
+ # value, when multi-arch is the same as the default value when
+ # not multi-arch. POSTDEFAULT is always a valid definition of
+ # MEMBER as this again ensures consistency.
+ if [ "${postdefault}" != "" ]
+ then
+ fallbackdefault="${postdefault}"
+ elif [ "${predefault}" != "" ]
+ then
+ fallbackdefault="${predefault}"
+ else
+ fallbackdefault=""
+ fi
+ #NOT YET:
+ # See gdbarch.log for basic verification of database
:
else
false
@@ -61,6 +85,33 @@ do_read ()
}
+fallback_default_p ()
+{
+ [ "${postdefault}" != "" -a "${invalid_p}" != "0" ] \
+ || [ "${predefault}" != "" -a "${invalid_p}" = "0" ]
+}
+
+class_is_variable_p ()
+{
+ [ "${class}" = "v" -o "${class}" = "V" ]
+}
+
+class_is_function_p ()
+{
+ [ "${class}" = "f" -o "${class}" = "F" ]
+}
+
+class_is_predicate_p ()
+{
+ [ "${class}" = "F" -o "${class}" = "V" ]
+}
+
+class_is_info_p ()
+{
+ [ "${class}" = "i" ]
+}
+
+
# dump out/verify the doco
for field in ${read}
do
@@ -71,8 +122,12 @@ do
# # -> line disable
# f -> function
# hiding a function
+ # F -> function + predicate
+ # hiding a function + predicate to test function validity
# v -> variable
# hiding a variable
+ # V -> variable + predicate
+ # hiding a variable + predicate to test variables validity
# i -> set from info
# hiding something from the ``struct info'' object
@@ -114,32 +169,66 @@ do
# Any GCC attributes that should be attached to the function
# declaration. At present this field is unused.
- startup ) : ;;
+ staticdefault ) : ;;
# To help with the GDB startup a static gdbarch object is
- # created. STARTUP is the value to insert into that static
- # gdbarch object.
+ # created. STATICDEFAULT is the value to insert into that
+ # static gdbarch object. Since this a static object only
+ # simple expressions can be used.
+
+ # If STATICDEFAULT is empty, zero is used.
+
+ predefault ) : ;;
+
+ # A initial value to assign to MEMBER of the freshly
+ # malloc()ed gdbarch object. After the gdbarch object has
+ # been initialized using PREDEFAULT, it is passed to the
+ # target code for further updates.
+
+ # If PREDEFAULT is empty, zero is used.
+
+ # When POSTDEFAULT is empty, a non-empty PREDEFAULT and a zero
+ # INVALID_P will be used as default values when when
+ # multi-arch is disabled. Specify a zero PREDEFAULT function
+ # to make that fallback call internal_error().
+
+ # Variable declarations can refer to ``gdbarch'' which will
+ # contain the current architecture. Care should be taken.
+
+ postdefault ) : ;;
+
+ # A value to assign to MEMBER of the new gdbarch object should
+ # the target code fail to change the PREDEFAULT value. Also
+ # use POSTDEFAULT as the fallback value for the non-
+ # multi-arch case.
- # By default ``0'' is used.
+ # If POSTDEFAULT is empty, no post update is performed.
- default ) : ;;
+ # If both INVALID_P and POSTDEFAULT are non-empty then
+ # INVALID_P will be used to determine if MEMBER should be
+ # changed to POSTDEFAULT.
- # Any initial value to assign to a new gdbarch object after it
- # as been malloc()ed. Zero is used by default.
+ # You cannot specify both a zero INVALID_P and a POSTDEFAULT.
- # Specify a non-empty DEFAULT and a zero INVALID_P to create a
- # fallback value or function for when multi-arch is disabled.
- # Specify a zero DEFAULT function to make that fallback
- # illegal to call.
+ # Variable declarations can refer to ``gdbarch'' which will
+ # contain the current architecture. Care should be taken.
invalid_p ) : ;;
- # A predicate equation that validates MEMBER. Non-zero is
+ # A predicate equation that validates MEMBER. Non-zero is
# returned if the code creating the new architecture failed to
- # initialize the MEMBER or initialized the member to something
- # invalid. By default, a check that the value is no longer
- # equal to DEFAULT ips performed. The equation ``0'' disables
- # the invalid_p check.
+ # initialize MEMBER or the initialized the member is invalid.
+ # If POSTDEFAULT is non-empty then MEMBER will be updated to
+ # that value. If POSTDEFAULT is empty then internal_error()
+ # is called.
+
+ # If INVALID_P is empty, a check that MEMBER is no longer
+ # equal to PREDEFAULT is used.
+
+ # The expression ``0'' disables the INVALID_P check making
+ # PREDEFAULT a legitimate value.
+
+ # See also PREDEFAULT and POSTDEFAULT.
fmt ) : ;;
@@ -147,27 +236,28 @@ do
# MEMBER. Sometimes "%s" is useful. For functions, this is
# ignored and the function address is printed.
- # By default ```%ld'' is used.
+ # If FMT is empty, ``%ld'' is used.
print ) : ;;
# An optional equation that casts MEMBER to a value suitable
# for formatting by FMT.
- # By default ``(long)'' is used.
+ # If PRINT is empty, ``(long)'' is used.
print_p ) : ;;
# An optional indicator for any predicte to wrap around the
# print member code.
- # # -> Wrap print up in ``#ifdef MACRO''
# exp -> Wrap print up in ``if (${print_p}) ...
# ``'' -> No predicate
+ # If PRINT_P is empty, ``1'' is always used.
+
description ) : ;;
- # Currently unused.
+ # Currently unused.
*) exit 1;;
esac
@@ -179,11 +269,11 @@ function_list ()
{
# See below (DOCO) for description of each field
cat <<EOF |
-i:2:TARGET_ARCHITECTURE:const struct bfd_arch_info *:bfd_arch_info::::&bfd_default_arch_struct:::%s:TARGET_ARCHITECTURE->printable_name:TARGET_ARCHITECTURE != NULL
+i:2:TARGET_ARCHITECTURE:const struct bfd_arch_info *:bfd_arch_info::::&bfd_default_arch_struct::::%s:TARGET_ARCHITECTURE->printable_name:TARGET_ARCHITECTURE != NULL
#
i:2:TARGET_BYTE_ORDER:int:byte_order::::BIG_ENDIAN
#
-v:1:TARGET_BFD_VMA_BIT:int:bfd_vma_bit::::8 * sizeof (void*):TARGET_ARCHITECTURE->bits_per_address:0
+v:1:TARGET_BFD_VMA_BIT:int:bfd_vma_bit::::8 * sizeof (void*):TARGET_ARCHITECTURE->bits_per_address::0
v:1:TARGET_PTR_BIT:int:ptr_bit::::8 * sizeof (void*):0
#v:1:TARGET_CHAR_BIT:int:char_bit::::8 * sizeof (char):0
v:1:TARGET_SHORT_BIT:int:short_bit::::8 * sizeof (short):0
@@ -193,6 +283,7 @@ v:1:TARGET_LONG_LONG_BIT:int:long_long_bit::::8 * sizeof (LONGEST):0
v:1:TARGET_FLOAT_BIT:int:float_bit::::8 * sizeof (float):0
v:1:TARGET_DOUBLE_BIT:int:double_bit::::8 * sizeof (double):0
v:1:TARGET_LONG_DOUBLE_BIT:int:long_double_bit::::8 * sizeof (long double):0
+v:1:IEEE_FLOAT:int:ieee_float::::0:0::0:::
#
f:1:TARGET_READ_PC:CORE_ADDR:read_pc:int pid:pid::0:0
f:1:TARGET_WRITE_PC:void:write_pc:CORE_ADDR val, int pid:val, pid::0:0
@@ -205,7 +296,10 @@ v:2:NUM_REGS:int:num_regs::::0:-1
v:2:SP_REGNUM:int:sp_regnum::::0:-1
v:2:FP_REGNUM:int:fp_regnum::::0:-1
v:2:PC_REGNUM:int:pc_regnum::::0:-1
-f:2:REGISTER_NAME:char *:register_name:int regnr:regnr:::legacy_register_name:0
+v:2:FP0_REGNUM:int:fp0_regnum::::0:-1::0
+v:2:NPC_REGNUM:int:npc_regnum::::0:-1::0
+v:2:NNPC_REGNUM:int:nnpc_regnum::::0:-1::0
+f:2:REGISTER_NAME:char *:register_name:int regnr:regnr:::legacy_register_name::0
v:2:REGISTER_SIZE:int:register_size::::0:-1
v:2:REGISTER_BYTES:int:register_bytes::::0:-1
f:2:REGISTER_BYTE:int:register_byte:int reg_nr:reg_nr::0:0
@@ -217,28 +311,32 @@ f:2:REGISTER_VIRTUAL_TYPE:struct type *:register_virtual_type:int reg_nr:reg_nr:
#
v:1:USE_GENERIC_DUMMY_FRAMES:int:use_generic_dummy_frames::::0:-1
v:2:CALL_DUMMY_LOCATION:int:call_dummy_location::::0:0
-f:2:CALL_DUMMY_ADDRESS:CORE_ADDR:call_dummy_address:void:::0:0:gdbarch->call_dummy_location == AT_ENTRY_POINT && gdbarch->call_dummy_address == 0:
-v:2:CALL_DUMMY_START_OFFSET:CORE_ADDR:call_dummy_start_offset::::0:-1::0x%08lx
-v:2:CALL_DUMMY_BREAKPOINT_OFFSET:CORE_ADDR:call_dummy_breakpoint_offset::::0:-1::0x%08lx
+f:2:CALL_DUMMY_ADDRESS:CORE_ADDR:call_dummy_address:void:::0:0::gdbarch->call_dummy_location == AT_ENTRY_POINT && gdbarch->call_dummy_address == 0
+v:2:CALL_DUMMY_START_OFFSET:CORE_ADDR:call_dummy_start_offset::::0:-1:::0x%08lx
+v:2:CALL_DUMMY_BREAKPOINT_OFFSET:CORE_ADDR:call_dummy_breakpoint_offset::::0:-1:::0x%08lx
v:1:CALL_DUMMY_BREAKPOINT_OFFSET_P:int:call_dummy_breakpoint_offset_p::::0:-1
-v:2:CALL_DUMMY_LENGTH:int:call_dummy_length::::0:-1::::CALL_DUMMY_LOCATION == BEFORE_TEXT_END || CALL_DUMMY_LOCATION == AFTER_TEXT_END
+v:2:CALL_DUMMY_LENGTH:int:call_dummy_length::::0:-1:::::CALL_DUMMY_LOCATION == BEFORE_TEXT_END || CALL_DUMMY_LOCATION == AFTER_TEXT_END
f:2:PC_IN_CALL_DUMMY:int:pc_in_call_dummy:CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address:pc, sp, frame_address::0:0
v:1:CALL_DUMMY_P:int:call_dummy_p::::0:-1
-v:2:CALL_DUMMY_WORDS:LONGEST *:call_dummy_words::::0:legacy_call_dummy_words:0:0x%08lx
-v:2:SIZEOF_CALL_DUMMY_WORDS:int:sizeof_call_dummy_words::::0:legacy_sizeof_call_dummy_words:0:0x%08lx
-v:1:CALL_DUMMY_STACK_ADJUST_P:int:call_dummy_stack_adjust_p::::0:-1::0x%08lx
-v:2:CALL_DUMMY_STACK_ADJUST:int:call_dummy_stack_adjust::::0::gdbarch->call_dummy_stack_adjust_p && gdbarch->call_dummy_stack_adjust == 0:0x%08lx::CALL_DUMMY_STACK_ADJUST_P
-f:2:FIX_CALL_DUMMY:void:fix_call_dummy:char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs, struct value **args, struct type *type, int gcc_p:dummy, pc, fun, nargs, args, type, gcc_p::0:0
+v:2:CALL_DUMMY_WORDS:LONGEST *:call_dummy_words::::0:legacy_call_dummy_words::0:0x%08lx
+v:2:SIZEOF_CALL_DUMMY_WORDS:int:sizeof_call_dummy_words::::0:legacy_sizeof_call_dummy_words::0:0x%08lx
+v:1:CALL_DUMMY_STACK_ADJUST_P:int:call_dummy_stack_adjust_p::::0:-1:::0x%08lx
+v:2:CALL_DUMMY_STACK_ADJUST:int:call_dummy_stack_adjust::::0:::gdbarch->call_dummy_stack_adjust_p && gdbarch->call_dummy_stack_adjust == 0:0x%08lx::CALL_DUMMY_STACK_ADJUST_P
+f:2:FIX_CALL_DUMMY:void:fix_call_dummy:char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs, struct value **args, struct type *type, int gcc_p:dummy, pc, fun, nargs, args, type, gcc_p:::0
#
-v:2:BELIEVE_PCC_PROMOTION:int:believe_pcc_promotion::::0:::::#
-v:2:BELIEVE_PCC_PROMOTION_TYPE:int:believe_pcc_promotion_type::::0:::::#
-f:2:COERCE_FLOAT_TO_DOUBLE:int:coerce_float_to_double:struct type *formal, struct type *actual:formal, actual:::default_coerce_float_to_double:0
+v:2:BELIEVE_PCC_PROMOTION:int:believe_pcc_promotion:::::::
+v:2:BELIEVE_PCC_PROMOTION_TYPE:int:believe_pcc_promotion_type:::::::
+f:2:COERCE_FLOAT_TO_DOUBLE:int:coerce_float_to_double:struct type *formal, struct type *actual:formal, actual:::default_coerce_float_to_double::0
f:1:GET_SAVED_REGISTER:void:get_saved_register:char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval:raw_buffer, optimized, addrp, frame, regnum, lval::generic_get_saved_register:0
#
-f:1:REGISTER_CONVERTIBLE:int:register_convertible:int nr:nr:::generic_register_convertible_not:0
-f:2:REGISTER_CONVERT_TO_VIRTUAL:void:register_convert_to_virtual:int regnum, struct type *type, char *from, char *to:regnum, type, from, to:::0:0
-f:2:REGISTER_CONVERT_TO_RAW:void:register_convert_to_raw:struct type *type, int regnum, char *from, char *to:type, regnum, from, to:::0:0
+f:1:REGISTER_CONVERTIBLE:int:register_convertible:int nr:nr:::generic_register_convertible_not::0
+f:2:REGISTER_CONVERT_TO_VIRTUAL:void:register_convert_to_virtual:int regnum, struct type *type, char *from, char *to:regnum, type, from, to:::0::0
+f:2:REGISTER_CONVERT_TO_RAW:void:register_convert_to_raw:struct type *type, int regnum, char *from, char *to:type, regnum, from, to:::0::0
+#
+f:2:POINTER_TO_ADDRESS:CORE_ADDR:pointer_to_address:struct type *type, void *buf:type, buf:::unsigned_pointer_to_address::0
+f:2:ADDRESS_TO_POINTER:void:address_to_pointer:struct type *type, void *buf, CORE_ADDR addr:type, buf, addr:::unsigned_address_to_pointer::0
#
+f:2:RETURN_VALUE_ON_STACK:int:return_value_on_stack:struct type *type:type:::generic_return_value_on_stack_not::0
f:2:EXTRACT_RETURN_VALUE:void:extract_return_value:struct type *type, char *regbuf, char *valbuf:type, regbuf, valbuf::0:0
f:1:PUSH_ARGUMENTS:CORE_ADDR:push_arguments:int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr:nargs, args, sp, struct_return, struct_addr::0:0
f:2:PUSH_DUMMY_FRAME:void:push_dummy_frame:void:-:::0
@@ -246,12 +344,12 @@ f:1:PUSH_RETURN_ADDRESS:CORE_ADDR:push_return_address:CORE_ADDR pc, CORE_ADDR sp
f:2:POP_FRAME:void:pop_frame:void:-:::0
#
# I wish that these would just go away....
-f:2:D10V_MAKE_DADDR:CORE_ADDR:d10v_make_daddr:CORE_ADDR x:x:::0:0
-f:2:D10V_MAKE_IADDR:CORE_ADDR:d10v_make_iaddr:CORE_ADDR x:x:::0:0
-f:2:D10V_DADDR_P:int:d10v_daddr_p:CORE_ADDR x:x:::0
-f:2:D10V_IADDR_P:int:d10v_iaddr_p:CORE_ADDR x:x:::0
-f:2:D10V_CONVERT_DADDR_TO_RAW:CORE_ADDR:d10v_convert_daddr_to_raw:CORE_ADDR x:x:::0
-f:2:D10V_CONVERT_IADDR_TO_RAW:CORE_ADDR:d10v_convert_iaddr_to_raw:CORE_ADDR x:x:::0
+f:2:D10V_MAKE_DADDR:CORE_ADDR:d10v_make_daddr:CORE_ADDR x:x:::0::0
+f:2:D10V_MAKE_IADDR:CORE_ADDR:d10v_make_iaddr:CORE_ADDR x:x:::0::0
+f:2:D10V_DADDR_P:int:d10v_daddr_p:CORE_ADDR x:x:::0::0
+f:2:D10V_IADDR_P:int:d10v_iaddr_p:CORE_ADDR x:x:::0::0
+f:2:D10V_CONVERT_DADDR_TO_RAW:CORE_ADDR:d10v_convert_daddr_to_raw:CORE_ADDR x:x:::0::0
+f:2:D10V_CONVERT_IADDR_TO_RAW:CORE_ADDR:d10v_convert_iaddr_to_raw:CORE_ADDR x:x:::0::0
#
f:2:STORE_STRUCT_RETURN:void:store_struct_return:CORE_ADDR addr, CORE_ADDR sp:addr, sp:::0
f:2:STORE_RETURN_VALUE:void:store_return_value:struct type *type, char *valbuf:type, valbuf:::0
@@ -262,17 +360,18 @@ f:2:FRAME_INIT_SAVED_REGS:void:frame_init_saved_regs:struct frame_info *frame:fr
f:2:INIT_EXTRA_FRAME_INFO:void:init_extra_frame_info:int fromleaf, struct frame_info *frame:fromleaf, frame:::0
#
f:2:SKIP_PROLOGUE:CORE_ADDR:skip_prologue:CORE_ADDR ip:ip::0:0
+f:2:PROLOGUE_FRAMELESS_P:int:prologue_frameless_p:CORE_ADDR ip:ip::0:generic_prologue_frameless_p::0
f:2:INNER_THAN:int:inner_than:CORE_ADDR lhs, CORE_ADDR rhs:lhs, rhs::0:0
-f:2:BREAKPOINT_FROM_PC:unsigned char *:breakpoint_from_pc:CORE_ADDR *pcptr, int *lenptr:pcptr, lenptr:::legacy_breakpoint_from_pc:0
-f:2:MEMORY_INSERT_BREAKPOINT:int:memory_insert_breakpoint:CORE_ADDR addr, char *contents_cache:addr, contents_cache::0:default_memory_insert_breakpoint:0
-f:2:MEMORY_REMOVE_BREAKPOINT:int:memory_remove_breakpoint:CORE_ADDR addr, char *contents_cache:addr, contents_cache::0:default_memory_remove_breakpoint:0
+f:2:BREAKPOINT_FROM_PC:unsigned char *:breakpoint_from_pc:CORE_ADDR *pcptr, int *lenptr:pcptr, lenptr:::legacy_breakpoint_from_pc::0
+f:2:MEMORY_INSERT_BREAKPOINT:int:memory_insert_breakpoint:CORE_ADDR addr, char *contents_cache:addr, contents_cache::0:default_memory_insert_breakpoint::0
+f:2:MEMORY_REMOVE_BREAKPOINT:int:memory_remove_breakpoint:CORE_ADDR addr, char *contents_cache:addr, contents_cache::0:default_memory_remove_breakpoint::0
v:2:DECR_PC_AFTER_BREAK:CORE_ADDR:decr_pc_after_break::::0:-1
v:2:FUNCTION_START_OFFSET:CORE_ADDR:function_start_offset::::0:-1
#
-f:2:REMOTE_TRANSLATE_XFER_ADDRESS:void:remote_translate_xfer_address:CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len:gdb_addr, gdb_len, rem_addr, rem_len:::generic_remote_translate_xfer_address:0
+f:2:REMOTE_TRANSLATE_XFER_ADDRESS:void:remote_translate_xfer_address:CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len:gdb_addr, gdb_len, rem_addr, rem_len:::generic_remote_translate_xfer_address::0
#
v:2:FRAME_ARGS_SKIP:CORE_ADDR:frame_args_skip::::0:-1
-f:2:FRAMELESS_FUNCTION_INVOCATION:int:frameless_function_invocation:struct frame_info *fi:fi:::generic_frameless_function_invocation_not:0
+f:2:FRAMELESS_FUNCTION_INVOCATION:int:frameless_function_invocation:struct frame_info *fi:fi:::generic_frameless_function_invocation_not::0
f:2:FRAME_CHAIN:CORE_ADDR:frame_chain:struct frame_info *frame:frame::0:0
f:1:FRAME_CHAIN_VALID:int:frame_chain_valid:CORE_ADDR chain, struct frame_info *thisframe:chain, thisframe::0:0
f:2:FRAME_SAVED_PC:CORE_ADDR:frame_saved_pc:struct frame_info *fi:fi::0:0
@@ -281,32 +380,55 @@ f:2:FRAME_LOCALS_ADDRESS:CORE_ADDR:frame_locals_address:struct frame_info *fi:fi
f:2:SAVED_PC_AFTER_CALL:CORE_ADDR:saved_pc_after_call:struct frame_info *frame:frame::0:0
f:2:FRAME_NUM_ARGS:int:frame_num_args:struct frame_info *frame:frame::0:0
#
+F:2:STACK_ALIGN:CORE_ADDR:stack_align:CORE_ADDR sp:sp::0:0
+F:2:REG_STRUCT_HAS_ADDR:int:reg_struct_has_addr:int gcc_p, struct type *type:gcc_p, type::0:0
+F:2:SAVE_DUMMY_FRAME_TOS:void:save_dummy_frame_tos:CORE_ADDR sp:sp::0:0
+#
+v:2:TARGET_FLOAT_FORMAT:const struct floatformat *:float_format::::::default_float_format (gdbarch)
+v:2:TARGET_DOUBLE_FORMAT:const struct floatformat *:double_format::::::default_double_format (gdbarch)
+v:2:TARGET_LONG_DOUBLE_FORMAT:const struct floatformat *:long_double_format::::::&floatformat_unknown
EOF
grep -v '^#'
}
-
-# dump it out
-if true
-then
- exec > new-gdbarch
- function_list | while do_read # eval read $read
- do
+#
+# The .log file
+#
+exec > new-gdbarch.log
+function_list | while do_read # eval read $read
+do
cat <<EOF
${class} ${macro}(${actual})
${returntype} ${function} ($formal)${attrib}
level=${level}
- startup=${startup}
- default=${default}
+ staticdefault=${staticdefault}
+ predefault=${predefault}
+ postdefault=${postdefault}
+ fallbackdefault=${fallbackdefault}
invalid_p=${invalid_p}
+ valid_p=${valid_p}
fmt=${fmt}
print=${print}
print_p=${print_p}
description=${description}
EOF
- done
- exec 1>&2
-fi
+ if class_is_predicate_p && fallback_default_p
+ then
+ echo "Error: predicate function can not have a non- multi-arch default" 1>&2
+ kill $$
+ exit 1
+ fi
+ if [ "${invalid_p}" = "0" -a "${postdefault}" != "" ]
+ then
+ echo "Error: postdefault is useless when invalid_p=0" 1>&2
+ kill $$
+ exit 1
+ fi
+done
+
+exec 1>&2
+compare_new gdbarch.log
+
copyright ()
{
@@ -377,18 +499,6 @@ extern struct gdbarch *current_gdbarch;
converted. */
#if GDB_MULTI_ARCH
-#if defined (CALL_DUMMY)
-#error "CALL_DUMMY: replaced by CALL_DUMMY_WORDS/SIZEOF_CALL_DUMMY_WORDS"
-#endif
-#endif
-
-#if GDB_MULTI_ARCH
-#if defined (REGISTER_NAMES)
-#error "REGISTER_NAMES: replaced by REGISTER_NAME"
-#endif
-#endif
-
-#if GDB_MULTI_ARCH
#if defined (EXTRA_FRAME_INFO)
#error "EXTRA_FRAME_INFO: replaced by struct frame_extra_info"
#endif
@@ -407,8 +517,8 @@ echo ""
echo "/* The following are pre-initialized by GDBARCH. */"
function_list | while do_read # eval read $read
do
- case "${class}" in
- "i" )
+ if class_is_info_p
+ then
echo ""
echo "extern ${returntype} gdbarch_${function} (struct gdbarch *gdbarch);"
echo "/* set_gdbarch_${function}() - not applicable - pre-initialized. */"
@@ -417,8 +527,7 @@ do
echo "#define ${macro} (gdbarch_${function} (current_gdbarch))"
echo "#endif"
echo "#endif"
- ;;
- esac
+ fi
done
# function typedef's
@@ -427,8 +536,36 @@ echo ""
echo "/* The following are initialized by the target dependant code. */"
function_list | while do_read # eval read $read
do
- case "${class}" in
- "v" )
+ if class_is_predicate_p
+ then
+ echo ""
+ echo "#if defined (${macro})"
+ echo "/* Legacy for systems yet to multi-arch ${macro} */"
+# echo "#if (GDB_MULTI_ARCH <= 2) && defined (${macro})"
+ echo "#define ${macro}_P() (1)"
+ echo "#endif"
+ echo ""
+ echo "/* Default predicate for non- multi-arch targets. */"
+ echo "#if (GDB_MULTI_ARCH == 0) && !defined (${macro}_P)"
+ echo "#define ${macro}_P() (0)"
+ echo "#endif"
+ echo ""
+ echo "extern int gdbarch_${function}_p (struct gdbarch *gdbarch);"
+ echo "#if (GDB_MULTI_ARCH > 1) || !defined (${macro}_P)"
+ echo "#define ${macro}_P() (gdbarch_${function}_p (current_gdbarch))"
+ echo "#endif"
+ fi
+ if class_is_variable_p
+ then
+ if fallback_default_p || class_is_predicate_p
+ then
+ echo ""
+ echo "/* Default (value) for non- multi-arch platforms. */"
+ echo "#if (GDB_MULTI_ARCH == 0) && !defined (${macro})"
+ echo "#define ${macro} (${fallbackdefault})" \
+ | sed -e 's/\([^a-z_]\)\(gdbarch[^a-z_]\)/\1current_\2/g'
+ echo "#endif"
+ fi
echo ""
echo "extern ${returntype} gdbarch_${function} (struct gdbarch *gdbarch);"
echo "extern void set_gdbarch_${function} (struct gdbarch *gdbarch, ${returntype} ${function});"
@@ -437,8 +574,24 @@ do
echo "#define ${macro} (gdbarch_${function} (current_gdbarch))"
echo "#endif"
echo "#endif"
- ;;
- "f" )
+ fi
+ if class_is_function_p
+ then
+ if fallback_default_p || class_is_predicate_p
+ then
+ echo ""
+ echo "/* Default (function) for non- multi-arch platforms. */"
+ echo "#if (GDB_MULTI_ARCH == 0) && !defined (${macro})"
+ if [ "${fallbackdefault}" = "0" ]
+ then
+ echo "#define ${macro}(${actual}) (internal_error (\"${macro}\"), 0)"
+ 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
+ echo "#endif"
+ fi
echo ""
echo "typedef ${returntype} (gdbarch_${function}_ftype) (${formal});"
if [ "${formal}" = "void" ]
@@ -448,10 +601,7 @@ do
echo "extern ${returntype} gdbarch_${function} (struct gdbarch *gdbarch, ${formal});"
fi
echo "extern void set_gdbarch_${function} (struct gdbarch *gdbarch, gdbarch_${function}_ftype *${function});"
- if ! default_is_fallback_p
- then
- echo "#if GDB_MULTI_ARCH"
- fi
+ echo "#if GDB_MULTI_ARCH"
echo "#if (GDB_MULTI_ARCH > 1) || !defined (${macro})"
if [ "${actual}" = "" ]
then
@@ -463,12 +613,8 @@ do
echo "#define ${macro}(${actual}) (gdbarch_${function} (current_gdbarch, ${actual}))"
fi
echo "#endif"
- if ! default_is_fallback_p
- then
- echo "#endif"
- fi
- ;;
- esac
+ echo "#endif"
+ fi
done
# close it off
@@ -722,31 +868,6 @@ extern disassemble_info tm_print_insn_info;
USE of these macro's is *STRONGLY* discouraged. */
#define GDB_TARGET_IS_D10V (TARGET_ARCHITECTURE->arch == bfd_arch_d10v)
-#ifndef D10V_MAKE_DADDR
-#define D10V_MAKE_DADDR(X) (internal_error ("gdbarch: D10V_MAKE_DADDR"), 0)
-#endif
-#ifndef D10V_MAKE_IADDR
-#define D10V_MAKE_IADDR(X) (internal_error ("gdbarch: D10V_MAKE_IADDR"), 0)
-#endif
-
-
-/* Fallback definition of FRAMELESS_FUNCTION_INVOCATION */
-#ifndef FRAMELESS_FUNCTION_INVOCATION
-#define FRAMELESS_FUNCTION_INVOCATION(FI) (0)
-#endif
-
-
-/* Fallback definition of REGISTER_CONVERTIBLE etc */
-extern int generic_register_convertible_not (int reg_nr);
-#ifndef REGISTER_CONVERTIBLE
-#define REGISTER_CONVERTIBLE(x) (0)
-#endif
-#ifndef REGISTER_CONVERT_TO_VIRTUAL
-#define REGISTER_CONVERT_TO_VIRTUAL(x, y, z, a)
-#endif
-#ifndef REGISTER_CONVERT_TO_RAW
-#define REGISTER_CONVERT_TO_RAW(x, y, z, a)
-#endif
/* Fallback definition for EXTRACT_STRUCT_VALUE_ADDRESS */
@@ -760,14 +881,6 @@ extern int generic_register_convertible_not (int reg_nr);
#endif
-/* Fallback definition for REGISTER_NAME for systems still defining
- REGISTER_NAMES. */
-#ifndef REGISTER_NAME
-extern char *gdb_register_names[];
-#define REGISTER_NAME(i) gdb_register_names[i]
-#endif
-
-
/* Set the dynamic target-system-dependant parameters (architecture,
byte-order, ...) using information found in the BFD */
@@ -812,7 +925,7 @@ copyright
cat <<EOF
#include "defs.h"
-#include "gdbarch-utils.h"
+#include "arch-utils.h"
#if GDB_MULTI_ARCH
#include "gdbcmd.h"
@@ -836,6 +949,7 @@ cat <<EOF
#endif
#include "symcat.h"
+#include "floatformat.h"
/* Static function declarations */
@@ -870,9 +984,10 @@ echo "{"
echo " /* basic architectural information */"
function_list | while do_read # eval read $read
do
- case "${class}" in
- "i" ) echo " ${returntype} ${function};" ;;
- esac
+ if class_is_info_p
+ then
+ echo " ${returntype} ${function};"
+ fi
done
echo ""
echo " /* target specific vector. */"
@@ -915,10 +1030,13 @@ cat <<EOF
EOF
function_list | while do_read # eval read $read
do
- case "${class}" in
- "v" ) echo " ${returntype} ${function};" ;;
- "f" ) echo " gdbarch_${function}_ftype *${function}${attrib};" ;;
- esac
+ if class_is_variable_p
+ then
+ echo " ${returntype} ${function};"
+ elif class_is_function_p
+ then
+ echo " gdbarch_${function}_ftype *${function}${attrib};"
+ fi
done
echo "};"
@@ -936,11 +1054,10 @@ echo "struct gdbarch startup_gdbarch = {"
echo " /* basic architecture information */"
function_list | while do_read # eval read $read
do
- case "${class}" in
- "i" )
- echo " ${startup},"
- ;;
- esac
+ if class_is_info_p
+ then
+ echo " ${staticdefault},"
+ fi
done
cat <<EOF
/* target specific vector */
@@ -951,11 +1068,10 @@ cat <<EOF
EOF
function_list | while do_read # eval read $read
do
- case "${class}" in
- "f" | "v" )
- echo " ${startup},"
- ;;
- esac
+ if class_is_function_p || class_is_variable_p
+ then
+ echo " ${staticdefault},"
+ fi
done
cat <<EOF
/* startup_gdbarch() */
@@ -984,22 +1100,22 @@ EOF
echo ""
function_list | while do_read # eval read $read
do
- case "${class}" in
- "i" ) echo " gdbarch->${function} = info->${function};"
- esac
+ if class_is_info_p
+ then
+ echo " gdbarch->${function} = info->${function};"
+ fi
done
echo ""
echo " /* Force the explicit initialization of these. */"
function_list | while do_read # eval read $read
do
- case "${class}" in
- "f" | "v" )
- if [ "${default}" != "" -a "${default}" != "0" ]
+ if class_is_function_p || class_is_variable_p
+ then
+ if [ "${predefault}" != "" -a "${predefault}" != "0" ]
then
- echo " gdbarch->${function} = ${default};"
+ echo " gdbarch->${function} = ${predefault};"
fi
- ;;
- esac
+ fi
done
cat <<EOF
/* gdbarch_alloc() */
@@ -1046,24 +1162,39 @@ verify_gdbarch (struct gdbarch *gdbarch)
EOF
function_list | while do_read # eval read $read
do
- case "${class}" in
- "f" | "v" )
+ if class_is_function_p || class_is_variable_p
+ then
if [ "${invalid_p}" = "0" ]
then
echo " /* Skip verify of ${function}, invalid_p == 0 */"
- elif [ "${invalid_p}" ]
+ elif class_is_predicate_p
+ then
+ echo " /* Skip verify of ${function}, has predicate */"
+ # FIXME: See do_read for potential simplification
+ elif [ "${invalid_p}" -a "${postdefault}" ]
+ then
+ echo " if (${invalid_p})"
+ echo " gdbarch->${function} = ${postdefault};"
+ elif [ "${predefault}" -a "${postdefault}" ]
+ then
+ echo " if (gdbarch->${function} == ${predefault})"
+ echo " gdbarch->${function} = ${postdefault};"
+ elif [ "${postdefault}" ]
+ then
+ echo " if (gdbarch->${function} == 0)"
+ echo " gdbarch->${function} = ${postdefault};"
+ elif [ "${invalid_p}" ]
then
echo " if ((GDB_MULTI_ARCH >= ${level})"
echo " && (${invalid_p}))"
echo " internal_error (\"gdbarch: verify_gdbarch: ${function} invalid\");"
- elif [ "${default}" ]
+ elif [ "${predefault}" ]
then
echo " if ((GDB_MULTI_ARCH >= ${level})"
- echo " && (gdbarch->${function} == ${default}))"
+ echo " && (gdbarch->${function} == ${predefault}))"
echo " internal_error (\"gdbarch: verify_gdbarch: ${function} invalid\");"
fi
- ;;
- esac
+ fi
done
cat <<EOF
}
@@ -1081,22 +1212,15 @@ gdbarch_dump (void)
EOF
function_list | while do_read # eval read $read
do
- case "${class}" in
- "f" )
+ echo "#ifdef ${macro}"
+ if class_is_function_p
+ then
echo " fprintf_unfiltered (gdb_stdlog,"
echo " \"gdbarch_update: ${macro} = 0x%08lx\\n\","
echo " (long) current_gdbarch->${function}"
echo " /*${macro} ()*/);"
- ;;
- * )
- if [ "${print_p}" = "#" ]
- then
- echo "#ifdef ${macro}"
- echo " fprintf_unfiltered (gdb_stdlog,"
- echo " \"gdbarch_update: ${macro} = ${fmt}\\n\","
- echo " ${print});"
- echo "#endif"
- elif [ "${print_p}" ]
+ else
+ if [ "${print_p}" ]
then
echo " if (${print_p})"
echo " fprintf_unfiltered (gdb_stdlog,"
@@ -1107,10 +1231,15 @@ do
echo " \"gdbarch_update: ${macro} = ${fmt}\\n\","
echo " ${print});"
fi
- ;;
- esac
+ fi
+ echo "#endif"
done
-echo "}"
+cat <<EOF
+ fprintf_unfiltered (gdb_stdlog,
+ "gdbarch_update: GDB_MULTI_ARCH = %d\\n",
+ GDB_MULTI_ARCH);
+}
+EOF
# GET/SET
@@ -1127,8 +1256,22 @@ EOF
echo ""
function_list | while do_read # eval read $read
do
- case "${class}" in
- "f" )
+ if class_is_predicate_p
+ then
+ echo ""
+ echo "int"
+ echo "gdbarch_${function}_p (struct gdbarch *gdbarch)"
+ echo "{"
+ if [ "${valid_p}" ]
+ then
+ echo " return ${valid_p};"
+ else
+ echo "#error \"gdbarch_${function}_p: not defined\""
+ fi
+ echo "}"
+ fi
+ if class_is_function_p
+ then
echo ""
echo "${returntype}"
if [ "${formal}" = "void" ]
@@ -1138,19 +1281,6 @@ do
echo "gdbarch_${function} (struct gdbarch *gdbarch, ${formal})"
fi
echo "{"
- if default_is_fallback_p && [ "${default}" != "0" ]
- then
- echo " if (GDB_MULTI_ARCH == 0)"
- if [ "${returntype}" = "void" ]
- then
- echo " {"
- echo " ${default} (${actual});"
- echo " return;"
- echo " }"
- else
- echo " return ${default} (${actual});"
- fi
- fi
echo " if (gdbarch->${function} == 0)"
echo " internal_error (\"gdbarch: gdbarch_${function} invalid\");"
echo " if (gdbarch_debug >= 2)"
@@ -1170,8 +1300,8 @@ do
echo "{"
echo " gdbarch->${function} = ${function};"
echo "}"
- ;;
- "v" )
+ elif class_is_variable_p
+ then
echo ""
echo "${returntype}"
echo "gdbarch_${function} (struct gdbarch *gdbarch)"
@@ -1183,9 +1313,9 @@ do
then
echo " if (${invalid_p})"
echo " internal_error (\"gdbarch: gdbarch_${function} invalid\");"
- elif [ "${default}" ]
+ elif [ "${predefault}" ]
then
- echo " if (gdbarch->${function} == ${default})"
+ echo " if (gdbarch->${function} == ${predefault})"
echo " internal_error (\"gdbarch: gdbarch_${function} invalid\");"
fi
echo " if (gdbarch_debug >= 2)"
@@ -1199,8 +1329,8 @@ do
echo "{"
echo " gdbarch->${function} = ${function};"
echo "}"
- ;;
- "i" )
+ elif class_is_info_p
+ then
echo ""
echo "${returntype}"
echo "gdbarch_${function} (struct gdbarch *gdbarch)"
@@ -1209,8 +1339,7 @@ do
echo " fprintf_unfiltered (gdb_stdlog, \"gdbarch_${function} called\n\");"
echo " return gdbarch->${function};"
echo "}"
- ;;
- esac
+ fi
done
# All the trailing guff
@@ -1953,6 +2082,7 @@ generic_register_convertible_not (num)
return 0;
}
+
/* Disassembler */
/* Pointer to the target-dependent disassembly function. */
@@ -1981,13 +2111,6 @@ set_gdbarch_from_file (abfd)
}
-#if defined (CALL_DUMMY)
-/* FIXME - this should go away */
-LONGEST call_dummy_words[] = CALL_DUMMY;
-int sizeof_call_dummy_words = sizeof (call_dummy_words);
-#endif
-
-
/* Initialize the current architecture. */
void
initialize_current_architecture ()
diff --git a/gdb/gdbcmd.h b/gdb/gdbcmd.h
index d01e5e56743..489b31cff04 100644
--- a/gdb/gdbcmd.h
+++ b/gdb/gdbcmd.h
@@ -104,24 +104,21 @@ extern struct cmd_list_element *setchecklist;
extern struct cmd_list_element *showchecklist;
-extern void
-execute_user_command PARAMS ((struct cmd_list_element *, char *));
+extern void execute_user_command (struct cmd_list_element *, char *);
-extern void
-execute_command PARAMS ((char *, int));
+extern void execute_command (char *, int);
-enum command_control_type
-execute_control_command PARAMS ((struct command_line *));
+enum command_control_type execute_control_command (struct command_line *);
extern void print_command_line (struct command_line *, unsigned int,
struct ui_file *);
#ifdef UI_OUT
-extern void print_command_lines PARAMS ((struct ui_out *,
- struct command_line *, unsigned int));
+extern void print_command_lines (struct ui_out *,
+ struct command_line *, unsigned int);
#endif
-extern char **noop_completer PARAMS ((char *, char *));
+extern char **noop_completer (char *, char *);
-extern char **filename_completer PARAMS ((char *, char *));
+extern char **filename_completer (char *, char *);
#endif /* !defined (GDBCMD_H) */
diff --git a/gdb/gdbcore.h b/gdb/gdbcore.h
index e8e395384f9..bdf14c264a8 100644
--- a/gdb/gdbcore.h
+++ b/gdb/gdbcore.h
@@ -29,67 +29,63 @@
ERR nonzero means get error if there is none specified;
otherwise return 0 in that case. */
-extern char *get_exec_file PARAMS ((int err));
+extern char *get_exec_file (int err);
/* Nonzero if there is a core file. */
-extern int have_core_file_p PARAMS ((void));
+extern int have_core_file_p (void);
/* Read "memory data" from whatever target or inferior we have.
Returns zero if successful, errno value if not. EIO is used for
address out of bounds. If breakpoints are inserted, returns shadow
contents, not the breakpoints themselves. From breakpoint.c. */
-extern int read_memory_nobpt PARAMS ((CORE_ADDR memaddr, char *myaddr,
- unsigned len));
+extern int read_memory_nobpt (CORE_ADDR memaddr, char *myaddr, unsigned len);
/* Report a memory error with error(). */
-extern void memory_error PARAMS ((int status, CORE_ADDR memaddr));
+extern void memory_error (int status, CORE_ADDR memaddr);
/* Like target_read_memory, but report an error if can't read. */
-extern void read_memory PARAMS ((CORE_ADDR memaddr, char *myaddr, int len));
-
-extern void read_memory_section PARAMS ((CORE_ADDR memaddr, char *myaddr,
- int len, asection * bfd_section));
+extern void read_memory (CORE_ADDR memaddr, char *myaddr, int len);
/* Read an integer from debugged memory, given address and number of
bytes. */
-extern LONGEST read_memory_integer PARAMS ((CORE_ADDR memaddr, int len));
+extern LONGEST read_memory_integer (CORE_ADDR memaddr, int len);
/* Read an unsigned integer from debugged memory, given address and
number of bytes. */
-extern ULONGEST read_memory_unsigned_integer PARAMS ((CORE_ADDR memaddr, int len));
+extern ULONGEST read_memory_unsigned_integer (CORE_ADDR memaddr, int len);
/* Read a null-terminated string from the debuggee's memory, given address,
* a buffer into which to place the string, and the maximum available space */
-extern void read_memory_string PARAMS ((CORE_ADDR, char *, int));
+extern void read_memory_string (CORE_ADDR, char *, int);
/* This takes a char *, not void *. This is probably right, because
passing in an int * or whatever is wrong with respect to
byteswapping, alignment, different sizes for host vs. target types,
etc. */
-extern void write_memory PARAMS ((CORE_ADDR memaddr, char *myaddr, int len));
+extern void write_memory (CORE_ADDR memaddr, char *myaddr, int len);
-extern void generic_search PARAMS ((int len, char *data, char *mask,
- CORE_ADDR startaddr, int increment,
- CORE_ADDR lorange, CORE_ADDR hirange,
- CORE_ADDR * addr_found, char *data_found));
+extern void generic_search (int len, char *data, char *mask,
+ CORE_ADDR startaddr, int increment,
+ CORE_ADDR lorange, CORE_ADDR hirange,
+ CORE_ADDR * addr_found, char *data_found);
/* Hook for `exec_file_command' command to call. */
-extern void (*exec_file_display_hook) PARAMS ((char *filename));
+extern void (*exec_file_display_hook) (char *filename);
/* Hook for "file_command", which is more useful than above
(because it is invoked AFTER symbols are read, not before) */
-extern void (*file_changed_hook) PARAMS ((char *filename));
+extern void (*file_changed_hook) (char *filename);
-extern void specify_exec_file_hook PARAMS ((void (*hook) (char *filename)));
+extern void specify_exec_file_hook (void (*hook) (char *filename));
/* Binary File Diddlers for the exec and core files */
@@ -100,17 +96,17 @@ extern bfd *exec_bfd;
extern int write_files;
-extern void core_file_command PARAMS ((char *filename, int from_tty));
+extern void core_file_command (char *filename, int from_tty);
-extern void exec_file_attach PARAMS ((char *filename, int from_tty));
+extern void exec_file_attach (char *filename, int from_tty);
-extern void exec_file_command PARAMS ((char *filename, int from_tty));
+extern void exec_file_command (char *filename, int from_tty);
-extern void validate_files PARAMS ((void));
+extern void validate_files (void);
-extern CORE_ADDR register_addr PARAMS ((int regno, CORE_ADDR blockend));
+extern CORE_ADDR register_addr (int regno, CORE_ADDR blockend);
-extern void registers_fetched PARAMS ((void));
+extern void registers_fetched (void);
#if !defined (KERNEL_U_ADDR)
extern CORE_ADDR kernel_u_addr;
@@ -125,7 +121,7 @@ extern struct target_ops core_ops;
extern char *gnutarget;
-extern void set_gnutarget PARAMS ((char *));
+extern void set_gnutarget (char *);
/* Structure to keep track of core register reading functions for
various core file types. */
@@ -147,13 +143,13 @@ struct core_fns
another file). Returns nonzero if the handler recognizes the
format, zero otherwise. */
- int (*check_format) PARAMS ((bfd *));
+ int (*check_format) (bfd *);
/* Core file handler function to call to ask if it can handle a
given core file format or not. Returns zero if it can't,
nonzero otherwise. */
- int (*core_sniffer) PARAMS ((struct core_fns *, bfd *));
+ int (*core_sniffer) (struct core_fns *, bfd *);
/* Extract the register values out of the core file and store them where
`read_register' will find them.
@@ -176,9 +172,9 @@ struct core_fns
registers in a large upage-plus-stack ".reg" section. Original upage
address X is at location core_reg_sect+x+reg_addr. */
- void (*core_read_registers) PARAMS ((char *core_reg_sect,
- unsigned core_reg_size,
- int which, CORE_ADDR reg_addr));
+ void (*core_read_registers) (char *core_reg_sect,
+ unsigned core_reg_size,
+ int which, CORE_ADDR reg_addr);
/* Finds the next struct core_fns. They are allocated and initialized
in whatever module implements the functions pointed to; an
@@ -188,8 +184,8 @@ struct core_fns
};
-extern void add_core_fns PARAMS ((struct core_fns * cf));
-extern int default_core_sniffer PARAMS ((struct core_fns *cf, bfd *abfd));
-extern int default_check_format PARAMS ((bfd *abfd));
+extern void add_core_fns (struct core_fns *cf);
+extern int default_core_sniffer (struct core_fns *cf, bfd * abfd);
+extern int default_check_format (bfd * abfd);
#endif /* !defined (GDBCORE_H) */
diff --git a/gdb/gdbserver/low-nbsd.c b/gdb/gdbserver/low-nbsd.c
index 054017cebe1..4aa3409e30f 100644
--- a/gdb/gdbserver/low-nbsd.c
+++ b/gdb/gdbserver/low-nbsd.c
@@ -46,7 +46,30 @@ extern char **environ;
extern int inferior_pid;
void quit (), perror_with_name ();
-#ifdef TM_I386_H
+#define RF(dst, src) \
+ memcpy(&registers[REGISTER_BYTE(dst)], &src, sizeof(src))
+
+#define RS(src, dst) \
+ memcpy(&dst, &registers[REGISTER_BYTE(src)], sizeof(dst))
+
+#ifdef __i386__
+struct env387
+ {
+ unsigned short control;
+ unsigned short r0;
+ unsigned short status;
+ unsigned short r1;
+ unsigned short tag;
+ unsigned short r2;
+ unsigned long eip;
+ unsigned short code_seg;
+ unsigned short opcode;
+ unsigned long operand;
+ unsigned short operand_seg;
+ unsigned short r3;
+ unsigned char regs[8][10];
+ };
+
/* i386_register_raw_size[i] is the number of bytes of storage in the
actual machine representation for register i. */
int i386_register_raw_size[MAX_NUM_REGS] = {
@@ -81,8 +104,14 @@ initialize_arch()
}
}
}
+#endif /* !__i386__ */
-#endif
+#ifdef __powerpc__
+static void
+initialize_arch()
+{
+}
+#endif /* !__powerpc__ */
/* Start an inferior process and returns its pid.
@@ -183,6 +212,8 @@ myresume (step, signal)
perror_with_name ("ptrace");
}
+
+#ifdef __i386__
/* Fetch one or more registers from the inferior. REGNO == -1 to get
them all. We actually fetch more than requested, when convenient,
marking them as valid so we won't fetch them again. */
@@ -192,19 +223,47 @@ fetch_inferior_registers (ignored)
int ignored;
{
struct reg inferior_registers;
- struct fpreg inferior_fp_registers;
+ struct env387 inferior_fp_registers;
ptrace (PT_GETREGS, inferior_pid,
(PTRACE_ARG3_TYPE) &inferior_registers, 0);
- memcpy (&registers[REGISTER_BYTE(0)], &inferior_registers,
- sizeof(inferior_registers));
-
-#if 0 /* def FP0_REGNUM */
ptrace (PT_GETFPREGS, inferior_pid,
(PTRACE_ARG3_TYPE) &inferior_fp_registers, 0);
- memcpy (&registers[REGISTER_BYTE(FP0_REGNUM)], &inferior_fp_registers,
- sizeof(inferior_fp_registers));
-#endif
+
+ RF ( 0, inferior_registers.r_eax);
+ RF ( 1, inferior_registers.r_ecx);
+ RF ( 2, inferior_registers.r_edx);
+ RF ( 3, inferior_registers.r_ebx);
+ RF ( 4, inferior_registers.r_esp);
+ RF ( 5, inferior_registers.r_ebp);
+ RF ( 6, inferior_registers.r_esi);
+ RF ( 7, inferior_registers.r_edi);
+ RF ( 8, inferior_registers.r_eip);
+ RF ( 9, inferior_registers.r_eflags);
+ RF (10, inferior_registers.r_cs);
+ RF (11, inferior_registers.r_ss);
+ RF (12, inferior_registers.r_ds);
+ RF (13, inferior_registers.r_es);
+ RF (14, inferior_registers.r_fs);
+ RF (15, inferior_registers.r_gs);
+
+ RF (FP0_REGNUM, inferior_fpregisters.regs[0]);
+ RF (FP0_REGNUM + 1, inferior_fpregisters.regs[1]);
+ RF (FP0_REGNUM + 2, inferior_fpregisters.regs[2]);
+ RF (FP0_REGNUM + 3, inferior_fpregisters.regs[3]);
+ RF (FP0_REGNUM + 4, inferior_fpregisters.regs[4]);
+ RF (FP0_REGNUM + 5, inferior_fpregisters.regs[5]);
+ RF (FP0_REGNUM + 6, inferior_fpregisters.regs[6]);
+ RF (FP0_REGNUM + 7, inferior_fpregisters.regs[7]);
+
+ RF (FCTRL_REGNUM, inferior_fpregisters.control);
+ RF (FSTAT_REGNUM, inferior_fpregisters.status);
+ RF (FTAG_REGNUM, inferior_fpregisters.tag);
+ RF (FCS_REGNUM, inferior_fpregisters.code_seg);
+ RF (FCOFF_REGNUM, inferior_fpregisters.eip);
+ RF (FDS_REGNUM, inferior_fpregisters.operand_seg);
+ RF (FDOFF_REGNUM, inferior_fpregisters.operand);
+ RF (FOP_REGNUM, inferior_fpregisters.opcode);
}
/* Store our register values back into the inferior.
@@ -216,20 +275,109 @@ store_inferior_registers (ignored)
int ignored;
{
struct reg inferior_registers;
- struct fpreg inferior_fp_registers;
+ struct env387 inferior_fp_registers;
+
+ RS ( 0, inferior_registers.r_eax);
+ RS ( 1, inferior_registers.r_ecx);
+ RS ( 2, inferior_registers.r_edx);
+ RS ( 3, inferior_registers.r_ebx);
+ RS ( 4, inferior_registers.r_esp);
+ RS ( 5, inferior_registers.r_ebp);
+ RS ( 6, inferior_registers.r_esi);
+ RS ( 7, inferior_registers.r_edi);
+ RS ( 8, inferior_registers.r_eip);
+ RS ( 9, inferior_registers.r_eflags);
+ RS (10, inferior_registers.r_cs);
+ RS (11, inferior_registers.r_ss);
+ RS (12, inferior_registers.r_ds);
+ RS (13, inferior_registers.r_es);
+ RS (14, inferior_registers.r_fs);
+ RS (15, inferior_registers.r_gs);
+
+ RS (FP0_REGNUM, inferior_fpregisters.regs[0]);
+ RS (FP0_REGNUM + 1, inferior_fpregisters.regs[1]);
+ RS (FP0_REGNUM + 2, inferior_fpregisters.regs[2]);
+ RS (FP0_REGNUM + 3, inferior_fpregisters.regs[3]);
+ RS (FP0_REGNUM + 4, inferior_fpregisters.regs[4]);
+ RS (FP0_REGNUM + 5, inferior_fpregisters.regs[5]);
+ RS (FP0_REGNUM + 6, inferior_fpregisters.regs[6]);
+ RS (FP0_REGNUM + 7, inferior_fpregisters.regs[7]);
+
+ RS (FCTRL_REGNUM, inferior_fpregisters.control);
+ RS (FSTAT_REGNUM, inferior_fpregisters.status);
+ RS (FTAG_REGNUM, inferior_fpregisters.tag);
+ RS (FCS_REGNUM, inferior_fpregisters.code_seg);
+ RS (FCOFF_REGNUM, inferior_fpregisters.eip);
+ RS (FDS_REGNUM, inferior_fpregisters.operand_seg);
+ RS (FDOFF_REGNUM, inferior_fpregisters.operand);
+ RS (FOP_REGNUM, inferior_fpregisters.opcode);
- memcpy (&inferior_registers, &registers[REGISTER_BYTE(0)],
- sizeof(inferior_registers));
ptrace (PT_SETREGS, inferior_pid,
(PTRACE_ARG3_TYPE) &inferior_registers, 0);
-
-#if 0 /* def FP0_REGNUM */
- memcpy (&inferior_fp_registers, &registers[REGISTER_BYTE (FP0_REGNUM)],
- sizeof (inferior_fp_registers));
ptrace (PT_SETFPREGS, inferior_pid,
(PTRACE_ARG3_TYPE) &inferior_fp_registers, 0);
-#endif
}
+#endif /* !__i386__ */
+
+#ifdef __powerpc__
+/* Fetch one or more registers from the inferior. REGNO == -1 to get
+ them all. We actually fetch more than requested, when convenient,
+ marking them as valid so we won't fetch them again. */
+
+void
+fetch_inferior_registers (regno)
+ int regno;
+{
+ struct reg inferior_registers;
+ struct fpreg inferior_fp_registers;
+ int i;
+
+ ptrace (PT_GETREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) & inferior_registers, 0);
+ ptrace (PT_GETFPREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) & inferior_fp_registers, 0);
+
+ for (i = 0; i < 32; i++)
+ RF (i, inferior_registers.fixreg[i]);
+ RF (LR_REGNUM, inferior_registers.lr);
+ RF (CR_REGNUM, inferior_registers.cr);
+ RF (XER_REGNUM, inferior_registers.xer);
+ RF (CTR_REGNUM, inferior_registers.ctr);
+ RF (PC_REGNUM, inferior_registers.pc);
+
+ for (i = 0; i < 32; i++)
+ RF (FP0_REGNUM + i, inferior_fp_registers.r_regs[i]);
+}
+
+/* Store our register values back into the inferior.
+ If REGNO is -1, do this for all registers.
+ Otherwise, REGNO specifies which register (so we can save time). */
+
+void
+store_inferior_registers (regno)
+ int regno;
+{
+ struct reg inferior_registers;
+ struct fpreg inferior_fp_registers;
+ int i;
+
+ for (i = 0; i < 32; i++)
+ RS (i, inferior_registers.fixreg[i]);
+ RS (LR_REGNUM, inferior_registers.lr);
+ RS (CR_REGNUM, inferior_registers.cr);
+ RS (XER_REGNUM, inferior_registers.xer);
+ RS (CTR_REGNUM, inferior_registers.ctr);
+ RS (PC_REGNUM, inferior_registers.pc);
+
+ for (i = 0; i < 32; i++)
+ RS (FP0_REGNUM + i, inferior_fp_registers.r_regs[i]);
+
+ ptrace (PT_SETREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) & inferior_registers, 0);
+ ptrace (PT_SETFPREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) & inferior_fp_registers, 0);
+}
+#endif /* !__powerpc__ */
/* NOTE! I tried using PTRACE_READDATA, etc., to read and write memory
in the NEW_SUN_PTRACE case.
diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c
index cd078ccddc9..2b632d6c1fd 100644
--- a/gdb/gdbserver/remote-utils.c
+++ b/gdb/gdbserver/remote-utils.c
@@ -33,6 +33,7 @@
#include <fcntl.h>
int remote_debug = 0;
+struct ui_file *gdb_stdlog;
static int remote_desc;
@@ -487,9 +488,8 @@ prepare_resume_reply (buf, status, signo)
buf = outreg (PC_REGNUM, buf);
buf = outreg (FP_REGNUM, buf);
buf = outreg (SP_REGNUM, buf);
-#ifdef NPC_REGNUM
- buf = outreg (NPC_REGNUM, buf);
-#endif
+ if (NPC_REGNUM >= 0)
+ buf = outreg (NPC_REGNUM, buf);
#ifdef O7_REGNUM
buf = outreg (O7_REGNUM, buf);
#endif
diff --git a/gdb/gdbserver/server.h b/gdb/gdbserver/server.h
index 21e4d68b7b5..90f9bce1b20 100644
--- a/gdb/gdbserver/server.h
+++ b/gdb/gdbserver/server.h
@@ -23,15 +23,15 @@
/* Target-specific functions */
-int create_inferior PARAMS ((char *program, char **allargs));
-void kill_inferior PARAMS ((void));
-void fetch_inferior_registers PARAMS ((int regno));
-void store_inferior_registers PARAMS ((int regno));
-int mythread_alive PARAMS ((int pid));
-void myresume PARAMS ((int step, int signo));
-unsigned char mywait PARAMS ((char *status));
-void read_inferior_memory PARAMS ((CORE_ADDR memaddr, char *myaddr, int len));
-int write_inferior_memory PARAMS ((CORE_ADDR memaddr, char *myaddr, int len));
+int create_inferior (char *program, char **allargs);
+void kill_inferior (void);
+void fetch_inferior_registers (int regno);
+void store_inferior_registers (int regno);
+int mythread_alive (int pid);
+void myresume (int step, int signo);
+unsigned char mywait (char *status);
+void read_inferior_memory (CORE_ADDR memaddr, char *myaddr, int len);
+int write_inferior_memory (CORE_ADDR memaddr, char *myaddr, int len);
int create_inferior ();
void initialize_low ();
@@ -51,27 +51,27 @@ extern int inferior_pid;
/* Functions from remote-utils.c */
-int putpkt PARAMS ((char *buf));
-int getpkt PARAMS ((char *buf));
-void remote_open PARAMS ((char *name));
-void remote_close PARAMS ((void));
-void write_ok PARAMS ((char *buf));
-void write_enn PARAMS ((char *buf));
-void enable_async_io PARAMS ((void));
-void disable_async_io PARAMS ((void));
-void convert_ascii_to_int PARAMS ((char *from, char *to, int n));
-void convert_int_to_ascii PARAMS ((char *from, char *to, int n));
-void prepare_resume_reply PARAMS ((char *buf, char status, unsigned char sig));
+int putpkt (char *buf);
+int getpkt (char *buf);
+void remote_open (char *name);
+void remote_close (void);
+void write_ok (char *buf);
+void write_enn (char *buf);
+void enable_async_io (void);
+void disable_async_io (void);
+void convert_ascii_to_int (char *from, char *to, int n);
+void convert_int_to_ascii (char *from, char *to, int n);
+void prepare_resume_reply (char *buf, char status, unsigned char sig);
-void decode_m_packet PARAMS ((char *from, CORE_ADDR * mem_addr_ptr,
- unsigned int *len_ptr));
-void decode_M_packet PARAMS ((char *from, CORE_ADDR * mem_addr_ptr,
- unsigned int *len_ptr, char *to));
+void decode_m_packet (char *from, CORE_ADDR * mem_addr_ptr,
+ unsigned int *len_ptr);
+void decode_M_packet (char *from, CORE_ADDR * mem_addr_ptr,
+ unsigned int *len_ptr, char *to);
/* Functions from utils.c */
-void perror_with_name PARAMS ((char *string));
+void perror_with_name (char *string);
/* Maximum number of bytes to read/write at once. The value here
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 9909871633d..0f6eef915c5 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -84,16 +84,16 @@ struct extra
int len;
}; /* maximum extention is 128! FIXME */
-static void add_name PARAMS ((struct extra *, char *));
-static void add_mangled_type PARAMS ((struct extra *, struct type *));
+static void add_name (struct extra *, char *);
+static void add_mangled_type (struct extra *, struct type *);
#if 0
-static void cfront_mangle_name PARAMS ((struct type *, int, int));
+static void cfront_mangle_name (struct type *, int, int);
#endif
-static void print_bit_vector PARAMS ((B_TYPE *, int));
-static void print_arg_types PARAMS ((struct type **, int));
-static void dump_fn_fieldlists PARAMS ((struct type *, int));
-static void print_cplus_stuff PARAMS ((struct type *, int));
-static void virtual_base_list_aux PARAMS ((struct type * dclass));
+static void print_bit_vector (B_TYPE *, int);
+static void print_arg_types (struct type **, int);
+static void dump_fn_fieldlists (struct type *, int);
+static void print_cplus_stuff (struct type *, int);
+static void virtual_base_list_aux (struct type *dclass);
/* Alloc a new type structure and fill it with some defaults. If
@@ -2885,7 +2885,7 @@ recursive_dump_type (type, spaces)
obstack_free (&dont_print_type_obstack, NULL);
}
-static void build_gdbtypes PARAMS ((void));
+static void build_gdbtypes (void);
static void
build_gdbtypes ()
{
@@ -3045,7 +3045,7 @@ build_gdbtypes ()
}
-extern void _initialize_gdbtypes PARAMS ((void));
+extern void _initialize_gdbtypes (void);
void
_initialize_gdbtypes ()
{
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index 36f775a247a..19fd152f5ed 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -654,8 +654,7 @@ struct badness_vector
extern const struct cplus_struct_type cplus_struct_default;
-extern void
-allocate_cplus_struct_type PARAMS ((struct type *));
+extern void allocate_cplus_struct_type (struct type *);
#define INIT_CPLUS_SPECIFIC(type) \
(TYPE_CPLUS_SPECIFIC(type)=(struct cplus_struct_type*)&cplus_struct_default)
@@ -946,132 +945,99 @@ extern struct type *builtin_type_f_void;
? obstack_alloc (&TYPE_OBJFILE (t) -> type_obstack, size) \
: xmalloc (size))
-extern struct type *
- alloc_type PARAMS ((struct objfile *));
+extern struct type *alloc_type (struct objfile *);
-extern struct type *
- init_type PARAMS ((enum type_code, int, int, char *, struct objfile *));
+extern struct type *init_type (enum type_code, int, int, char *,
+ struct objfile *);
-extern struct type *
- lookup_reference_type PARAMS ((struct type *));
+extern struct type *lookup_reference_type (struct type *);
-extern struct type *
- make_reference_type PARAMS ((struct type *, struct type **));
+extern struct type *make_reference_type (struct type *, struct type **);
-extern struct type *
- make_cv_type PARAMS ((int, int, struct type *, struct type **));
+extern struct type *make_cv_type (int, int, struct type *, struct type **);
-extern struct type *
- lookup_member_type PARAMS ((struct type *, struct type *));
+extern struct type *lookup_member_type (struct type *, struct type *);
extern void
-smash_to_method_type PARAMS ((struct type *, struct type *, struct type *,
- struct type **));
+smash_to_method_type (struct type *, struct type *, struct type *,
+ struct type **);
extern void
-smash_to_member_type PARAMS ((struct type *, struct type *, struct type *));
+smash_to_member_type (struct type *, struct type *, struct type *);
-extern struct type *
- allocate_stub_method PARAMS ((struct type *));
+extern struct type *allocate_stub_method (struct type *);
-extern char *
- type_name_no_tag PARAMS ((const struct type *));
+extern char *type_name_no_tag (const struct type *);
-extern struct type *
- lookup_struct_elt_type PARAMS ((struct type *, char *, int));
+extern struct type *lookup_struct_elt_type (struct type *, char *, int);
-extern struct type *
- make_pointer_type PARAMS ((struct type *, struct type **));
+extern struct type *make_pointer_type (struct type *, struct type **);
-extern struct type *
- lookup_pointer_type PARAMS ((struct type *));
+extern struct type *lookup_pointer_type (struct type *);
-extern struct type *
- make_function_type PARAMS ((struct type *, struct type **));
+extern struct type *make_function_type (struct type *, struct type **);
-extern struct type *
- lookup_function_type PARAMS ((struct type *));
+extern struct type *lookup_function_type (struct type *);
-extern struct type *
- create_range_type PARAMS ((struct type *, struct type *, int, int));
+extern struct type *create_range_type (struct type *, struct type *, int,
+ int);
-extern struct type *
- create_array_type PARAMS ((struct type *, struct type *, struct type *));
+extern struct type *create_array_type (struct type *, struct type *,
+ struct type *);
-extern struct type *
- create_string_type PARAMS ((struct type *, struct type *));
+extern struct type *create_string_type (struct type *, struct type *);
-extern struct type *create_set_type PARAMS ((struct type *, struct type *));
+extern struct type *create_set_type (struct type *, struct type *);
-extern int chill_varying_type PARAMS ((struct type *));
+extern int chill_varying_type (struct type *);
-extern struct type *
- lookup_unsigned_typename PARAMS ((char *));
+extern struct type *lookup_unsigned_typename (char *);
-extern struct type *
- lookup_signed_typename PARAMS ((char *));
+extern struct type *lookup_signed_typename (char *);
-extern struct type *
- check_typedef PARAMS ((struct type *));
+extern struct type *check_typedef (struct type *);
#define CHECK_TYPEDEF(TYPE) (TYPE) = check_typedef (TYPE)
-extern void
-check_stub_method PARAMS ((struct type *, int, int));
+extern void check_stub_method (struct type *, int, int);
-extern struct type *
- lookup_primitive_typename PARAMS ((char *));
+extern struct type *lookup_primitive_typename (char *);
-extern char *
- gdb_mangle_name PARAMS ((struct type *, int, int));
+extern char *gdb_mangle_name (struct type *, int, int);
-extern struct type *
- builtin_type PARAMS ((char **));
+extern struct type *builtin_type (char **);
-extern struct type *
- lookup_typename PARAMS ((char *, struct block *, int));
+extern struct type *lookup_typename (char *, struct block *, int);
-extern struct type *
- lookup_template_type PARAMS ((char *, struct type *, struct block *));
+extern struct type *lookup_template_type (char *, struct type *,
+ struct block *);
-extern struct type *
- lookup_fundamental_type PARAMS ((struct objfile *, int));
+extern struct type *lookup_fundamental_type (struct objfile *, int);
-extern void
-fill_in_vptr_fieldno PARAMS ((struct type *));
+extern void fill_in_vptr_fieldno (struct type *);
-extern int get_destructor_fn_field PARAMS ((struct type *, int *, int *));
+extern int get_destructor_fn_field (struct type *, int *, int *);
-extern int get_discrete_bounds PARAMS ((struct type *, LONGEST *, LONGEST *));
+extern int get_discrete_bounds (struct type *, LONGEST *, LONGEST *);
-extern int
-is_ancestor PARAMS ((struct type *, struct type *));
+extern int is_ancestor (struct type *, struct type *);
-extern int
-has_vtable PARAMS ((struct type *));
+extern int has_vtable (struct type *);
-extern struct type *
- primary_base_class PARAMS ((struct type *));
+extern struct type *primary_base_class (struct type *);
-extern struct type **
- virtual_base_list PARAMS ((struct type *));
+extern struct type **virtual_base_list (struct type *);
-extern int
-virtual_base_list_length PARAMS ((struct type *));
-extern int
-virtual_base_list_length_skip_primaries PARAMS ((struct type *));
+extern int virtual_base_list_length (struct type *);
+extern int virtual_base_list_length_skip_primaries (struct type *);
-extern int
-virtual_base_index PARAMS ((struct type *, struct type *));
-extern int
-virtual_base_index_skip_primaries PARAMS ((struct type *, struct type *));
+extern int virtual_base_index (struct type *, struct type *);
+extern int virtual_base_index_skip_primaries (struct type *, struct type *);
-extern int
-class_index_in_primary_list PARAMS ((struct type *));
+extern int class_index_in_primary_list (struct type *);
-extern int
-count_virtual_fns PARAMS ((struct type *));
+extern int count_virtual_fns (struct type *);
/* Constants for HP/Taligent ANSI C++ runtime model */
@@ -1139,27 +1105,25 @@ count_virtual_fns PARAMS ((struct type *));
#define NS_POINTER_CONVERSION_BADNESS 10
-extern int
-compare_badness PARAMS ((struct badness_vector *, struct badness_vector *));
+extern int compare_badness (struct badness_vector *, struct badness_vector *);
-extern struct badness_vector *
- rank_function PARAMS ((struct type **, int, struct type **, int));
+extern struct badness_vector *rank_function (struct type **, int,
+ struct type **, int);
-extern int
-rank_one_type PARAMS ((struct type *, struct type *));
+extern int rank_one_type (struct type *, struct type *);
-extern void recursive_dump_type PARAMS ((struct type *, int));
+extern void recursive_dump_type (struct type *, int);
/* printcmd.c */
extern void print_scalar_formatted (char *, struct type *, int, int,
struct ui_file *);
-extern int can_dereference PARAMS ((struct type *));
+extern int can_dereference (struct type *);
-extern int is_integral_type PARAMS ((struct type *));
+extern int is_integral_type (struct type *);
-extern void maintenance_print_type PARAMS ((char *, int));
+extern void maintenance_print_type (char *, int);
/* typeprint.c */
diff --git a/gdb/go32-nat.c b/gdb/go32-nat.c
index c839d11b6d9..6668f06e4e4 100644
--- a/gdb/go32-nat.c
+++ b/gdb/go32-nat.c
@@ -879,7 +879,7 @@ go32_handle_nonaligned_watchpoint (wp_op what, CORE_ADDR waddr, CORE_ADDR addr,
else if (what == wp_count)
rv++;
else
- status = -1;
+ status = EINVAL;
/* We keep the loop going even after a failure, because some of
the other aligned watchpoints might still succeed, e.g. if
they watch addresses that are already watched, and thus just
@@ -1055,7 +1055,7 @@ go32_insert_hw_breakpoint (CORE_ADDR addr, void *shadow ATTRIBUTE_UNUSED)
}
SHOW_DR (insert_hw, 0);
- return i < 4 ? 0 : -1;
+ return i < 4 ? 0 : EBUSY;
}
/* Put the device open on handle FD into either raw or cooked
diff --git a/gdb/gould-tdep.c b/gdb/gould-tdep.c
deleted file mode 100644
index 3c70165a5c0..00000000000
--- a/gdb/gould-tdep.c
+++ /dev/null
@@ -1,310 +0,0 @@
-/* OBSOLETE /* GOULD RISC target-dependent code for GDB, the GNU debugger. */
-/* OBSOLETE Copyright 1986, 1987, 1989, 1991 Free Software Foundation, Inc. */
-/* OBSOLETE */
-/* OBSOLETE This file is part of GDB. */
-/* OBSOLETE */
-/* OBSOLETE This program is free software; you can redistribute it and/or modify */
-/* OBSOLETE it under the terms of the GNU General Public License as published by */
-/* OBSOLETE the Free Software Foundation; either version 2 of the License, or */
-/* OBSOLETE (at your option) any later version. */
-/* OBSOLETE */
-/* OBSOLETE This program is distributed in the hope that it will be useful, */
-/* OBSOLETE but WITHOUT ANY WARRANTY; without even the implied warranty of */
-/* OBSOLETE MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
-/* OBSOLETE GNU General Public License for more details. */
-/* OBSOLETE */
-/* OBSOLETE You should have received a copy of the GNU General Public License */
-/* OBSOLETE along with this program; if not, write to the Free Software */
-/* OBSOLETE Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #include "defs.h" */
-/* OBSOLETE #include "symtab.h" */
-/* OBSOLETE #include "frame.h" */
-/* OBSOLETE #include "gdbcore.h" */
-/* OBSOLETE #if defined GOULD_PN */
-/* OBSOLETE #include "opcode/pn.h" */
-/* OBSOLETE #else */
-/* OBSOLETE #include "opcode/np1.h" */
-/* OBSOLETE #endif */
-/* OBSOLETE */
-/* OBSOLETE /* GOULD RISC instructions are never longer than this many bytes. *x/ */
-/* OBSOLETE #define MAXLEN 4 */
-/* OBSOLETE */
-/* OBSOLETE /* Number of elements in the opcode table. *x/ */
-/* OBSOLETE #define NOPCODES (sizeof gld_opcodes / sizeof gld_opcodes[0]) */
-/* OBSOLETE */
-/* OBSOLETE int */
-/* OBSOLETE gould_frame_chain_valid (chain, fi) */
-/* OBSOLETE CORE_ADDR chain; */
-/* OBSOLETE struct frame_info *fi; /* not used here *x/ */
-/* OBSOLETE { */
-/* OBSOLETE return (chain != 0 && chain != (thisframe)->frame); */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* Both gcc and cc return small structs in registers (i.e. in GDB */
-/* OBSOLETE terminology, small structs don't use the struct return convention). *x/ */
-/* OBSOLETE int */
-/* OBSOLETE gould_use_struct_convention (gcc_p, type) */
-/* OBSOLETE int gcc_p; */
-/* OBSOLETE struct type *type; */
-/* OBSOLETE { */
-/* OBSOLETE return (TYPE_LENGTH(type) > 8); */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE */
-/* OBSOLETE */
-/* OBSOLETE /* Print the GOULD instruction at address MEMADDR in debugged memory, */
-/* OBSOLETE on STREAM. Returns length of the instruction, in bytes. *x/ */
-/* OBSOLETE */
-/* OBSOLETE int */
-/* OBSOLETE gould_print_insn (memaddr, stream) */
-/* OBSOLETE CORE_ADDR memaddr; */
-/* OBSOLETE FILE *stream; */
-/* OBSOLETE { */
-/* OBSOLETE unsigned char buffer[MAXLEN]; */
-/* OBSOLETE register int i; */
-/* OBSOLETE register char *d; */
-/* OBSOLETE register int bestmask; */
-/* OBSOLETE unsigned best; */
-/* OBSOLETE int temp, index, bestlen; */
-/* OBSOLETE */
-/* OBSOLETE read_memory (memaddr, buffer, MAXLEN); */
-/* OBSOLETE */
-/* OBSOLETE bestmask = 0; */
-/* OBSOLETE index = -1; */
-/* OBSOLETE best = 0xffffffff; */
-/* OBSOLETE for (i = 0; i < NOPCODES; i++) */
-/* OBSOLETE { */
-/* OBSOLETE register unsigned int opcode = gld_opcodes[i].opcode; */
-/* OBSOLETE register unsigned int mask = gld_opcodes[i].mask; */
-/* OBSOLETE register unsigned int len = gld_opcodes[i].length; */
-/* OBSOLETE register unsigned int test; */
-/* OBSOLETE */
-/* OBSOLETE /* Get possible opcode bytes into integer *x/ */
-/* OBSOLETE test = buffer[0] << 24; */
-/* OBSOLETE test |= buffer[1] << 16; */
-/* OBSOLETE test |= buffer[2] << 8; */
-/* OBSOLETE test |= buffer[3]; */
-/* OBSOLETE */
-/* OBSOLETE /* Mask with opcode and see if match *x/ */
-/* OBSOLETE if ((opcode & mask) == (test & mask)) */
-/* OBSOLETE { */
-/* OBSOLETE /* See if second or third match *x/ */
-/* OBSOLETE if (index >= 0) */
-/* OBSOLETE { */
-/* OBSOLETE /* Take new one if it looks good *x/ */
-/* OBSOLETE if (bestlen == MAXLEN && len == MAXLEN) */
-/* OBSOLETE { */
-/* OBSOLETE /* See if lower bits matched *x/ */
-/* OBSOLETE if (((bestmask & 3) == 0) && */
-/* OBSOLETE ((mask & 3) != 0)) */
-/* OBSOLETE { */
-/* OBSOLETE bestmask = mask; */
-/* OBSOLETE bestlen = len; */
-/* OBSOLETE best = test; */
-/* OBSOLETE index = i; */
-/* OBSOLETE } */
-/* OBSOLETE } */
-/* OBSOLETE } */
-/* OBSOLETE else */
-/* OBSOLETE { */
-/* OBSOLETE /* First match, save it *x/ */
-/* OBSOLETE bestmask = mask; */
-/* OBSOLETE bestlen = len; */
-/* OBSOLETE best = test; */
-/* OBSOLETE index = i; */
-/* OBSOLETE } */
-/* OBSOLETE } */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* Handle undefined instructions. *x/ */
-/* OBSOLETE if (index < 0) */
-/* OBSOLETE { */
-/* OBSOLETE fprintf (stream, "undefined 0%o",(buffer[0]<<8)+buffer[1]); */
-/* OBSOLETE return 2; */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* Print instruction name *x/ */
-/* OBSOLETE fprintf (stream, "%-12s", gld_opcodes[index].name); */
-/* OBSOLETE */
-/* OBSOLETE /* Adjust if short instruction *x/ */
-/* OBSOLETE if (gld_opcodes[index].length < 4) */
-/* OBSOLETE { */
-/* OBSOLETE best >>= 16; */
-/* OBSOLETE i = 0; */
-/* OBSOLETE } */
-/* OBSOLETE else */
-/* OBSOLETE { */
-/* OBSOLETE i = 16; */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* Dump out instruction arguments *x/ */
-/* OBSOLETE for (d = gld_opcodes[index].args; *d; ++d) */
-/* OBSOLETE { */
-/* OBSOLETE switch (*d) */
-/* OBSOLETE { */
-/* OBSOLETE case 'f': */
-/* OBSOLETE fprintf (stream, "%d", (best >> (7 + i)) & 7); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'r': */
-/* OBSOLETE fprintf (stream, "r%d", (best >> (7 + i)) & 7); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'R': */
-/* OBSOLETE fprintf (stream, "r%d", (best >> (4 + i)) & 7); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'b': */
-/* OBSOLETE fprintf (stream, "b%d", (best >> (7 + i)) & 7); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'B': */
-/* OBSOLETE fprintf (stream, "b%d", (best >> (4 + i)) & 7); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'v': */
-/* OBSOLETE fprintf (stream, "b%d", (best >> (7 + i)) & 7); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'V': */
-/* OBSOLETE fprintf (stream, "b%d", (best >> (4 + i)) & 7); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'X': */
-/* OBSOLETE temp = (best >> 20) & 7; */
-/* OBSOLETE if (temp) */
-/* OBSOLETE fprintf (stream, "r%d", temp); */
-/* OBSOLETE else */
-/* OBSOLETE putc ('0', stream); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'A': */
-/* OBSOLETE temp = (best >> 16) & 7; */
-/* OBSOLETE if (temp) */
-/* OBSOLETE fprintf (stream, "(b%d)", temp); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'S': */
-/* OBSOLETE fprintf (stream, "#%d", best & 0x1f); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'I': */
-/* OBSOLETE fprintf (stream, "#%x", best & 0xffff); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'O': */
-/* OBSOLETE fprintf (stream, "%x", best & 0xffff); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'h': */
-/* OBSOLETE fprintf (stream, "%d", best & 0xfffe); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'd': */
-/* OBSOLETE fprintf (stream, "%d", best & 0xfffc); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'T': */
-/* OBSOLETE fprintf (stream, "%d", (best >> 8) & 0xff); */
-/* OBSOLETE break; */
-/* OBSOLETE case 'N': */
-/* OBSOLETE fprintf (stream, "%d", best & 0xff); */
-/* OBSOLETE break; */
-/* OBSOLETE default: */
-/* OBSOLETE putc (*d, stream); */
-/* OBSOLETE break; */
-/* OBSOLETE } */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* Return length of instruction *x/ */
-/* OBSOLETE return (gld_opcodes[index].length); */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* */
-/* OBSOLETE * Find the number of arguments to a function. */
-/* OBSOLETE *x/ */
-/* OBSOLETE findarg(frame) */
-/* OBSOLETE struct frame_info *frame; */
-/* OBSOLETE { */
-/* OBSOLETE register struct symbol *func; */
-/* OBSOLETE register unsigned pc; */
-/* OBSOLETE */
-/* OBSOLETE #ifdef notdef */
-/* OBSOLETE /* find starting address of frame function *x/ */
-/* OBSOLETE pc = get_pc_function_start (frame->pc); */
-/* OBSOLETE */
-/* OBSOLETE /* find function symbol info *x/ */
-/* OBSOLETE func = find_pc_function (pc); */
-/* OBSOLETE */
-/* OBSOLETE /* call blockframe code to look for match *x/ */
-/* OBSOLETE if (func != NULL) */
-/* OBSOLETE return (func->value.block->nsyms / sizeof(int)); */
-/* OBSOLETE #endif */
-/* OBSOLETE */
-/* OBSOLETE return (-1); */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* */
-/* OBSOLETE * In the case of the NPL, the frame's norminal address is Br2 and the */
-/* OBSOLETE * previous routines frame is up the stack X bytes. Finding out what */
-/* OBSOLETE * 'X' is can be tricky. */
-/* OBSOLETE * */
-/* OBSOLETE * 1.) stored in the code function header xA(Br1). */
-/* OBSOLETE * 2.) must be careful of recurssion. */
-/* OBSOLETE *x/ */
-/* OBSOLETE CORE_ADDR */
-/* OBSOLETE findframe(thisframe) */
-/* OBSOLETE struct frame_info *thisframe; */
-/* OBSOLETE { */
-/* OBSOLETE register CORE_ADDR pointer; */
-/* OBSOLETE CORE_ADDR framechain(); */
-/* OBSOLETE #if 0 */
-/* OBSOLETE struct frame_info *frame; */
-/* OBSOLETE */
-/* OBSOLETE /* Setup toplevel frame structure *x/ */
-/* OBSOLETE frame->pc = read_pc(); */
-/* OBSOLETE frame->next_frame = 0; */
-/* OBSOLETE frame->frame = read_register (SP_REGNUM); /* Br2 *x/ */
-/* OBSOLETE */
-/* OBSOLETE /* Search for this frame (start at current Br2) *x/ */
-/* OBSOLETE do */
-/* OBSOLETE { */
-/* OBSOLETE pointer = framechain(frame); */
-/* OBSOLETE frame->next_frame = frame->frame; */
-/* OBSOLETE frame->frame = pointer; */
-/* OBSOLETE frame->pc = FRAME_SAVED_PC(frame); */
-/* OBSOLETE } */
-/* OBSOLETE while (frame->next_frame != thisframe); */
-/* OBSOLETE #endif */
-/* OBSOLETE */
-/* OBSOLETE pointer = framechain (thisframe); */
-/* OBSOLETE */
-/* OBSOLETE /* stop gap for now, end at __base3 *x/ */
-/* OBSOLETE if (thisframe->pc == 0) */
-/* OBSOLETE return 0; */
-/* OBSOLETE */
-/* OBSOLETE return pointer; */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE /* */
-/* OBSOLETE * Gdb front-end and internal framechain routine. */
-/* OBSOLETE * Go back up stack one level. Tricky... */
-/* OBSOLETE *x/ */
-/* OBSOLETE CORE_ADDR */
-/* OBSOLETE framechain(frame) */
-/* OBSOLETE register struct frame_info *frame; */
-/* OBSOLETE { */
-/* OBSOLETE register CORE_ADDR func, prevsp; */
-/* OBSOLETE register unsigned value; */
-/* OBSOLETE */
-/* OBSOLETE /* Get real function start address from internal frame address *x/ */
-/* OBSOLETE func = get_pc_function_start(frame->pc); */
-/* OBSOLETE */
-/* OBSOLETE /* If no stack given, read register Br1 "(sp)" *x/ */
-/* OBSOLETE if (!frame->frame) */
-/* OBSOLETE prevsp = read_register (SP_REGNUM); */
-/* OBSOLETE else */
-/* OBSOLETE prevsp = frame->frame; */
-/* OBSOLETE */
-/* OBSOLETE /* Check function header, case #2 *x/ */
-/* OBSOLETE value = read_memory_integer (func, 4); */
-/* OBSOLETE if (value) */
-/* OBSOLETE { */
-/* OBSOLETE /* 32bit call push value stored in function header *x/ */
-/* OBSOLETE prevsp += value; */
-/* OBSOLETE } */
-/* OBSOLETE else */
-/* OBSOLETE { */
-/* OBSOLETE /* read half-word from suabr at start of function *x/ */
-/* OBSOLETE prevsp += read_memory_integer (func + 10, 2); */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE return (prevsp); */
-/* OBSOLETE } */
diff --git a/gdb/gould-xdep.c b/gdb/gould-xdep.c
deleted file mode 100644
index 72e17d48cc9..00000000000
--- a/gdb/gould-xdep.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/* OBSOLETE /* Low level interface to ptrace, for GDB when running under Unix. */
-/* OBSOLETE Copyright (C) 1986, 1987, 1989, 1991 Free Software Foundation, Inc. */
-/* OBSOLETE */
-/* OBSOLETE This file is part of GDB. */
-/* OBSOLETE */
-/* OBSOLETE This program is free software; you can redistribute it and/or modify */
-/* OBSOLETE it under the terms of the GNU General Public License as published by */
-/* OBSOLETE the Free Software Foundation; either version 2 of the License, or */
-/* OBSOLETE (at your option) any later version. */
-/* OBSOLETE */
-/* OBSOLETE This program is distributed in the hope that it will be useful, */
-/* OBSOLETE but WITHOUT ANY WARRANTY; without even the implied warranty of */
-/* OBSOLETE MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
-/* OBSOLETE GNU General Public License for more details. */
-/* OBSOLETE */
-/* OBSOLETE You should have received a copy of the GNU General Public License */
-/* OBSOLETE along with this program; if not, write to the Free Software */
-/* OBSOLETE Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *x/ */
-/* OBSOLETE */
-/* OBSOLETE #include "defs.h" */
-/* OBSOLETE #include "frame.h" */
-/* OBSOLETE #include "inferior.h" */
-/* OBSOLETE */
-/* OBSOLETE #include <sys/param.h> */
-/* OBSOLETE #include <sys/dir.h> */
-/* OBSOLETE #include <signal.h> */
-/* OBSOLETE #include <sys/user.h> */
-/* OBSOLETE #include <sys/ioctl.h> */
-/* OBSOLETE #include <fcntl.h> */
-/* OBSOLETE */
-/* OBSOLETE #include "gdbcore.h" */
-/* OBSOLETE */
-/* OBSOLETE #include <sys/file.h> */
-/* OBSOLETE #include "gdb_stat.h" */
-/* OBSOLETE */
-/* OBSOLETE */
-/* OBSOLETE /* Work with core dump and executable files, for GDB. */
-/* OBSOLETE This code would be in corefile.c if it weren't machine-dependent. *x/ */
-/* OBSOLETE */
-/* OBSOLETE void */
-/* OBSOLETE core_file_command (filename, from_tty) */
-/* OBSOLETE char *filename; */
-/* OBSOLETE int from_tty; */
-/* OBSOLETE { */
-/* OBSOLETE int val; */
-/* OBSOLETE extern char registers[]; */
-/* OBSOLETE */
-/* OBSOLETE /* Discard all vestiges of any previous core file */
-/* OBSOLETE and mark data and stack spaces as empty. *x/ */
-/* OBSOLETE */
-/* OBSOLETE if (corefile) */
-/* OBSOLETE free (corefile); */
-/* OBSOLETE corefile = 0; */
-/* OBSOLETE */
-/* OBSOLETE if (corechan >= 0) */
-/* OBSOLETE close (corechan); */
-/* OBSOLETE corechan = -1; */
-/* OBSOLETE */
-/* OBSOLETE data_start = 0; */
-/* OBSOLETE data_end = 0; */
-/* OBSOLETE stack_start = STACK_END_ADDR; */
-/* OBSOLETE stack_end = STACK_END_ADDR; */
-/* OBSOLETE */
-/* OBSOLETE /* Now, if a new core file was specified, open it and digest it. *x/ */
-/* OBSOLETE */
-/* OBSOLETE if (filename) */
-/* OBSOLETE { */
-/* OBSOLETE filename = tilde_expand (filename); */
-/* OBSOLETE make_cleanup (free, filename); */
-/* OBSOLETE */
-/* OBSOLETE if (have_inferior_p ()) */
-/* OBSOLETE error ("To look at a core file, you must kill the program with \"kill\"."); */
-/* OBSOLETE corechan = open (filename, O_RDONLY, 0); */
-/* OBSOLETE if (corechan < 0) */
-/* OBSOLETE perror_with_name (filename); */
-/* OBSOLETE /* 4.2-style (and perhaps also sysV-style) core dump file. *x/ */
-/* OBSOLETE { */
-/* OBSOLETE struct user u; */
-/* OBSOLETE int reg_offset; */
-/* OBSOLETE */
-/* OBSOLETE val = myread (corechan, &u, sizeof u); */
-/* OBSOLETE if (val < 0) */
-/* OBSOLETE perror_with_name (filename); */
-/* OBSOLETE data_start = exec_data_start; */
-/* OBSOLETE */
-/* OBSOLETE data_end = data_start + NBPG * u.u_dsize; */
-/* OBSOLETE stack_start = stack_end - NBPG * u.u_ssize; */
-/* OBSOLETE data_offset = NBPG * UPAGES; */
-/* OBSOLETE stack_offset = NBPG * (UPAGES + u.u_dsize); */
-/* OBSOLETE reg_offset = (int) u.u_ar0 - KERNEL_U_ADDR; */
-/* OBSOLETE */
-/* OBSOLETE /* I don't know where to find this info. */
-/* OBSOLETE So, for now, mark it as not available. *x/ */
-/* OBSOLETE core_aouthdr.a_magic = 0; */
-/* OBSOLETE */
-/* OBSOLETE /* Read the register values out of the core file and store */
-/* OBSOLETE them where `read_register' will find them. *x/ */
-/* OBSOLETE */
-/* OBSOLETE { */
-/* OBSOLETE register int regno; */
-/* OBSOLETE */
-/* OBSOLETE for (regno = 0; regno < NUM_REGS; regno++) */
-/* OBSOLETE { */
-/* OBSOLETE char buf[MAX_REGISTER_RAW_SIZE]; */
-/* OBSOLETE */
-/* OBSOLETE val = lseek (corechan, register_addr (regno, reg_offset), 0); */
-/* OBSOLETE if (val < 0) */
-/* OBSOLETE perror_with_name (filename); */
-/* OBSOLETE */
-/* OBSOLETE val = myread (corechan, buf, sizeof buf); */
-/* OBSOLETE if (val < 0) */
-/* OBSOLETE perror_with_name (filename); */
-/* OBSOLETE supply_register (regno, buf); */
-/* OBSOLETE } */
-/* OBSOLETE } */
-/* OBSOLETE } */
-/* OBSOLETE if (filename[0] == '/') */
-/* OBSOLETE corefile = savestring (filename, strlen (filename)); */
-/* OBSOLETE else */
-/* OBSOLETE { */
-/* OBSOLETE corefile = concat (current_directory, "/", filename, NULL); */
-/* OBSOLETE } */
-/* OBSOLETE */
-/* OBSOLETE flush_cached_frames (); */
-/* OBSOLETE select_frame (get_current_frame (), 0); */
-/* OBSOLETE validate_files (); */
-/* OBSOLETE } */
-/* OBSOLETE else if (from_tty) */
-/* OBSOLETE printf ("No core file now.\n"); */
-/* OBSOLETE } */
diff --git a/gdb/gregset.h b/gdb/gregset.h
new file mode 100644
index 00000000000..3a85397455a
--- /dev/null
+++ b/gdb/gregset.h
@@ -0,0 +1,50 @@
+/* Interface for functions using gregset and fpregset types.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef GDB_GREGSET_T
+#define GDB_GREGSET_T gregset_t
+#endif
+
+#ifndef GDB_FPREGSET_T
+#define GDB_FPREGSET_T fpregset_t
+#endif
+
+typedef GDB_GREGSET_T gdb_gregset_t;
+typedef GDB_FPREGSET_T gdb_fpregset_t;
+
+/* A gregset is a data structure supplied by the native OS containing
+ the general register values of the debugged process. Usually this
+ includes integer registers and control registers. An fpregset is a
+ data structure containing the floating point registers. These data
+ structures were originally a part of the /proc interface, but have
+ been borrowed or copied by other GDB targets, eg. Linux. */
+
+/* Copy register values from the native target gregset / fpregset
+ into GDB's internal register cache. */
+
+extern void supply_gregset (gdb_gregset_t *gregs);
+extern void supply_fpregset (gdb_fpregset_t *fpregs);
+
+/* Copy register values from GDB's register cache into
+ the native target gregset / fpregset. If regno is -1,
+ copy all the registers. */
+
+extern void fill_gregset (gdb_gregset_t *gregs, int regno);
+extern void fill_fpregset (gdb_fpregset_t *fpregs, int regno);
diff --git a/gdb/h8300-tdep.c b/gdb/h8300-tdep.c
index a0bea530d93..af2530cccd8 100644
--- a/gdb/h8300-tdep.c
+++ b/gdb/h8300-tdep.c
@@ -67,7 +67,7 @@ char **h8300_register_names = original_register_names;
/* Local function declarations. */
static CORE_ADDR examine_prologue ();
-static void set_machine_hook PARAMS ((char *filename));
+static void set_machine_hook (char *filename);
void h8300_frame_find_saved_regs ();
diff --git a/gdb/hp-psymtab-read.c b/gdb/hp-psymtab-read.c
index d3d0ff2eeff..f1aa4756e92 100644
--- a/gdb/hp-psymtab-read.c
+++ b/gdb/hp-psymtab-read.c
@@ -38,31 +38,25 @@
/* Forward procedure declarations */
-void hpread_symfile_init
- PARAMS ((struct objfile *));
+void hpread_symfile_init (struct objfile *);
-void
-do_pxdb PARAMS ((bfd *));
+void do_pxdb (bfd *);
-void hpread_build_psymtabs
- PARAMS ((struct objfile *, int));
+void hpread_build_psymtabs (struct objfile *, int);
-void hpread_symfile_finish
- PARAMS ((struct objfile *));
+void hpread_symfile_finish (struct objfile *);
-static union dnttentry *hpread_get_gntt
- PARAMS ((int, struct objfile *));
+static union dnttentry *hpread_get_gntt (int, struct objfile *);
-static unsigned long hpread_get_textlow
- PARAMS ((int, int, struct objfile *, int));
+static unsigned long hpread_get_textlow (int, int, struct objfile *, int);
static struct partial_symtab *hpread_start_psymtab
- PARAMS ((struct objfile *, char *, CORE_ADDR, int,
- struct partial_symbol **, struct partial_symbol **));
+ (struct objfile *, char *, CORE_ADDR, int,
+ struct partial_symbol **, struct partial_symbol **);
static struct partial_symtab *hpread_end_psymtab
- PARAMS ((struct partial_symtab *, char **, int, int, CORE_ADDR,
- struct partial_symtab **, int));
+ (struct partial_symtab *, char **, int, int, CORE_ADDR,
+ struct partial_symtab **, int);
/* End of forward routine declarations */
@@ -601,7 +595,7 @@ scan_procs (curr_pd_p, qPD, max_procs, start_adr, end_adr, pst, vt_bits, objfile
LOC_BLOCK, /* "I am a routine" */
&objfile->global_psymbols,
(qPD[curr_pd].adrStart + /* Starting address of rtn */
- ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT)),
+ ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))),
0, /* core addr?? */
trans_lang ((enum hp_language) qPD[curr_pd].language),
objfile);
@@ -614,7 +608,7 @@ scan_procs (curr_pd_p, qPD, max_procs, start_adr, end_adr, pst, vt_bits, objfile
LOC_BLOCK, /* "I am a routine" */
&objfile->static_psymbols,
(qPD[curr_pd].adrStart + /* Starting address of rtn */
- ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT)),
+ ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))),
0, /* core addr?? */
trans_lang ((enum hp_language) qPD[curr_pd].language),
objfile);
@@ -1628,7 +1622,7 @@ hpread_build_psymtabs (objfile, mainline)
(struct partial_symtab **) alloca (dependencies_allocated *
sizeof (struct partial_symtab *));
- old_chain = make_cleanup ((make_cleanup_func) free_objfile, objfile);
+ old_chain = make_cleanup_free_objfile (objfile);
last_source_file = 0;
@@ -1816,7 +1810,7 @@ hpread_build_psymtabs (objfile, mainline)
past_first_source_file = 1;
valu = hpread_get_textlow (i, hp_symnum, objfile, symcount);
- valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
pst = hpread_start_psymtab (objfile,
namestring, valu,
(hp_symnum
@@ -1850,7 +1844,7 @@ hpread_build_psymtabs (objfile, mainline)
/* Now begin a new module and a new psymtab for it */
SET_NAMESTRING (dn_bufp, &namestring, objfile);
valu = hpread_get_textlow (i, hp_symnum, objfile, symcount);
- valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
if (!pst)
{
pst = hpread_start_psymtab (objfile,
@@ -1869,11 +1863,11 @@ hpread_build_psymtabs (objfile, mainline)
/* The beginning of a function. DNTT_TYPE_ENTRY may also denote
a secondary entry point. */
valu = dn_bufp->dfunc.hiaddr + ANOFFSET (objfile->section_offsets,
- SECT_OFF_TEXT);
+ SECT_OFF_TEXT (objfile));
if (valu > texthigh)
texthigh = valu;
valu = dn_bufp->dfunc.lowaddr +
- ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
SET_NAMESTRING (dn_bufp, &namestring, objfile);
if (dn_bufp->dfunc.global)
add_psymbol_to_list (namestring, strlen (namestring),
@@ -1890,11 +1884,11 @@ hpread_build_psymtabs (objfile, mainline)
case DNTT_TYPE_DOC_FUNCTION:
valu = dn_bufp->ddocfunc.hiaddr + ANOFFSET (objfile->section_offsets,
- SECT_OFF_TEXT);
+ SECT_OFF_TEXT (objfile));
if (valu > texthigh)
texthigh = valu;
valu = dn_bufp->ddocfunc.lowaddr +
- ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
SET_NAMESTRING (dn_bufp, &namestring, objfile);
if (dn_bufp->ddocfunc.global)
add_psymbol_to_list (namestring, strlen (namestring),
@@ -1984,7 +1978,7 @@ hpread_build_psymtabs (objfile, mainline)
valu = dn_bufp->dsvar.location;
/* Relocate in case it's in a shared library */
if (storage == LOC_STATIC)
- valu += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA);
+ valu += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
/* Luckily, dvar, svar, typedef, and tagdef all
have their "global" bit in the same place, so it works
@@ -2208,7 +2202,7 @@ hpread_start_psymtab (objfile,
struct partial_symbol **global_syms;
struct partial_symbol **static_syms;
{
- int offset = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ int offset = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
extern void hpread_psymtab_to_symtab ();
struct partial_symtab *result =
start_psymtab_common (objfile, objfile->section_offsets,
@@ -2246,7 +2240,7 @@ hpread_end_psymtab (pst, include_list, num_includes, capping_symbol_offset,
{
int i;
struct objfile *objfile = pst->objfile;
- int offset = ANOFFSET (pst->section_offsets, SECT_OFF_TEXT);
+ int offset = ANOFFSET (pst->section_offsets, SECT_OFF_TEXT (objfile));
#ifdef DUMPING
/* Turn on to see what kind of a psymtab we've built. */
diff --git a/gdb/hp-symtab-read.c b/gdb/hp-symtab-read.c
index dc045a4ef4e..e4c10f5c260 100644
--- a/gdb/hp-symtab-read.c
+++ b/gdb/hp-symtab-read.c
@@ -83,85 +83,73 @@ static struct complaint hpread_unhandled_blockdata_complaint =
/* Forward procedure declarations */
-static unsigned long hpread_get_scope_start
- PARAMS ((sltpointer, struct objfile *));
+static unsigned long hpread_get_scope_start (sltpointer, struct objfile *);
-static unsigned long hpread_get_line
- PARAMS ((sltpointer, struct objfile *));
+static unsigned long hpread_get_line (sltpointer, struct objfile *);
-static CORE_ADDR hpread_get_location
- PARAMS ((sltpointer, struct objfile *));
+static CORE_ADDR hpread_get_location (sltpointer, struct objfile *);
-static void hpread_psymtab_to_symtab_1
- PARAMS ((struct partial_symtab *));
+static void hpread_psymtab_to_symtab_1 (struct partial_symtab *);
-void hpread_psymtab_to_symtab
- PARAMS ((struct partial_symtab *));
+void hpread_psymtab_to_symtab (struct partial_symtab *);
static struct symtab *hpread_expand_symtab
- PARAMS ((struct objfile *, int, int, CORE_ADDR, int,
- struct section_offsets *, char *));
+ (struct objfile *, int, int, CORE_ADDR, int,
+ struct section_offsets *, char *);
-static int hpread_type_translate
- PARAMS ((dnttpointer));
+static int hpread_type_translate (dnttpointer);
-static struct type **hpread_lookup_type
- PARAMS ((dnttpointer, struct objfile *));
+static struct type **hpread_lookup_type (dnttpointer, struct objfile *);
-static struct type *hpread_alloc_type
- PARAMS ((dnttpointer, struct objfile *));
+static struct type *hpread_alloc_type (dnttpointer, struct objfile *);
static struct type *hpread_read_enum_type
- PARAMS ((dnttpointer, union dnttentry *, struct objfile *));
+ (dnttpointer, union dnttentry *, struct objfile *);
static struct type *hpread_read_function_type
- PARAMS ((dnttpointer, union dnttentry *, struct objfile *, int));
+ (dnttpointer, union dnttentry *, struct objfile *, int);
static struct type *hpread_read_doc_function_type
- PARAMS ((dnttpointer, union dnttentry *, struct objfile *, int));
+ (dnttpointer, union dnttentry *, struct objfile *, int);
static struct type *hpread_read_struct_type
- PARAMS ((dnttpointer, union dnttentry *, struct objfile *));
+ (dnttpointer, union dnttentry *, struct objfile *);
-static struct type *hpread_get_nth_template_arg
- PARAMS ((struct objfile *, int));
+static struct type *hpread_get_nth_template_arg (struct objfile *, int);
static struct type *hpread_read_templ_arg_type
- PARAMS ((dnttpointer, union dnttentry *, struct objfile *, char *));
+ (dnttpointer, union dnttentry *, struct objfile *, char *);
static struct type *hpread_read_set_type
- PARAMS ((dnttpointer, union dnttentry *, struct objfile *));
+ (dnttpointer, union dnttentry *, struct objfile *);
static struct type *hpread_read_array_type
- PARAMS ((dnttpointer, union dnttentry * dn_bufp, struct objfile * objfile));
+ (dnttpointer, union dnttentry *dn_bufp, struct objfile *objfile);
static struct type *hpread_read_subrange_type
- PARAMS ((dnttpointer, union dnttentry *, struct objfile *));
+ (dnttpointer, union dnttentry *, struct objfile *);
-static struct type *hpread_type_lookup
- PARAMS ((dnttpointer, struct objfile *));
+static struct type *hpread_type_lookup (dnttpointer, struct objfile *);
static sltpointer hpread_record_lines
- PARAMS ((struct subfile *, sltpointer, sltpointer,
- struct objfile *, CORE_ADDR));
+ (struct subfile *, sltpointer, sltpointer, struct objfile *, CORE_ADDR);
static void hpread_process_one_debug_symbol
- PARAMS ((union dnttentry *, char *, struct section_offsets *,
- struct objfile *, CORE_ADDR, int, char *, int, int *));
+ (union dnttentry *, char *, struct section_offsets *,
+ struct objfile *, CORE_ADDR, int, char *, int, int *);
-static int hpread_get_scope_depth
- PARAMS ((union dnttentry *, struct objfile *, int));
+static int hpread_get_scope_depth (union dnttentry *, struct objfile *, int);
static void fix_static_member_physnames
- PARAMS ((struct type *, char *, struct objfile *));
+ (struct type *, char *, struct objfile *);
static void fixup_class_method_type
- PARAMS ((struct type *, struct type *, struct objfile *));
+ (struct type *, struct type *, struct objfile *);
-static void hpread_adjust_bitoffsets PARAMS ((struct type *, int));
+static void hpread_adjust_bitoffsets (struct type *, int);
static dnttpointer hpread_get_next_skip_over_anon_unions
- PARAMS ((int, dnttpointer, union dnttentry **, struct objfile *));
+ (int, dnttpointer, union dnttentry **, struct objfile *);
/* Global to indicate presence of HP-compiled objects,
in particular, SOM executable file with SOM debug info
@@ -2823,8 +2811,8 @@ hpread_process_one_debug_symbol (dn_bufp, name, section_offsets, objfile,
unsigned long desc;
int type;
CORE_ADDR valu;
- int offset = ANOFFSET (section_offsets, SECT_OFF_TEXT);
- int data_offset = ANOFFSET (section_offsets, SECT_OFF_DATA);
+ int offset = ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
+ int data_offset = ANOFFSET (section_offsets, SECT_OFF_DATA (objfile));
union dnttentry *dn_temp;
dnttpointer hp_type;
struct symbol *sym;
diff --git a/gdb/hp300ux-nat.c b/gdb/hp300ux-nat.c
index b6a6624e700..6a01e33b04b 100644
--- a/gdb/hp300ux-nat.c
+++ b/gdb/hp300ux-nat.c
@@ -35,14 +35,11 @@
#include <sys/file.h>
-static void
-fetch_inferior_register PARAMS ((int, unsigned int));
+static void fetch_inferior_register (int, unsigned int);
-static void
-store_inferior_register_1 PARAMS ((int, unsigned int, int));
+static void store_inferior_register_1 (int, unsigned int, int);
-static void
-store_inferior_register PARAMS ((int, unsigned int));
+static void store_inferior_register (int, unsigned int);
/* Get kernel_u_addr using HPUX-style nlist(). */
CORE_ADDR kernel_u_addr;
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index b9d0a5c266a..20ad6c020e4 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -62,70 +62,70 @@
#define THREAD_INITIAL_FRAME_SYMBOL "__pthread_exit"
#define THREAD_INITIAL_FRAME_SYM_LEN sizeof(THREAD_INITIAL_FRAME_SYMBOL)
-static int extract_5_load PARAMS ((unsigned int));
+static int extract_5_load (unsigned int);
-static unsigned extract_5R_store PARAMS ((unsigned int));
+static unsigned extract_5R_store (unsigned int);
-static unsigned extract_5r_store PARAMS ((unsigned int));
+static unsigned extract_5r_store (unsigned int);
-static void find_dummy_frame_regs PARAMS ((struct frame_info *,
- struct frame_saved_regs *));
+static void find_dummy_frame_regs (struct frame_info *,
+ struct frame_saved_regs *);
-static int find_proc_framesize PARAMS ((CORE_ADDR));
+static int find_proc_framesize (CORE_ADDR);
-static int find_return_regnum PARAMS ((CORE_ADDR));
+static int find_return_regnum (CORE_ADDR);
-struct unwind_table_entry *find_unwind_entry PARAMS ((CORE_ADDR));
+struct unwind_table_entry *find_unwind_entry (CORE_ADDR);
-static int extract_17 PARAMS ((unsigned int));
+static int extract_17 (unsigned int);
-static unsigned deposit_21 PARAMS ((unsigned int, unsigned int));
+static unsigned deposit_21 (unsigned int, unsigned int);
-static int extract_21 PARAMS ((unsigned));
+static int extract_21 (unsigned);
-static unsigned deposit_14 PARAMS ((int, unsigned int));
+static unsigned deposit_14 (int, unsigned int);
-static int extract_14 PARAMS ((unsigned));
+static int extract_14 (unsigned);
-static void unwind_command PARAMS ((char *, int));
+static void unwind_command (char *, int);
-static int low_sign_extend PARAMS ((unsigned int, unsigned int));
+static int low_sign_extend (unsigned int, unsigned int);
-static int sign_extend PARAMS ((unsigned int, unsigned int));
+static int sign_extend (unsigned int, unsigned int);
-static int restore_pc_queue PARAMS ((struct frame_saved_regs *));
+static int restore_pc_queue (struct frame_saved_regs *);
-static int hppa_alignof PARAMS ((struct type *));
+static int hppa_alignof (struct type *);
/* To support multi-threading and stepping. */
-int hppa_prepare_to_proceed PARAMS (());
+int hppa_prepare_to_proceed ();
-static int prologue_inst_adjust_sp PARAMS ((unsigned long));
+static int prologue_inst_adjust_sp (unsigned long);
-static int is_branch PARAMS ((unsigned long));
+static int is_branch (unsigned long);
-static int inst_saves_gr PARAMS ((unsigned long));
+static int inst_saves_gr (unsigned long);
-static int inst_saves_fr PARAMS ((unsigned long));
+static int inst_saves_fr (unsigned long);
-static int pc_in_interrupt_handler PARAMS ((CORE_ADDR));
+static int pc_in_interrupt_handler (CORE_ADDR);
-static int pc_in_linker_stub PARAMS ((CORE_ADDR));
+static int pc_in_linker_stub (CORE_ADDR);
-static int compare_unwind_entries PARAMS ((const void *, const void *));
+static int compare_unwind_entries (const void *, const void *);
-static void read_unwind_info PARAMS ((struct objfile *));
+static void read_unwind_info (struct objfile *);
-static void internalize_unwinds PARAMS ((struct objfile *,
- struct unwind_table_entry *,
- asection *, unsigned int,
- unsigned int, CORE_ADDR));
-static void pa_print_registers PARAMS ((char *, int, int));
+static void internalize_unwinds (struct objfile *,
+ struct unwind_table_entry *,
+ asection *, unsigned int,
+ unsigned int, CORE_ADDR);
+static void pa_print_registers (char *, int, int);
static void pa_strcat_registers (char *, int, int, struct ui_file *);
-static void pa_register_look_aside PARAMS ((char *, int, long *));
-static void pa_print_fp_reg PARAMS ((int));
+static void pa_register_look_aside (char *, int, long *);
+static void pa_print_fp_reg (int);
static void pa_strcat_fp_reg (int, struct ui_file *, enum precision_type);
-static void record_text_segment_lowaddr PARAMS ((bfd *, asection *, void *));
+static void record_text_segment_lowaddr (bfd *, asection *, void *);
typedef struct
{
@@ -146,8 +146,7 @@ extern int hp_som_som_object_present;
extern int exception_catchpoints_are_fragile;
/* This is defined in valops.c. */
-extern value_ptr
- find_function_in_inferior PARAMS ((char *));
+extern value_ptr find_function_in_inferior (char *);
/* Should call_function allocate stack space for a struct return? */
int
@@ -781,7 +780,7 @@ find_proc_framesize (pc)
}
/* Return offset from sp at which rp is saved, or 0 if not saved. */
-static int rp_saved PARAMS ((CORE_ADDR));
+static int rp_saved (CORE_ADDR);
static int
rp_saved (pc)
@@ -1618,7 +1617,7 @@ hppa_pop_frame ()
breakpoint->silent = 1;
/* So we can clean things up. */
- old_chain = make_cleanup ((make_cleanup_func) delete_breakpoint, breakpoint);
+ old_chain = make_cleanup_delete_breakpoint (breakpoint);
/* Start up the inferior. */
clear_proceed_status ();
@@ -2005,11 +2004,11 @@ find_stub_with_shl_get (function, handle)
/* now prepare the arguments for the call */
args[0] = value_from_longest (TYPE_FIELD_TYPE (ftype, 0), 12);
- args[1] = value_from_longest (TYPE_FIELD_TYPE (ftype, 1), SYMBOL_VALUE_ADDRESS (msymbol));
- args[2] = value_from_longest (TYPE_FIELD_TYPE (ftype, 2), endo_buff_addr);
+ args[1] = value_from_pointer (TYPE_FIELD_TYPE (ftype, 1), SYMBOL_VALUE_ADDRESS (msymbol));
+ args[2] = value_from_pointer (TYPE_FIELD_TYPE (ftype, 2), endo_buff_addr);
args[3] = value_from_longest (TYPE_FIELD_TYPE (ftype, 3), TYPE_PROCEDURE);
- args[4] = value_from_longest (TYPE_FIELD_TYPE (ftype, 4), value_return_addr);
- args[5] = value_from_longest (TYPE_FIELD_TYPE (ftype, 5), errno_return_addr);
+ args[4] = value_from_pointer (TYPE_FIELD_TYPE (ftype, 4), value_return_addr);
+ args[5] = value_from_pointer (TYPE_FIELD_TYPE (ftype, 5), errno_return_addr);
/* now call the function */
diff --git a/gdb/hppah-nat.c b/gdb/hppah-nat.c
index 67e507cc348..30e7ab9b920 100644
--- a/gdb/hppah-nat.c
+++ b/gdb/hppah-nat.c
@@ -33,7 +33,7 @@
extern CORE_ADDR text_end;
-static void fetch_register PARAMS ((int));
+static void fetch_register (int);
void
fetch_inferior_registers (regno)
@@ -492,7 +492,7 @@ startup_semaphore_t;
static startup_semaphore_t startup_semaphore;
-extern int parent_attach_all PARAMS ((int, PTRACE_ARG3_TYPE, int));
+extern int parent_attach_all (int, PTRACE_ARG3_TYPE, int);
#ifdef PT_SETTRC
/* This function causes the caller's process to be traced by its
diff --git a/gdb/hpread.c b/gdb/hpread.c
index 4da08e4927d..f49f01e653f 100644
--- a/gdb/hpread.c
+++ b/gdb/hpread.c
@@ -135,77 +135,69 @@ extern struct complaint lbrac_unmatched_complaint;
extern struct complaint lbrac_mismatch_complaint;
-void hpread_symfile_init PARAMS ((struct objfile *));
+void hpread_symfile_init (struct objfile *);
-static struct type *
- hpread_read_array_type PARAMS ((dnttpointer, union dnttentry *, struct objfile *));
+static struct type *hpread_read_array_type (dnttpointer, union dnttentry *,
+ struct objfile *);
-static struct type *hpread_alloc_type
- PARAMS ((dnttpointer, struct objfile *));
+static struct type *hpread_alloc_type (dnttpointer, struct objfile *);
-static struct type **hpread_lookup_type
- PARAMS ((dnttpointer, struct objfile *));
+static struct type **hpread_lookup_type (dnttpointer, struct objfile *);
static struct type *hpread_read_enum_type
- PARAMS ((dnttpointer, union dnttentry *, struct objfile *));
+ (dnttpointer, union dnttentry *, struct objfile *);
static struct type *hpread_read_set_type
- PARAMS ((dnttpointer, union dnttentry *, struct objfile *));
+ (dnttpointer, union dnttentry *, struct objfile *);
static struct type *hpread_read_subrange_type
- PARAMS ((dnttpointer, union dnttentry *, struct objfile *));
+ (dnttpointer, union dnttentry *, struct objfile *);
static struct type *hpread_read_struct_type
- PARAMS ((dnttpointer, union dnttentry *, struct objfile *));
+ (dnttpointer, union dnttentry *, struct objfile *);
-void hpread_build_psymtabs
- PARAMS ((struct objfile *, int));
+void hpread_build_psymtabs (struct objfile *, int);
-void hpread_symfile_finish PARAMS ((struct objfile *));
+void hpread_symfile_finish (struct objfile *);
static struct partial_symtab *hpread_start_psymtab
- PARAMS ((struct objfile *, char *, CORE_ADDR, int,
- struct partial_symbol **, struct partial_symbol **));
+ (struct objfile *, char *, CORE_ADDR, int,
+ struct partial_symbol **, struct partial_symbol **);
static struct partial_symtab *hpread_end_psymtab
- PARAMS ((struct partial_symtab *, char **, int, int, CORE_ADDR,
- struct partial_symtab **, int));
+ (struct partial_symtab *, char **, int, int, CORE_ADDR,
+ struct partial_symtab **, int);
static struct symtab *hpread_expand_symtab
- PARAMS ((struct objfile *, int, int, CORE_ADDR, int,
- struct section_offsets *, char *));
+ (struct objfile *, int, int, CORE_ADDR, int,
+ struct section_offsets *, char *);
static void hpread_process_one_debug_symbol
- PARAMS ((union dnttentry *, char *, struct section_offsets *,
- struct objfile *, CORE_ADDR, int, char *, int));
+ (union dnttentry *, char *, struct section_offsets *,
+ struct objfile *, CORE_ADDR, int, char *, int);
static sltpointer hpread_record_lines
- PARAMS ((struct subfile *, sltpointer, sltpointer,
- struct objfile *, CORE_ADDR));
+ (struct subfile *, sltpointer, sltpointer, struct objfile *, CORE_ADDR);
static struct type *hpread_read_function_type
- PARAMS ((dnttpointer, union dnttentry *, struct objfile *));
+ (dnttpointer, union dnttentry *, struct objfile *);
-static struct type *hpread_type_lookup
- PARAMS ((dnttpointer, struct objfile *));
+static struct type *hpread_type_lookup (dnttpointer, struct objfile *);
-static unsigned long hpread_get_depth
- PARAMS ((sltpointer, struct objfile *));
+static unsigned long hpread_get_depth (sltpointer, struct objfile *);
-static unsigned long hpread_get_line
- PARAMS ((sltpointer, struct objfile *));
+static unsigned long hpread_get_line (sltpointer, struct objfile *);
-static CORE_ADDR hpread_get_location
- PARAMS ((sltpointer, struct objfile *));
+static CORE_ADDR hpread_get_location (sltpointer, struct objfile *);
-static int hpread_type_translate PARAMS ((dnttpointer));
-static unsigned long hpread_get_textlow PARAMS ((int, int, struct objfile *));
-static union dnttentry *hpread_get_gntt PARAMS ((int, struct objfile *));
-static union dnttentry *hpread_get_lntt PARAMS ((int, struct objfile *));
-static union sltentry *hpread_get_slt PARAMS ((int, struct objfile *));
-static void hpread_psymtab_to_symtab PARAMS ((struct partial_symtab *));
-static void hpread_psymtab_to_symtab_1 PARAMS ((struct partial_symtab *));
-static int hpread_has_name PARAMS ((enum dntt_entry_type));
+static int hpread_type_translate (dnttpointer);
+static unsigned long hpread_get_textlow (int, int, struct objfile *);
+static union dnttentry *hpread_get_gntt (int, struct objfile *);
+static union dnttentry *hpread_get_lntt (int, struct objfile *);
+static union sltentry *hpread_get_slt (int, struct objfile *);
+static void hpread_psymtab_to_symtab (struct partial_symtab *);
+static void hpread_psymtab_to_symtab_1 (struct partial_symtab *);
+static int hpread_has_name (enum dntt_entry_type);
/* Initialization for reading native HP C debug symbols from OBJFILE.
@@ -358,7 +350,7 @@ hpread_build_psymtabs (objfile, mainline)
(struct partial_symtab **) alloca (dependencies_allocated *
sizeof (struct partial_symtab *));
- old_chain = make_cleanup (free_objfile, objfile);
+ old_chain = make_cleanup_free_objfile (objfile);
last_source_file = 0;
@@ -466,7 +458,7 @@ hpread_build_psymtabs (objfile, mainline)
past_first_source_file = 1;
valu = hpread_get_textlow (i, hp_symnum, objfile);
- valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
pst = hpread_start_psymtab (objfile,
namestring, valu,
(hp_symnum
@@ -484,7 +476,7 @@ hpread_build_psymtabs (objfile, mainline)
is supposed to be. */
SET_NAMESTRING (dn_bufp, &namestring, objfile);
valu = hpread_get_textlow (i, hp_symnum, objfile);
- valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
if (!pst)
{
pst = hpread_start_psymtab (objfile,
@@ -502,11 +494,11 @@ hpread_build_psymtabs (objfile, mainline)
/* The beginning of a function. DNTT_TYPE_ENTRY may also denote
a secondary entry point. */
valu = dn_bufp->dfunc.hiaddr + ANOFFSET (objfile->section_offsets,
- SECT_OFF_TEXT);
+ SECT_OFF_TEXT (objfile));
if (valu > texthigh)
texthigh = valu;
valu = dn_bufp->dfunc.lowaddr +
- ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
SET_NAMESTRING (dn_bufp, &namestring, objfile);
add_psymbol_to_list (namestring, strlen (namestring),
VAR_NAMESPACE, LOC_BLOCK,
@@ -1775,7 +1767,7 @@ hpread_process_one_debug_symbol (dn_bufp, name, section_offsets, objfile,
unsigned long desc;
int type;
CORE_ADDR valu;
- int offset = ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ int offset = ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
union dnttentry *dn_temp;
dnttpointer hp_type;
struct symbol *sym;
diff --git a/gdb/hpread.h b/gdb/hpread.h
index 2768294829a..dc2a06cf90d 100644
--- a/gdb/hpread.h
+++ b/gdb/hpread.h
@@ -139,13 +139,10 @@ extern struct complaint string_table_offset_complaint;
extern struct complaint lbrac_unmatched_complaint;
extern struct complaint lbrac_mismatch_complaint;
-extern union sltentry *hpread_get_slt
- PARAMS ((int, struct objfile *));
+extern union sltentry *hpread_get_slt (int, struct objfile *);
-extern union dnttentry *hpread_get_lntt
- PARAMS ((int, struct objfile *));
+extern union dnttentry *hpread_get_lntt (int, struct objfile *);
-int hpread_has_name
- PARAMS ((enum dntt_entry_type));
+int hpread_has_name (enum dntt_entry_type);
/* end of hpread.h */
diff --git a/gdb/hpux-thread.c b/gdb/hpux-thread.c
index 28a8d2de9da..f27d12b72f2 100644
--- a/gdb/hpux-thread.c
+++ b/gdb/hpux-thread.c
@@ -46,7 +46,7 @@
extern int child_suppress_run;
extern struct target_ops child_ops; /* target vector for inftarg.c */
-extern void _initialize_hpux_thread PARAMS ((void));
+extern void _initialize_hpux_thread (void);
struct string_map
{
@@ -61,14 +61,13 @@ static int main_pid; /* Real process ID */
static CORE_ADDR P_cma__g_known_threads;
static CORE_ADDR P_cma__g_current_thread;
-static struct cleanup *save_inferior_pid PARAMS ((void));
+static struct cleanup *save_inferior_pid (void);
-static void restore_inferior_pid PARAMS ((int pid));
+static void restore_inferior_pid (int pid);
-static void hpux_thread_resume PARAMS ((int pid, int step,
- enum target_signal signo));
+static void hpux_thread_resume (int pid, int step, enum target_signal signo);
-static void init_hpux_thread_ops PARAMS ((void));
+static void init_hpux_thread_ops (void);
static struct target_ops hpux_thread_ops;
@@ -113,7 +112,7 @@ restore_inferior_pid (pid)
inferior_pid = pid;
}
-static int find_active_thread PARAMS ((void));
+static int find_active_thread (void);
static int cached_thread;
static int cached_active_thread;
@@ -137,7 +136,7 @@ find_active_thread ()
return (cma_thread_get_unique (&tcb.prolog.client_thread) << 16) | main_pid;
}
-static cma__t_int_tcb *find_tcb PARAMS ((int thread));
+static cma__t_int_tcb *find_tcb (int thread);
static cma__t_int_tcb *
find_tcb (thread)
@@ -525,7 +524,7 @@ hpux_thread_create_inferior (exec_file, allargs, env)
*/
/* Saved pointer to previous owner of the new_objfile event. */
-static void (*target_new_objfile_chain) PARAMS ((struct objfile *));
+static void (*target_new_objfile_chain) (struct objfile *);
void
hpux_thread_new_objfile (objfile)
diff --git a/gdb/i386-linux-nat.c b/gdb/i386-linux-nat.c
index 93ea241759f..6a375589175 100644
--- a/gdb/i386-linux-nat.c
+++ b/gdb/i386-linux-nat.c
@@ -35,6 +35,9 @@
#include <sys/reg.h>
#endif
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
/* On Linux, threads are implemented as pseudo-processes, in which
case we may be tracing more than one process at a time. In that
case, inferior_pid will contain the main process ID and the
@@ -123,6 +126,13 @@ int have_ptrace_getxfpregs =
the GETREGS request. I want to avoid changing `infptrace.c' right
now. */
+#ifndef PT_READ_U
+#define PT_READ_U PTRACE_PEEKUSR
+#endif
+#ifndef PT_WRITE_U
+#define PT_WRITE_U PTRACE_POKEUSR
+#endif
+
/* Default the type of the ptrace transfer to int. */
#ifndef PTRACE_XFER_TYPE
#define PTRACE_XFER_TYPE int
@@ -951,6 +961,91 @@ fetch_core_registers (char *core_reg_sect, unsigned core_reg_size,
}
+/* The instruction for a Linux system call is:
+ int $0x80
+ or 0xcd 0x80. */
+
+static const unsigned char linux_syscall[] = { 0xcd, 0x80 };
+
+#define LINUX_SYSCALL_LEN (sizeof linux_syscall)
+
+/* The system call number is stored in the %eax register. */
+#define LINUX_SYSCALL_REGNUM 0 /* %eax */
+
+/* We are specifically interested in the sigreturn and rt_sigreturn
+ system calls. */
+
+#ifndef SYS_sigreturn
+#define SYS_sigreturn 0x77
+#endif
+#ifndef SYS_rt_sigreturn
+#define SYS_rt_sigreturn 0xad
+#endif
+
+/* Offset to saved processor flags, from <asm/sigcontext.h>. */
+#define LINUX_SIGCONTEXT_EFLAGS_OFFSET (64)
+
+/* Resume execution of the inferior process.
+ If STEP is nonzero, single-step it.
+ If SIGNAL is nonzero, give it that signal. */
+
+void
+child_resume (int pid, int step, enum target_signal signal)
+{
+ int request = PTRACE_CONT;
+
+ if (pid == -1)
+ /* Resume all threads. */
+ /* I think this only gets used in the non-threaded case, where "resume
+ all threads" and "resume inferior_pid" are the same. */
+ pid = inferior_pid;
+
+ if (step)
+ {
+ CORE_ADDR pc = read_pc_pid (pid);
+ unsigned char buf[LINUX_SYSCALL_LEN];
+
+ request = PTRACE_SINGLESTEP;
+
+ /* Returning from a signal trampoline is done by calling a
+ special system call (sigreturn or rt_sigreturn, see
+ i386-linux-tdep.c for more information). This system call
+ restores the registers that were saved when the signal was
+ raised, including %eflags. That means that single-stepping
+ won't work. Instead, we'll have to modify the signal context
+ that's about to be restored, and set the trace flag there. */
+
+ /* First check if PC is at a system call. */
+ if (read_memory_nobpt (pc, (char *) buf, LINUX_SYSCALL_LEN) == 0
+ && memcmp (buf, linux_syscall, LINUX_SYSCALL_LEN) == 0)
+ {
+ int syscall = read_register_pid (LINUX_SYSCALL_REGNUM, pid);
+
+ /* Then check the system call number. */
+ if (syscall == SYS_sigreturn || syscall == SYS_rt_sigreturn)
+ {
+ CORE_ADDR sp = read_register (SP_REGNUM);
+ CORE_ADDR addr = sp;
+ unsigned long int eflags;
+
+ if (syscall == SYS_rt_sigreturn)
+ addr = read_memory_integer (sp + 8, 4) + 20;
+
+ /* Set the trace flag in the context that's about to be
+ restored. */
+ addr += LINUX_SIGCONTEXT_EFLAGS_OFFSET;
+ read_memory (addr, (char *) &eflags, 4);
+ eflags |= 0x0100;
+ write_memory (addr, (char *) &eflags, 4);
+ }
+ }
+ }
+
+ if (ptrace (request, pid, 0, target_signal_to_host (signal)) == -1)
+ perror_with_name ("ptrace");
+}
+
+
/* Calling functions in shared libraries. */
/* FIXME: kettenis/2000-03-05: Doesn't this belong in a
target-dependent file? The function
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index 39990db0688..e2ebffa62a1 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -30,21 +30,21 @@
#include "gdbcmd.h"
#include "command.h"
-static long i386_get_frame_setup PARAMS ((CORE_ADDR));
+static long i386_get_frame_setup (CORE_ADDR);
-static void i386_follow_jump PARAMS ((void));
+static void i386_follow_jump (void);
-static void codestream_read PARAMS ((unsigned char *, int));
+static void codestream_read (unsigned char *, int);
-static void codestream_seek PARAMS ((CORE_ADDR));
+static void codestream_seek (CORE_ADDR);
-static unsigned char codestream_fill PARAMS ((int));
+static unsigned char codestream_fill (int);
-CORE_ADDR skip_trampoline_code PARAMS ((CORE_ADDR, char *));
+CORE_ADDR skip_trampoline_code (CORE_ADDR, char *);
static int gdb_print_insn_i386 (bfd_vma, disassemble_info *);
-void _initialize_i386_tdep PARAMS ((void));
+void _initialize_i386_tdep (void);
/* i386_register_byte[i] is the offset into the register file of the
start of register number i. We initialize this from
@@ -84,11 +84,12 @@ static char *valid_flavors[] =
};
static char *disassembly_flavor = att_flavor;
-static void i386_print_register PARAMS ((char *, int, int));
+static void i386_print_register (char *, int, int);
/* This is used to keep the bfd arch_info in sync with the disassembly flavor. */
-static void set_disassembly_flavor_sfunc PARAMS ((char *, int, struct cmd_list_element *));
-static void set_disassembly_flavor PARAMS ((void));
+static void set_disassembly_flavor_sfunc (char *, int,
+ struct cmd_list_element *);
+static void set_disassembly_flavor (void);
/* Stdio style buffering was used to minimize calls to ptrace, but this
buffering did not take into account that the code section being accessed
@@ -938,7 +939,7 @@ _initialize_i386_tdep ()
new_cmd = add_set_enum_cmd ("disassembly-flavor", no_class,
valid_flavors,
- (char *) &disassembly_flavor,
+ &disassembly_flavor,
"Set the disassembly flavor, the valid values are \"att\" and \"intel\", \
and the default value is \"att\".",
&setlist);
diff --git a/gdb/i386aix-nat.c b/gdb/i386aix-nat.c
index d395363375f..03154d262f2 100644
--- a/gdb/i386aix-nat.c
+++ b/gdb/i386aix-nat.c
@@ -52,7 +52,7 @@ extern int errno;
#include "target.h"
-static void fetch_core_registers PARAMS ((char *, unsigned, int, CORE_ADDR));
+static void fetch_core_registers (char *, unsigned, int, CORE_ADDR);
/* this table must line up with REGISTER_NAMES in tm-i386v.h */
diff --git a/gdb/i386bsd-nat.c b/gdb/i386bsd-nat.c
new file mode 100644
index 00000000000..f1182ea4e80
--- /dev/null
+++ b/gdb/i386bsd-nat.c
@@ -0,0 +1,237 @@
+/* Native-dependent code for modern i386 BSD's.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include "defs.h"
+#include "inferior.h"
+
+#include <sys/types.h>
+#include <sys/ptrace.h>
+#include <machine/reg.h>
+#include <machine/frame.h>
+
+#ifdef HAVE_SYS_PROCFS_H
+#include <sys/procfs.h>
+#endif
+
+#ifndef HAVE_GREGSET_T
+typedef struct reg gregset_t;
+#endif
+
+#ifndef HAVE_FPREGSET_T
+typedef struct fpreg fpregset_t;
+#endif
+
+#include "gregset.h"
+
+
+/* In older BSD versions we cannot get at some of the segment
+ registers. FreeBSD for example didn't support the %fs and %gs
+ registers until the 3.0 release. We have autoconf checks for their
+ presence, and deal gracefully with their absence. */
+
+/* Registers we shouldn't try to fetch. */
+#if !defined (CANNOT_FETCH_REGISTER)
+#define CANNOT_FETCH_REGISTER(regno) cannot_fetch_register (regno)
+#endif
+
+/* Registers we shouldn't try to store. */
+#if !defined (CANNOT_STORE_REGISTER)
+#define CANNOT_STORE_REGISTER(regno) cannot_fetch_register (regno)
+#endif
+
+/* Offset to the gregset_t location where REG is stored. */
+#define REG_OFFSET(reg) offsetof (gregset_t, reg)
+
+/* At reg_offset[REGNO] you'll find the offset to the gregset_t
+ location where the GDB register REGNO is stored. Unsupported
+ registers are marked with `-1'. */
+static int reg_offset[] =
+{
+ REG_OFFSET (r_eax),
+ REG_OFFSET (r_ecx),
+ REG_OFFSET (r_edx),
+ REG_OFFSET (r_edx),
+ REG_OFFSET (r_esp),
+ REG_OFFSET (r_ebp),
+ REG_OFFSET (r_esi),
+ REG_OFFSET (r_edi),
+ REG_OFFSET (r_eip),
+ REG_OFFSET (r_eflags),
+ REG_OFFSET (r_cs),
+ REG_OFFSET (r_ss),
+ REG_OFFSET (r_ds),
+ REG_OFFSET (r_es),
+#ifdef HAVE_STRUCT_REG_R_FS
+ REG_OFFSET (r_fs),
+#else
+ -1,
+#endif
+#ifdef HAVE_STRUCT_REG_R_GS
+ REG_OFFSET (r_gs)
+#else
+ -1
+#endif
+};
+
+#define REG_ADDR(regset, regno) ((char *) (regset) + reg_offset[regno])
+
+/* Return nonzero if we shouldn't try to fetch register REGNO. */
+
+static int
+cannot_fetch_register (int regno)
+{
+ return (reg_offset[regno] == -1);
+}
+
+
+/* Transfering the registers between GDB, inferiors and core files. */
+
+/* Fill GDB's register array with the genereal-purpose register values
+ in *GREGSETP. */
+
+void
+supply_gregset (gregset_t *gregsetp)
+{
+ int i;
+
+ for (i = 0; i < NUM_GREGS; i++)
+ {
+ if (CANNOT_FETCH_REGISTER (i))
+ supply_register (i, NULL);
+ else
+ supply_register (i, REG_ADDR (gregsetp, i));
+ }
+}
+
+/* Fill register REGNO (if it is a general-purpose register) in
+ *GREGSETPS with the value in GDB's register array. If REGNO is -1,
+ do this for all registers. */
+
+void
+fill_gregset (gregset_t *gregsetp, int regno)
+{
+ int i;
+
+ for (i = 0; i < NUM_GREGS; i++)
+ if ((regno == -1 || regno == i) && ! CANNOT_STORE_REGISTER (i))
+ memcpy (REG_ADDR (gregsetp, i), &registers[REGISTER_BYTE (i)],
+ REGISTER_RAW_SIZE (i));
+}
+
+#include "i387-nat.h"
+
+/* Fill GDB's register array with the floating-point register values
+ in *FPREGSETP. */
+
+void
+supply_fpregset (fpregset_t *fpregsetp)
+{
+ i387_supply_fsave ((char *) fpregsetp);
+}
+
+/* Fill register REGNO (if it is a floating-point register) in
+ *FPREGSETP with the value in GDB's register array. If REGNO is -1,
+ do this for all registers. */
+
+void
+fill_fpregset (fpregset_t *fpregsetp, int regno)
+{
+ i387_fill_fsave ((char *) fpregsetp, regno);
+}
+
+/* Fetch register REGNO from the inferior. If REGNO is -1, do this
+ for all registers (including the floating point registers). */
+
+void
+fetch_inferior_registers (int regno)
+{
+ gregset_t gregs;
+
+ if (ptrace (PT_GETREGS, inferior_pid, (PTRACE_ARG3_TYPE) &gregs, 0) == -1)
+ perror_with_name ("Couldn't get registers");
+
+ supply_gregset (&gregs);
+
+ if (regno == -1 || regno >= FP0_REGNUM)
+ {
+ fpregset_t fpregs;
+
+ if (ptrace (PT_GETFPREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
+ perror_with_name ("Couldn't get floating point status");
+
+ supply_fpregset (&fpregs);
+ }
+}
+
+/* Store register REGNO back into the inferior. If REGNO is -1, do
+ this for all registers (including the floating point registers). */
+
+void
+store_inferior_registers (int regno)
+{
+ gregset_t gregs;
+
+ if (ptrace (PT_GETREGS, inferior_pid, (PTRACE_ARG3_TYPE) &gregs, 0) == -1)
+ perror_with_name ("Couldn't get registers");
+
+ fill_gregset (&gregs, regno);
+
+ if (ptrace (PT_SETREGS, inferior_pid, (PTRACE_ARG3_TYPE) &gregs, 0) == -1)
+ perror_with_name ("Couldn't write registers");
+
+ if (regno == -1 || regno >= FP0_REGNUM)
+ {
+ fpregset_t fpregs;
+
+ if (ptrace (PT_GETFPREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
+ perror_with_name ("Couldn't get floating point status");
+
+ fill_fpregset (&fpregs, regno);
+
+ if (ptrace (PT_SETFPREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
+ perror_with_name ("Couldn't write floating point status");
+ }
+}
+
+
+/* Support for the user struct. */
+
+/* Return the address register REGNO. BLOCKEND is the value of
+ u.u_ar0, which should point to the registers. */
+
+CORE_ADDR
+register_u_addr (CORE_ADDR blockend, int regno)
+{
+ return (CORE_ADDR) REG_ADDR (blockend, regno);
+}
+
+#include <sys/param.h>
+#include <sys/user.h>
+
+/* Return the size of the user struct. */
+
+int
+kernel_u_size (void)
+{
+ return (sizeof (struct user));
+}
diff --git a/gdb/i386mach-nat.c b/gdb/i386mach-nat.c
index 5ecb103022a..ded044b75b9 100644
--- a/gdb/i386mach-nat.c
+++ b/gdb/i386mach-nat.c
@@ -37,7 +37,7 @@
#include "gdb_stat.h"
#include <sys/core.h>
-static void fetch_core_registers PARAMS ((char *, unsigned, int, CORE_ADDR));
+static void fetch_core_registers (char *, unsigned, int, CORE_ADDR);
void
fetch_inferior_registers (regno)
@@ -129,11 +129,9 @@ fetch_core_registers (core_reg_sect, core_reg_size, which, reg_addr)
break;
case 2:
-#ifdef FP0_REGNUM
memcpy (&registers[REGISTER_BYTE (FP0_REGNUM)],
core_reg_sect,
core_reg_size); /* FIXME, probably bogus */
-#endif
#ifdef FPC_REGNUM
memcpy (&registers[REGISTER_BYTE (FPC_REGNUM)],
&corestr.c_fpu.f_fpstatus.f_ctrl,
diff --git a/gdb/i386v-nat.c b/gdb/i386v-nat.c
index 0bf702c368c..9ae571605b9 100644
--- a/gdb/i386v-nat.c
+++ b/gdb/i386v-nat.c
@@ -134,12 +134,10 @@ static int debug_control_mirror;
static CORE_ADDR address_lookup[DR_LASTADDR - DR_FIRSTADDR + 1];
static int
-i386_insert_aligned_watchpoint PARAMS ((int, CORE_ADDR, CORE_ADDR, int,
- int));
+i386_insert_aligned_watchpoint (int, CORE_ADDR, CORE_ADDR, int, int);
static int
-i386_insert_nonaligned_watchpoint PARAMS ((int, CORE_ADDR, CORE_ADDR, int,
- int));
+i386_insert_nonaligned_watchpoint (int, CORE_ADDR, CORE_ADDR, int, int);
/* Insert a watchpoint. */
@@ -229,12 +227,12 @@ i386_insert_nonaligned_watchpoint (pid, waddr, addr, len, rw)
int size;
int rv;
- static int size_try_array[16] =
+ static int size_try_array[4][4] =
{
- 1, 1, 1, 1, /* trying size one */
- 2, 1, 2, 1, /* trying size two */
- 2, 1, 2, 1, /* trying size three */
- 4, 1, 2, 1 /* trying size four */
+ { 1, 1, 1, 1 }, /* trying size one */
+ { 2, 1, 2, 1 }, /* trying size two */
+ { 2, 1, 2, 1 }, /* trying size three */
+ { 4, 1, 2, 1 } /* trying size four */
};
rv = 0;
@@ -242,8 +240,7 @@ i386_insert_nonaligned_watchpoint (pid, waddr, addr, len, rw)
{
align = addr % 4;
/* Four is the maximum length for 386. */
- size = (len > 4) ? 3 : len - 1;
- size = size_try_array[size * 4 + align];
+ size = size_try_array[len > 4 ? 3 : len - 1][align];
rv = i386_insert_aligned_watchpoint (pid, waddr, addr, size, rw);
if (rv)
diff --git a/gdb/i386v4-nat.c b/gdb/i386v4-nat.c
index 10802cb730b..a2664233e1b 100644
--- a/gdb/i386v4-nat.c
+++ b/gdb/i386v4-nat.c
@@ -31,6 +31,9 @@
#include <sys/procfs.h>
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
/* The /proc interface divides the target machine's register set up into
two different sets, the general register set (gregset) and the floating
point register set (fpregset). For each set, there is an ioctl to get
@@ -89,13 +92,13 @@ static int regmap[] =
/* Prototypes for local functions */
-void fill_gregset PARAMS ((gregset_t *, int));
+void fill_gregset (gregset_t *, int);
-void supply_gregset PARAMS ((gregset_t *));
+void supply_gregset (gregset_t *);
-void supply_fpregset PARAMS ((fpregset_t *));
+void supply_fpregset (fpregset_t *);
-void fill_fpregset PARAMS ((fpregset_t *, int));
+void fill_fpregset (fpregset_t *, int);
/* FIXME: These routine absolutely depends upon (NUM_REGS - NUM_FREGS)
@@ -142,17 +145,65 @@ fill_gregset (gregsetp, regno)
#endif /* HAVE_GREGSET_T */
-#if defined (FP0_REGNUM) && defined (HAVE_FPREGSET_T)
+#if defined (HAVE_FPREGSET_T)
/* Given a pointer to a floating point register set in /proc format
(fpregset_t *), unpack the register contents and supply them as gdb's
idea of the current floating point register values. */
+/* FIXME: Assumes that fpregsetp contains an i387 FSAVE area. */
+static const int freg_offset_map[] =
+{
+#if !defined(FPREGSET_FSAVE_OFFSET)
+#define FPREGSET_FSAVE_OFFSET 0
+#endif
+ FPREGSET_FSAVE_OFFSET + 28 + 0 * 10,
+ FPREGSET_FSAVE_OFFSET + 28 + 1 * 10,
+ FPREGSET_FSAVE_OFFSET + 28 + 2 * 10,
+ FPREGSET_FSAVE_OFFSET + 28 + 3 * 10,
+ FPREGSET_FSAVE_OFFSET + 28 + 4 * 10,
+ FPREGSET_FSAVE_OFFSET + 28 + 5 * 10,
+ FPREGSET_FSAVE_OFFSET + 28 + 6 * 10,
+ FPREGSET_FSAVE_OFFSET + 28 + 7 * 10,
+ FPREGSET_FSAVE_OFFSET + 0,
+ FPREGSET_FSAVE_OFFSET + 4,
+ FPREGSET_FSAVE_OFFSET + 8,
+ FPREGSET_FSAVE_OFFSET + 16,
+ FPREGSET_FSAVE_OFFSET + 12,
+ FPREGSET_FSAVE_OFFSET + 24,
+ FPREGSET_FSAVE_OFFSET + 20,
+ FPREGSET_FSAVE_OFFSET + 16
+};
+
void
supply_fpregset (fpregsetp)
fpregset_t *fpregsetp;
{
- /* FIXME: see m68k-tdep.c for an example, for the m68k. */
+ int regi;
+
+ if (NUM_FREGS == 0)
+ return;
+ for (regi = FP0_REGNUM; regi <= LAST_FPU_CTRL_REGNUM; regi++)
+ {
+ char tbuf[4];
+ ULONGEST tval;
+ char *from = (char *) fpregsetp + freg_offset_map[regi - FP0_REGNUM];
+
+ if (regi == FCS_REGNUM)
+ {
+ tval = extract_unsigned_integer (from, 4) & 0xffff;
+ store_unsigned_integer (tbuf, 4, tval);
+ supply_register (regi, tbuf);
+ }
+ else if (regi == FOP_REGNUM)
+ {
+ tval = (extract_unsigned_integer (from, 4) >> 16) & ((1 << 11) - 1);
+ store_unsigned_integer (tbuf, 4, tval);
+ supply_register (regi, tbuf);
+ }
+ else
+ supply_register (regi, from);
+ }
}
/* Given a pointer to a floating point register set in /proc format
@@ -165,9 +216,41 @@ fill_fpregset (fpregsetp, regno)
fpregset_t *fpregsetp;
int regno;
{
- /* FIXME: see m68k-tdep.c for an example, for the m68k. */
+ int regi;
+
+ if (NUM_FREGS == 0)
+ return;
+ for (regi = FP0_REGNUM; regi <= LAST_FPU_CTRL_REGNUM; regi++)
+ {
+ if ((regno == -1) || (regno == regi))
+ {
+ char *to = (char *) fpregsetp + freg_offset_map[regi - FP0_REGNUM];
+ char *from = (char *) &registers[REGISTER_BYTE (regi)];
+ ULONGEST valto;
+ ULONGEST valfrom;
+
+ if (regi == FCS_REGNUM)
+ {
+ valto = extract_unsigned_integer (to, 4);
+ valfrom = extract_unsigned_integer (from, 4);
+ valto = (valto & ~0xffff) | (valfrom & 0xffff);
+ store_unsigned_integer (to, 4, valto);
+ }
+ else if (regi == FOP_REGNUM)
+ {
+ valto = extract_unsigned_integer (to, 4);
+ valfrom = extract_unsigned_integer (from, 4);
+ valto = (valto & 0xffff) | ((valfrom & ((1 << 11) - 1)) << 16);
+ store_unsigned_integer (to, 4, valto);
+ }
+ else
+ {
+ memcpy (to, from, REGISTER_RAW_SIZE (regi));
+ }
+ }
+ }
}
-#endif /* defined (FP0_REGNUM) && defined (HAVE_FPREGSET_T) */
+#endif /* defined (HAVE_FPREGSET_T) */
#endif /* HAVE_SYS_PROCFS_H */
diff --git a/gdb/i387-nat.c b/gdb/i387-nat.c
new file mode 100644
index 00000000000..17e67b47a32
--- /dev/null
+++ b/gdb/i387-nat.c
@@ -0,0 +1,125 @@
+/* Native-dependent code for the i387.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include "defs.h"
+#include "inferior.h"
+#include "value.h"
+
+/* FIXME: kettenis/2000-05-21: Right now more than a few i386 targets
+ define their own routines to manage the floating-point registers in
+ GDB's register array. Most (if not all) of these targets use the
+ format used by the "fsave" instruction in their communication with
+ the OS. They should all be converted to use the routines below. */
+
+/* At fsave_offset[REGNO] you'll find the offset to the location in
+ the data structure used by the "fsave" instruction where GDB
+ register REGNO is stored. */
+
+static int fsave_offset[] =
+{
+ 28 + 0 * FPU_REG_RAW_SIZE, /* FP0_REGNUM through ... */
+ 28 + 1 * FPU_REG_RAW_SIZE,
+ 28 + 2 * FPU_REG_RAW_SIZE,
+ 28 + 3 * FPU_REG_RAW_SIZE,
+ 28 + 4 * FPU_REG_RAW_SIZE,
+ 28 + 5 * FPU_REG_RAW_SIZE,
+ 28 + 6 * FPU_REG_RAW_SIZE,
+ 28 + 7 * FPU_REG_RAW_SIZE, /* ... FP7_REGNUM. */
+ 0, /* FCTRL_REGNUM (16 bits). */
+ 4, /* FSTAT_REGNUM (16 bits). */
+ 8, /* FTAG_REGNUM (16 bits). */
+ 16, /* FCS_REGNUM (16 bits). */
+ 12, /* FCOFF_REGNUM. */
+ 24, /* FDS_REGNUM. */
+ 20, /* FDOFF_REGNUM. */
+ 18 /* FOP_REGNUM (bottom 11 bits). */
+};
+
+#define FSAVE_ADDR(fsave, regnum) (fsave + fsave_offset[regnum - FP0_REGNUM])
+
+
+/* Fill GDB's register array with the floating-point register values
+ in *FSAVE. This function masks off any of the reserved
+ bits in *FSAVE. */
+
+void
+i387_supply_fsave (char *fsave)
+{
+ int i;
+
+ for (i = FP0_REGNUM; i <= LAST_FPU_CTRL_REGNUM; i++)
+ {
+ /* Most of the FPU control registers occupy only 16 bits in
+ the fsave area. Give those a special treatment. */
+ if (i >= FIRST_FPU_CTRL_REGNUM
+ && i != FCOFF_REGNUM && i != FDOFF_REGNUM)
+ {
+ unsigned val = *(unsigned short *) (FSAVE_ADDR (fsave, i));
+
+ if (i == FOP_REGNUM)
+ {
+ val &= ((1 << 11) - 1);
+ supply_register (i, (char *) &val);
+ }
+ else
+ supply_register (i, (char *) &val);
+ }
+ else
+ supply_register (i, FSAVE_ADDR (fsave, i));
+ }
+}
+
+/* Fill register REGNO (if it is a floating-point register) in *FSAVE
+ with the value in GDB's register array. If REGNO is -1, do this
+ for all registers. This function doesn't touch any of the reserved
+ bits in *FSAVE. */
+
+void
+i387_fill_fsave (char *fsave, int regno)
+{
+ int i;
+
+ for (i = FP0_REGNUM; i <= LAST_FPU_CTRL_REGNUM; i++)
+ if (regno == -1 || regno == i)
+ {
+ /* Most of the FPU control registers occupy only 16 bits in
+ the fsave area. Give those a special treatment. */
+ if (i >= FIRST_FPU_CTRL_REGNUM
+ && i != FCOFF_REGNUM && i != FDOFF_REGNUM)
+ {
+ if (i == FOP_REGNUM)
+ {
+ unsigned short oldval, newval;
+
+ /* The opcode occupies only 11 bits. */
+ oldval = (*(unsigned short *) (FSAVE_ADDR (fsave, i)));
+ newval = *(unsigned short *) &registers[REGISTER_BYTE (i)];
+ newval &= ((1 << 11) - 1);
+ newval |= oldval & ~((1 << 11) - 1);
+ memcpy (FSAVE_ADDR (fsave, i), &newval, 2);
+ }
+ else
+ memcpy (FSAVE_ADDR (fsave, i), &registers[REGISTER_BYTE (i)], 2);
+ }
+ else
+ memcpy (FSAVE_ADDR (fsave, i), &registers[REGISTER_BYTE (i)],
+ REGISTER_RAW_SIZE (i));
+ }
+}
diff --git a/gdb/i387-nat.h b/gdb/i387-nat.h
new file mode 100644
index 00000000000..c23c267d8f8
--- /dev/null
+++ b/gdb/i387-nat.h
@@ -0,0 +1,37 @@
+/* Native-dependent code for the i387.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef I387_NAT_H
+#define I387_NAT_H
+
+/* Fill GDB's register array with the floating-point register values
+ in *FSAVE. This function masks off any of the reserved
+ bits in *FSAVE. */
+
+void i387_supply_fsave (char *fsave);
+
+/* Fill register REGNO (if it is a floating-point register) in *FSAVE
+ with the value in GDB's register array. If REGNO is -1, do this
+ for all registers. This function doesn't touch any of the reserved
+ bits in *FSAVE. */
+
+void i387_fill_fsave (char *fsave, int regno);
+
+#endif /* i387-nat.h */
diff --git a/gdb/i387-tdep.c b/gdb/i387-tdep.c
index 20e446d2ff4..4f180fa8fa7 100644
--- a/gdb/i387-tdep.c
+++ b/gdb/i387-tdep.c
@@ -30,8 +30,8 @@
/* FIXME: Eliminate the next two functions when we have the time to
change all the callers. */
-void i387_to_double PARAMS ((char *from, char *to));
-void double_to_i387 PARAMS ((char *from, char *to));
+void i387_to_double (char *from, char *to);
+void double_to_i387 (char *from, char *to);
void
i387_to_double (from, to)
@@ -56,8 +56,8 @@ double_to_i387 (from, to)
use the generic implementation based on the new register file
layout. */
-static void print_387_control_bits PARAMS ((unsigned int control));
-static void print_387_status_bits PARAMS ((unsigned int status));
+static void print_387_control_bits (unsigned int control);
+static void print_387_status_bits (unsigned int status);
static void
print_387_control_bits (control)
@@ -166,8 +166,22 @@ static void
print_i387_value (char *raw)
{
DOUBLEST value;
-
- floatformat_to_doublest (&floatformat_i387_ext, raw, &value);
+
+ /* Avoid call to floatformat_to_doublest if possible to preserve as
+ much information as possible. */
+
+#ifdef HAVE_LONG_DOUBLE
+ if (sizeof (value) == sizeof (long double)
+ && HOST_LONG_DOUBLE_FORMAT == &floatformat_i387_ext)
+ {
+ /* Copy straight over, but take care of the padding. */
+ memcpy (&value, raw, FPU_REG_RAW_SIZE);
+ memset ((char *) &value + FPU_REG_RAW_SIZE, 0,
+ sizeof (value) - FPU_REG_RAW_SIZE);
+ }
+ else
+#endif
+ floatformat_to_doublest (&floatformat_i387_ext, raw, &value);
/* We try to print 19 digits. The last digit may or may not contain
garbage, but we'd better print one too many. We need enough room
diff --git a/gdb/i960-tdep.c b/gdb/i960-tdep.c
index eff41361a5f..f7aab5fb8c4 100644
--- a/gdb/i960-tdep.c
+++ b/gdb/i960-tdep.c
@@ -29,9 +29,8 @@
#include "gdbcore.h"
#include "inferior.h"
-static CORE_ADDR next_insn PARAMS ((CORE_ADDR memaddr,
- unsigned int *pword1,
- unsigned int *pword2));
+static CORE_ADDR next_insn (CORE_ADDR memaddr,
+ unsigned int *pword1, unsigned int *pword2);
/* Does the specified function use the "struct returning" convention
or the "value returning" convention? The "value returning" convention
diff --git a/gdb/ia64-linux-nat.c b/gdb/ia64-linux-nat.c
index 485fa4a0d72..339c58ba760 100644
--- a/gdb/ia64-linux-nat.c
+++ b/gdb/ia64-linux-nat.c
@@ -34,6 +34,9 @@
#include <asm/ptrace_offsets.h>
#include <sys/procfs.h>
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
/* These must match the order of the register names.
Some sort of lookup table is needed because the offsets associated
@@ -473,3 +476,174 @@ fill_fpregset (fpregsetp, regno)
}
}
}
+
+#define IA64_PSR_DB (1UL << 24)
+#define IA64_PSR_DD (1UL << 39)
+
+static void
+enable_watchpoints_in_psr (int pid)
+{
+ CORE_ADDR psr;
+
+ psr = read_register_pid (IA64_PSR_REGNUM, pid);
+ if (!(psr & IA64_PSR_DB))
+ {
+ psr |= IA64_PSR_DB; /* Set the db bit - this enables hardware
+ watchpoints and breakpoints. */
+ write_register_pid (IA64_PSR_REGNUM, psr, pid);
+ }
+}
+
+static long
+fetch_debug_register (int pid, int idx)
+{
+ long val;
+ int tid;
+
+ tid = TIDGET(pid);
+ if (tid == 0)
+ tid = pid;
+
+ val = ptrace (PT_READ_U, tid, (PTRACE_ARG3_TYPE) (PT_DBR + 8 * idx), 0);
+
+ return val;
+}
+
+static void
+store_debug_register (int pid, int idx, long val)
+{
+ int tid;
+
+ tid = TIDGET(pid);
+ if (tid == 0)
+ tid = pid;
+
+ (void) ptrace (PT_WRITE_U, tid, (PTRACE_ARG3_TYPE) (PT_DBR + 8 * idx), val);
+}
+
+static void
+fetch_debug_register_pair (int pid, int idx, long *dbr_addr, long *dbr_mask)
+{
+ if (dbr_addr)
+ *dbr_addr = fetch_debug_register (pid, 2 * idx);
+ if (dbr_mask)
+ *dbr_mask = fetch_debug_register (pid, 2 * idx + 1);
+}
+
+static void
+store_debug_register_pair (int pid, int idx, long *dbr_addr, long *dbr_mask)
+{
+ if (dbr_addr)
+ store_debug_register (pid, 2 * idx, *dbr_addr);
+ if (dbr_mask)
+ store_debug_register (pid, 2 * idx + 1, *dbr_mask);
+}
+
+static int
+is_power_of_2 (int val)
+{
+ int i, onecount;
+
+ onecount = 0;
+ for (i = 0; i < 8 * sizeof (val); i++)
+ if (val & (1 << i))
+ onecount++;
+
+ return onecount <= 1;
+}
+
+int
+ia64_linux_insert_watchpoint (int pid, CORE_ADDR addr, int len, int rw)
+{
+ int idx;
+ long dbr_addr, dbr_mask;
+ int max_watchpoints = 4;
+
+ if (len <= 0 || !is_power_of_2 (len))
+ return -1;
+
+ for (idx = 0; idx < max_watchpoints; idx++)
+ {
+ fetch_debug_register_pair (pid, idx, NULL, &dbr_mask);
+ if ((dbr_mask & (0x3UL << 62)) == 0)
+ {
+ /* Exit loop if both r and w bits clear */
+ break;
+ }
+ }
+
+ if (idx == max_watchpoints)
+ return -1;
+
+ dbr_addr = (long) addr;
+ dbr_mask = (~(len - 1) & 0x00ffffffffffffffL); /* construct mask to match */
+ dbr_mask |= 0x0800000000000000L; /* Only match privilege level 3 */
+ switch (rw)
+ {
+ case hw_write:
+ dbr_mask |= (1L << 62); /* Set w bit */
+ break;
+ case hw_read:
+ dbr_mask |= (1L << 63); /* Set r bit */
+ break;
+ case hw_access:
+ dbr_mask |= (3L << 62); /* Set both r and w bits */
+ break;
+ default:
+ return -1;
+ }
+
+ store_debug_register_pair (pid, idx, &dbr_addr, &dbr_mask);
+ enable_watchpoints_in_psr (pid);
+
+ return 0;
+}
+
+int
+ia64_linux_remove_watchpoint (int pid, CORE_ADDR addr, int len)
+{
+ int idx;
+ long dbr_addr, dbr_mask;
+ int max_watchpoints = 4;
+
+ if (len <= 0 || !is_power_of_2 (len))
+ return -1;
+
+ for (idx = 0; idx < max_watchpoints; idx++)
+ {
+ fetch_debug_register_pair (pid, idx, &dbr_addr, &dbr_mask);
+ if ((dbr_mask & (0x3UL << 62)) && addr == (CORE_ADDR) dbr_addr)
+ {
+ dbr_addr = 0;
+ dbr_mask = 0;
+ store_debug_register_pair (pid, idx, &dbr_addr, &dbr_mask);
+ return 0;
+ }
+ }
+ return -1;
+}
+
+CORE_ADDR
+ia64_linux_stopped_by_watchpoint (int pid)
+{
+ CORE_ADDR psr;
+ int tid;
+ struct siginfo siginfo;
+
+ tid = TIDGET(pid);
+ if (tid == 0)
+ tid = pid;
+
+ errno = 0;
+ ptrace (PTRACE_GETSIGINFO, tid, (PTRACE_ARG3_TYPE) 0, &siginfo);
+
+ if (errno != 0 || siginfo.si_code != 4 /* TRAP_HWBKPT */)
+ return 0;
+
+ psr = read_register_pid (IA64_PSR_REGNUM, pid);
+ psr |= IA64_PSR_DD; /* Set the dd bit - this will disable the watchpoint
+ for the next instruction */
+ write_register_pid (IA64_PSR_REGNUM, psr, pid);
+
+ return (CORE_ADDR) siginfo.si_addr;
+}
diff --git a/gdb/ia64-linux-tdep.c b/gdb/ia64-linux-tdep.c
new file mode 100644
index 00000000000..87c6af4b440
--- /dev/null
+++ b/gdb/ia64-linux-tdep.c
@@ -0,0 +1,87 @@
+/* Target-dependent code for the IA-64 for GDB, the GNU debugger.
+ Copyright 2000
+ Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include "defs.h"
+#include "arch-utils.h"
+
+/* The sigtramp code is in a non-readable (executable-only) region
+ of memory called the ``gate page''. The addresses in question
+ were determined by examining the system headers. They are
+ overly generous to allow for different pages sizes. */
+
+#define GATE_AREA_START 0xa000000000000100LL
+#define GATE_AREA_END 0xa000000000010000LL
+
+/* Offset to sigcontext structure from frame of handler */
+#define IA64_LINUX_SIGCONTEXT_OFFSET 160
+
+int
+ia64_linux_in_sigtramp (CORE_ADDR pc, char *func_name)
+{
+ return (pc >= (CORE_ADDR) GATE_AREA_START && pc < (CORE_ADDR) GATE_AREA_END);
+}
+
+/* IA-64 GNU/Linux specific function which, given a frame address and
+ a register number, returns the address at which that register may be
+ found. 0 is returned for registers which aren't stored in the the
+ sigcontext structure. */
+
+CORE_ADDR
+ia64_linux_sigcontext_register_address (CORE_ADDR sp, int regno)
+{
+ if (IA64_GR0_REGNUM <= regno && regno <= IA64_GR31_REGNUM)
+ return sp + IA64_LINUX_SIGCONTEXT_OFFSET + 200 + 8 * (regno - IA64_GR0_REGNUM);
+ else if (IA64_BR0_REGNUM <= regno && regno <= IA64_BR7_REGNUM)
+ return sp + IA64_LINUX_SIGCONTEXT_OFFSET + 136 + 8 * (regno - IA64_BR0_REGNUM);
+ else if (IA64_FR0_REGNUM <= regno && regno <= IA64_FR127_REGNUM)
+ return sp + IA64_LINUX_SIGCONTEXT_OFFSET + 464 + 16 * (regno - IA64_FR0_REGNUM);
+ else
+ switch (regno)
+ {
+ case IA64_IP_REGNUM :
+ return sp + IA64_LINUX_SIGCONTEXT_OFFSET + 40;
+ case IA64_CFM_REGNUM :
+ return sp + IA64_LINUX_SIGCONTEXT_OFFSET + 48;
+ case IA64_PSR_REGNUM :
+ return sp + IA64_LINUX_SIGCONTEXT_OFFSET + 56; /* user mask only */
+ /* sc_ar_rsc is provided, from which we could compute bspstore, but
+ I don't think it's worth it. Anyway, if we want it, it's at offset
+ 64 */
+ case IA64_BSP_REGNUM :
+ return sp + IA64_LINUX_SIGCONTEXT_OFFSET + 72;
+ case IA64_RNAT_REGNUM :
+ return sp + IA64_LINUX_SIGCONTEXT_OFFSET + 80;
+ case IA64_CCV_REGNUM :
+ return sp + IA64_LINUX_SIGCONTEXT_OFFSET + 88;
+ case IA64_UNAT_REGNUM :
+ return sp + IA64_LINUX_SIGCONTEXT_OFFSET + 96;
+ case IA64_FPSR_REGNUM :
+ return sp + IA64_LINUX_SIGCONTEXT_OFFSET + 104;
+ case IA64_PFS_REGNUM :
+ return sp + IA64_LINUX_SIGCONTEXT_OFFSET + 112;
+ case IA64_LC_REGNUM :
+ return sp + IA64_LINUX_SIGCONTEXT_OFFSET + 120;
+ case IA64_PR_REGNUM :
+ return sp + IA64_LINUX_SIGCONTEXT_OFFSET + 128;
+ default :
+ return 0;
+ }
+}
diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c
index ae35b73a59b..e220e27b503 100644
--- a/gdb/ia64-tdep.c
+++ b/gdb/ia64-tdep.c
@@ -23,10 +23,12 @@
#include "inferior.h"
#include "symfile.h" /* for entry_point_address */
#include "gdbcore.h"
+#include "arch-utils.h"
#include "floatformat.h"
#include "objfiles.h"
#include "elf/common.h" /* for DT_PLTGOT value */
+#include "elf-bfd.h"
typedef enum instruction_type
{
@@ -63,6 +65,8 @@ typedef enum instruction_type
extern void _initialize_ia64_tdep (void);
+extern CORE_ADDR ia64_linux_sigcontext_register_address (CORE_ADDR, int);
+
static gdbarch_init_ftype ia64_gdbarch_init;
static gdbarch_register_name_ftype ia64_register_name;
@@ -188,23 +192,36 @@ static char *ia64_register_names[] =
};
struct frame_extra_info
-{
- CORE_ADDR bsp; /* points at r32 for the current frame */
- CORE_ADDR cfm; /* cfm value for current frame */
- int sof; /* Size of frame (decoded from cfm value) */
- int sol; /* Size of locals (decoded from cfm value) */
- CORE_ADDR after_prologue;
- /* Address of first instruction after the last
+ {
+ CORE_ADDR bsp; /* points at r32 for the current frame */
+ CORE_ADDR cfm; /* cfm value for current frame */
+ int sof; /* Size of frame (decoded from cfm value) */
+ int sol; /* Size of locals (decoded from cfm value) */
+ CORE_ADDR after_prologue;
+ /* Address of first instruction after the last
prologue instruction; Note that there may
be instructions from the function's body
intermingled with the prologue. */
- int mem_stack_frame_size;
- /* Size of the memory stack frame (may be zero),
+ int mem_stack_frame_size;
+ /* Size of the memory stack frame (may be zero),
or -1 if it has not been determined yet. */
- int fp_reg; /* Register number (if any) used a frame pointer
- for this frame. 0 if no register is being used
+ int fp_reg; /* Register number (if any) used a frame pointer
+ for this frame. 0 if no register is being used
as the frame pointer. */
-};
+ };
+
+struct gdbarch_tdep
+ {
+ int os_ident; /* From the ELF header, one of the ELFOSABI_
+ constants: ELFOSABI_LINUX, ELFOSABI_MONTEREY,
+ etc. */
+ CORE_ADDR (*sigcontext_register_address) (CORE_ADDR, int);
+ /* OS specific function which, given a frame address
+ and register number, returns the offset to the
+ given register from the start of the frame. */
+ };
+
+#define SIGCONTEXT_REGISTER_ADDRESS (gdbarch_tdep (current_gdbarch)->sigcontext_register_address)
static char *
ia64_register_name (int reg)
@@ -281,10 +298,35 @@ ia64_register_byte (int reg)
(reg <= IA64_FR0_REGNUM ? 0 : 8 * ((reg > IA64_FR127_REGNUM) ? 128 : reg - IA64_FR0_REGNUM));
}
+/* Read the given register from a sigcontext structure in the
+ specified frame. */
+
+static CORE_ADDR
+read_sigcontext_register (struct frame_info *frame, int regnum)
+{
+ CORE_ADDR regaddr;
+
+ if (frame == NULL)
+ internal_error ("read_sigcontext_register: NULL frame");
+ if (!frame->signal_handler_caller)
+ internal_error (
+ "read_sigcontext_register: frame not a signal_handler_caller");
+ if (SIGCONTEXT_REGISTER_ADDRESS == 0)
+ internal_error (
+ "read_sigcontext_register: SIGCONTEXT_REGISTER_ADDRESS is 0");
+
+ regaddr = SIGCONTEXT_REGISTER_ADDRESS (frame->frame, regnum);
+ if (regaddr)
+ return read_memory_integer (regaddr, REGISTER_RAW_SIZE (regnum));
+ else
+ internal_error (
+ "read_sigcontext_register: Register %d not in struct sigcontext", regnum);
+}
+
/* Extract ``len'' bits from an instruction bundle starting at
bit ``from''. */
-long long
+static long long
extract_bit_field (char *bundle, int from, int len)
{
long long result = 0LL;
@@ -320,7 +362,7 @@ extract_bit_field (char *bundle, int from, int len)
/* Replace the specified bits in an instruction bundle */
-void
+static void
replace_bit_field (char *bundle, long long val, int from, int len)
{
int to = from + len;
@@ -370,7 +412,7 @@ replace_bit_field (char *bundle, long long val, int from, int len)
/* Return the contents of slot N (for N = 0, 1, or 2) in
and instruction bundle */
-long long
+static long long
slotN_contents (unsigned char *bundle, int slotnum)
{
return extract_bit_field (bundle, 5+41*slotnum, 41);
@@ -378,7 +420,7 @@ slotN_contents (unsigned char *bundle, int slotnum)
/* Store an instruction in an instruction bundle */
-void
+static void
replace_slotN_contents (unsigned char *bundle, long long instr, int slotnum)
{
replace_bit_field (bundle, instr, 5+41*slotnum, 41);
@@ -607,23 +649,38 @@ rse_address_add(CORE_ADDR addr, int nslots)
CORE_ADDR
ia64_frame_chain (struct frame_info *frame)
{
- FRAME_INIT_SAVED_REGS (frame);
-
- if (frame->saved_regs[IA64_VFP_REGNUM])
- return read_memory_integer (frame->saved_regs[IA64_VFP_REGNUM], 8);
+ if (frame->signal_handler_caller)
+ return read_sigcontext_register (frame, sp_regnum);
+ else if (PC_IN_CALL_DUMMY (frame->pc, frame->frame, frame->frame))
+ return frame->frame;
else
- return frame->frame + frame->extra_info->mem_stack_frame_size;
+ {
+ FRAME_INIT_SAVED_REGS (frame);
+ if (frame->saved_regs[IA64_VFP_REGNUM])
+ return read_memory_integer (frame->saved_regs[IA64_VFP_REGNUM], 8);
+ else
+ return frame->frame + frame->extra_info->mem_stack_frame_size;
+ }
}
CORE_ADDR
ia64_frame_saved_pc (struct frame_info *frame)
{
- FRAME_INIT_SAVED_REGS (frame);
+ if (frame->signal_handler_caller)
+ return read_sigcontext_register (frame, pc_regnum);
+ else if (PC_IN_CALL_DUMMY (frame->pc, frame->frame, frame->frame))
+ return generic_read_register_dummy (frame->pc, frame->frame, pc_regnum);
+ else
+ {
+ FRAME_INIT_SAVED_REGS (frame);
- if (frame->saved_regs[IA64_VRAP_REGNUM])
- return read_memory_integer (frame->saved_regs[IA64_VRAP_REGNUM], 8);
- else /* either frameless, or not far enough along in the prologue... */
- return ia64_saved_pc_after_call (frame);
+ if (frame->saved_regs[IA64_VRAP_REGNUM])
+ return read_memory_integer (frame->saved_regs[IA64_VRAP_REGNUM], 8);
+ else if (frame->next && frame->next->signal_handler_caller)
+ return read_sigcontext_register (frame->next, IA64_BR0_REGNUM);
+ else /* either frameless, or not far enough along in the prologue... */
+ return ia64_saved_pc_after_call (frame);
+ }
}
#define isScratch(_regnum_) ((_regnum_) == 2 || (_regnum_) == 3 \
@@ -651,6 +708,11 @@ examine_prologue (CORE_ADDR pc, CORE_ADDR lim_pc, struct frame_info *frame)
int mem_stack_frame_size = 0;
int spill_reg = 0;
CORE_ADDR spill_addr = 0;
+ char instores[8];
+ char infpstores[8];
+
+ memset (instores, 0, sizeof instores);
+ memset (infpstores, 0, sizeof infpstores);
if (frame && !frame->saved_regs)
{
@@ -693,7 +755,13 @@ examine_prologue (CORE_ADDR pc, CORE_ADDR lim_pc, struct frame_info *frame)
if (next_pc == 0)
break;
- if (it == I && ((instr & 0x1eff8000000LL) == 0x00188000000LL))
+ if (it == B || ((instr & 0x3fLL) != 0LL))
+ {
+ /* Exit loop upon hitting a branch instruction or a predicated
+ instruction. */
+ break;
+ }
+ else if (it == I && ((instr & 0x1eff8000000LL) == 0x00188000000LL))
{
/* Move from BR */
int b2 = (int) ((instr & 0x0000000e000LL) >> 13);
@@ -843,6 +911,48 @@ examine_prologue (CORE_ADDR pc, CORE_ADDR lim_pc, struct frame_info *frame)
spill_addr = 0; /* must be done spilling */
last_prologue_pc = next_pc;
}
+ else if (qp == 0 && 32 <= rM && rM < 40 && !instores[rM-32])
+ {
+ /* Allow up to one store of each input register. */
+ instores[rM-32] = 1;
+ last_prologue_pc = next_pc;
+ }
+ }
+ else if (it == M && ((instr & 0x1ff08000000LL) == 0x08c00000000LL))
+ {
+ /* One of
+ st1 [rN] = rM
+ st2 [rN] = rM
+ st4 [rN] = rM
+ st8 [rN] = rM
+ Note that the st8 case is handled in the clause above.
+
+ Advance over stores of input registers. One store per input
+ register is permitted. */
+ int rM = (int) ((instr & 0x000000fe000LL) >> 13);
+ int qp = (int) (instr & 0x0000000003fLL);
+ if (qp == 0 && 32 <= rM && rM < 40 && !instores[rM-32])
+ {
+ instores[rM-32] = 1;
+ last_prologue_pc = next_pc;
+ }
+ }
+ else if (it == M && ((instr & 0x1ff88000000LL) == 0x0cc80000000LL))
+ {
+ /* Either
+ stfs [rN] = fM
+ or
+ stfd [rN] = fM
+
+ Advance over stores of floating point input registers. Again
+ one store per register is permitted */
+ int fM = (int) ((instr & 0x000000fe000LL) >> 13);
+ int qp = (int) (instr & 0x0000000003fLL);
+ if (qp == 0 && 8 <= fM && fM < 16 && !infpstores[fM - 8])
+ {
+ infpstores[fM-8] = 1;
+ last_prologue_pc = next_pc;
+ }
}
else if (it == M
&& ( ((instr & 0x1ffc8000000LL) == 0x08ec0000000LL)
@@ -869,8 +979,6 @@ examine_prologue (CORE_ADDR pc, CORE_ADDR lim_pc, struct frame_info *frame)
last_prologue_pc = next_pc;
}
}
- else if (it == B || ((instr & 0x3fLL) != 0LL))
- break;
pc = next_pc;
}
@@ -916,50 +1024,55 @@ ia64_skip_prologue (CORE_ADDR pc)
void
ia64_frame_init_saved_regs (struct frame_info *frame)
{
- CORE_ADDR func_start;
-
if (frame->saved_regs)
return;
- func_start = get_pc_function_start (frame->pc);
- examine_prologue (func_start, frame->pc, frame);
-}
+ if (frame->signal_handler_caller && SIGCONTEXT_REGISTER_ADDRESS)
+ {
+ int regno;
-static CORE_ADDR
-ia64_find_saved_register (frame, regnum)
- struct frame_info *frame;
- int regnum;
-{
- register CORE_ADDR addr = 0;
+ frame_saved_regs_zalloc (frame);
- if ((IA64_GR32_REGNUM <= regnum && regnum <= IA64_GR127_REGNUM)
- || regnum == IA64_VFP_REGNUM
- || regnum == IA64_VRAP_REGNUM)
- {
- FRAME_INIT_SAVED_REGS (frame);
- return frame->saved_regs[regnum];
- }
- else if (regnum == IA64_IP_REGNUM && frame->next)
- {
- FRAME_INIT_SAVED_REGS (frame->next);
- return frame->next->saved_regs[IA64_VRAP_REGNUM];
+ frame->saved_regs[IA64_VRAP_REGNUM] =
+ SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_IP_REGNUM);
+ frame->saved_regs[IA64_CFM_REGNUM] =
+ SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_CFM_REGNUM);
+ frame->saved_regs[IA64_PSR_REGNUM] =
+ SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_PSR_REGNUM);
+#if 0
+ frame->saved_regs[IA64_BSP_REGNUM] =
+ SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_BSP_REGNUM);
+#endif
+ frame->saved_regs[IA64_RNAT_REGNUM] =
+ SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_RNAT_REGNUM);
+ frame->saved_regs[IA64_CCV_REGNUM] =
+ SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_CCV_REGNUM);
+ frame->saved_regs[IA64_UNAT_REGNUM] =
+ SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_UNAT_REGNUM);
+ frame->saved_regs[IA64_FPSR_REGNUM] =
+ SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_FPSR_REGNUM);
+ frame->saved_regs[IA64_PFS_REGNUM] =
+ SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_PFS_REGNUM);
+ frame->saved_regs[IA64_LC_REGNUM] =
+ SIGCONTEXT_REGISTER_ADDRESS (frame->frame, IA64_LC_REGNUM);
+ for (regno = IA64_GR1_REGNUM; regno <= IA64_GR31_REGNUM; regno++)
+ if (regno != sp_regnum)
+ frame->saved_regs[regno] =
+ SIGCONTEXT_REGISTER_ADDRESS (frame->frame, regno);
+ for (regno = IA64_BR0_REGNUM; regno <= IA64_BR7_REGNUM; regno++)
+ frame->saved_regs[regno] =
+ SIGCONTEXT_REGISTER_ADDRESS (frame->frame, regno);
+ for (regno = IA64_FR2_REGNUM; regno <= IA64_BR7_REGNUM; regno++)
+ frame->saved_regs[regno] =
+ SIGCONTEXT_REGISTER_ADDRESS (frame->frame, regno);
}
else
{
- struct frame_info *frame1 = NULL;
- while (1)
- {
- QUIT;
- frame1 = get_prev_frame (frame1);
- if (frame1 == 0 || frame1 == frame)
- break;
- FRAME_INIT_SAVED_REGS (frame1);
- if (frame1->saved_regs[regnum])
- addr = frame1->saved_regs[regnum];
- }
- }
+ CORE_ADDR func_start;
- return addr;
+ func_start = get_pc_function_start (frame->pc);
+ examine_prologue (func_start, frame->pc, frame);
+ }
}
void
@@ -970,76 +1083,29 @@ ia64_get_saved_register (char *raw_buffer,
int regnum,
enum lval_type *lval)
{
- CORE_ADDR addr;
+ int is_dummy_frame;
if (!target_has_registers)
error ("No registers.");
if (optimized != NULL)
*optimized = 0;
- addr = ia64_find_saved_register (frame, regnum);
- if (addr != 0)
- {
- if (lval != NULL)
- *lval = lval_memory;
- if (regnum == SP_REGNUM)
- {
- if (raw_buffer != NULL)
- {
- /* Put it back in target format. */
- store_address (raw_buffer, REGISTER_RAW_SIZE (regnum), (LONGEST) addr);
- }
- if (addrp != NULL)
- *addrp = 0;
- return;
- }
- if (raw_buffer != NULL)
- read_memory (addr, raw_buffer, REGISTER_RAW_SIZE (regnum));
- }
- else if (IA64_GR32_REGNUM <= regnum && regnum <= IA64_GR127_REGNUM)
- {
- /* r32 - r127 must be fetchable via memory. If they aren't,
- then the register is unavailable */
- addr = 0;
- if (lval != NULL)
- *lval = not_lval;
- memset (raw_buffer, 0, REGISTER_RAW_SIZE (regnum));
- }
- else if (regnum == IA64_IP_REGNUM)
- {
- CORE_ADDR pc;
- if (frame->next)
- {
- /* This case will normally be handled above, except when it's
- frameless or we haven't advanced far enough into the prologue
- of the top frame to save the register. */
- addr = REGISTER_BYTE (regnum);
- if (lval != NULL)
- *lval = lval_register;
- pc = ia64_saved_pc_after_call (frame);
- }
- else
- {
- addr = 0;
- if (lval != NULL)
- *lval = not_lval;
- pc = read_pc ();
- }
- store_address (raw_buffer, REGISTER_RAW_SIZE (IA64_IP_REGNUM), pc);
- }
- else if (regnum == SP_REGNUM && frame->next)
+
+ if (addrp != NULL)
+ *addrp = 0;
+
+ if (lval != NULL)
+ *lval = not_lval;
+
+ is_dummy_frame = PC_IN_CALL_DUMMY (frame->pc, frame->frame, frame->frame);
+
+ if (regnum == SP_REGNUM && frame->next)
{
/* Handle SP values for all frames but the topmost. */
- addr = 0;
- if (lval != NULL)
- *lval = not_lval;
store_address (raw_buffer, REGISTER_RAW_SIZE (regnum), frame->frame);
}
else if (regnum == IA64_BSP_REGNUM)
{
- addr = 0;
- if (lval != NULL)
- *lval = not_lval;
store_address (raw_buffer, REGISTER_RAW_SIZE (regnum),
frame->extra_info->bsp);
}
@@ -1050,9 +1116,6 @@ ia64_get_saved_register (char *raw_buffer,
above. If the function lacks one of these frame pointers, we can
still provide a value since we know the size of the frame */
CORE_ADDR vfp = frame->frame + frame->extra_info->mem_stack_frame_size;
- addr = 0;
- if (lval != NULL)
- *lval = not_lval;
store_address (raw_buffer, REGISTER_RAW_SIZE (IA64_VFP_REGNUM), vfp);
}
else if (IA64_PR0_REGNUM <= regnum && regnum <= IA64_PR63_REGNUM)
@@ -1067,9 +1130,6 @@ ia64_get_saved_register (char *raw_buffer,
prN_val = extract_bit_field ((unsigned char *) pr_raw_buffer,
regnum - IA64_PR0_REGNUM, 1);
store_unsigned_integer (raw_buffer, REGISTER_RAW_SIZE (regnum), prN_val);
- addr = 0;
- if (lval != NULL)
- *lval = not_lval;
}
else if (IA64_NAT0_REGNUM <= regnum && regnum <= IA64_NAT31_REGNUM)
{
@@ -1084,18 +1144,20 @@ ia64_get_saved_register (char *raw_buffer,
regnum - IA64_NAT0_REGNUM, 1);
store_unsigned_integer (raw_buffer, REGISTER_RAW_SIZE (regnum),
unatN_val);
- addr = 0;
- if (lval != NULL)
- *lval = not_lval;
}
else if (IA64_NAT32_REGNUM <= regnum && regnum <= IA64_NAT127_REGNUM)
{
int natval = 0;
/* Find address of general register corresponding to nat bit we're
interested in. */
- CORE_ADDR gr_addr =
- ia64_find_saved_register (frame,
- regnum - IA64_NAT0_REGNUM + IA64_GR0_REGNUM);
+ CORE_ADDR gr_addr = 0;
+
+ if (!is_dummy_frame)
+ {
+ FRAME_INIT_SAVED_REGS (frame);
+ gr_addr = frame->saved_regs[ regnum - IA64_NAT0_REGNUM
+ + IA64_GR0_REGNUM];
+ }
if (gr_addr)
{
/* Compute address of nat collection bits */
@@ -1114,20 +1176,50 @@ ia64_get_saved_register (char *raw_buffer,
natval = (nat_collection >> nat_bit) & 1;
}
store_unsigned_integer (raw_buffer, REGISTER_RAW_SIZE (regnum), natval);
- addr = 0;
- if (lval != NULL)
- *lval = not_lval;
+ }
+ else if (regnum == IA64_IP_REGNUM)
+ {
+ CORE_ADDR pc;
+ if (frame->next)
+ {
+ /* FIXME: Set *addrp, *lval when possible. */
+ pc = ia64_frame_saved_pc (frame->next);
+ }
+ else
+ {
+ pc = read_pc ();
+ }
+ store_address (raw_buffer, REGISTER_RAW_SIZE (IA64_IP_REGNUM), pc);
+ }
+ else if (IA64_GR32_REGNUM <= regnum && regnum <= IA64_GR127_REGNUM)
+ {
+ CORE_ADDR addr = 0;
+ if (!is_dummy_frame)
+ {
+ FRAME_INIT_SAVED_REGS (frame);
+ addr = frame->saved_regs[regnum];
+ }
+
+ if (addr != 0)
+ {
+ if (lval != NULL)
+ *lval = lval_memory;
+ if (addrp != NULL)
+ *addrp = addr;
+ read_memory (addr, raw_buffer, REGISTER_RAW_SIZE (regnum));
+ }
+ else
+ {
+ /* r32 - r127 must be fetchable via memory. If they aren't,
+ then the register is unavailable */
+ memset (raw_buffer, 0, REGISTER_RAW_SIZE (regnum));
+ }
}
else
{
- if (lval != NULL)
- *lval = lval_register;
- addr = REGISTER_BYTE (regnum);
- if (raw_buffer != NULL)
- read_register_gen (regnum, raw_buffer);
+ generic_get_saved_register (raw_buffer, optimized, addrp, frame,
+ regnum, lval);
}
- if (addrp != NULL)
- *addrp = addr;
}
/* Should we use EXTRACT_STRUCT_VALUE_ADDRESS instead of
@@ -1230,6 +1322,9 @@ void
ia64_init_extra_frame_info (int fromleaf, struct frame_info *frame)
{
CORE_ADDR bsp, cfm;
+ int next_frame_is_call_dummy = ((frame->next != NULL)
+ && PC_IN_CALL_DUMMY (frame->next->pc, frame->next->frame,
+ frame->next->frame));
frame->extra_info = (struct frame_extra_info *)
frame_obstack_alloc (sizeof (struct frame_extra_info));
@@ -1240,6 +1335,18 @@ ia64_init_extra_frame_info (int fromleaf, struct frame_info *frame)
cfm = read_register (IA64_CFM_REGNUM);
}
+ else if (frame->next->signal_handler_caller)
+ {
+ bsp = read_sigcontext_register (frame->next, IA64_BSP_REGNUM);
+ cfm = read_sigcontext_register (frame->next, IA64_CFM_REGNUM);
+ }
+ else if (next_frame_is_call_dummy)
+ {
+ bsp = generic_read_register_dummy (frame->next->pc, frame->next->frame,
+ IA64_BSP_REGNUM);
+ cfm = generic_read_register_dummy (frame->next->pc, frame->next->frame,
+ IA64_CFM_REGNUM);
+ }
else
{
struct frame_info *frn = frame->next;
@@ -1248,6 +1355,13 @@ ia64_init_extra_frame_info (int fromleaf, struct frame_info *frame)
if (frn->saved_regs[IA64_CFM_REGNUM] != 0)
cfm = read_memory_integer (frn->saved_regs[IA64_CFM_REGNUM], 8);
+ else if (frn->next && frn->next->signal_handler_caller)
+ cfm = read_sigcontext_register (frn->next, IA64_PFS_REGNUM);
+ else if (frn->next
+ && PC_IN_CALL_DUMMY (frn->next->pc, frn->next->frame,
+ frn->next->frame))
+ cfm = generic_read_register_dummy (frn->next->pc, frn->next->frame,
+ IA64_PFS_REGNUM);
else
cfm = read_register (IA64_PFS_REGNUM);
@@ -1256,7 +1370,9 @@ ia64_init_extra_frame_info (int fromleaf, struct frame_info *frame)
frame->extra_info->cfm = cfm;
frame->extra_info->sof = cfm & 0x7f;
frame->extra_info->sol = (cfm >> 7) & 0x7f;
- if (frame->next == 0)
+ if (frame->next == 0
+ || frame->next->signal_handler_caller
+ || next_frame_is_call_dummy)
frame->extra_info->bsp = rse_address_add (bsp, -frame->extra_info->sof);
else
frame->extra_info->bsp = rse_address_add (bsp, -frame->extra_info->sol);
@@ -1719,16 +1835,98 @@ ia64_remote_translate_xfer_address (CORE_ADDR memaddr, int nr_bytes,
*targ_len = nr_bytes;
}
+static void
+process_note_abi_tag_sections (bfd *abfd, asection *sect, void *obj)
+{
+ int *os_ident_ptr = obj;
+ const char *name;
+ unsigned int sectsize;
+
+ name = bfd_get_section_name (abfd, sect);
+ sectsize = bfd_section_size (abfd, sect);
+ if (strcmp (name, ".note.ABI-tag") == 0 && sectsize > 0)
+ {
+ unsigned int name_length, data_length, note_type;
+ char *note = alloca (sectsize);
+
+ bfd_get_section_contents (abfd, sect, note,
+ (file_ptr) 0, (bfd_size_type) sectsize);
+
+ name_length = bfd_h_get_32 (abfd, note);
+ data_length = bfd_h_get_32 (abfd, note + 4);
+ note_type = bfd_h_get_32 (abfd, note + 8);
+
+ if (name_length == 4 && data_length == 16 && note_type == 1
+ && strcmp (note + 12, "GNU") == 0)
+ {
+ int os_number = bfd_h_get_32 (abfd, note + 16);
+
+ /* The case numbers are from abi-tags in glibc */
+ switch (os_number)
+ {
+ case 0 :
+ *os_ident_ptr = ELFOSABI_LINUX;
+ break;
+#if 0 /* FIXME: Enable after internal repository is synced with sourceware */
+ case 1 :
+ *os_ident_ptr = ELFOSABI_HURD;
+ break;
+ case 2 :
+ *os_ident_ptr = ELFOSABI_SOLARIS;
+ break;
+#endif
+ default :
+ internal_error (
+ "process_note_abi_sections: unknown OS number %d", os_number);
+ break;
+ }
+ }
+ }
+}
+
static struct gdbarch *
ia64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
{
struct gdbarch *gdbarch;
+ struct gdbarch_tdep *tdep;
+ int os_ident;
- arches = gdbarch_list_lookup_by_info (arches, &info);
- if (arches != NULL)
- return arches->gdbarch;
+ if (info.abfd != NULL
+ && bfd_get_flavour (info.abfd) == bfd_target_elf_flavour)
+ {
+ os_ident = elf_elfheader (info.abfd)->e_ident[EI_OSABI];
- gdbarch = gdbarch_alloc (&info, NULL);
+ /* If os_ident is 0, it is not necessarily the case that we're on a
+ SYSV system. (ELFOSABI_NONE is defined to be 0.) GNU/Linux uses
+ a note section to record OS/ABI info, but leaves e_ident[EI_OSABI]
+ zero. So we have to check for note sections too. */
+ if (os_ident == 0)
+ {
+ bfd_map_over_sections (info.abfd,
+ process_note_abi_tag_sections,
+ &os_ident);
+ }
+ }
+ else
+ os_ident = -1;
+
+ for (arches = gdbarch_list_lookup_by_info (arches, &info);
+ arches != NULL;
+ arches = gdbarch_list_lookup_by_info (arches->next, &info))
+ {
+ if (gdbarch_tdep (current_gdbarch)->os_ident != os_ident)
+ continue;
+ return arches->gdbarch;
+ }
+
+ tdep = xmalloc (sizeof (struct gdbarch_tdep));
+ gdbarch = gdbarch_alloc (&info, tdep);
+ tdep->os_ident = os_ident;
+
+ if (os_ident == ELFOSABI_LINUX)
+ tdep->sigcontext_register_address = ia64_linux_sigcontext_register_address;
+ else
+ tdep->sigcontext_register_address = 0;
set_gdbarch_short_bit (gdbarch, 16);
set_gdbarch_int_bit (gdbarch, 32);
@@ -1762,7 +1960,7 @@ ia64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_saved_pc_after_call (gdbarch, ia64_saved_pc_after_call);
set_gdbarch_frame_chain (gdbarch, ia64_frame_chain);
- set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
+ set_gdbarch_frame_chain_valid (gdbarch, generic_func_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, ia64_frame_saved_pc);
set_gdbarch_frame_init_saved_regs (gdbarch, ia64_frame_init_saved_regs);
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index 06439d0248d..f00b0e38790 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -42,79 +42,79 @@
/* Functions exported for general use: */
-void nofp_registers_info PARAMS ((char *, int));
+void nofp_registers_info (char *, int);
-void all_registers_info PARAMS ((char *, int));
+void all_registers_info (char *, int);
-void registers_info PARAMS ((char *, int));
+void registers_info (char *, int);
/* Local functions: */
-void continue_command PARAMS ((char *, int));
+void continue_command (char *, int);
static void print_return_value (int struct_return, struct type *value_type);
-static void finish_command_continuation PARAMS ((struct continuation_arg *));
+static void finish_command_continuation (struct continuation_arg *);
-static void until_next_command PARAMS ((int));
+static void until_next_command (int);
-static void until_command PARAMS ((char *, int));
+static void until_command (char *, int);
-static void path_info PARAMS ((char *, int));
+static void path_info (char *, int);
-static void path_command PARAMS ((char *, int));
+static void path_command (char *, int);
-static void unset_command PARAMS ((char *, int));
+static void unset_command (char *, int);
-static void float_info PARAMS ((char *, int));
+static void float_info (char *, int);
-static void detach_command PARAMS ((char *, int));
+static void detach_command (char *, int);
static void interrupt_target_command (char *args, int from_tty);
#if !defined (DO_REGISTERS_INFO)
-static void do_registers_info PARAMS ((int, int));
+static void do_registers_info (int, int);
#endif
-static void unset_environment_command PARAMS ((char *, int));
+static void unset_environment_command (char *, int);
-static void set_environment_command PARAMS ((char *, int));
+static void set_environment_command (char *, int);
-static void environment_info PARAMS ((char *, int));
+static void environment_info (char *, int);
-static void program_info PARAMS ((char *, int));
+static void program_info (char *, int);
-static void finish_command PARAMS ((char *, int));
+static void finish_command (char *, int);
-static void signal_command PARAMS ((char *, int));
+static void signal_command (char *, int);
-static void jump_command PARAMS ((char *, int));
+static void jump_command (char *, int);
-static void step_1 PARAMS ((int, int, char *));
+static void step_1 (int, int, char *);
static void step_once (int skip_subroutines, int single_inst, int count);
static void step_1_continuation (struct continuation_arg *arg);
-void nexti_command PARAMS ((char *, int));
+void nexti_command (char *, int);
-void stepi_command PARAMS ((char *, int));
+void stepi_command (char *, int);
-static void next_command PARAMS ((char *, int));
+static void next_command (char *, int);
-static void step_command PARAMS ((char *, int));
+static void step_command (char *, int);
-static void run_command PARAMS ((char *, int));
+static void run_command (char *, int);
-static void run_no_args_command PARAMS ((char *args, int from_tty));
+static void run_no_args_command (char *args, int from_tty);
-static void go_command PARAMS ((char *line_no, int from_tty));
+static void go_command (char *line_no, int from_tty);
-static int strip_bg_char PARAMS ((char **));
+static int strip_bg_char (char **);
-void _initialize_infcmd PARAMS ((void));
+void _initialize_infcmd (void);
#define GO_USAGE "Usage: go <location>\n"
-static void breakpoint_auto_delete_contents PARAMS ((PTR));
+static void breakpoint_auto_delete_contents (PTR);
#define ERROR_NO_INFERIOR \
if (!target_has_execution) error ("The program is not being run.");
@@ -455,6 +455,12 @@ nexti_command (count_string, from_tty)
}
static void
+disable_longjmp_breakpoint_cleanup (void *ignore)
+{
+ disable_longjmp_breakpoint ();
+}
+
+static void
step_1 (skip_subroutines, single_inst, count_string)
int skip_subroutines;
int single_inst;
@@ -489,10 +495,9 @@ step_1 (skip_subroutines, single_inst, count_string)
{
enable_longjmp_breakpoint ();
if (!event_loop_p || !target_can_async_p ())
- cleanups = make_cleanup ((make_cleanup_func) disable_longjmp_breakpoint,
- 0);
+ cleanups = make_cleanup (disable_longjmp_breakpoint_cleanup, 0 /*ignore*/);
else
- make_exec_cleanup ((make_cleanup_func) disable_longjmp_breakpoint, 0);
+ make_exec_cleanup (disable_longjmp_breakpoint_cleanup, 0 /*ignore*/);
}
/* In synchronous case, all is well, just use the regular for loop. */
@@ -1194,9 +1199,9 @@ finish_command (arg, from_tty)
breakpoint = set_momentary_breakpoint (sal, frame, bp_finish);
if (!event_loop_p || !target_can_async_p ())
- old_chain = make_cleanup ((make_cleanup_func) delete_breakpoint, breakpoint);
+ old_chain = make_cleanup_delete_breakpoint (breakpoint);
else
- old_chain = make_exec_cleanup ((make_cleanup_func) delete_breakpoint, breakpoint);
+ old_chain = make_exec_cleanup_delete_breakpoint (breakpoint);
/* Find the function we will return from. */
@@ -1998,6 +2003,7 @@ use \"set args\" without arguments.");
add_info ("registers", nofp_registers_info,
"List of integer registers and their contents, for selected stack frame.\n\
Register name as argument means describe only that register.");
+ add_info_alias ("r", "registers", 1);
if (xdb_commands)
add_com ("lr", class_info, nofp_registers_info,
diff --git a/gdb/inferior.h b/gdb/inferior.h
index 5965f045ee8..26798a50d74 100644
--- a/gdb/inferior.h
+++ b/gdb/inferior.h
@@ -38,13 +38,17 @@
struct inferior_status;
-extern struct inferior_status *save_inferior_status PARAMS ((int));
+extern struct inferior_status *save_inferior_status (int);
-extern void restore_inferior_status PARAMS ((struct inferior_status *));
+extern void restore_inferior_status (struct inferior_status *);
-extern void discard_inferior_status PARAMS ((struct inferior_status *));
+extern struct cleanup *make_cleanup_restore_inferior_status (struct inferior_status *);
-extern void write_inferior_status_register PARAMS ((struct inferior_status * inf_status, int regno, LONGEST val));
+extern void discard_inferior_status (struct inferior_status *);
+
+extern void write_inferior_status_register (struct inferior_status
+ *inf_status, int regno,
+ LONGEST val);
/* This macro gives the number of registers actually in use by the
inferior. This may be less than the total number of registers,
@@ -54,13 +58,13 @@ extern void write_inferior_status_register PARAMS ((struct inferior_status * inf
#define ARCH_NUM_REGS NUM_REGS
#endif
-extern void set_sigint_trap PARAMS ((void));
+extern void set_sigint_trap (void);
-extern void clear_sigint_trap PARAMS ((void));
+extern void clear_sigint_trap (void);
-extern void set_sigio_trap PARAMS ((void));
+extern void set_sigio_trap (void);
-extern void clear_sigio_trap PARAMS ((void));
+extern void clear_sigio_trap (void);
/* File name for default use for standard in/out in the inferior. */
@@ -116,84 +120,92 @@ extern char *registers;
extern signed char *register_valid;
-extern void clear_proceed_status PARAMS ((void));
+extern void clear_proceed_status (void);
+
+extern void proceed (CORE_ADDR, enum target_signal, int);
-extern void proceed PARAMS ((CORE_ADDR, enum target_signal, int));
+extern void kill_inferior (void);
-extern void kill_inferior PARAMS ((void));
+extern void generic_mourn_inferior (void);
-extern void generic_mourn_inferior PARAMS ((void));
+extern void terminal_ours (void);
-extern void terminal_ours PARAMS ((void));
+extern int run_stack_dummy (CORE_ADDR, char *);
-extern int run_stack_dummy PARAMS ((CORE_ADDR, char *));
+extern CORE_ADDR read_pc (void);
-extern CORE_ADDR read_pc PARAMS ((void));
+extern CORE_ADDR read_pc_pid (int);
-extern CORE_ADDR read_pc_pid PARAMS ((int));
+extern CORE_ADDR generic_target_read_pc (int);
-extern CORE_ADDR generic_target_read_pc PARAMS ((int));
+extern void write_pc (CORE_ADDR);
-extern void write_pc PARAMS ((CORE_ADDR));
+extern void write_pc_pid (CORE_ADDR, int);
-extern void write_pc_pid PARAMS ((CORE_ADDR, int));
+extern void generic_target_write_pc (CORE_ADDR, int);
-extern void generic_target_write_pc PARAMS ((CORE_ADDR, int));
+extern CORE_ADDR read_sp (void);
-extern CORE_ADDR read_sp PARAMS ((void));
+extern CORE_ADDR generic_target_read_sp (void);
-extern CORE_ADDR generic_target_read_sp PARAMS ((void));
+extern void write_sp (CORE_ADDR);
-extern void write_sp PARAMS ((CORE_ADDR));
+extern void generic_target_write_sp (CORE_ADDR);
-extern void generic_target_write_sp PARAMS ((CORE_ADDR));
+extern CORE_ADDR read_fp (void);
-extern CORE_ADDR read_fp PARAMS ((void));
+extern CORE_ADDR generic_target_read_fp (void);
-extern CORE_ADDR generic_target_read_fp PARAMS ((void));
+extern void write_fp (CORE_ADDR);
-extern void write_fp PARAMS ((CORE_ADDR));
+extern void generic_target_write_fp (CORE_ADDR);
-extern void generic_target_write_fp PARAMS ((CORE_ADDR));
+extern CORE_ADDR unsigned_pointer_to_address (struct type *type, void *buf);
-extern void wait_for_inferior PARAMS ((void));
+extern void unsigned_address_to_pointer (struct type *type, void *buf,
+ CORE_ADDR addr);
+extern CORE_ADDR signed_pointer_to_address (struct type *type, void *buf);
+extern void address_to_signed_pointer (struct type *type, void *buf,
+ CORE_ADDR addr);
-extern void fetch_inferior_event PARAMS ((void *));
+extern void wait_for_inferior (void);
-extern void init_wait_for_inferior PARAMS ((void));
+extern void fetch_inferior_event (void *);
-extern void close_exec_file PARAMS ((void));
+extern void init_wait_for_inferior (void);
-extern void reopen_exec_file PARAMS ((void));
+extern void close_exec_file (void);
+
+extern void reopen_exec_file (void);
/* The `resume' routine should only be called in special circumstances.
Normally, use `proceed', which handles a lot of bookkeeping. */
-extern void resume PARAMS ((int, enum target_signal));
+extern void resume (int, enum target_signal);
/* From misc files */
-extern void store_inferior_registers PARAMS ((int));
+extern void store_inferior_registers (int);
-extern void fetch_inferior_registers PARAMS ((int));
+extern void fetch_inferior_registers (int);
-extern void solib_create_inferior_hook PARAMS ((void));
+extern void solib_create_inferior_hook (void);
-extern void child_terminal_info PARAMS ((char *, int));
+extern void child_terminal_info (char *, int);
-extern void term_info PARAMS ((char *, int));
+extern void term_info (char *, int);
-extern void terminal_ours_for_output PARAMS ((void));
+extern void terminal_ours_for_output (void);
-extern void terminal_inferior PARAMS ((void));
+extern void terminal_inferior (void);
-extern void terminal_init_inferior PARAMS ((void));
+extern void terminal_init_inferior (void);
-extern void terminal_init_inferior_with_pgrp PARAMS ((int pgrp));
+extern void terminal_init_inferior_with_pgrp (int pgrp);
/* From infptrace.c or infttrace.c */
-extern int attach PARAMS ((int));
+extern int attach (int);
#if !defined(REQUIRE_ATTACH)
#define REQUIRE_ATTACH attach
@@ -203,70 +215,67 @@ extern int attach PARAMS ((int));
#define REQUIRE_DETACH(pid,siggnal) detach (siggnal)
#endif
-extern void detach PARAMS ((int));
+extern void detach (int);
/* PTRACE method of waiting for inferior process. */
-int ptrace_wait PARAMS ((int, int *));
+int ptrace_wait (int, int *);
-extern void child_resume PARAMS ((int, int, enum target_signal));
+extern void child_resume (int, int, enum target_signal);
#ifndef PTRACE_ARG3_TYPE
#define PTRACE_ARG3_TYPE int /* Correct definition for most systems. */
#endif
-extern int call_ptrace PARAMS ((int, int, PTRACE_ARG3_TYPE, int));
+extern int call_ptrace (int, int, PTRACE_ARG3_TYPE, int);
-extern void pre_fork_inferior PARAMS ((void));
+extern void pre_fork_inferior (void);
/* From procfs.c */
-extern int proc_iterate_over_mappings PARAMS ((int (*)(int, CORE_ADDR)));
+extern int proc_iterate_over_mappings (int (*)(int, CORE_ADDR));
-extern int procfs_first_available PARAMS ((void));
+extern int procfs_first_available (void);
/* From fork-child.c */
-extern void fork_inferior PARAMS ((char *, char *, char **,
- void (*)(void),
- void (*)(int),
- void (*)(void),
- char *));
+extern void fork_inferior (char *, char *, char **,
+ void (*)(void),
+ void (*)(int), void (*)(void), char *);
-extern void
-clone_and_follow_inferior PARAMS ((int, int *));
+extern void clone_and_follow_inferior (int, int *);
-extern void startup_inferior PARAMS ((int));
+extern void startup_inferior (int);
/* From inflow.c */
-extern void new_tty_prefork PARAMS ((char *));
+extern void new_tty_prefork (char *);
-extern int gdb_has_a_terminal PARAMS ((void));
+extern int gdb_has_a_terminal (void);
/* From infrun.c */
-extern void start_remote PARAMS ((void));
+extern void start_remote (void);
-extern void normal_stop PARAMS ((void));
+extern void normal_stop (void);
-extern int signal_stop_state PARAMS ((int));
+extern int signal_stop_state (int);
-extern int signal_print_state PARAMS ((int));
+extern int signal_print_state (int);
-extern int signal_pass_state PARAMS ((int));
+extern int signal_pass_state (int);
-extern int signal_stop_update PARAMS ((int, int));
+extern int signal_stop_update (int, int);
-extern int signal_print_update PARAMS ((int, int));
+extern int signal_print_update (int, int);
-extern int signal_pass_update PARAMS ((int, int));
+extern int signal_pass_update (int, int);
/* From infcmd.c */
-extern void tty_command PARAMS ((char *, int));
+extern void tty_command (char *, int);
-extern void attach_command PARAMS ((char *, int));
+extern void attach_command (char *, int);
/* Last signal that the inferior received (why it stopped). */
@@ -421,6 +430,9 @@ extern int attach_flag;
#define CALL_DUMMY_STACK_ADJUST_P (0)
#endif
+/* FIXME: cagney/2000-04-17: gdbarch should manage this. The default
+ shouldn't be necessary. */
+
#if !defined (CALL_DUMMY_P)
#if defined (CALL_DUMMY)
#define CALL_DUMMY_P 1
@@ -429,24 +441,6 @@ extern int attach_flag;
#endif
#endif
-#if !defined (CALL_DUMMY_WORDS)
-#if defined (CALL_DUMMY)
-extern LONGEST call_dummy_words[];
-#define CALL_DUMMY_WORDS (call_dummy_words)
-#else
-#define CALL_DUMMY_WORDS (internal_error ("CALL_DUMMY_WORDS"), (void*) 0)
-#endif
-#endif
-
-#if !defined (SIZEOF_CALL_DUMMY_WORDS)
-#if defined (CALL_DUMMY)
-extern int sizeof_call_dummy_words;
-#define SIZEOF_CALL_DUMMY_WORDS (sizeof_call_dummy_words)
-#else
-#define SIZEOF_CALL_DUMMY_WORDS (internal_error ("SIZEOF_CALL_DUMMY_WORDS"), 0)
-#endif
-#endif
-
#if !defined PUSH_DUMMY_FRAME
#define PUSH_DUMMY_FRAME (internal_error ("PUSH_DUMMY_FRAME"), 0)
#endif
@@ -462,28 +456,32 @@ extern int sizeof_call_dummy_words;
/* Are we in a call dummy? */
-extern int pc_in_call_dummy_before_text_end PARAMS ((CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address));
+extern int pc_in_call_dummy_before_text_end (CORE_ADDR pc, CORE_ADDR sp,
+ CORE_ADDR frame_address);
#if !GDB_MULTI_ARCH
#if !defined (PC_IN_CALL_DUMMY) && CALL_DUMMY_LOCATION == BEFORE_TEXT_END
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) pc_in_call_dummy_before_text_end (pc, sp, frame_address)
#endif /* Before text_end. */
#endif
-extern int pc_in_call_dummy_after_text_end PARAMS ((CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address));
+extern int pc_in_call_dummy_after_text_end (CORE_ADDR pc, CORE_ADDR sp,
+ CORE_ADDR frame_address);
#if !GDB_MULTI_ARCH
#if !defined (PC_IN_CALL_DUMMY) && CALL_DUMMY_LOCATION == AFTER_TEXT_END
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) pc_in_call_dummy_after_text_end (pc, sp, frame_address)
#endif
#endif
-extern int pc_in_call_dummy_on_stack PARAMS ((CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address));
+extern int pc_in_call_dummy_on_stack (CORE_ADDR pc, CORE_ADDR sp,
+ CORE_ADDR frame_address);
#if !GDB_MULTI_ARCH
#if !defined (PC_IN_CALL_DUMMY) && CALL_DUMMY_LOCATION == ON_STACK
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) pc_in_call_dummy_on_stack (pc, sp, frame_address)
#endif
#endif
-extern int pc_in_call_dummy_at_entry_point PARAMS ((CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address));
+extern int pc_in_call_dummy_at_entry_point (CORE_ADDR pc, CORE_ADDR sp,
+ CORE_ADDR frame_address);
#if !GDB_MULTI_ARCH
#if !defined (PC_IN_CALL_DUMMY) && CALL_DUMMY_LOCATION == AT_ENTRY_POINT
#define PC_IN_CALL_DUMMY(pc, sp, frame_address) pc_in_call_dummy_at_entry_point (pc, sp, frame_address)
diff --git a/gdb/inflow.c b/gdb/inflow.c
index 3747a7d73d5..0b98f83ea9d 100644
--- a/gdb/inflow.c
+++ b/gdb/inflow.c
@@ -57,20 +57,16 @@
#endif
#if defined (SIGIO) && defined (FASYNC) && defined (FD_SET) && defined (F_SETOWN)
-static void
-handle_sigio PARAMS ((int));
+static void handle_sigio (int);
#endif
-extern void _initialize_inflow PARAMS ((void));
+extern void _initialize_inflow (void);
-static void
-pass_signal PARAMS ((int));
+static void pass_signal (int);
-static void
-kill_command PARAMS ((char *, int));
+static void kill_command (char *, int);
-static void
-terminal_ours_1 PARAMS ((int));
+static void terminal_ours_1 (int);
/* Record terminal status separately for debugger and inferior. */
@@ -176,7 +172,7 @@ gdb_has_a_terminal ()
fprintf_unfiltered(gdb_stderr, "[%s failed in terminal_inferior: %s]\n", \
what, strerror (errno))
-static void terminal_ours_1 PARAMS ((int));
+static void terminal_ours_1 (int);
/* Initialize the terminal settings we record for the inferior,
before we actually run the inferior. */
diff --git a/gdb/infptrace.c b/gdb/infptrace.c
index fb0373af94e..52ff7a3eade 100644
--- a/gdb/infptrace.c
+++ b/gdb/infptrace.c
@@ -34,7 +34,7 @@
#endif
#include <sys/param.h>
-#include <sys/dir.h>
+#include "gdb_dirent.h"
#include <signal.h>
#include <sys/ioctl.h>
@@ -100,12 +100,12 @@
#endif /* !FETCH_INFERIOR_REGISTERS */
#if !defined (CHILD_XFER_MEMORY)
-static void udot_info PARAMS ((char *, int));
+static void udot_info (char *, int);
#endif
#if !defined (FETCH_INFERIOR_REGISTERS)
-static void fetch_register PARAMS ((int));
-static void store_register PARAMS ((int));
+static void fetch_register (int);
+static void store_register (int);
#endif
/*
@@ -124,8 +124,8 @@ static void store_register PARAMS ((int));
#define TIDGET(PID) 0
#endif
-void _initialize_kernel_u_addr PARAMS ((void));
-void _initialize_infptrace PARAMS ((void));
+void _initialize_kernel_u_addr (void);
+void _initialize_infptrace (void);
/* This function simply calls ptrace with the given arguments.
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 594523f1716..d6075770ac6 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -46,7 +46,7 @@ static void sig_print_info (enum target_signal);
static void sig_print_header (void);
-static void resume_cleanups (int);
+static void resume_cleanups (void *);
static int hook_stop_stub (void *);
@@ -436,13 +436,13 @@ static int follow_vfork_when_exec;
static char *follow_fork_mode_kind_names[] =
{
-/* ??rehrauer: The "both" option is broken, by what may be a 10.20
- kernel problem. It's also not terribly useful without a GUI to
- help the user drive two debuggers. So for now, I'm disabling
- the "both" option.
- "parent", "child", "both", "ask" };
- */
- "parent", "child", "ask"};
+ /* ??rehrauer: The "both" option is broken, by what may be a 10.20
+ kernel problem. It's also not terribly useful without a GUI to
+ help the user drive two debuggers. So for now, I'm disabling the
+ "both" option. */
+ /* "parent", "child", "both", "ask" */
+ "parent", "child", "ask", NULL
+};
static char *follow_fork_mode_string = NULL;
@@ -752,7 +752,7 @@ static int singlestep_breakpoints_inserted_p = 0;
/* Things to clean up if we QUIT out of resume (). */
/* ARGSUSED */
static void
-resume_cleanups (int arg)
+resume_cleanups (void *ignore)
{
normal_stop ();
}
@@ -762,7 +762,12 @@ static char schedlock_on[] = "on";
static char schedlock_step[] = "step";
static char *scheduler_mode = schedlock_off;
static char *scheduler_enums[] =
-{schedlock_off, schedlock_on, schedlock_step};
+{
+ schedlock_off,
+ schedlock_on,
+ schedlock_step,
+ NULL
+};
static void
set_schedlock_func (char *args, int from_tty, struct cmd_list_element *c)
@@ -791,8 +796,7 @@ void
resume (int step, enum target_signal sig)
{
int should_resume = 1;
- struct cleanup *old_cleanups = make_cleanup ((make_cleanup_func)
- resume_cleanups, 0);
+ struct cleanup *old_cleanups = make_cleanup (resume_cleanups, 0);
QUIT;
#ifdef CANNOT_STEP_BREAKPOINT
@@ -1044,9 +1048,11 @@ proceed (CORE_ADDR addr, enum target_signal siggnal, int step)
int temp = insert_breakpoints ();
if (temp)
{
- print_sys_errmsg ("ptrace", temp);
+ print_sys_errmsg ("insert_breakpoints", temp);
error ("Cannot insert breakpoints.\n\
-The same program may be running in another process.");
+The same program may be running in another process,\n\
+or you may have requested too many hardware\n\
+breakpoints and/or watchpoints.\n");
}
breakpoints_inserted = 1;
@@ -2267,6 +2273,8 @@ handle_inferior_event (struct execution_control_state *ecs)
the HP-UX maintainer to furnish a fix that doesn't break other
platforms. --JimB, 20 May 1999 */
check_sigtramp2 (ecs);
+ keep_going (ecs);
+ return;
}
/* Handle cases caused by hitting a breakpoint. */
@@ -2738,6 +2746,20 @@ handle_inferior_event (struct execution_control_state *ecs)
if (step_over_calls > 0 || IGNORE_HELPER_CALL (stop_pc))
{
/* We're doing a "next". */
+
+ if (IN_SIGTRAMP (stop_pc, ecs->stop_func_name)
+ && INNER_THAN (step_frame_address, read_sp()))
+ /* We stepped out of a signal handler, and into its
+ calling trampoline. This is misdetected as a
+ subroutine call, but stepping over the signal
+ trampoline isn't such a bad idea. In order to do
+ that, we have to ignore the value in
+ step_frame_address, since that doesn't represent the
+ frame that'll reach when we return from the signal
+ trampoline. Otherwise we'll probably continue to the
+ end of the program. */
+ step_frame_address = 0;
+
step_over_function (ecs);
keep_going (ecs);
return;
@@ -3038,7 +3060,7 @@ step_over_function (struct execution_control_state *ecs)
step_resume_breakpoint =
set_momentary_breakpoint (sr_sal, get_current_frame (), bp_step_resume);
- if (!IN_SOLIB_DYNSYM_RESOLVE_CODE (sr_sal.pc))
+ if (step_frame_address && !IN_SOLIB_DYNSYM_RESOLVE_CODE (sr_sal.pc))
step_resume_breakpoint->frame = step_frame_address;
if (breakpoints_inserted)
@@ -3383,9 +3405,11 @@ normal_stop (void)
if (breakpoints_failed)
{
target_terminal_ours_for_output ();
- print_sys_errmsg ("ptrace", breakpoints_failed);
+ print_sys_errmsg ("While inserting breakpoints", breakpoints_failed);
printf_filtered ("Stopped; cannot insert breakpoints.\n\
-The same program may be running in another process.\n");
+The same program may be running in another process,\n\
+or you may have requested too many hardware breakpoints\n\
+and/or watchpoints.\n");
}
if (target_has_execution && breakpoints_inserted)
@@ -4089,6 +4113,18 @@ restore_inferior_status (struct inferior_status *inf_status)
free_inferior_status (inf_status);
}
+static void
+do_restore_inferior_status_cleanup (void *sts)
+{
+ restore_inferior_status (sts);
+}
+
+struct cleanup *
+make_cleanup_restore_inferior_status (struct inferior_status *inf_status)
+{
+ return make_cleanup (do_restore_inferior_status_cleanup, inf_status);
+}
+
void
discard_inferior_status (struct inferior_status *inf_status)
{
@@ -4242,7 +4278,7 @@ to the user would be loading/unloading of a new library.\n",
c = add_set_enum_cmd ("follow-fork-mode",
class_run,
follow_fork_mode_kind_names,
- (char *) &follow_fork_mode_string,
+ &follow_fork_mode_string,
/* ??rehrauer: The "both" option is broken, by what may be a 10.20
kernel problem. It's also not terribly useful without a GUI to
help the user drive two debuggers. So for now, I'm disabling
@@ -4277,7 +4313,7 @@ By default, the debugger will follow the parent process.",
c = add_set_enum_cmd ("scheduler-locking", class_run,
scheduler_enums, /* array of string names */
- (char *) &scheduler_mode, /* current mode */
+ &scheduler_mode, /* current mode */
"Set mode for locking scheduler during execution.\n\
off == no locking (threads may preempt at any time)\n\
on == full locking (no thread except the current thread may run)\n\
diff --git a/gdb/inftarg.c b/gdb/inftarg.c
index 82a15cdf243..53c53e4f5a7 100644
--- a/gdb/inftarg.c
+++ b/gdb/inftarg.c
@@ -34,76 +34,62 @@
#include "gdb_wait.h"
-extern struct symtab_and_line *
- child_enable_exception_callback PARAMS ((enum exception_event_kind, int));
+extern struct symtab_and_line *child_enable_exception_callback (enum
+ exception_event_kind,
+ int);
-extern struct exception_event_record *
- child_get_current_exception_event PARAMS ((void));
+extern struct exception_event_record
+ *child_get_current_exception_event (void);
-extern void _initialize_inftarg PARAMS ((void));
+extern void _initialize_inftarg (void);
-static void
-child_prepare_to_store PARAMS ((void));
+static void child_prepare_to_store (void);
#ifndef CHILD_WAIT
-static int child_wait PARAMS ((int, struct target_waitstatus *));
+static int child_wait (int, struct target_waitstatus *);
#endif /* CHILD_WAIT */
#if !defined(CHILD_POST_WAIT)
-void
-child_post_wait PARAMS ((int, int));
+void child_post_wait (int, int);
#endif
-static void child_open PARAMS ((char *, int));
+static void child_open (char *, int);
-static void
-child_files_info PARAMS ((struct target_ops *));
+static void child_files_info (struct target_ops *);
-static void
-child_detach PARAMS ((char *, int));
+static void child_detach (char *, int);
-static void
-child_detach_from_process PARAMS ((int, char *, int, int));
+static void child_detach_from_process (int, char *, int, int);
-static void
-child_attach PARAMS ((char *, int));
+static void child_attach (char *, int);
-static void
-child_attach_to_process PARAMS ((char *, int, int));
+static void child_attach_to_process (char *, int, int);
#if !defined(CHILD_POST_ATTACH)
-extern void child_post_attach PARAMS ((int));
+extern void child_post_attach (int);
#endif
-static void
-child_require_attach PARAMS ((char *, int));
+static void child_require_attach (char *, int);
-static void
-child_require_detach PARAMS ((int, char *, int));
+static void child_require_detach (int, char *, int);
-static void
-ptrace_me PARAMS ((void));
+static void ptrace_me (void);
-static void
-ptrace_him PARAMS ((int));
+static void ptrace_him (int);
-static void
-child_create_inferior PARAMS ((char *, char *, char **));
+static void child_create_inferior (char *, char *, char **);
-static void
-child_mourn_inferior PARAMS ((void));
+static void child_mourn_inferior (void);
-static int
-child_can_run PARAMS ((void));
+static int child_can_run (void);
-static void
-child_stop PARAMS ((void));
+static void child_stop (void);
#ifndef CHILD_THREAD_ALIVE
-int child_thread_alive PARAMS ((int));
+int child_thread_alive (int);
#endif
-static void init_child_ops PARAMS ((void));
+static void init_child_ops (void);
extern char **environ;
diff --git a/gdb/irix4-nat.c b/gdb/irix4-nat.c
index 03eadc0359e..b3e288ce8fb 100644
--- a/gdb/irix4-nat.c
+++ b/gdb/irix4-nat.c
@@ -30,14 +30,16 @@
#include <sys/procfs.h>
#include <setjmp.h> /* For JB_XXX. */
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
/* Size of elements in jmpbuf */
#define JB_ELEMENT_SIZE 4
typedef unsigned int greg_t; /* why isn't this defined? */
-static void
-fetch_core_registers PARAMS ((char *, unsigned int, int, CORE_ADDR));
+static void fetch_core_registers (char *, unsigned int, int, CORE_ADDR);
/*
* See the comment in m68k-tdep.c regarding the utility of these functions.
diff --git a/gdb/irix5-nat.c b/gdb/irix5-nat.c
index 0c090de6477..ea37b8c23b4 100644
--- a/gdb/irix5-nat.c
+++ b/gdb/irix5-nat.c
@@ -33,8 +33,10 @@
#include <sys/procfs.h>
#include <setjmp.h> /* For JB_XXX. */
-static void
-fetch_core_registers PARAMS ((char *, unsigned int, int, CORE_ADDR));
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
+static void fetch_core_registers (char *, unsigned int, int, CORE_ADDR);
/* Size of elements in jmpbuf */
@@ -342,38 +344,27 @@ static CORE_ADDR breakpoint_addr; /* Address where end bkpt is set */
/* Local function prototypes */
-static void
-sharedlibrary_command PARAMS ((char *, int));
+static void sharedlibrary_command (char *, int);
-static int
-enable_break PARAMS ((void));
+static int enable_break (void);
-static int
-disable_break PARAMS ((void));
+static int disable_break (void);
-static void
-info_sharedlibrary_command PARAMS ((char *, int));
+static void info_sharedlibrary_command (char *, int);
-static int
-symbol_add_stub PARAMS ((char *));
+static int symbol_add_stub (void *);
-static struct so_list *
- find_solib PARAMS ((struct so_list *));
+static struct so_list *find_solib (struct so_list *);
-static struct link_map *
- first_link_map_member PARAMS ((void));
+static struct link_map *first_link_map_member (void);
-static struct link_map *
- next_link_map_member PARAMS ((struct so_list *));
+static struct link_map *next_link_map_member (struct so_list *);
-static void
-xfer_link_map_member PARAMS ((struct so_list *, struct link_map *));
+static void xfer_link_map_member (struct so_list *, struct link_map *);
-static CORE_ADDR
- locate_base PARAMS ((void));
+static CORE_ADDR locate_base (void);
-static int
-solib_map_sections PARAMS ((char *));
+static int solib_map_sections (void *);
/*
@@ -403,8 +394,7 @@ solib_map_sections PARAMS ((char *));
*/
static int
-solib_map_sections (arg)
- char *arg;
+solib_map_sections (void *arg)
{
struct so_list *so = (struct so_list *) arg; /* catch_errors bogon */
char *filename;
@@ -469,6 +459,7 @@ solib_map_sections (arg)
/* Free the file names, close the file now. */
do_cleanups (old_chain);
+ /* must be non-zero */
return (1);
}
@@ -573,12 +564,13 @@ first_link_map_member ()
return NULL;
/* Get first list entry. */
- lladdr = (CORE_ADDR) listp;
+ /* The MIPS Sign extends addresses. */
+ lladdr = host_pointer_to_address (listp);
read_memory (lladdr, (char *) &list_old, sizeof (struct obj_list));
/* The first entry in the list is the object file we are debugging,
so skip it. */
- next_lladdr = (CORE_ADDR) list_old.next;
+ next_lladdr = host_pointer_to_address (list_old.next);
#ifdef HANDLE_NEW_OBJ_LIST
if (list_old.data == NEW_OBJ_INFO_MAGIC)
@@ -638,7 +630,7 @@ next_link_map_member (so_list_ptr)
status = target_read_memory (lm->l_lladdr,
(char *) &list_old,
sizeof (struct obj_list));
- next_lladdr = (CORE_ADDR) list_old.next;
+ next_lladdr = host_pointer_to_address (list_old.next);
}
#ifdef HANDLE_NEW_OBJ_LIST
else if (lm->l_variant == OBJ_LIST_32)
@@ -691,7 +683,7 @@ xfer_link_map_member (so_list_ptr, lm)
new_lm->l_variant = OBJ_LIST_OLD;
new_lm->l_lladdr = lladdr;
- new_lm->l_next = (CORE_ADDR) list_old.next;
+ new_lm->l_next = host_pointer_to_address (list_old.next);
#ifdef HANDLE_NEW_OBJ_LIST
if (list_old.data == NEW_OBJ_INFO_MAGIC)
@@ -827,8 +819,7 @@ find_solib (so_list_ptr)
/* A small stub to get us past the arg-passing pinhole of catch_errors. */
static int
-symbol_add_stub (arg)
- char *arg;
+symbol_add_stub (void *arg)
{
register struct so_list *so = (struct so_list *) arg; /* catch_errs bogon */
CORE_ADDR text_addr = 0;
@@ -852,9 +843,12 @@ symbol_add_stub (arg)
text_addr = bfd_section_vma (so->abfd, lowest_sect) + LM_OFFSET (so);
}
- section_addrs.text_addr = text_addr;
+
+ section_addrs.other[0].name = ".text";
+ section_addrs.other[0].addr = text_addr;
so->objfile = symbol_file_add (so->so_name, so->from_tty,
&section_addrs, 0, 0);
+ /* must be non-zero */
return (1);
}
diff --git a/gdb/jv-exp.y b/gdb/jv-exp.y
index be5b590a360..ddf22907518 100644
--- a/gdb/jv-exp.y
+++ b/gdb/jv-exp.y
@@ -99,21 +99,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define YYDEBUG 0 /* Default to no yydebug support */
#endif
-int
-yyparse PARAMS ((void));
+int yyparse (void);
-static int
-yylex PARAMS ((void));
+static int yylex (void);
-void
-yyerror PARAMS ((char *));
+void yyerror (char *);
-static struct type * java_type_from_name PARAMS ((struct stoken));
-static void push_expression_name PARAMS ((struct stoken));
-static void push_fieldnames PARAMS ((struct stoken));
+static struct type *java_type_from_name (struct stoken);
+static void push_expression_name (struct stoken);
+static void push_fieldnames (struct stoken);
-static struct expression *copy_exp PARAMS ((struct expression *, int));
-static void insert_exp PARAMS ((int, struct expression *));
+static struct expression *copy_exp (struct expression *, int);
+static void insert_exp (int, struct expression *);
%}
@@ -145,8 +142,7 @@ static void insert_exp PARAMS ((int, struct expression *));
%{
/* YYSTYPE gets defined by %union */
-static int
-parse_number PARAMS ((char *, int, int, YYSTYPE *));
+static int parse_number (char *, int, int, YYSTYPE *);
%}
%type <lval> rcurly Dims Dims_opt
diff --git a/gdb/jv-lang.c b/gdb/jv-lang.c
index 367add2427f..4c08c7345be 100644
--- a/gdb/jv-lang.c
+++ b/gdb/jv-lang.c
@@ -47,16 +47,16 @@ struct type *java_void_type;
/* Local functions */
-extern void _initialize_java_language PARAMS ((void));
+extern void _initialize_java_language (void);
-static int java_demangled_signature_length PARAMS ((char *));
-static void java_demangled_signature_copy PARAMS ((char *, char *));
+static int java_demangled_signature_length (char *);
+static void java_demangled_signature_copy (char *, char *);
-static struct symtab *get_java_class_symtab PARAMS ((void));
-static char *get_java_utf8_name PARAMS ((struct obstack * obstack, value_ptr name));
-static int java_class_is_primitive PARAMS ((value_ptr clas));
-static struct type *java_lookup_type PARAMS ((char *signature));
-static value_ptr java_value_string PARAMS ((char *ptr, int len));
+static struct symtab *get_java_class_symtab (void);
+static char *get_java_utf8_name (struct obstack *obstack, value_ptr name);
+static int java_class_is_primitive (value_ptr clas);
+static struct type *java_lookup_type (char *signature);
+static value_ptr java_value_string (char *ptr, int len);
static void java_emit_char (int c, struct ui_file * stream, int quoter);
@@ -66,7 +66,7 @@ static void java_emit_char (int c, struct ui_file * stream, int quoter);
static struct objfile *dynamics_objfile = NULL;
-static struct type *java_link_class_type PARAMS ((struct type *, value_ptr));
+static struct type *java_link_class_type (struct type *, value_ptr);
static struct objfile *
get_dynamics_objfile ()
@@ -149,7 +149,7 @@ add_class_symtab_symbol (sym)
BLOCK_NSYMS (bl) = BLOCK_NSYMS (bl) + 1;
}
-static struct symbol *add_class_symbol PARAMS ((struct type * type, CORE_ADDR addr));
+static struct symbol *add_class_symbol (struct type *type, CORE_ADDR addr);
static struct symbol *
add_class_symbol (type, addr)
@@ -224,7 +224,7 @@ get_java_utf8_name (obstack, name)
+ TYPE_LENGTH (VALUE_TYPE (temp));
chrs = obstack_alloc (obstack, name_length + 1);
chrs[name_length] = '\0';
- read_memory_section (data_addr, chrs, name_length, NULL);
+ read_memory (data_addr, chrs, name_length);
return chrs;
}
@@ -1107,7 +1107,7 @@ _initialize_java_language ()
We should use make_run_cleanup to have this be called.
But will that mess up values in value histry? FIXME */
-extern void java_rerun_cleanup PARAMS ((void));
+extern void java_rerun_cleanup (void);
void
java_rerun_cleanup ()
{
diff --git a/gdb/jv-lang.h b/gdb/jv-lang.h
index cfb1a39d64e..5d62c382e87 100644
--- a/gdb/jv-lang.h
+++ b/gdb/jv-lang.h
@@ -18,11 +18,9 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-extern int
-java_parse PARAMS ((void)); /* Defined in jv-exp.y */
+extern int java_parse (void); /* Defined in jv-exp.y */
-extern void
-java_error PARAMS ((char *)); /* Defined in jv-exp.y */
+extern void java_error (char *); /* Defined in jv-exp.y */
/* sizeof (struct Object) */
#define JAVA_OBJECT_SIZE (get_java_object_header_size ())
@@ -44,25 +42,25 @@ extern int java_val_print (struct type *, char *, int, CORE_ADDR,
extern int java_value_print (struct value *, struct ui_file *, int,
enum val_prettyprint);
-extern value_ptr java_class_from_object PARAMS ((value_ptr));
+extern value_ptr java_class_from_object (value_ptr);
-extern struct type *type_from_class PARAMS ((struct value *));
+extern struct type *type_from_class (struct value *);
-extern struct type *java_primitive_type PARAMS ((int signature));
+extern struct type *java_primitive_type (int signature);
-extern struct type *java_primitive_type_from_name PARAMS ((char *, int));
+extern struct type *java_primitive_type_from_name (char *, int);
-extern struct type *java_array_type PARAMS ((struct type *, int));
+extern struct type *java_array_type (struct type *, int);
-extern struct type *get_java_object_type PARAMS ((void));
-extern int get_java_object_header_size PARAMS ((void));
+extern struct type *get_java_object_type (void);
+extern int get_java_object_header_size (void);
-extern struct type *java_lookup_class PARAMS ((char *));
+extern struct type *java_lookup_class (char *);
-extern int is_object_type PARAMS ((struct type *));
+extern int is_object_type (struct type *);
/* Defined in jv-typeprint.c */
extern void java_print_type (struct type *, char *, struct ui_file *, int,
int);
-extern char *java_demangle_type_signature PARAMS ((char *));
+extern char *java_demangle_type_signature (char *);
diff --git a/gdb/jv-valprint.c b/gdb/jv-valprint.c
index 0f4232cc8c6..6f9273d5100 100644
--- a/gdb/jv-valprint.c
+++ b/gdb/jv-valprint.c
@@ -454,6 +454,7 @@ java_val_print (type, valaddr, embedded_offset, address, stream, format,
deref_ref, recurse, pretty)
struct type *type;
char *valaddr;
+ int embedded_offset;
CORE_ADDR address;
struct ui_file *stream;
int format;
diff --git a/gdb/language.c b/gdb/language.c
index 20d2adb66c0..60f43d3f3b4 100644
--- a/gdb/language.c
+++ b/gdb/language.c
@@ -42,49 +42,35 @@
#include "target.h"
#include "parser-defs.h"
-extern void _initialize_language PARAMS ((void));
+extern void _initialize_language (void);
-static void
-show_language_command PARAMS ((char *, int));
+static void show_language_command (char *, int);
-static void
-set_language_command PARAMS ((char *, int));
+static void set_language_command (char *, int);
-static void
-show_type_command PARAMS ((char *, int));
+static void show_type_command (char *, int);
-static void
-set_type_command PARAMS ((char *, int));
+static void set_type_command (char *, int);
-static void
-show_range_command PARAMS ((char *, int));
+static void show_range_command (char *, int);
-static void
-set_range_command PARAMS ((char *, int));
+static void set_range_command (char *, int);
-static void
-set_range_str PARAMS ((void));
+static void set_range_str (void);
-static void
-set_type_str PARAMS ((void));
+static void set_type_str (void);
-static void
-set_lang_str PARAMS ((void));
+static void set_lang_str (void);
-static void
-unk_lang_error PARAMS ((char *));
+static void unk_lang_error (char *);
-static int
-unk_lang_parser PARAMS ((void));
+static int unk_lang_parser (void);
-static void
-show_check PARAMS ((char *, int));
+static void show_check (char *, int);
-static void
-set_check PARAMS ((char *, int));
+static void set_check (char *, int);
-static void
-set_type_range PARAMS ((void));
+static void set_type_range (void);
static void unk_lang_emit_char (int c, struct ui_file *stream, int quoter);
@@ -94,8 +80,7 @@ static void unk_lang_printstr (struct ui_file * stream, char *string,
unsigned int length, int width,
int force_ellipses);
-static struct type *
- unk_lang_create_fundamental_type PARAMS ((struct objfile *, int));
+static struct type *unk_lang_create_fundamental_type (struct objfile *, int);
static void unk_lang_print_type (struct type *, char *, struct ui_file *,
int, int);
diff --git a/gdb/language.h b/gdb/language.h
index 69ac2082ec1..185bc919ea0 100644
--- a/gdb/language.h
+++ b/gdb/language.h
@@ -141,15 +141,15 @@ struct language_defn
/* Parser function. */
- int (*la_parser) PARAMS ((void));
+ int (*la_parser) (void);
/* Parser error function */
- void (*la_error) PARAMS ((char *));
+ void (*la_error) (char *);
/* Evaluate an expression. */
- struct value *(*evaluate_exp) PARAMS ((struct type *, struct expression *,
- int *, enum noside));
+ struct value *(*evaluate_exp) (struct type *, struct expression *,
+ int *, enum noside);
void (*la_printchar) (int ch, struct ui_file * stream);
@@ -159,7 +159,7 @@ struct language_defn
void (*la_emitchar) (int ch, struct ui_file * stream, int quoter);
- struct type *(*la_fund_type) PARAMS ((struct objfile *, int));
+ struct type *(*la_fund_type) (struct objfile *, int);
/* Print a type using syntax appropriate for this language. */
@@ -265,11 +265,9 @@ language_mode;
#define CAST_IS_CONVERSION (current_language->la_language == language_c || \
current_language->la_language == language_cplus)
-extern void
-language_info PARAMS ((int));
+extern void language_info (int);
-extern enum language
-set_language PARAMS ((enum language));
+extern enum language set_language (enum language);
/* This page contains functions that return things that are
@@ -353,14 +351,11 @@ set_language PARAMS ((enum language));
overwritten by the next call. Takes printf options like "08" or "l"
(to produce e.g. %08x or %lx). */
-extern char *
- local_decimal_format_custom PARAMS ((char *)); /* language.c */
+extern char *local_decimal_format_custom (char *); /* language.c */
-extern char *
- local_octal_format_custom PARAMS ((char *)); /* language.c */
+extern char *local_octal_format_custom (char *); /* language.c */
-extern char *
- local_hex_format_custom PARAMS ((char *)); /* language.c */
+extern char *local_hex_format_custom (char *); /* language.c */
#if 0
/* FIXME: cagney/2000-03-04: This function does not appear to be used.
@@ -368,108 +363,85 @@ extern char *
/* Return a string that contains the hex digits of the number. No preceeding
"0x" */
-extern char *
- longest_raw_hex_string PARAMS ((LONGEST));
+extern char *longest_raw_hex_string (LONGEST);
#endif
/* Return a string that contains a number formatted in one of the local
(language-specific) formats. Result is static and is overwritten by
the next call. Takes printf options like "08l" or "l". */
-extern char *
- local_hex_string PARAMS ((unsigned long)); /* language.c */
+extern char *local_hex_string (unsigned long); /* language.c */
-extern char *
- longest_local_hex_string PARAMS ((LONGEST)); /* language.c */
+extern char *longest_local_hex_string (LONGEST); /* language.c */
-extern char *
- local_hex_string_custom PARAMS ((unsigned long, char *)); /* language.c */
+extern char *local_hex_string_custom (unsigned long, char *); /* language.c */
-extern char *
- longest_local_hex_string_custom PARAMS ((LONGEST, char *)); /* language.c */
+extern char *longest_local_hex_string_custom (LONGEST, char *); /* language.c */
/* Type predicates */
-extern int
-simple_type PARAMS ((struct type *));
+extern int simple_type (struct type *);
-extern int
-ordered_type PARAMS ((struct type *));
+extern int ordered_type (struct type *);
-extern int
-same_type PARAMS ((struct type *, struct type *));
+extern int same_type (struct type *, struct type *);
-extern int
-integral_type PARAMS ((struct type *));
+extern int integral_type (struct type *);
-extern int
-numeric_type PARAMS ((struct type *));
+extern int numeric_type (struct type *);
-extern int
-character_type PARAMS ((struct type *));
+extern int character_type (struct type *);
-extern int
-boolean_type PARAMS ((struct type *));
+extern int boolean_type (struct type *);
-extern int
-float_type PARAMS ((struct type *));
+extern int float_type (struct type *);
-extern int
-pointer_type PARAMS ((struct type *));
+extern int pointer_type (struct type *);
-extern int
-structured_type PARAMS ((struct type *));
+extern int structured_type (struct type *);
/* Checks Binary and Unary operations for semantic type correctness */
/* FIXME: Does not appear to be used */
#define unop_type_check(v,o) binop_type_check((v),NULL,(o))
-extern void
-binop_type_check PARAMS ((struct value *, struct value *, int));
+extern void binop_type_check (struct value *, struct value *, int);
/* Error messages */
-extern void
-op_error PARAMS ((char *fmt, enum exp_opcode, int));
+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
-PARAMS ((char *,...))
-ATTR_FORMAT (printf, 1, 2);
+extern void type_error (char *, ...) ATTR_FORMAT (printf, 1, 2);
- void
- range_error PARAMS ((char *,...))
- ATTR_FORMAT (printf, 1, 2);
+void
+range_error (char *, ...)
+ATTR_FORMAT (printf, 1, 2);
/* Data: Does this value represent "truth" to the current language? */
- extern int
- value_true PARAMS ((struct value *));
+extern int value_true (struct value *);
- extern struct type *lang_bool_type PARAMS ((void));
+extern struct type *lang_bool_type (void);
/* The type used for Boolean values in the current language. */
#define LA_BOOL_TYPE lang_bool_type ()
/* Misc: The string representing a particular enum language. */
- extern enum language language_enum PARAMS ((char *str));
+extern enum language language_enum (char *str);
- extern const struct language_defn *language_def PARAMS ((enum language));
+extern const struct language_defn *language_def (enum language);
- extern char *language_str PARAMS ((enum language));
+extern char *language_str (enum language);
/* Add a language to the set known by GDB (at initialization time). */
- extern void
- add_language PARAMS ((const struct language_defn *));
+extern void add_language (const struct language_defn *);
- extern enum language
- get_frame_language PARAMS ((void)); /* In stack.c */
+extern enum language get_frame_language (void); /* In stack.c */
#endif /* defined (LANGUAGE_H) */
diff --git a/gdb/lin-thread.c b/gdb/lin-thread.c
index de530f68882..cd9ab996eb7 100644
--- a/gdb/lin-thread.c
+++ b/gdb/lin-thread.c
@@ -125,6 +125,9 @@
#include <dlfcn.h> /* dynamic library interface */
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
#ifndef TIDGET
#define TIDGET(PID) (((PID) & 0x7fffffff) >> 16)
#define PIDGET(PID) (((PID) & 0xffff))
@@ -170,6 +173,16 @@ typedef const void *gdb_ps_write_buf_t;
typedef size_t gdb_ps_size_t;
#endif
+/* Unfortunately glibc 2.1.3 was released with a broken prfpregset_t
+ type. We let configure check for this lossage, and make
+ appropriate typedefs here. */
+
+#ifdef PRFPREGSET_T_BROKEN
+typedef elf_fpregset_t gdb_prfpregset_t;
+#else
+typedef prfpregset_t gdb_prfpregset_t;
+#endif
+
/*
* proc_service callback functions, called by thread_db.
*/
@@ -392,7 +405,7 @@ ps_lsetregs (gdb_ps_prochandle_t ph, /* Set LWP general regs */
ps_err_e
ps_lgetfpregs (gdb_ps_prochandle_t ph, /* Get LWP float regs */
lwpid_t lwpid,
- prfpregset_t *fpregset)
+ gdb_prfpregset_t *fpregset)
{
struct cleanup *old_chain = save_inferior_pid ();
@@ -406,7 +419,7 @@ ps_lgetfpregs (gdb_ps_prochandle_t ph, /* Get LWP float regs */
ps_err_e
ps_lsetfpregs (gdb_ps_prochandle_t ph, /* Set LWP float regs */
lwpid_t lwpid,
- const prfpregset_t *fpregset)
+ const gdb_prfpregset_t *fpregset)
{
struct cleanup *old_chain = save_inferior_pid ();
@@ -508,10 +521,10 @@ static td_err_e (*p_td_thr_setgregs) (const td_thrhandle_t *th_p,
const prgregset_t regset);
static td_err_e (*p_td_thr_getfpregs) (const td_thrhandle_t *th_p,
- prfpregset_t *fpregset);
+ gdb_prfpregset_t *fpregset);
static td_err_e (*p_td_thr_setfpregs) (const td_thrhandle_t *th_p,
- const prfpregset_t *fpregset);
+ const gdb_prfpregset_t *fpregset);
static td_err_e (*p_td_ta_map_id2thr) (const td_thragent_t *ta_p,
thread_t tid,
@@ -1270,7 +1283,7 @@ thread_db_fetch_registers (regno)
int regno;
{
td_thrhandle_t thandle;
- prfpregset_t fpregset;
+ gdb_prfpregset_t fpregset;
prgregset_t gregset;
thread_t thread;
td_err_e ret;
@@ -1321,7 +1334,7 @@ thread_db_store_registers (regno)
int regno;
{
td_thrhandle_t thandle;
- prfpregset_t fpregset;
+ gdb_prfpregset_t fpregset;
prgregset_t gregset;
thread_t thread;
td_err_e ret;
diff --git a/gdb/linux-thread.c b/gdb/linux-thread.c
index 146481c6ac8..f25c763f13b 100644
--- a/gdb/linux-thread.c
+++ b/gdb/linux-thread.c
@@ -902,7 +902,7 @@ update_stop_threads (test_pid)
*/
/* Saved pointer to previous owner of the new_objfile event. */
-static void (*target_new_objfile_chain) PARAMS ((struct objfile *));
+static void (*target_new_objfile_chain) (struct objfile *);
void
linuxthreads_new_objfile (objfile)
diff --git a/gdb/lynx-nat.c b/gdb/lynx-nat.c
index baf1c22e2d0..39740180c0f 100644
--- a/gdb/lynx-nat.c
+++ b/gdb/lynx-nat.c
@@ -28,8 +28,8 @@
#include <sys/wait.h>
#include <sys/fpp.h>
-static unsigned long registers_addr PARAMS ((int pid));
-static void fetch_core_registers PARAMS ((char *, unsigned, int, CORE_ADDR));
+static unsigned long registers_addr (int pid);
+static void fetch_core_registers (char *, unsigned, int, CORE_ADDR);
#define X(ENTRY)(offsetof(struct econtext, ENTRY))
diff --git a/gdb/m2-exp.y b/gdb/m2-exp.y
index 94d1fe005b0..0463ca13cf3 100644
--- a/gdb/m2-exp.y
+++ b/gdb/m2-exp.y
@@ -100,22 +100,17 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define YYDEBUG 0 /* Default to no yydebug support */
#endif
-int
-yyparse PARAMS ((void));
+int yyparse (void);
-static int
-yylex PARAMS ((void));
+static int yylex (void);
-void
-yyerror PARAMS ((char *));
+void yyerror (char *);
#if 0
-static char *
-make_qualname PARAMS ((char *, char *));
+static char *make_qualname (char *, char *);
#endif
-static int
-parse_number PARAMS ((int));
+static int parse_number (int);
/* The sign of the number being parsed. */
static int number_sign = 1;
diff --git a/gdb/m2-lang.c b/gdb/m2-lang.c
index 64e07cca44e..8b938107ad4 100644
--- a/gdb/m2-lang.c
+++ b/gdb/m2-lang.c
@@ -28,8 +28,8 @@
#include "c-lang.h"
#include "valprint.h"
-extern void _initialize_m2_language PARAMS ((void));
-static struct type *m2_create_fundamental_type PARAMS ((struct objfile *, int));
+extern void _initialize_m2_language (void);
+static struct type *m2_create_fundamental_type (struct objfile *, int);
static void m2_printstr (struct ui_file * stream, char *string,
unsigned int length, int width,
int force_ellipses);
diff --git a/gdb/m2-lang.h b/gdb/m2-lang.h
index 6e63e8d7801..fffa7a54f46 100644
--- a/gdb/m2-lang.h
+++ b/gdb/m2-lang.h
@@ -18,11 +18,9 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-extern int
-m2_parse PARAMS ((void)); /* Defined in m2-exp.y */
+extern int m2_parse (void); /* Defined in m2-exp.y */
-extern void
-m2_error PARAMS ((char *)); /* Defined in m2-exp.y */
+extern void m2_error (char *); /* Defined in m2-exp.y */
/* Defined in m2-typeprint.c */
extern void m2_print_type (struct type *, char *, struct ui_file *, int,
diff --git a/gdb/m32r-rom.c b/gdb/m32r-rom.c
index f6ea251f8a2..b975acecbca 100644
--- a/gdb/m32r-rom.c
+++ b/gdb/m32r-rom.c
@@ -38,7 +38,7 @@
#include "inferior.h" /* for write_pc() */
#include <ctype.h>
-extern void report_transfer_performance PARAMS ((unsigned long, time_t, time_t));
+extern void report_transfer_performance (unsigned long, time_t, time_t);
#ifndef _MSC_VER
/*
@@ -189,8 +189,8 @@ m32r_load_gen (filename, from_tty)
generic_load (filename, from_tty);
}
-static void m32r_open PARAMS ((char *args, int from_tty));
-static void mon2000_open PARAMS ((char *args, int from_tty));
+static void m32r_open (char *args, int from_tty);
+static void mon2000_open (char *args, int from_tty);
/* This array of registers needs to match the indexes used by GDB. The
whole reason this exists is because the various ROM monitors use
diff --git a/gdb/m68k-tdep.c b/gdb/m68k-tdep.c
index ab3adc583e2..0bdb3f62fc1 100644
--- a/gdb/m68k-tdep.c
+++ b/gdb/m68k-tdep.c
@@ -91,7 +91,10 @@ delta68_in_sigtramp (pc, name)
CORE_ADDR pc;
char *name;
{
- return strcmp (name, "_sigcode") == 0;
+ if (name != NULL)
+ return strcmp (name, "_sigcode") == 0;
+ else
+ return 0;
}
CORE_ADDR
@@ -504,6 +507,9 @@ lose:;
#include <sys/procfs.h>
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
/* The /proc interface divides the target machine's register set up into
two different sets, the general register set (gregset) and the floating
point register set (fpregset). For each set, there is an ioctl to get
diff --git a/gdb/m68klinux-nat.c b/gdb/m68klinux-nat.c
index 4eed201fcaf..111f2a91a2f 100644
--- a/gdb/m68klinux-nat.c
+++ b/gdb/m68klinux-nat.c
@@ -82,6 +82,9 @@ m68k_linux_register_u_addr (blockend, regnum)
#ifndef USE_PROC_FS
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
void
supply_gregset (gregsetp)
gregset_t *gregsetp;
diff --git a/gdb/m88k-nat.c b/gdb/m88k-nat.c
index ed9dfffc306..afaa4ea9817 100644
--- a/gdb/m88k-nat.c
+++ b/gdb/m88k-nat.c
@@ -239,6 +239,9 @@ m88k_register_u_addr (blockend, regnum)
#include <sys/procfs.h>
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
/* Given a pointer to a general register set in /proc format (gregset_t *),
unpack the register contents and supply them as gdb's idea of the current
register values. */
diff --git a/gdb/mac-nat.c b/gdb/mac-nat.c
index c8fcddbec1b..aa2541759d9 100644
--- a/gdb/mac-nat.c
+++ b/gdb/mac-nat.c
@@ -46,7 +46,7 @@
extern struct target_ops child_ops;
-static void child_stop PARAMS ((void));
+static void child_stop (void);
static void
child_fetch_inferior_registers (int r)
diff --git a/gdb/main.c b/gdb/main.c
index 9f845a89c5e..c6b9516f99a 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -349,7 +349,7 @@ captured_main (void *data)
#ifdef GDBTK
case 'z':
{
- extern int gdbtk_test PARAMS ((char *));
+extern int gdbtk_test (char *);
if (!gdbtk_test (optarg))
{
fprintf_unfiltered (gdb_stderr, "%s: unable to load tclcommand file \"%s\"",
diff --git a/gdb/maint.c b/gdb/maint.c
index 8a8df594809..a4def305b5b 100644
--- a/gdb/maint.c
+++ b/gdb/maint.c
@@ -35,27 +35,27 @@
#include "objfiles.h"
#include "value.h"
-extern void _initialize_maint_cmds PARAMS ((void));
+extern void _initialize_maint_cmds (void);
-static void maintenance_command PARAMS ((char *, int));
+static void maintenance_command (char *, int);
-static void maintenance_dump_me PARAMS ((char *, int));
+static void maintenance_dump_me (char *, int);
-static void maintenance_internal_error PARAMS ((char *args, int from_tty));
+static void maintenance_internal_error (char *args, int from_tty);
-static void maintenance_demangle PARAMS ((char *, int));
+static void maintenance_demangle (char *, int);
-static void maintenance_time_display PARAMS ((char *, int));
+static void maintenance_time_display (char *, int);
-static void maintenance_space_display PARAMS ((char *, int));
+static void maintenance_space_display (char *, int);
-static void maintenance_info_command PARAMS ((char *, int));
+static void maintenance_info_command (char *, int);
-static void print_section_table PARAMS ((bfd *, asection *, PTR));
+static void print_section_table (bfd *, asection *, PTR);
-static void maintenance_info_sections PARAMS ((char *, int));
+static void maintenance_info_sections (char *, int);
-static void maintenance_print_command PARAMS ((char *, int));
+static void maintenance_print_command (char *, int);
static void maintenance_do_deprecate (char *, int);
@@ -495,6 +495,7 @@ to test internal functions such as the C++ demangler, etc.",
"Commands for showing internal info about the program being debugged.",
&maintenanceinfolist, "maintenance info ", 0,
&maintenancelist);
+ add_alias_cmd ("i", "info", class_maintenance, 1, &maintenancelist);
add_cmd ("sections", class_maintenance, maintenance_info_sections,
"List the BFD sections of the exec and core files.",
diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c
index 085cd094be8..e377435d491 100644
--- a/gdb/mdebugread.c
+++ b/gdb/mdebugread.c
@@ -57,7 +57,7 @@
#ifndef MIPS_EFI_SYMBOL_NAME
#define MIPS_EFI_SYMBOL_NAME "__GDB_EFI_INFO__"
-extern void ecoff_relocate_efi PARAMS ((struct symbol *, CORE_ADDR));
+extern void ecoff_relocate_efi (struct symbol *, CORE_ADDR);
#include "coff/sym.h"
#include "coff/symconst.h"
typedef struct mips_extra_func_info
@@ -91,7 +91,7 @@ typedef struct mips_extra_func_info
#include "expression.h"
#include "language.h" /* Needed inside partial-stab.h */
-extern void _initialize_mdebugread PARAMS ((void));
+extern void _initialize_mdebugread (void);
/* Provide a default mapping from a ecoff register number to a gdb REGNUM. */
#ifndef ECOFF_REG_TO_REGNUM
@@ -331,103 +331,77 @@ static int found_ecoff_debugging_info;
/* Forward declarations */
-static void
-add_pending PARAMS ((FDR *, char *, struct type *));
+static void add_pending (FDR *, char *, struct type *);
-static struct mdebug_pending *
- is_pending_symbol PARAMS ((FDR *, char *));
+static struct mdebug_pending *is_pending_symbol (FDR *, char *);
-static void
-pop_parse_stack PARAMS ((void));
+static void pop_parse_stack (void);
-static void
-push_parse_stack PARAMS ((void));
+static void push_parse_stack (void);
-static char *
- fdr_name PARAMS ((FDR *));
+static char *fdr_name (FDR *);
-static void
-mdebug_psymtab_to_symtab PARAMS ((struct partial_symtab *));
+static void mdebug_psymtab_to_symtab (struct partial_symtab *);
static int
-upgrade_type PARAMS ((int, struct type **, int, union aux_ext *, int, char *));
+upgrade_type (int, struct type **, int, union aux_ext *, int, char *);
-static void
-parse_partial_symbols PARAMS ((struct objfile *));
+static void parse_partial_symbols (struct objfile *);
-static FDR
-* get_rfd PARAMS ((int, int));
+static FDR * get_rfd (int, int);
-static int
-has_opaque_xref PARAMS ((FDR *, SYMR *));
+static int has_opaque_xref (FDR *, SYMR *);
static int
-cross_ref PARAMS ((int, union aux_ext *, struct type **, enum type_code,
- char **, int, char *));
+cross_ref (int, union aux_ext *, struct type **, enum type_code,
+ char **, int, char *);
-static struct symbol *
- new_symbol PARAMS ((char *));
+static struct symbol *new_symbol (char *);
-static struct type *
- new_type PARAMS ((char *));
+static struct type *new_type (char *);
-static struct block *
- new_block PARAMS ((int));
+static struct block *new_block (int);
-static struct symtab *
- new_symtab PARAMS ((char *, int, int, struct objfile *));
+static struct symtab *new_symtab (char *, int, int, struct objfile *);
-static struct linetable *
- new_linetable PARAMS ((int));
+static struct linetable *new_linetable (int);
-static struct blockvector *
- new_bvect PARAMS ((int));
+static struct blockvector *new_bvect (int);
static int
-parse_symbol PARAMS ((SYMR *, union aux_ext *, char *, int, struct section_offsets *));
+parse_symbol (SYMR *, union aux_ext *, char *, int, struct section_offsets *,
+ struct objfile *);
-static struct type *
- parse_type PARAMS ((int, union aux_ext *, unsigned int, int *, int, char *));
+static struct type *parse_type (int, union aux_ext *, unsigned int, int *,
+ int, char *);
-static struct symbol *
- mylookup_symbol PARAMS ((char *, struct block *, namespace_enum,
- enum address_class));
+static struct symbol *mylookup_symbol (char *, struct block *, namespace_enum,
+ enum address_class);
-static struct block *
- shrink_block PARAMS ((struct block *, struct symtab *));
+static struct block *shrink_block (struct block *, struct symtab *);
-static PTR
- xzalloc PARAMS ((unsigned int));
+static PTR xzalloc (unsigned int);
-static void
-sort_blocks PARAMS ((struct symtab *));
+static void sort_blocks (struct symtab *);
-static int
-compare_blocks PARAMS ((const void *, const void *));
+static int compare_blocks (const void *, const void *);
-static struct partial_symtab *
- new_psymtab PARAMS ((char *, struct objfile *));
+static struct partial_symtab *new_psymtab (char *, struct objfile *);
-static void
-psymtab_to_symtab_1 PARAMS ((struct partial_symtab *, char *));
+static void psymtab_to_symtab_1 (struct partial_symtab *, char *);
-static void
-add_block PARAMS ((struct block *, struct symtab *));
+static void add_block (struct block *, struct symtab *);
-static void
-add_symbol PARAMS ((struct symbol *, struct block *));
+static void add_symbol (struct symbol *, struct block *);
-static int
-add_line PARAMS ((struct linetable *, int, CORE_ADDR, int));
+static int add_line (struct linetable *, int, CORE_ADDR, int);
-static struct linetable *
- shrink_linetable PARAMS ((struct linetable *));
+static struct linetable *shrink_linetable (struct linetable *);
static void
-handle_psymbol_enumerators PARAMS ((struct objfile *, FDR *, int, CORE_ADDR));
+handle_psymbol_enumerators (struct objfile *, FDR *, int, CORE_ADDR);
-static char *
- mdebug_next_symbol_text PARAMS ((struct objfile *));
+static char *mdebug_next_symbol_text (struct objfile *);
/* Address bounds for the signal trampoline in inferior, if any */
@@ -716,16 +690,16 @@ add_pending (fh, sh, t)
SYMR's handled (normally one). */
static int
-parse_symbol (sh, ax, ext_sh, bigend, section_offsets)
+parse_symbol (sh, ax, ext_sh, bigend, section_offsets, objfile)
SYMR *sh;
union aux_ext *ax;
char *ext_sh;
int bigend;
struct section_offsets *section_offsets;
+ struct objfile *objfile;
{
const bfd_size_type external_sym_size = debug_swap->external_sym_size;
- void (*const swap_sym_in) PARAMS ((bfd *, PTR, SYMR *)) =
- debug_swap->swap_sym_in;
+ void (*const swap_sym_in) (bfd *, PTR, SYMR *) = debug_swap->swap_sym_in;
char *name;
struct symbol *s;
struct block *b;
@@ -753,18 +727,18 @@ parse_symbol (sh, ax, ext_sh, bigend, section_offsets)
The value of a stBlock symbol is the displacement from the
procedure address. */
if (sh->st != stEnd && sh->st != stBlock)
- sh->value += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ sh->value += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
break;
case scData:
case scSData:
case scRData:
case scPData:
case scXData:
- sh->value += ANOFFSET (section_offsets, SECT_OFF_DATA);
+ sh->value += ANOFFSET (section_offsets, SECT_OFF_DATA (objfile));
break;
case scBss:
case scSBss:
- sh->value += ANOFFSET (section_offsets, SECT_OFF_BSS);
+ sh->value += ANOFFSET (section_offsets, SECT_OFF_BSS (objfile));
break;
}
@@ -1925,8 +1899,7 @@ upgrade_type (fd, tpp, tq, ax, bigend, sym_name)
to look for the function which contains the MIPS_EFI_SYMBOL_NAME symbol
in question, or NULL to use top_stack->cur_block. */
-static void parse_procedure PARAMS ((PDR *, struct symtab *,
- struct partial_symtab *));
+static void parse_procedure (PDR *, struct symtab *, struct partial_symtab *);
static void
parse_procedure (pr, search_symtab, pst)
@@ -2042,7 +2015,7 @@ parse_procedure (pr, search_symtab, pst)
procedure descriptor in e->pdr.adr.
As the address in the procedure descriptor is usually relative,
we would have to relocate e->pdr.adr with cur_fdr->adr and
- ANOFFSET (pst->section_offsets, SECT_OFF_TEXT).
+ ANOFFSET (pst->section_offsets, SECT_OFF_TEXT (pst->objfile)).
Unfortunately cur_fdr->adr and e->pdr.adr are both absolute
in shared libraries on some systems, and on other systems
e->pdr.adr is sometimes offset by a bogus value.
@@ -2102,13 +2075,15 @@ ecoff_relocate_efi (sym, delta)
This routine clobbers top_stack->cur_block and ->cur_st. */
-static void parse_external PARAMS ((EXTR *, int, struct section_offsets *));
+static void parse_external (EXTR *, int, struct section_offsets *,
+ struct objfile *);
static void
-parse_external (es, bigend, section_offsets)
+parse_external (es, bigend, section_offsets, objfile)
EXTR *es;
int bigend;
struct section_offsets *section_offsets;
+ struct objfile *objfile;
{
union aux_ext *ax;
@@ -2183,7 +2158,7 @@ parse_external (es, bigend, section_offsets)
/* Note that the case of a symbol with indexNil must be handled
anyways by parse_symbol(). */
- parse_symbol (&es->asym, ax, (char *) NULL, bigend, section_offsets);
+ parse_symbol (&es->asym, ax, (char *) NULL, bigend, section_offsets, objfile);
break;
default:
break;
@@ -2196,8 +2171,8 @@ parse_external (es, bigend, section_offsets)
numbers can go back and forth, apparently we can live
with that and do not need to reorder our linetables */
-static void parse_lines PARAMS ((FDR *, PDR *, struct linetable *, int,
- struct partial_symtab *, CORE_ADDR));
+static void parse_lines (FDR *, PDR *, struct linetable *, int,
+ struct partial_symtab *, CORE_ADDR);
static void
parse_lines (fh, pr, lt, maxlines, pst, lowest_pdr_addr)
@@ -2278,12 +2253,9 @@ parse_partial_symbols (objfile)
const bfd_size_type external_sym_size = debug_swap->external_sym_size;
const bfd_size_type external_rfd_size = debug_swap->external_rfd_size;
const bfd_size_type external_ext_size = debug_swap->external_ext_size;
- void (*const swap_ext_in) PARAMS ((bfd *, PTR, EXTR *))
- = debug_swap->swap_ext_in;
- void (*const swap_sym_in) PARAMS ((bfd *, PTR, SYMR *))
- = debug_swap->swap_sym_in;
- void (*const swap_rfd_in) PARAMS ((bfd *, PTR, RFDT *))
- = debug_swap->swap_rfd_in;
+ void (*const swap_ext_in) (bfd *, PTR, EXTR *) = debug_swap->swap_ext_in;
+ void (*const swap_sym_in) (bfd *, PTR, SYMR *) = debug_swap->swap_sym_in;
+ void (*const swap_rfd_in) (bfd *, PTR, RFDT *) = debug_swap->swap_rfd_in;
int f_idx, s_idx;
HDRR *hdr = &debug_info->symbolic_header;
/* Running pointers */
@@ -2474,12 +2446,12 @@ parse_partial_symbols (objfile)
{
case stProc:
/* Beginnning of Procedure */
- svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
break;
case stStaticProc:
/* Load time only static procs */
ms_type = mst_file_text;
- svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
break;
case stGlobal:
/* External symbol */
@@ -2492,12 +2464,12 @@ parse_partial_symbols (objfile)
else if (SC_IS_DATA (ext_in->asym.sc))
{
ms_type = mst_data;
- svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA);
+ svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
}
else if (SC_IS_BSS (ext_in->asym.sc))
{
ms_type = mst_bss;
- svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_BSS);
+ svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_BSS (objfile));
}
else
ms_type = mst_abs;
@@ -2507,17 +2479,17 @@ parse_partial_symbols (objfile)
if (SC_IS_TEXT (ext_in->asym.sc))
{
ms_type = mst_file_text;
- svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
}
else if (SC_IS_DATA (ext_in->asym.sc))
{
ms_type = mst_file_data;
- svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA);
+ svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
}
else if (SC_IS_BSS (ext_in->asym.sc))
{
ms_type = mst_file_bss;
- svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_BSS);
+ svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_BSS (objfile));
}
else
ms_type = mst_abs;
@@ -2561,7 +2533,7 @@ parse_partial_symbols (objfile)
{
textlow = fh->adr;
if (relocatable || textlow != 0)
- textlow += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ textlow += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
}
else
textlow = 0;
@@ -2649,7 +2621,7 @@ parse_partial_symbols (objfile)
CORE_ADDR procaddr;
long isym;
- sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
if (sh.st == stStaticProc)
{
namestring = debug_info->ss + fh->issBase + sh.iss;
@@ -2657,7 +2629,7 @@ parse_partial_symbols (objfile)
sh.value,
mst_file_text,
NULL,
- SECT_OFF_TEXT,
+ SECT_OFF_TEXT (objfile),
NULL,
objfile);
}
@@ -2700,12 +2672,12 @@ parse_partial_symbols (objfile)
case scPData:
case scXData:
namestring = debug_info->ss + fh->issBase + sh.iss;
- sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA);
+ sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
prim_record_minimal_symbol_and_info (namestring,
sh.value,
mst_file_data,
NULL,
- SECT_OFF_DATA,
+ SECT_OFF_DATA (objfile),
NULL,
objfile);
break;
@@ -2714,12 +2686,12 @@ parse_partial_symbols (objfile)
/* FIXME! Shouldn't this use cases for bss,
then have the default be abs? */
namestring = debug_info->ss + fh->issBase + sh.iss;
- sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_BSS);
+ sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_BSS (objfile));
prim_record_minimal_symbol_and_info (namestring,
sh.value,
mst_file_bss,
NULL,
- SECT_OFF_BSS,
+ SECT_OFF_BSS (objfile),
NULL,
objfile);
break;
@@ -2767,7 +2739,7 @@ parse_partial_symbols (objfile)
#define CUR_SYMBOL_TYPE type_code
#define CUR_SYMBOL_VALUE sh.value
#define START_PSYMTAB(ofile,fname,low,symoff,global_syms,static_syms)\
- pst = save_pst
+ (pst = save_pst)
#define END_PSYMTAB(pst,ilist,ninc,c_off,c_text,dep_list,n_deps,textlow_not_set) (void)0
#define HANDLE_RBRAC(val) \
if ((val) > save_pst->texthigh) save_pst->texthigh = (val);
@@ -2818,18 +2790,18 @@ parse_partial_symbols (objfile)
/* The value of a stEnd symbol is the displacement from the
corresponding start symbol value, do not relocate it. */
if (sh.st != stEnd)
- sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
break;
case scData:
case scSData:
case scRData:
case scPData:
case scXData:
- sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA);
+ sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
break;
case scBss:
case scSBss:
- sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_BSS);
+ sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_BSS (objfile));
break;
}
@@ -2842,7 +2814,7 @@ parse_partial_symbols (objfile)
case stStaticProc:
prim_record_minimal_symbol_and_info (name, sh.value,
mst_file_text, NULL,
- SECT_OFF_TEXT, NULL,
+ SECT_OFF_TEXT (objfile), NULL,
objfile);
/* FALLTHROUGH */
@@ -2915,13 +2887,13 @@ parse_partial_symbols (objfile)
if (SC_IS_DATA (sh.sc))
prim_record_minimal_symbol_and_info (name, sh.value,
mst_file_data, NULL,
- SECT_OFF_DATA,
+ SECT_OFF_DATA (objfile),
NULL,
objfile);
else
prim_record_minimal_symbol_and_info (name, sh.value,
mst_file_bss, NULL,
- SECT_OFF_BSS,
+ SECT_OFF_BSS (objfile),
NULL,
objfile);
class = LOC_STATIC;
@@ -3026,18 +2998,18 @@ parse_partial_symbols (objfile)
{
case scText:
case scRConst:
- svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
break;
case scData:
case scSData:
case scRData:
case scPData:
case scXData:
- svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA);
+ svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
break;
case scBss:
case scSBss:
- svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_BSS);
+ svalue += ANOFFSET (objfile->section_offsets, SECT_OFF_BSS (objfile));
break;
}
@@ -3191,8 +3163,7 @@ handle_psymbol_enumerators (objfile, fh, stype, svalue)
CORE_ADDR svalue;
{
const bfd_size_type external_sym_size = debug_swap->external_sym_size;
- void (*const swap_sym_in) PARAMS ((bfd *, PTR, SYMR *))
- = debug_swap->swap_sym_in;
+ void (*const swap_sym_in) (bfd *, PTR, SYMR *) = debug_swap->swap_sym_in;
char *ext_sym = ((char *) debug_info->external_sym
+ ((fh->isymBase + cur_sdx + 1) * external_sym_size));
SYMR sh;
@@ -3284,8 +3255,8 @@ psymtab_to_symtab_1 (pst, filename)
{
bfd_size_type external_sym_size;
bfd_size_type external_pdr_size;
- void (*swap_sym_in) PARAMS ((bfd *, PTR, SYMR *));
- void (*swap_pdr_in) PARAMS ((bfd *, PTR, PDR *));
+ void (*swap_sym_in) (bfd *, PTR, SYMR *);
+ void (*swap_pdr_in) (bfd *, PTR, PDR *);
int i;
struct symtab *st;
FDR *fh;
@@ -3435,7 +3406,7 @@ psymtab_to_symtab_1 (pst, filename)
else
{
/* Handle encoded stab line number. */
- valu += ANOFFSET (pst->section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (pst->section_offsets, SECT_OFF_TEXT (pst->objfile));
record_line (current_subfile, sh.index, valu);
}
}
@@ -3446,7 +3417,7 @@ psymtab_to_symtab_1 (pst, filename)
else
complain (&stab_unknown_complaint, name);
}
- st = end_symtab (pst->texthigh, pst->objfile, SECT_OFF_TEXT);
+ st = end_symtab (pst->texthigh, pst->objfile, SECT_OFF_TEXT (pst->objfile));
end_stabs ();
/* Sort the symbol table now, we are done adding symbols to it.
@@ -3561,7 +3532,7 @@ psymtab_to_symtab_1 (pst, filename)
(*swap_sym_in) (cur_bfd, sym_ptr, &sh);
c = parse_symbol (&sh,
debug_info->external_aux + fh->iauxBase,
- sym_ptr, fh->fBigendian, pst->section_offsets);
+ sym_ptr, fh->fBigendian, pst->section_offsets, pst->objfile);
sym_ptr += c * external_sym_size;
}
@@ -3629,7 +3600,7 @@ psymtab_to_symtab_1 (pst, filename)
ext_ptr = PST_PRIVATE (pst)->extern_tab;
for (i = PST_PRIVATE (pst)->extern_count; --i >= 0; ext_ptr++)
- parse_external (ext_ptr, fh->fBigendian, pst->section_offsets);
+ parse_external (ext_ptr, fh->fBigendian, pst->section_offsets, pst->objfile);
/* If there are undefined symbols, tell the user.
The alpha has an undefined symbol for every symbol that is
diff --git a/gdb/mem-break.c b/gdb/mem-break.c
index 99db9d29233..3f013c26098 100644
--- a/gdb/mem-break.c
+++ b/gdb/mem-break.c
@@ -125,10 +125,6 @@ default_memory_remove_breakpoint (addr, contents_cache)
}
-#if !defined(MEMORY_INSERT_BREAKPOINT)
-#define MEMORY_INSERT_BREAKPOINT(addr, contents_cache) \
- default_memory_insert_breakpoint(addr, contents_cache)
-#endif
int
memory_insert_breakpoint (addr, contents_cache)
CORE_ADDR addr;
@@ -137,10 +133,6 @@ memory_insert_breakpoint (addr, contents_cache)
return MEMORY_INSERT_BREAKPOINT(addr, contents_cache);
}
-#if !defined(MEMORY_REMOVE_BREAKPOINT)
-#define MEMORY_REMOVE_BREAKPOINT(addr, contents_cache) \
- default_memory_remove_breakpoint(addr, contents_cache)
-#endif
int
memory_remove_breakpoint (addr, contents_cache)
CORE_ADDR addr;
diff --git a/gdb/mi/ChangeLog-mi b/gdb/mi/ChangeLog
index f0a3304500f..5edfce47222 100644
--- a/gdb/mi/ChangeLog-mi
+++ b/gdb/mi/ChangeLog
@@ -1,3 +1,30 @@
+Tue May 16 14:13:41 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * mi-main.c (mi_cmd_execute): Use free_current_contents.
+ (free_and_reset): Delete.
+
+Mon May 15 16:17:56 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * mi-main.c (mi_cmd_data_assign, mi_cmd_data_evaluate_expression),
+ mi-cmd-var.c (mi_cmd_var_create, mi_cmd_var_delete): Delete
+ make_cleanup_func casts. Not needed.
+
+2000-05-07 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * gdbmi.texinfo: Lots of typos and grammar fixes from Brian
+ Youmans <3diff@flib.gnu.ai.mit.edu>.
+
+Wed Apr 26 18:35:19 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * gdbmi.texinfo (GDB/MI Output Syntax v2.0): Convert Draft 2.0
+ Output Syntax into a new section. Cross reference.
+ (menu): Fix tipo. GDB/MI Compatibility with CLI.
+
+2000-04-23 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * gdbmi.texinfo: Lots of changes, to include this document as part
+ of the GDB manual.
+
2000-03-13 James Ingham <jingham@leda.cygnus.com>
* mi-cmd-var.c (mi_cmd_var_create): Add special frame cookie "@"
diff --git a/gdb/mi/gdbmi.texinfo b/gdb/mi/gdbmi.texinfo
index 8602885caa8..c2aad450e65 100644
--- a/gdb/mi/gdbmi.texinfo
+++ b/gdb/mi/gdbmi.texinfo
@@ -1,293 +1,379 @@
-\input texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename gdbmi.info
-@settitle GDB/MI Machine Interface
-@setchapternewpage off
-@c %**end of header
+@c \input texinfo @c -*-texinfo-*-
+@c @c %**start of header
+@c @setfilename gdbmi.info
+@c @settitle GDB/MI Machine Interface
+@c @setchapternewpage off
+@c @c %**end of header
+
+@c @ifinfo
+@c This file documents GDB/MI, a Machine Interface to GDB.
+
+@c Copyright (C) 2000, Free Software Foundation, Inc.
+@c Contributed by Cygnus Solutions.
+
+@c Permission is granted to make and distribute verbatim copies of this
+@c manual provided the copyright notice and this permission notice are
+@c preserved on all copies.
+
+@c @ignore
+@c Permission is granted to process this file through TeX and print the
+@c results, provided the printed document carries copying permission notice
+@c identical to this one except for the removal of this paragraph (this
+@c paragraph not being relevant to the printed manual).
+
+@c @end ignore
+@c Permission is granted to copy and distribute modified versions of this
+@c manual under the conditions for verbatim copying, provided also that the
+@c entire resulting derived work is distributed under the terms of a
+@c permission notice identical to this one.
+
+@c Permission is granted to copy and distribute translations of this manual
+@c into another language, under the above conditions for modified versions.
+@c @end ifinfo
+
+@c @c This title page illustrates only one of the
+@c @c two methods of forming a title page.
+
+@c @titlepage
+@c @title GDB/MI
+@c @subtitle Version 0.2
+@c @subtitle Feb 2000
+@c @author Andrew Cagney, Fernando Nasser and Elena Zannoni
+
+@c @c The following two commands
+@c @c start the copyright page.
+@c @page
+@c @vskip 0pt plus 1filll
+@c Permission is granted to make and distribute verbatim copies of this
+@c manual provided the copyright notice and this permission notice are
+@c preserved on all copies.
+
+@c Copyright @copyright{} 2000, Free Software Foundation, Inc.
+@c @end titlepage
-@ifinfo
-This file documents GDB/MI, a Machine Interface to GDB.
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI
+@chapter The @sc{gdb/mi} Interface
-Copyright (C) 2000, Free Software Foundation, Inc.
-Contributed by Cygnus Solutions.
+@unnumberedsec Function and Purpose
-Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
+@cindex @sc{gdb/mi}, its purpose
+@sc{gdb/mi} is a line based machine oriented text interface to GDB. It is
+specifically intended to support the development of systems which use
+the debugger as just one small component of a larger system.
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission notice
-identical to this one except for the removal of this paragraph (this
-paragraph not being relevant to the printed manual).
+This chapter is a specification of the @sc{gdb/mi} interface. It is written
+in the form of a reference manual.
-@end ignore
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
-@end ifinfo
-
-@c This title page illustrates only one of the
-@c two methods of forming a title page.
-
-@titlepage
-@title GDB/MI
-@subtitle Version 0.2
-@subtitle Feb 2000
-@author Andrew Cagney, Fernando Nasser and Elena Zannoni
-
-@c The following two commands
-@c start the copyright page.
-@page
-@vskip 0pt plus 1filll
-Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
-Copyright @copyright{} 2000, Free Software Foundation, Inc.
-@end titlepage
+Note that @sc{gdb/mi} is still under construction, so some of the
+features described below are incomplete and subject to change.
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Overview
+@unnumberedsec Notation and Terminology
-@heading Function and Purpose
+@cindex notational conventions, for @sc{gdb/mi}
+This chapter uses the following notation:
-GDB/MI is a line based machine oriented text interface to GDB. It is
-specifically intended to support the development of systems which use
-the debugger as just one small component of a larger system.
+@itemize @bullet
+@item
+@code{|} separates two alternatives.
-@heading This Document
+@item
+@code{[ @var{something} ]} indicates that @var{something} is optional:
+it may or may not be given.
-This document is a specification of the GDB/MI interface. It is written
-in the form of a reference manual.
+@item
+@code{( @var{group} )*} means that @var{group} inside the parentheses
+may repeat zero or more times.
-@heading Terminology
+@item
+@code{( @var{group} )+} means that @var{group} inside the parentheses
+may repeat one or more times.
+
+@item
+@code{"@var{string}"} means a literal @var{string}.
+@end itemize
+@ignore
@heading Dependencies
+@end ignore
@heading Acknowledgments
-In alphabetic order: Fernando Nasser, Stan Shebs and Elena Zannoni.
-
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Command Syntax
+In alphabetic order: Andrew Cagney, Fernando Nasser, Stan Shebs and
+Elena Zannoni.
+
+@menu
+* GDB/MI Command Syntax::
+* GDB/MI Compatibility with CLI::
+* GDB/MI Output Records::
+* GDB/MI Command Description Format::
+* GDB/MI Breakpoint Table Commands::
+* GDB/MI Data Manipulation::
+* GDB/MI Program Control::
+* GDB/MI Miscellaneous Commands::
+* GDB/MI Stack Manipulation::
+* GDB/MI Symbol Query::
+* GDB/MI Target Manipulation::
+* GDB/MI Thread Commands::
+* GDB/MI Tracepoint Commands::
+* GDB/MI Variable Objects::
+* GDB/MI Draft Changes to Output Syntax::
+@end menu
+
+@c When these are implemented, they should be moved to be between Misc and
+@c Stack Manipulation in the above menu. They are now outside the menu
+@c because makeinfo 3.12 barfs if it sees @ignore or @comments in the
+@c middle of a menu.
+@ignore
+* GDB/MI Kod Commands::
+* GDB/MI Memory Overlay Commands::
+* GDB/MI Signal Handling Commands::
+@end ignore
-@section Input Syntax
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Command Syntax
+@section @sc{gdb/mi} Command Syntax
-@table @code
+@menu
+* GDB/MI Input Syntax::
+* GDB/MI Output Syntax::
+* GDB/MI Simple Examples::
+@end menu
-@item <command> @expansion{}
-<cli-command> | <mi-command>
+@node GDB/MI Input Syntax
+@subsection @sc{gdb/mi} Input Syntax
-@item <cli-command> @expansion{}
-[ <token> ] "any existing GDB CLI command" <nl>
+@cindex input syntax for @sc{gdb/mi}
+@cindex @sc{gdb/mi}, input syntax
+@table @code
+@item @var{command} @expansion{}
+@code{@var{cli-command} | @var{mi-command}}
-@item <mi-command> @expansion{}
-[ <token> ] ``-'' <operation> ( `` '' <option> )* [ `` --'' ] ( `` '' <parameter> )* <nl>
+@item @var{cli-command} @expansion{}
+@code{[ @var{token} ] @var{cli-command} @var{nl}}, where
+@var{cli-command} is any existing GDB CLI command.
-@item <token> @expansion{}
-``any sequence of digits''
+@item @var{mi-command} @expansion{}
+@code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )*
+@code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}}
-@item <option> @expansion{}
-``-'' <parameter> [ `` '' <parameter> ]
+@item @var{token} @expansion{}
+@code{"any sequence of digits"}
-@item <parameter> @expansion{}
-<non-blank-sequence> | <c-string>
+@item @var{option} @expansion{}
+@code{"-" @var{parameter} [ " " @var{parameter} ]}
-@item <operation> @expansion{}
-any of the operations described in this document.
+@item @var{parameter} @expansion{}
+@code{@var{non-blank-sequence} | @var{c-string}}
-@item <non-blank-sequence> @expansion{}
-anything provided it doesn't contain special characters such as ``-''
- <nl>, ``"'' and of course `` ''.
+@item @var{operation} @expansion{}
+@emph{any of the operations described in this document}
-@item <c-string> @expansion{}
-``"'' <seven-bit-iso-c-string-content> ``"''
+@item @var{non-blank-sequence} @expansion{}
+@emph{anything, provided it doesn't contain special characters such as
+"-", @var{nl}, """ and of course " "}
-@item <nl> @expansion{}
-CR | CR-LF
+@item @var{c-string} @expansion{}
+@code{""" @var{seven-bit-iso-c-string-content} """}
+@item @var{nl} @expansion{}
+@code{CR | CR-LF}
@end table
Notes:
@itemize @bullet
-
@item
-The CLI commands are still handled by the MI interpreter; their output
-is described below
+The CLI commands are still handled by the @sc{mi} interpreter; their
+output is described below.
@item
-The @code{<token>}, when present, is passed back when the command
+The @code{@var{token}}, when present, is passed back when the command
finishes.
@item
-Some mi commands accept optional arguments as part of the parameter
-list. Each option is identified by a leading @code{-} (dash) and may be
-followed by an option argument parameter. Options occure first in the
-parameter list and can be delimiated from normal parameters using
-@code{--}.
-
+Some @sc{mi} commands accept optional arguments as part of the parameter
+list. Each option is identified by a leading @samp{-} (dash) and may be
+followed by an optional argument parameter. Options occur first in the
+parameter list and can be delimited from normal parameters using
+@samp{--} (this is useful when some parameters begin with a dash).
@end itemize
Pragmatics:
@itemize @bullet
-
@item
We want easy access to the existing CLI syntax (for debugging).
@item
-We want it easy to spot a MI operation
-
+We want it to be easy to spot a @sc{mi} operation.
@end itemize
-@section Output Syntax
+@node GDB/MI Output Syntax
+@subsection @sc{gdb/mi} Output Syntax
-The output from GDB/MI consists of zero or more out-of-band records
-followed, optionally, by a single result record. The result record
-being for the most recent command. The sequence of output records is
-terminated by ``(gdb)''.
+@cindex output syntax of @sc{gdb/mi}
+@cindex @sc{gdb/mi}, output syntax
+The output from @sc{gdb/mi} consists of zero or more out-of-band records
+followed, optionally, by a single result record. This result record
+is for the most recent command. The sequence of output records is
+terminated by @samp{(gdb)}.
-If an input command was prefixed with a @code{<token>} then the
+If an input command was prefixed with a @code{@var{token}} then the
corresponding output for that command will also be prefixed by that same
-token.
+@var{token}.
@table @code
-@item <output> @expansion{}
-( <out-of-band-record> )* [ <result-record> ] ``(gdb)'' <nl>
+@item @var{output} @expansion{}
+@code{( @var{out-of-band-record} )* [ @var{result-record} ] "(gdb)" @var{nl}}
-@item <result-record> @expansion{}
-[ <token> ] ``^'' <result-class> ( ``,'' <result> )* <nl>
+@item @var{result-record} @expansion{}
+@code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}}
-@item <out-of-band-record> @expansion{}
-<async-record> | <stream-record>
+@item @var{out-of-band-record} @expansion{}
+@code{@var{async-record} | @var{stream-record}}
-@item <async-record> @expansion{}
-<exec-async-output> | <status-async-output> | <notify-async-output>
+@item @var{async-record} @expansion{}
+@code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}}
-@item <exec-async-output> @expansion{}
-[ <token> ] ``*'' <async-output>
+@item @var{exec-async-output} @expansion{}
+@code{[ @var{token} ] "*" @var{async-output}}
-@item <status-async-output> @expansion{}
-[ <token> ] ``+'' <async-output>
+@item @var{status-async-output} @expansion{}
+@code{[ @var{token} ] "+" @var{async-output}}
-@item <notify-async-output> @expansion{}
-[ <token> ] ``='' <async-output>
+@item @var{notify-async-output} @expansion{}
+@code{[ @var{token} ] "=" @var{async-output}}
-@item <async-output> @expansion{}
-<async-class> ( ``,'' <result> )* <nl>
+@item @var{async-output} @expansion{}
+@code{@var{async-class} ( "," @var{result} )* @var{nl}}
-@item <result-class> @expansion{}
-``done'' | ``running'' | ``connected'' | ``error'' | ``exit''
+@item @var{result-class} @expansion{}
+@code{"done" | "running" | "connected" | "error" | "exit"}
-@item <async-class> @expansion{}
-``stopped'' | others (depending on needs, still in development)
+@item @var{async-class} @expansion{}
+@code{"stopped" | @var{others}} (where @var{others} will be added
+depending on the needs---this is still in development).
-@item <result> @expansion{}
-[ <string> ``='' ] <value>
+@item @var{result} @expansion{}
+@code{[ @var{string} "=" ] @var{value}}
-@item <value> @expansion{}
-<const> | ``@{'' <result> ( ``,'' <result> )* ``@}''
+@item @var{value} @expansion{}
+@code{@var{const} | "@{" @var{result} ( "," @var{result} )* "@}"}
-@item <const> @expansion{}
-<c-string>
+@item @var{const} @expansion{}
+@code{@var{c-string}}
-@item <stream-record> @expansion{}
-<console-stream-output> | <target-stream-output> | <log-stream-output>
+@item @var{stream-record} @expansion{}
+@code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}}
-@item <console-stream-output> @expansion{}
-``~'' <c-string>
+@item @var{console-stream-output} @expansion{}
+@code{"~" @var{c-string}}
-@item <target-stream-output> @expansion{}
-``@@'' <c-string>
+@item @var{target-stream-output} @expansion{}
+@code{"@@" @var{c-string}}
-@item <log-stream-output> @expansion{}
-``&'' <c-string>
+@item @var{log-stream-output} @expansion{}
+@code{"&" @var{c-string}}
-@item <nl> @expansion{}
-CR | CR-LF
-
-@item <token> @expansion{}
-``any sequence of digits''
+@item @var{nl} @expansion{}
+@code{CR | CR-LF}
+@item @var{token} @expansion{}
+@emph{any sequence of digits}.
@end table
-In addition, the following are still being developed.
+In addition, the following are still being developed:
@table @code
-
-@item <query>
+@item @var{query}
This action is currently undefined.
-
@end table
Notes:
@itemize @bullet
-
@item
All output sequences end in a single line containing a period.
@item
-The @code{<token>} is from the corresponding request. If an execution
-command is interrupted by the -exec-interrupt command, the token
-associated with the `*stopped' message is the one of the original
-execution command, not the one of the interrupt-command.
+The @code{@var{token}} is from the corresponding request. If an execution
+command is interrupted by the @samp{-exec-interrupt} command, the
+@var{token} associated with the `*stopped' message is the one of the
+original execution command, not the one of the interrupt-command.
@item
-<status-async-output> contains on-going status information about the progress
-of a slow operation. It can be discarded. All status output is prefixed by
-the prefix `+'.
+@cindex status output in @sc{gdb/mi}
+@var{status-async-output} contains on-going status information about the
+progress of a slow operation. It can be discarded. All status output is
+prefixed by @samp{+}.
@item
-<exec-async-output> contains asynchronous state change on the target
-(stopped, started, disappeared). All async output is prefixed by
-the prefix `*'.
+@cindex async output in @sc{gdb/mi}
+@var{exec-async-output} contains asynchronous state change on the target
+(stopped, started, disappeared). All async output is prefixed by
+@samp{*}.
@item
-<notify-async-output> contains supplementary information that the client should
-handle (new breakpoint information). All notify output is prefixed by
-the prefix `='.
+@cindex notify output in @sc{gdb/mi}
+@var{notify-async-output} contains supplementary information that the
+client should handle (e.g., a new breakpoint information). All notify
+output is prefixed by @samp{=}.
@item
-<console-stream-output> is output that should be displayed as is in the
-console. It is the textual response to a CLI command. All the console
-output is prefixed by the prefix ``~''.
+@cindex console output in @sc{gdb/mi}
+@var{console-stream-output} is output that should be displayed as is in the
+console. It is the textual response to a CLI command. All the console
+output is prefixed by @samp{~}.
@item
-<target-stream-output> is the output produced by the target program.
-All the target output is prefixed by the prefix ``@@''.
+@cindex target output in @sc{gdb/mi}
+@var{target-stream-output} is the output produced by the target program.
+All the target output is prefixed by @samp{@@}.
@item
-<log-stream-output> is output text coming from GDB's internals, for
+@cindex log output in @sc{gdb/mi}
+@var{log-stream-output} is output text coming from GDB's internals, for
instance messages that should be displayed as part of an error log. All
-the log output is prefixed by the prefix ``&''.
-
+the log output is prefixed by @samp{&}.
@end itemize
-@section Simple Examples
+@xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more
+details about the various output records.
+
+@xref{GDB/MI Draft Changes to Output Syntax, , @sc{gdb/mi} Draft Changes
+to Output Syntax}, for proposed revisions to the current output syntax.
-@subheading Target stop:
+@node GDB/MI Simple Examples
+@subsection Simple Examples of @sc{gdb/mi} Interaction
+@cindex @sc{gdb/mi}, simple examples
+
+This subsection presents several simple examples of interaction using
+the @sc{gdb/mi} interface. In these examples, @samp{->} means that the
+following line is passed to @sc{gdb/mi} as input, while @samp{<-} means
+the output received from @sc{gdb/mi}.
+
+@subsubheading Target Stop
+
+Here's an example of stopping the inferior process:
@example
-> -stop
<- (gdb)
@end example
-(later)
+@noindent
+and later:
@example
<- *stop,reason="stop",address="0x123",source="a.c:123"
<- (gdb)
@end example
+@subsubheading Simple CLI Command
-@subheading Simple CLI command being passed through the MI and on to the CLI.
+Here's an example of a simple CLI command being passed through
+@sc{gdb/mi} and on to the CLI.
@example
-> print 1+2
@@ -295,8 +381,7 @@ the log output is prefixed by the prefix ``&''.
<- (gdb)
@end example
-
-@subheading Command with side effects:
+@subsubheading Command With Side Effects
@example
-> -symbol-file xyz.exe
@@ -304,8 +389,9 @@ the log output is prefixed by the prefix ``&''.
<- (gdb)
@end example
+@subsubheading A Bad Command
-@subheading A bad command:
+Here's what happens if you pass a non-existent command:
@example
-> -rubbish
@@ -313,229 +399,356 @@ the log output is prefixed by the prefix ``&''.
<- (gdb)
@end example
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter CLI compatibility
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Compatibility with CLI
+@section @sc{gdb/mi} Compatibility with CLI
-To help users familiar with the GDB's existing CLI interface, the GDB/MI
-will accept existing CLI commands. As specified by the syntax, such
-commands can be directly entered into the MI interface and GDB will
+@cindex compatibility, @sc{gdb/mi} and CLI
+@cindex @sc{gdb/mi}, compatibility with CLI
+To help users familiar with GDB's existing CLI interface, @sc{gdb/mi}
+accepts existing CLI commands. As specified by the syntax, such
+commands can be directly entered into the @sc{gdb/mi} interface and GDB will
respond.
-The mechanism is provided as an aid to developers of MI clients and not
-as a reliable interface into the CLI. Since the command is being
-interpreteted in an environment that assumes MI behaviour the exact
-output of such commands is likely to end up being an un-supported hybrid
-of MI and CLI output.
+This mechanism is provided as an aid to developers of @sc{gdb/mi}
+clients and not as a reliable interface into the CLI. Since the command
+is being interpreteted in an environment that assumes @sc{gdb/mi}
+behaviour, the exact output of such commands is likely to end up being
+an un-supported hybrid of @sc{gdb/mi} and CLI output.
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Output Records
+@section @sc{gdb/mi} Output Records
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Output Records
+@menu
+* GDB/MI Result Records::
+* GDB/MI Stream Records::
+* GDB/MI Out-of-band Records::
+@end menu
-@section Result Records
+@node GDB/MI Result Records
+@subsection @sc{gdb/mi} Result Records
-In addition to a number of out-of-band notifications the response to an
-MI command includes one of the following result indications.
+@cindex result records in @sc{gdb/mi}
+@cindex @sc{gdb/mi}, result records
+In addition to a number of out-of-band notifications, the response to a
+@sc{gdb/mi} command includes one of the following result indications:
@table @code
-
-@item ``^done'' [ ``,'' <results> ]
-The synchronous operation was successful, @code{<results>} is the return
+@findex ^done
+@item "^done" [ "," @var{results} ]
+The synchronous operation was successful, @code{@var{results}} is the return
value.
-@item ``^running''
+@item "^running"
+@findex ^running
+@c Is this one correct? Should it be an out-of-band notification?
The asynchronous operation was successfully started. The target is
-running. @emph{Is this one correct should it be an out-of-band
-notification?}
+running.
-@item ``^error'' ``,'' <c-string>
-The operation failed. The @code{<c-string>} contains the corresponding
+@item "^error" "," @var{c-string}
+@cindex ^error
+The operation failed. The @code{@var{c-string}} contains the corresponding
error message.
-
@end table
-@section Stream Records
+@node GDB/MI Stream Records
+@subsection @sc{gdb/mi} Stream Records
+@cindex @sc{gdb/mi}, stream records
+@cindex stream records in @sc{gdb/mi}
GDB internally maintains a number of output streams: the console, the
target, and the log. The output intended for each of these streams is
-tunneled through the MI interface using stream records.
+funneled through the @sc{gdb/mi} interface using @dfn{stream records}.
-In addition to the prefix each stream record contains a
-@code{<string-output>}. This is either raw text (with an implicit new
+Each stream record begins with a unique @dfn{prefix character} which
+identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output
+Syntax}). In addition to the prefix, each stream record contains a
+@code{@var{string-output}}. This is either raw text (with an implicit new
line) or a quoted C string (which does not contain an implicit newline).
@table @code
-
-@item ``~'' <string-output>
+@item "~" @var{string-output}
The console output stream contains text that should be displayed in the
CLI console window. It contains the textual responses to CLI commands.
-@item ``@@'' <string-output>
+@item "@@" @var{string-output}
The target output stream contains any textual output from the running
target.
-@item ``&'' <string-output>
+@item "&" @var{string-output}
The LOG stream contains debugging messages being produced by GDB's
internals.
-
@end table
-@section Out-of-band Records.
+@node GDB/MI Out-of-band Records
+@subsection @sc{gdb/mi} Out-of-band Records
-Out-of-band records are used to notify the MI client of additional
-changes that have occurred. Those changes can either be a consequence of
-an MI (breakpoint modified) or as a result of target activity (target
-stopped).
+@cindex out-of-band records in @sc{gdb/mi}
+@cindex @sc{gdb/mi}, out-of-band records
+@dfn{Out-of-band} records are used to notify the @sc{gdb/mi} client of
+additional changes that have occurred. Those changes can either be a
+consequence of @sc{gdb/mi} (e.g., a breakpoint modified) or a result of
+target activity (e.g., target stopped).
The following is a preliminary list of possible out-of-band records.
@table @code
-
-@item ``*'' ``stop''
-
+@item "*" "stop"
@end table
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Command Description Format
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Command Description Format
+@section @sc{gdb/mi} Command Description Format
-The remaining chapters describe blocks of commands. Each block of
+The remaining sections describe blocks of commands. Each block of
commands is laid out in a fashion similar to this chapter.
Note the the line breaks shown in the examples are here only for
readability. They don't appear in the real output.
-Note that the commands with a non available example (N.A.) are not yet
-implemented.
+Also note that the commands with a non-available example (N.A.@:) are
+not yet implemented.
-@section Motivation
+@subheading Motivation
-What motivates the collection of commands
+The motivation for this collection of commands
-@section Introduction
+@subheading Introduction
-Brief introduction to the commands as a whole.
+A brief introduction to this collection of commands as a whole.
-@section Operations
+@subheading Commands
-@subsection -command <args>...
+For each command in the block, the following is described:
-@subsubsection Result
+@subsubheading Synopsis
-@subsubsection Out-of-band
+@example
+ -command @var{args}...
+@end example
-@subsubsection Notes
+@subsubheading GDB Command
-@subsubsection Example
+The corresponding GDB CLI command.
+@subsubheading Result
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Breakpoint table commands
+@subsubheading Out-of-band
+
+@subsubheading Notes
+
+@subsubheading Example
+
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Breakpoint Table Commands
+@section @sc{gdb/mi} Breakpoint table commands
+
+@cindex breakpoint commands for @sc{gdb/mi}
+@cindex @sc{gdb/mi}, breakpoint commands
+This section documents @sc{gdb/mi} commands for manipulating
+breakpoints.
-@section -break-after <number> <count>
-The breakpoint number <number> is not in effect until it has been hit <count> times.
-Note how this is reflected in the output of the -break-list command.
+@subheading The @code{-break-after} Command
+@findex -break-after
-@subsection GDB command
-ignore
+@subsubheading Synopsis
-@subsection Example
@example
-(gdb)
+ -break-after @var{number} @var{count}
+@end example
+
+The breakpoint number @var{number} is not in effect until it has been
+hit @var{count} times. To see how this is reflected in the output of
+the @samp{-break-list} command, see the description of the
+@samp{-break-list} command below.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{ignore}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-break-insert main
^done,bkpt=@{number="1",addr="0x000100d0",file="hello.c",line="5"@}
-(gdb)
+(gdb)
-break-after 1 3
~
^done
-(gdb)
+(gdb)
-break-list
^done,BreakpointTable=@{hdr=@{"Num","Type","Disp","Enb","Address","What"@},
bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
-addr="0x000100d0",func="main",file="hello.c",line="5",times="0",ignore="3"@}@}
-(gdb)
-@end example
+addr="0x000100d0",func="main",file="hello.c",line="5",times="0",
+ignore="3"@}@}
+(gdb)
+@end smallexample
-@c @section -break-catch
+@ignore
+@subheading The @code{-break-catch} Command
+@findex -break-catch
+
+@subheading The @code{-break-commands} Command
+@findex -break-commands
+@end ignore
-@c @section -break-commands
-@section -break-condition <number> <expr>
-Breakpoint <number> will stop the program only if the condition in <expr> is true.
-The condition becomes part of the -break-list output.
-@subsection GDB command
-condition
-@subsection Example
+@subheading -break-condition
+@findex -break-condition
+
+@subsubheading Synopsis
+
@example
-(gdb)
+ -break-condition @var{number} @var{expr}
+@end example
+
+Breakpoint @var{number} will stop the program only if the condition in
+@var{expr} is true. The condition becomes part of the
+@samp{-break-list} output (see the description of the @samp{-break-list}
+command below).
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{condition}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-break-condition 1 1
^done
-(gdb)
+(gdb)
-break-list
^done,BreakpointTable=@{hdr=@{"Num","Type","Disp","Enb","Address","What"@},
bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
-addr="0x000100d0",func="main",file="hello.c",line="5",cond="1",times="0",ignore="3"@}@}
-(gdb)
+addr="0x000100d0",func="main",file="hello.c",line="5",cond="1",
+times="0",ignore="3"@}@}
+(gdb)
+@end smallexample
+
+@subheading The @code{-break-delete} Command
+@findex -break-delete
+
+@subsubheading Synopsis
+
+@example
+ -break-delete ( @var{breakpoint} )+
@end example
-@section -break-delete @{ <breakpoint> @}+
-Delete the breakpoint(s) specified in the argument list. This is
-obviously reflected in the breakpoint list.
-@subsection GDB command
-delete
-@subsection Example
+Delete the breakpoint(s) whose number(s) are specified in the argument
+list. This is obviously reflected in the breakpoint list.
+
+@subsubheading GDB command
+
+The corresponding GDB command is @samp{delete}.
+
+@subsubheading Example
+
@example
-(gdb)
--break-delete 1
+(gdb)
+-break-delete 1
^done
-(gdb)
+(gdb)
-break-list
^done,BreakpointTable=@{@}
-(gdb)
+(gdb)
@end example
-@section -break-disable @{ <breakpoint> @}+
-Disable the breakpoint(s). Note how the field 'enabled' in the break
-list is now set to 'n'.
-@subsection GDB command
-disable
-@subsection Example
+@subheading The @code{-break-disable} Command
+@findex -break-disable
+
+@subsubheading Synopsis
+
@example
-(gdb)
+ -break-disable ( @var{breakpoint} )+
+@end example
+
+Disable the named @var{breakpoint}(s). The field @samp{enabled} in the
+break list is now set to @samp{n} for the named @var{breakpoint}(s).
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{disable}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-break-disable 2
^done
-(gdb)
+(gdb)
-break-list
^done,BreakpointTable=@{hdr=@{"Num","Type","Disp","Enb","Address","What"@},
bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@}@}
-(gdb)
-@end example
+(gdb)
+@end smallexample
+
+@subheading The @code{-break-enable} Command
+@findex -break-enable
+
+@subsubheading Synopsis
-@section -break-enable @{ <breakpoint> @}+
-Enable a previously disabled breakpoint(s).
-@subsection GDB command
-enable
-@subsection Example
@example
-(gdb)
-enable 2
+ -break-enable ( @var{breakpoint} )+
+@end example
+
+Enable (previously disabled) @var{breakpoint}(s).
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{enable}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
+-break-enable 2
^done
-(gdb)
+(gdb)
-break-list
^done,BreakpointTable=@{hdr=@{"Num","Type","Disp","Enb","Address","What"@},
bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@}@}
-(gdb)
+(gdb)
+@end smallexample
+
+@subheading The @code{-break-info} Command
+@findex -break-info
+
+@subsubheading Synopsis
+
+@example
+ -break-info @var{breakpoint}
@end example
-@section -break-info <breakpoint>
-REDUNDANT??? Get information about a single breakpoint.
-@subsection GDB command
-@subsection Example
+@c REDUNDANT???
+Get information about a single breakpoint.
+
+@subsubheading GDB command
+
+The corresponding GDB command is @samp{info break @var{breakpoint}}.
+
+@subsubheading Example
N.A.
-@section -break-insert [ "-t" ] [ "-h" ] [ "-r" ] [ "-c" <condition> ] [ "-i" <ignore-count> ] [ "-p" <thread> ] [ <line> | <addr> ]
+@subheading The @code{-break-insert} Command
+@findex -break-insert
+
+@subsubheading Synopsis
+
+@example
+ -break-insert [ -t ] [ -h ] [ -r ]
+ [ -c @var{condition} ] [ -i @var{ignore-count} ]
+ [ -p @var{thread} ] [ @var{line} | @var{addr} ]
+@end example
+
+@noindent
+If specified, @var{line}, can be one of:
-<line>, if specified, accordingly to the gdb manual can be one of:
@itemize @bullet
@item function
@c @item +offset
@@ -546,82 +759,109 @@ N.A.
@item *address
@end itemize
-The possible forms of this command are:
+The possible optional parameters of this command are:
@table @samp
@item -t
Insert a tempoary breakpoint.
@item -h
Insert a hardware breakpoint.
-@item -c <condition>
-Make the breakpoint conditional on <condition>
-@item -i <ignore-count>
-Initialize the <ignore-count>
+@item -c @var{condition}
+Make the breakpoint conditional on @var{condition}.
+@item -i @var{ignore-count}
+Initialize the @var{ignore-count}.
@item -r
Insert a regular breakpoint in all the functions whose names match the
given regular expression. Other flags are not applicable to regular
expresson.
@end table
+@subsubheading Result
The result is in the form:
-^done,bkptno="<gdb number for this breakpoint>",func="<name of the
-function where the breakpoint was inserted>",file="<source file which
-contains this function>",line="<source line number within the file>"
-
-Note: this is open to change. An out-of-band breakpoint instead of part
-of the result?
-@subsection GDB command
-break, tbreak, hbreak, thbreak, rbreak.
-@subsection Example
@example
-(gdb)
+ ^done,bkptno="@var{number}",func="@var{funcname}",
+ file="@var{filename}",line="@var{lineno}"
+@end example
+
+@noindent
+where @var{number} is the GDB number for this breakpoint, @var{funcname}
+is the name of the function where the breakpoint was inserted,
+@var{filename} is the name of the source file which contains this
+function, and @var{lineno} is the source line number within that file.
+
+Note: this format is open to change.
+@c An out-of-band breakpoint instead of part of the result?
+
+@subsubheading GDB Command
+
+The corresponding GDB commands are @samp{break}, @samp{tbreak},
+@samp{hbreak}, @samp{thbreak}, and @samp{rbreak}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-break-insert main
^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
-(gdb)
+(gdb)
-break-insert -t foo
^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c",line="11"@}
-(gdb)
+(gdb)
-break-list
^done,BreakpointTable=@{hdr=@{"Num","Type","Disp","Enb","Address","What"@},
-bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",addr="0x0001072c",
-func="main",file="recursive2.c",line="4",times="0"@},
-bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",addr="0x00010774",
-func="foo",file="recursive2.c",line="11",times="0"@}@}
-(gdb)
+bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
+addr="0x0001072c", func="main",file="recursive2.c",line="4",times="0"@},
+bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
+addr="0x00010774",func="foo",file="recursive2.c",line="11",times="0"@}@}
+(gdb)
-break-insert -r foo.*
~int foo(int, int);
^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c",line="11"@}
-(gdb)
+(gdb)
+@end smallexample
+
+@subheading The @code{-break-list} Command
+@findex -break-list
+
+@subsubheading Synopsis
+
+@example
+ -break-list
@end example
-@section -break-list
Displays the list of inserted breakpoints, showing the following fields:
+
@table @samp
@item Number
-Number of the breakpoint
+number of the breakpoint
@item Type
-Type of the breakpoint: breakpoint or watchpoint
+type of the breakpoint: @samp{breakpoint} or @samp{watchpoint}
@item Disposition
-Should the breakpoint be deleted or disabled when it is hit: keep or nokeep
+should the breakpoint be deleted or disabled when it is hit: @samp{keep}
+or @samp{nokeep}
@item Enabled
-Is the breakpoint enabled or no: y or n
+is the breakpoint enabled or no: @samp{y} or @samp{n}
@item Address
-Memory location at which the breakpoint is set.
+memory location at which the breakpoint is set
@item What
-Logical location of the breakpoint, expressed by function name, file name, line number.
+logical location of the breakpoint, expressed by function name, file
+name, line number
@item times
-Number of times the breakpoint has been hit.
+number of times the breakpoint has been hit
@end table
If there are no breakpoints or watchpoints, the BreakpointTable field is
an empty list.
-@subsection GDB command
-info break
-@subsection Example 1
-@example
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{info break}.
+
+@subsubheading Example
+
+@smallexample
(gdb)
-break-list
^done,BreakpointTable=@{hdr=@{"Num","Type","Disp","Enb","Address","What"@},
@@ -630,277 +870,386 @@ addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@},
bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
addr="0x00010114",func="foo",file="hello.c",line="13",times="0"@}@}
(gdb)
-@end example
-@subsection Example 2
-@example
+@end smallexample
+
+Here's an example of the result when there are no breakpoints:
+
+@smallexample
(gdb)
-break-list
^done,BreakpointTable=@{@}
-(gdb)
+(gdb)
+@end smallexample
+
+@subheading The @code{-break-watch} Command
+@findex -break-watch
+
+@subsubheading Synopsis
+
+@example
+ -break-watch [ -a | -r ]
@end example
-@section -break-watch [ "-a" | "-r" ]
-Create a watchpoint. With the ``-a'' option it will create an access
-watchpoint, i.e. a watchpoints that triggers either on a read or on a
-write on the memory location. With the ``-r'' option, the watchoint
-created is a read watchpoint, i.e. it will trigger only when the memory
-location os accessed for reading. Without either of the options, the
-watchpoint created is a regular watchpoint, i.e. it will trigger whe the
-memory location is accessed for writing.
+Create a watchpoint. With the @samp{-a} option it will create an
+@dfn{access} watchpoint, i.e. a watchpoint that triggers either on a
+read from or on a write to the memory location. With the @samp{-r}
+option, the watchpoint created is a @dfn{read} watchpoint, i.e. it will
+trigger only when the memory location is accessed for reading. Without
+either of the options, the watchpoint created is a regular watchpoint,
+i.e. it will trigger when the memory location is accessed for writing.
+@xref{Set Watchpoints, , Setting watchpoints}.
-Note that ``-break-list'' will report a single list of watchpoints and
+Note that @samp{-break-list} will report a single list of watchpoints and
breakpoints inserted.
-@subsection GDB command
-watch, awatch, rwatch
+@subsubheading GDB Command
-@subsection Example 1
-Watchpoint on a variable in main().
-@example
-(gdb)
+The corresponding GDB commands are @samp{watch}, @samp{awatch}, and
+@samp{rwatch}.
+
+@subsubheading Example
+
+Setting a watchpoint on a variable in the @code{main} function:
+
+@smallexample
+(gdb)
-break-watch x
^done,wpt=@{number="2",exp="x"@}
-(gdb)
--exec-continue
+(gdb)
+-exec-continue
^running
^done,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
value=@{old="-268439212",new="55"@},
frame=@{func="main",args=@{@},file="recursive2.c",line="5"@}
-(gdb)
-@end example
-@subsection Example 2
-Watchpoint on a variable local to a function. Gdb will stop the program execution
-twice: first for the variable changing value, then for the watchpoint going out of scope.
-@example
-(gdb)
+(gdb)
+@end smallexample
+
+Setting a watchpoint on a variable local to a function. GDB will stop
+the program execution twice: first for the variable changing value, then
+for the watchpoint going out of scope.
+
+@smallexample
+(gdb)
-break-watch C
^done,wpt=@{number="5",exp="C"@}
-(gdb)
+(gdb)
-exec-continue
^running
^done,reason="watchpoint-trigger",
wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
-frame=@{func="callee4",args=@{@},file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
-line="13"@}
-(gdb)
+frame=@{func="callee4",args=@{@},
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
+(gdb)
-exec-continue
^running
^done,reason="watchpoint-scope",wpnum="5",
-frame=@{func="callee3",args=@{@{name="strarg",value="0x11940 \"A string argument.\""@}@},
+frame=@{func="callee3",args=@{@{name="strarg",
+value="0x11940 \"A string argument.\""@}@},
file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
-(gdb)
-@end example
+(gdb)
+@end smallexample
-@subsection Example 3
-Listing breakpoints and watchpoints, at different points in the program execution.
-Note that once the watchpoint goes out of scope, it is deleted.
-@example
-(gdb)
+Listing breakpoints and watchpoints, at different points in the program
+execution. Note that once the watchpoint goes out of scope, it is
+deleted.
+
+@smallexample
+(gdb)
-break-watch C
^done,wpt=@{number="2",exp="C"@}
-(gdb)
--break-list
+(gdb)
+-break-list
^done,BreakpointTable=@{hdr=@{"Num","Type","Disp","Enb","Address","What"@},
-bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",addr="0x00010734",
-func="callee4",
+bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
+addr="0x00010734",func="callee4",
file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
bkpt=@{number="2",type="watchpoint",disp="keep",
enabled="y",addr="",what="C",times="0"@}@}
-(gdb)
+(gdb)
-exec-continue
^running
^done,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
value=@{old="-276895068",new="3"@},
frame=@{func="callee4",args=@{@},
file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
-(gdb)
+(gdb)
-break-list
^done,BreakpointTable=@{hdr=@{"Num","Type","Disp","Enb","Address","What"@},
-bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",addr="0x00010734",
-func="callee4",
+bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
+addr="0x00010734",func="callee4",
file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
bkpt=@{number="2",type="watchpoint",disp="keep",
enabled="y",addr="",what="C",times="-5"@}@}
-(gdb)
+(gdb)
-exec-continue
^running
^done,reason="watchpoint-scope",wpnum="2",
-frame=@{func="callee3",args=@{@{name="strarg",value="0x11940 \"A string argument.\""@}@},
+frame=@{func="callee3",args=@{@{name="strarg",
+value="0x11940 \"A string argument.\""@}@},
file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
-(gdb)
+(gdb)
-break-list
^done,BreakpointTable=@{hdr=@{"Num","Type","Disp","Enb","Address","What"@},
-bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",addr="0x00010734",
-func="callee4",
+bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
+addr="0x00010734",func="callee4",
file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@}@}
-(gdb)
-@end example
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Data manipulation
+(gdb)
+@end smallexample
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Data Manipulation
+@section @sc{gdb/mi} Data Manipulation
-@c REMOVED FROM THE ITNERFACE.
-@c @section -data-assign
+@cindex data manipulation, in @sc{gdb/mi}
+@cindex @sc{gdb/mi}, data manipulation
+This section describes the @sc{gdb/mi} commands that manipulate data:
+examine memory and registers, evaluate expressions, etc.
+
+@c REMOVED FROM THE INTERFACE.
+@c @subheading -data-assign
@c Change the value of a program variable. Plenty of side effects.
-@c @subsection GDB command
+@c @subsubheading GDB command
@c set variable
-@c @subsection Example
+@c @subsubheading Example
@c N.A.
-@section -data-disassemble ( -s <start-addr> -e <end-addr> ) | (-f <filename> -l <linenum> [-n <lines> ]] -- <mode>
-Where
+@subheading The @code{-data-disassemble} Command
+@findex -data-disassemble
+
+@subsubheading Synopsis
+
+@example
+ -data-disassemble
+ [ -s @var{start-addr} -e @var{end-addr} ]
+ | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ]
+ -- @var{mode}
+@end example
+
+@noindent
+Where:
+
@table @samp
-@item <start-addr>
-Is the beginning address (or $pc).
-@item <end-addr>
-End address.
-@item <filename>
-Name of the file to disassemble.
-@item <linenum>
-Line number to disassemble around.
-@item <number-of-lines>
-specifies the number of disassembly lines to be produced. If it is -1
-the whole function will be disassembled, in case no <end> address is
-specified. If <end> is specified as a non-zero value, and
-<number-of-lines> is lower that the number of disassembly lines between
-<begin> and <end>, we'll display only <number-of-lines> lines, vice
-versa if <number-of-lines> is higher than the number of lines between
-<begin> and <end>, we'll display only the lines up to <end>.
-@item <mode>
-can be 0 (only disassembly) or 1 (mixed source and disassembly).
+@item @var{start-addr}
+is the beginning address (or @code{$pc})
+@item @var{end-addr}
+is the end address
+@item @var{filename}
+is the name of the file to disassemble
+@item @var{linenum}
+is the line number to disassemble around
+@item @var{lines}
+is the the number of disassembly lines to be produced. If it is -1,
+the whole function will be disassembled, in case no @var{end-addr} is
+specified. If @var{end-addr} is specified as a non-zero value, and
+@var{lines} is lower than the number of disassembly lines between
+@var{start-addr} and @var{end-addr}, only @var{lines} lines are
+displayed; if @var{lines} is higher than the number of lines between
+@var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr}
+are displayed.
+@item @var{mode}
+is either 0 (meaning only disassembly) or 1 (meaning mixed source and
+disassembly)
@end table
+@subsubheading Result
+
The output for each instruction is composed of two fields:
+
@itemize @bullet
@item Address
@item Func-name
@item Offset
@item Instruction
@end itemize
+
Note that whatever included in the instruction field, is not manipulated
-directely by Flathead, i.e. it is not possible to adjust its format.
-@subsection GDB command
-N.A. No direct mapping.
+directely by flathead, i.e. it is not possible to adjust its format.
-@subsection Example 1
-Disassemble from the current PC value to PC + 20.
+@subsubheading GDB Command
-@example
+There's no direct mapping from this command to the CLI.
+
+@subsubheading Example
+
+Disassemble from the current value of @code{$pc} to @code{$pc + 20}:
+
+@smallexample
(gdb)
--data-disassemble -s $pc -e "$pc + 20" -- 0
+-data-disassemble -s $pc -e "$pc + 20" -- 0
^done,
-asm_insns={
-{address="0x000107c0",func-name="main",offset="4",
-inst="mov 2, %o0"},
-{address="0x000107c4",func-name="main",offset="8",
-inst="sethi %hi(0x11800), %o2"},
-{address="0x000107c8",func-name="main",offset="12",
-inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"},
-{address="0x000107cc",func-name="main",offset="16",
-inst="sethi %hi(0x11800), %o2"},
-{address="0x000107d0",func-name="main",offset="20",
-inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"}}
+asm_insns=@{
+@{address="0x000107c0",func-name="main",offset="4",
+inst="mov 2, %o0"@},
+@{address="0x000107c4",func-name="main",offset="8",
+inst="sethi %hi(0x11800), %o2"@},
+@{address="0x000107c8",func-name="main",offset="12",
+inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@},
+@{address="0x000107cc",func-name="main",offset="16",
+inst="sethi %hi(0x11800), %o2"@},
+@{address="0x000107d0",func-name="main",offset="20",
+inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}@}
(gdb)
-@end example
+@end smallexample
-@subsection Example 2
-Disassemble the whole function main. Line 32 is part of main.
-@example
+Disassemble the whole @code{main} function. Line 32 is part of
+@code{main}.
+
+@smallexample
-data-disassemble -f basics.c -l 32 -- 0
-^done,asm_insns={
-{address="0x000107bc",func-name="main",offset="0",inst="save %sp, -112, %sp"},
-{address="0x000107c0",func-name="main",offset="4",inst="mov 2, %o0"},
-{address="0x000107c4",func-name="main",offset="8",inst="sethi %hi(0x11800), %o2"},
+^done,asm_insns=@{
+@{address="0x000107bc",func-name="main",offset="0",
+inst="save %sp, -112, %sp"@},
+@{address="0x000107c0",func-name="main",offset="4",
+inst="mov 2, %o0"@},
+@{address="0x000107c4",func-name="main",offset="8",
+inst="sethi %hi(0x11800), %o2"@},
[...]
-{address="0x0001081c",func-name="main",offset="96",inst="ret "},
-{address="0x00010820",func-name="main",offset="100",inst="restore "}}
+@{address="0x0001081c",func-name="main",offset="96",inst="ret "@},
+@{address="0x00010820",func-name="main",offset="100",inst="restore "@}@}
(gdb)
-@end example
+@end smallexample
-@subsection Example 3
-Disassemble 3 instruction from the start of main.
-@example
-(gdb)
+Disassemble 3 instructions from the start of @code{main}:
+
+@smallexample
+(gdb)
-data-disassemble -f basics.c -l 32 -n 3 -- 0
-^done,asm_insns={
-{address="0x000107bc",func-name="main",offset="0",inst="save %sp, -112, %sp"},
-{address="0x000107c0",func-name="main",offset="4",inst="mov 2, %o0"},
-{address="0x000107c4",func-name="main",offset="8",inst="sethi %hi(0x11800), %o2"}}
-(gdb)
-@end example
+^done,asm_insns=@{
+@{address="0x000107bc",func-name="main",offset="0",
+inst="save %sp, -112, %sp"@},
+@{address="0x000107c0",func-name="main",offset="4",
+inst="mov 2, %o0"@},
+@{address="0x000107c4",func-name="main",offset="8",
+inst="sethi %hi(0x11800), %o2"@}@}
+(gdb)
+@end smallexample
-@subsection Example 4
-Disassemble 3 instruction from the start of main in mixed mode.
-@example
-(gdb)
+Disassemble 3 instructions from the start of @code{main} in mixed mode:
+
+@smallexample
+(gdb)
-data-disassemble -f basics.c -l 32 -n 3 -- 1
-^done,asm_insns={
-src_and_asm_line={line="31",
-file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/testsuite/gdb.mi/basics.c",
-line_asm_insn={
-{address="0x000107bc",func-name="main",offset="0",inst="save %sp, -112, %sp"}}},
-
-src_and_asm_line={line="32",
-file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/testsuite/gdb.mi/basics.c",
-line_asm_insn={
-{address="0x000107c0",func-name="main",offset="4",inst="mov 2, %o0"},
-{address="0x000107c4",func-name="main",offset="8",inst="sethi %hi(0x11800), %o2"}}}}
-(gdb)
-@end example
-
-@section -data-evaluate-expression
-Evaluate an expression. The expression could contain an inferior
-function call. The function call will execute synchronously.
-If the expression contains spaces, it must be enclosed in double quotes.
-@subsection GDB command
-print, output, gdb_eval
-@subsection Example
+^done,asm_insns=@{
+src_and_asm_line=@{line="31",
+file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
+ testsuite/gdb.mi/basics.c",line_asm_insn=@{
+@{address="0x000107bc",func-name="main",offset="0",
+inst="save %sp, -112, %sp"@}@}@},
+
+src_and_asm_line=@{line="32",
+file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
+ testsuite/gdb.mi/basics.c",line_asm_insn=@{
+@{address="0x000107c0",func-name="main",offset="4",
+inst="mov 2, %o0"@},
+@{address="0x000107c4",func-name="main",offset="8",
+inst="sethi %hi(0x11800), %o2"@}@}@}@}
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-data-evaluate-expression} Command
+@findex -data-evaluate-expression
+
+@subsubheading Synopsis
+
@example
+ -data-evaluate-expression @var{expr}
+@end example
+
+Evaluate @var{expr} as an expression. The expression could contain an
+inferior function call. The function call will execute synchronously.
+If the expression contains spaces, it must be enclosed in double quotes.
+
+@subsubheading GDB Command
+
+The corresponding GDB commands are @samp{print}, @samp{output}, and
+@samp{call}. In @code{gdbtk} only, there's a corresponding
+@samp{gdb_eval} command.
+
+@subsubheading Example
+
+In the following example, the numbers that precede the commands are the
+@dfn{tokens} described in @ref{GDB/MI Command Syntax, , @sc{gdb/mi}
+Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its
+output.
+
+@smallexample
211-data-evaluate-expression A
211^done,value="1"
-(gdb)
+(gdb)
311-data-evaluate-expression &A
311^done,value="0xefffeb7c"
(gdb)
411-data-evaluate-expression A+3
411^done,value="4"
-(gdb)
+(gdb)
511-data-evaluate-expression "A + 3"
511^done,value="4"
-(gdb)
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-data-list-changed-registers} Command
+@findex -data-list-changed-registers
+
+@subsubheading Synopsis
+
+@example
+ -data-list-changed-registers
@end example
-@section -data-list-changed-registers
Display a list of the registers that have changed.
-@subsection GDB command
-gdb_changed_register_list. This is in gdbtk only.
-@subsection Example
-On a PPC MBX board.
-@example
-(gdb)
+
+@subsubheading GDB Command
+
+GDB doesn't have a direct analog for this command; @code{gdbtk} has the
+corresponding command @samp{gdb_changed_register_list}.
+
+@subsubheading Example
+
+On a PPC MBX board:
+
+@smallexample
+(gdb)
-exec-continue
^running
-(gdb)
+(gdb)
*stopped,reason="breakpoint-hit",bkptno="1",frame=@{func="main",
args=@{@},file="try.c",line="5"@}
-(gdb)
+(gdb)
-data-list-changed-registers
^done,changed-registers=@{"0","1","2","4","5","6","7","8","9",
"10","11","13","14","15","16","17","18","19","20","21","22","23",
"24","25","26","27","28","30","31","64","65","66","67","69"@}
-(gdb)
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-data-list-register-names} Command
+@findex -data-list-register-names
+
+@subsubheading Synopsis
+
+@example
+ -data-list-register-names [ ( @var{regno} )+ ]
@end example
-@section -data-list-register-names
Show a list of register names for the current target. If no arguments
are given, it shows a list of the names of all the registers. If
integer numbers are given as arguments, it will print a list of the
-names corresponding to the arguments.
-@subsection GDB command
-gdb_regnames
-@subsection Example
+names of the registers corresponding to the arguments.
+
+@subsubheading GDB Command
+
+GDB does not have a command which corresponds to
+@samp{-data-list-register-names}. In @code{gdbtk} there is a
+corresponding command @samp{gdb_regnames}.
+
+@subsubheading Example
+
For the PPC MBX board:
-@example
+@smallexample
(gdb)
-data-list-register-names
^done,register-names=@{"r0","r1","r2","r3","r4","r5","r6","r7",
@@ -913,35 +1262,56 @@ For the PPC MBX board:
(gdb)
-data-list-register-names 1 2 3
^done,register-names=@{"r1","r2","r3"@}
-(gdb)
-@end example
+(gdb)
+@end smallexample
-@section -data-list-register-values
-Display the registers contents. Arguments are the format according to
-which the registers contents are to be returned, and a list of numbers
-specifying the registers to display. A missing list of number indicates
-that the contents of all the registers must be returned.
-Allowed formats are:
-@itemize @bullet
-@item 'x': Hexadecimal
-@item 'o': Octal
-@item 't': Binary
-@item 'd': Decimal
-@item 'r': Raw
-@item 'N': Natural
-@end itemize
+@subheading The @code{-data-list-register-values} Command
+@findex -data-list-register-values
+
+@subsubheading Synopsis
-@subsection GDB command
-info reg, info all-reg AND/OR gdb_fetch_registers
-@subsection Example
-For a PPC MBX board. Note, line breaks are for readability only, they
-don't appear in the actual output.
@example
-(gdb)
+ -data-list-register-values @var{fmt} [ ( @var{regno} )*]
+@end example
+
+Display the registers' contents. @var{fmt} is the format according to
+which the registers' contents are to be returned, followed by an optional
+list of numbers specifying the registers to display. A missing list of
+numbers indicates that the contents of all the registers must be returned.
+
+Allowed formats for @var{fmt} are:
+
+@table @code
+@item x
+Hexadecimal
+@item o
+Octal
+@item t
+Binary
+@item d
+Decimal
+@item r
+Raw
+@item N
+Natural
+@end table
+
+@subsubheading GDB Command
+
+The corresponding GDB commands are @samp{info reg}, @samp{info all-reg},
+and (in @code{gdbtk}) @samp{gdb_fetch_registers}.
+
+@subsubheading Example
+
+For a PPC MBX board (note: line breaks are for readability only, they
+don't appear in the actual output):
+
+@smallexample
+(gdb)
-data-list-register-values r 64 65
^done,register-values=@{@{number="64",value="0xfe00a300"@},
@{number="65",value="0x00029002"@}@}
-(gdb)
+(gdb)
-data-list-register-values x
^done,register-values=@{@{number="0",value="0xfe0043c8"@},
@{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@},
@@ -979,51 +1349,80 @@ don't appear in the actual output.
@{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@},
@{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@},
@{number="69",value="0x20002b03"@}@}
-(gdb)
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-data-read-memory} Command
+@findex -data-read-memory
+
+@subsubheading Synopsis
+
+@example
+ -data-read-memory [ -o @var{byte-offset} ]
+ @var{address} @var{word-format} @var{word-size}
+ @var{nr-rows} @var{nr-cols} [ @var{aschar} ]
@end example
-@section -data-read-memory [ -o <byte-offset> ] [ -- ] <address> <word-format> <word-size> <nr-rows> <nr-cols> [ <aschar> ]
-Where
+@noindent
+where:
+
@table @samp
-@item <address>
+@item @var{address}
An expression specifying the address of the first memory word to be
read. Complex expressions containing embedded white space should be
quoted using the C convention.
-@item <word-format>
+
+@item @var{word-format}
The format to be used to print the memory words. The notation is the
-same as for GDB's @code{print} command.
-@item <word-size>
+same as for GDB's @code{print} command (@pxref{Output Formats, , Output
+formats}).
+
+@item @var{word-size}
The size of each memory word in bytes.
-@item <nr-rows>
+
+@item @var{nr-rows}
The number of rows in the output table.
-@item <nr-cols>
+
+@item @var{nr-cols}
The number of columns in the output table.
-@item <aschar>
-If present, indicates that each row should include an ascii dump. The
-value of <aschar> is used as a padding character when a byte is not a
-member of the printable ascii character set (@code{<32} or @code{>126}).
-@item <byte-offset>
-An offset to add to the <address> before fetching memory.
+
+@item @var{aschar}
+If present, indicates that each row should include an @sc{ascii} dump. The
+value of @var{aschar} is used as a padding character when a byte is not a
+member of the printable @sc{ascii} character set (printable @sc{ascii}
+characters are those whose code is between 32 and 126, inclusively).
+
+@item @var{byte-offset}
+An offset to add to the @var{address} before fetching memory.
@end table
-Display memory contents as a table of <nr-rows> by <nr-cols> words.
-Each word being <word-size> bytes. In total @code{<nr-rows> * <nr-cols>
-* <word-size>} bytes are read (returned as @code{total-bytes}. Should
-less then the requested number of bytes be returned by the target, the
-missing words are identified using @code{N/A}. The number of bytes read
-from the target is returned in @code{nr-bytes} and the starting address
-used to read memory by @code{addr}.
+
+This command displays memory contents as a table of @var{nr-rows} by
+@var{nr-cols} words, each word being @var{word-size} bytes. In total,
+@code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read
+(returned as @samp{total-bytes}). Should less then the requested number
+of bytes be returned by the target, the missing words are identified
+using @samp{N/A}. The number of bytes read from the target is returned
+in @samp{nr-bytes} and the starting address used to read memory in
+@samp{addr}.
The address of the next/previous page or row is available in
-@code{next-row} and @code{prev-row}, @code{next-page} and
-@code{prev-page}.
-@subsection GDB command
-x AND/OR gdb_get_mem AND/OR GDBtk's memory read.
-@subsection Example 1
+@samp{next-row} and @samp{prev-row}, @samp{next-page} and
+@samp{prev-page}.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{x}. @code{gdbtk} has
+@samp{gdb_get_mem} memory read.
+
+@subsubheading Example
+
Read six bytes of memory starting at @code{bytes+6} but then offset by
@code{-6} bytes. Format as three rows of two columns. One byte per
word. Display each word in hex.
-@example
-(gdb)
+
+@smallexample
+(gdb)
9-data-read-memory -o -6 -- bytes+6 x 1 3 2
9^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
@@ -1031,26 +1430,28 @@ prev-page="0x0000138a",memory=@{
@{addr="0x00001390",data=@{"0x00","0x01"@}@},
@{addr="0x00001392",data=@{"0x02","0x03"@}@},
@{addr="0x00001394",data=@{"0x04","0x05"@}@}@}
-(gdb)
-@end example
-@subsection Example 2
+(gdb)
+@end smallexample
+
Read two bytes of memory starting at address @code{shorts + 64} and
display as a single word formatted in decimal.
-@example
-(gdb)
+
+@smallexample
+(gdb)
5-data-read-memory shorts+64 d 2 1 1
5^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
next-row="0x00001512",prev-row="0x0000150e",
next-page="0x00001512",prev-page="0x0000150e",memory=@{
@{addr="0x00001510",data=@{"128"@}@}@}
-(gdb)
-@end example
-@subsection Example 3
+(gdb)
+@end smallexample
+
Read thirty two bytes of memory starting at @code{bytes+16} and format
as eight rows of four columns. Include a string encoding with @code{x}
used as the non-printable character.
-@example
-(gdb)
+
+@smallexample
+(gdb)
4-data-read-memory bytes+16 x 1 8 4 x
4^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
next-row="0x000013c0",prev-row="0x0000139c",
@@ -1063,645 +1464,1107 @@ next-page="0x000013c0",prev-page="0x00001380",memory=@{
@{addr="0x000013b4",data=@{"0x24","0x25","0x26","0x27"@},ascii="$%&'"@},
@{addr="0x000013b8",data=@{"0x28","0x29","0x2a","0x2b"@},ascii="()*+"@},
@{addr="0x000013bc",data=@{"0x2c","0x2d","0x2e","0x2f"@},ascii=",-./"@}@}
-(gdb)
+(gdb)
+@end smallexample
+
+@subheading The @code{-display-delete} Command
+@findex -display-delete
+
+@subsubheading Synopsis
+
+@example
+ -display-delete @var{number}
@end example
-@section -display-delete <number>
-Delete the display <number>.
-@subsection GDB command
-delete display
-@subsection Example
+Delete the display @var{number}.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{delete display}.
+
+@subsubheading Example
N.A.
-@section -display-disable <number>
-Disable display <number>
-@subsection GDB command
-disable display
-@subsection Example
+
+@subheading The @code{-display-disable} Command
+@findex -display-disable
+
+@subsubheading Synopsis
+
+@example
+ -display-disable @var{number}
+@end example
+
+Disable display @var{number}.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{disable display}.
+
+@subsubheading Example
N.A.
-@section -display-enable <number>
-Enable display <number>
-@subsection GDB command
-enable display
-@subsection Example
+
+@subheading The @code{-display-enable} Command
+@findex -display-enable
+
+@subsubheading Synopsis
+
+@example
+ -display-enable @var{number}
+@end example
+
+Enable display @var{number}.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{enable display}.
+
+@subsubheading Example
N.A.
-@section -display-insert <expression>
-Display <expression> every time the program stops.
-@subsection GDB command
-display
-@subsection Example
+
+@subheading The @code{-display-insert} Command
+@findex -display-insert
+
+@subsubheading Synopsis
+
+@example
+ -display-insert @var{expression}
+@end example
+
+Display @var{expression} every time the program stops.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{display}.
+
+@subsubheading Example
N.A.
-@section -display-list
-List the displays. Do not show the current values.
-@subsection GDB command
-info display
-@subsection Example
+
+@subheading The @code{-display-list} Command
+@findex -display-list
+
+@subsubheading Synopsis
+
+@example
+ -display-list
+@end example
+
+List the displays. Do not show the current values.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{info display}.
+
+@subsubheading Example
N.A.
-@section -environment-cd <pathdir>
-Set GDB's working directory.
-@subsection GDB command
-cd
-@subsection Example
+
+@subheading The @code{-environment-cd} Command
+@findex -environment-cd
+
+@subsubheading Synopsis
+
@example
-(gdb)
+ -environment-cd @var{pathdir}
+@end example
+
+Set GDB's working directory.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{cd}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
^done
-(gdb)
-@end example
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-environment-directory} Command
+@findex -environment-directory
+
+@subsubheading Synopsis
-@section -environment-directory <pathdir>
-Add directory <pathdir> to beginning of search path for source files.
-@subsection GDB command
-dir
-@subsection Example
@example
-(gdb)
+ -environment-directory @var{pathdir}
+@end example
+
+Add directory @var{pathdir} to beginning of search path for source files.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{dir}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
^done
(gdb)
-@end example
+@end smallexample
+
+
+@subheading The @code{-environment-path} Command
+@findex -environment-path
+
+@subsubheading Synopsis
-@section -environment-path @{ <pathdir> @}+
-Add directories to beginning of search path for object files.
-@subsection GDB command
-path
-@subsection Example
@example
-(gdb)
+ -environment-path ( @var{pathdir} )+
+@end example
+
+Add directories to beginning of search path for object files.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{path}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb
^done
(gdb)
-@end example
+@end smallexample
+
+
+@subheading The @code{-environment-pwd} Command
+@findex -environment-pwd
+
+@subsubheading Synopsis
-@section -environment-pwd
-Show the current working directory
-@subsection GDB command
-pwd
-@subsection Example
@example
-(gdb)
+ -environment-pwd
+@end example
+
+Show the current working directory.
+
+@subsubheading GDB command
+
+The corresponding GDB command is @samp{pwd}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-environment-pwd
~Working directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb.
^done
-(gdb)
-@end example
+(gdb)
+@end smallexample
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Program control
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Program Control
+@section @sc{gdb/mi} Program control
+
+@subsubheading Program termination
-@section Program termination
As a result of execution, the inferior program can run to completion, if
it doesn't encouter any breakpoints. In this case the ouput will
include an exit code, if the program has exited exceptionally.
-@subsection Example 1
+
+@subsubheading Examples:
+
+@noindent
Program exited normally:
-@example
-(gdb)
+
+@smallexample
+(gdb)
-exec-run
^running
(gdb)
x = 55
*stopped,reason="exited-normally"
-(gdb)
-@end example
+(gdb)
+@end smallexample
-@subsection Example 2
+@noindent
Program exited exceptionally:
-@example
-(gdb)
+
+@smallexample
+(gdb)
-exec-run
^running
(gdb)
x = 55
*stopped,reason="exited",exit-code="01"
-(gdb)
-@end example
+(gdb)
+@end smallexample
+
+Another way the program can terminate is if it receives a signal such as
+@code{SIGINT}. In this case, @sc{gdb/mi} displays this:
+
+@smallexample
+(gdb)
+*stopped,reason="exited-signalled",signal-name="SIGINT",
+signal-meaning="Interrupt"
+@end smallexample
+
+
+@subheading The @code{-exec-abort} Command
+@findex -exec-abort
+
+@subsubheading Synopsis
-Another way the program can terminate is if it receives a signal like SIGINT.
-@subsection Example
-Program exited with signal (for a more complete example, see the exec-interrupt command).
@example
-(gdb)
-*stopped,reason="exited-signalled",signal-name="SIGINT",signal-meaning="Interrupt"
+ -exec-abort
@end example
-
-@section -exec-abort
Kill the inferior running program.
-@subsection GDB command
-kill
+@subsubheading GDB Command
-@subsection Example
+The corresponding GDB command is @samp{kill}.
+
+@subsubheading Example
N.A.
-@section -exec-arguments
-Set the inferior program arguments, to be used in the next -exec-run.
-@subsection GDB command
-set args
+@subheading The @code{-exec-arguments} Command
+@findex -exec-arguments
+
+@subsubheading Synopsis
-@subsection Example
-Don't have it around.
+@example
+ -exec-arguments @var{args}
+@end example
+
+Set the inferior program arguments, to be used in the next
+@samp{-exec-run}.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{set args}.
-@section -exec-continue
-Asynchronous command. Resumes the execution of the inferior program until
-a breakpoint is encountered, or the inferior exits.
+@subsubheading Example
-@subsection GDB command
-continue
+@c FIXME!
+Don't have one around.
+
+
+@subheading The @code{-exec-continue} Command
+@findex -exec-continue
+
+@subsubheading Synopsis
-@subsection Example
@example
+ -exec-continue
+@end example
+
+Asynchronous command. Resumes the execution of the inferior program
+until a breakpoint is encountered, or until the inferior exits.
+
+@subsubheading GDB Command
+
+The corresponding GDB corresponding is @samp{continue}.
+
+@subsubheading Example
+
+@smallexample
-exec-continue
^running
-(gdb)
+(gdb)
@@Hello world
*stopped,reason="breakpoint-hit",bkptno="2",frame=@{func="foo",args=@{@},
file="hello.c",line="13"@}
(gdb)
-@end example
+@end smallexample
-@section -exec-finish
-Asynchronous command. Resumes the execution of the inferior program until the
-current function is exited. Displays the results returned by the function (???).
-@subsection GDB command
-finish
+@subheading The @code{-exec-finish} Command
+@findex -exec-finish
+
+@subsubheading Synopsis
-@subsection Example 1
-Function returning 'void'.
@example
+ -exec-finish
+@end example
+
+Asynchronous command. Resumes the execution of the inferior program
+until the current function is exited. Displays the results returned by
+the function.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{finish}.
+
+@subsubheading Example
+
+Function returning @code{void}.
+
+@smallexample
-exec-finish
^running
-(gdb)
+(gdb)
@@hello from foo
*stopped,reason="function-finished",frame=@{func="main",args=@{@},
file="hello.c",line="7"@}
-(gdb)
-@end example
-@subsection Example 2
-Function returning other than 'void'. The name of the internal gdb variable storing the
-result is printed, and the value itself.
-@example
+(gdb)
+@end smallexample
+
+Function returning other than @code{void}. The name of the internal GDB
+variable storing the result is printed, together with the value itself.
+
+@smallexample
-exec-finish
^running
-(gdb)
+(gdb)
*stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
-args=@{@{name="a",value="1"@},@{name="b",value="9"@}@},file="recursive2.c",line="14"@},
+args=@{@{name="a",value="1"@},@{name="b",value="9"@}@},
+file="recursive2.c",line="14"@},
gdb-result-var="$1",return-value="0"
-(gdb)
+(gdb)
+@end smallexample
+
+@subheading The @code{-exec-interrupt} Command
+@findex -exec-interrupt
+
+@subsubheading Synopsis
+
+@example
+ -exec-interrupt
@end example
-@section -exec-interrupt
+
Asynchronous command. Interrupts the background execution of the target.
Note how the token associated with the stop message is the one for the
-execution command that has been interrupted. The token for the interrupt
+execution command that has been interrupted. The token for the interrupt
itself only appears in the '^done' output. If the user is trying to
-interrupt a non running program, an error message will be printed.
-@subsection GDB command
-interrupt
+interrupt a non-running program, an error message will be printed.
-@subsection Example
-@example
-(gdb)
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{interrupt}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
111-exec-continue
111^running
-(gdb)
+(gdb)
222-exec-interrupt
222^done
-(gdb)
+(gdb)
111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
frame=@{addr="0x00010140",func="foo",args=@{@},file="try.c",line="13"@}
-(gdb)
+(gdb)
-(gdb)
+(gdb)
-exec-interrupt
^error,msg="mi_cmd_exec_interrupt: Inferior not executing."
-(gdb)
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-exec-next} Command
+@findex -exec-next
+@subsubheading Synopsis
+
+@example
+ -exec-next
@end example
-@section -exec-next
-Asynchronous command. Resumes execution of the inferior program, stopping
+Asynchronous command. Resumes execution of the inferior program, stopping
when the beginning of the next source line is reached.
-@subsection GDB command
-next
+@subsubheading GDB Command
-@subsection Example
-@example
+The corresponding GDB command is @samp{next}.
+
+@subsubheading Example
+
+@smallexample
-exec-next
^running
-(gdb)
+(gdb)
*stopped,reason="end-stepping-range",line="8",file="hello.c"
-(gdb)
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-exec-next-instruction} Command
+@findex -exec-next-instruction
+
+@subsubheading Synopsis
+
+@example
+ -exec-next-instruction
@end example
-@section -exec-next-instruction
-Asynchronous command. Executes one machine instruction. If the
+Asynchronous command. Executes one machine instruction. If the
instruction is a function call continues until the function returns. If
the program stops at an instruction in the middle of a source line, the
address will be printed as well.
-@subsection GDB command
-nexti
-@subsection Example
-@example
-(gdb)
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{nexti}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-exec-next-instruction
^running
-(gdb)
+(gdb)
*stopped,reason="end-stepping-range",
addr="0x000100d4",line="5",file="hello.c"
-(gdb)
-@end example
+(gdb)
+@end smallexample
-@section -exec-return
-Makes current function return immediately. Doesn't execute the inferior.
-It displays the new current frame.
-@subsection GDB command
-return
+@subheading The @code{-exec-return} Command
+@findex -exec-return
+
+@subsubheading Synopsis
-@subsection Example
@example
+ -exec-return
+@end example
+
+Makes current function return immediately. Doesn't execute the inferior.
+Displays the new current frame.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{return}.
+
+@subsubheading Example
+
+@smallexample
(gdb)
200-break-insert callee4
200^done,bkpt=@{number="1",addr="0x00010734",
file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
(gdb)
-000-exec-run
+000-exec-run
000^running
(gdb)
000*stopped,reason="breakpoint-hit",bkptno="1",
frame=@{func="callee4",args=@{@},
file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
-(gdb)
+(gdb)
205-break-delete
205^done
(gdb)
111-exec-return
111^done,frame=@{level="0 ",func="callee3",
-args=@{@{name="strarg",value="0x11940 \"A string argument.\""@}@},
+args=@{@{name="strarg",
+value="0x11940 \"A string argument.\""@}@},
file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
(gdb)
+@end smallexample
+
+
+@subheading The @code{-exec-run} Command
+@findex -exec-run
+
+@subsubheading Synopsis
+
+@example
+ -exec-run
@end example
-@section -exec-run
-Asynchronous command. Starts execution of the inferior from the
-beginning. The inferior executes until either a breakpoint is
+Asynchronous command. Starts execution of the inferior from the
+beginning. The inferior executes until either a breakpoint is
encountered or the program exits.
-@subsection GDB command
-run
+@subsubheading GDB Command
-@subsection Example
-@example
-(gdb)
+The corresponding GDB command is @samp{run}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-break-insert main
^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
-(gdb)
+(gdb)
-exec-run
^running
-(gdb)
+(gdb)
*stopped,reason="breakpoint-hit",bkptno="1",
frame=@{func="main",args=@{@},file="recursive2.c",line="4"@}
-(gdb)
-@end example
+(gdb)
+@end smallexample
+
+@subheading The @code{-exec-show-arguments} Command
+@findex -exec-show-arguments
+
+@subsubheading Synopsis
+
+@example
+ -exec-show-arguments
+@end example
-@section -exec-show-arguments
Print the arguments of the program.
-@subsection GDB command
-show args
-@subsection Example
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{show args}.
+
+@subsubheading Example
N.A.
-@c @section -exec-signal
+@c @subheading -exec-signal
+
+@subheading The @code{-exec-step} Command
+@findex -exec-step
+
+@subsubheading Synopsis
-@section -exec-step
-Asynchronous command. Resumes execution of the inferior program, stopping
+@example
+ -exec-step
+@end example
+
+Asynchronous command. Resumes execution of the inferior program, stopping
when the beginning of the next source line is reached, if the next
-source line is not a function call. If it is, stop at the first
+source line is not a function call. If it is, stop at the first
instruction of the called function.
-@subsection GDB command
-step
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{step}.
+
+@subsubheading Example
-@subsection Example 1
Stepping into a function:
-@example
+
+@smallexample
-exec-step
^running
-(gdb)
-*stopped,reason="end-stepping-range",frame=@{func="foo",args=@{@{name="a",value="10"@},
+(gdb)
+*stopped,reason="end-stepping-range",
+frame=@{func="foo",args=@{@{name="a",value="10"@},
@{name="b",value="0"@}@},file="recursive2.c",line="11"@}
-(gdb)
-@end example
-@subsection Example 2
-Regular stepping
-@example
+(gdb)
+@end smallexample
+
+Regular stepping:
+
+@smallexample
-exec-step
^running
-(gdb)
+(gdb)
*stopped,reason="end-stepping-range",line="14",file="recursive2.c"
-(gdb)
-@end example
+(gdb)
+@end smallexample
-@section -exec-step-instruction
-Asynchronous command. Resumes the inferior which executes one machine
-instruction. The output, once stop, will vary depend on whether we have
-stopped in the middle of a source line or not. In the former case, the
-address at which the program stopped will be printed as well.
-@subsection GDB command
-stepi
+@subheading The @code{-exec-step-instruction} Command
+@findex -exec-step-instruction
+
+@subsubheading Synopsis
-@subsection Example
@example
-(gdb)
+ -exec-step-instruction
+@end example
+
+Asynchronous command. Resumes the inferior which executes one machine
+instruction. The output, once GDB has stopped, will vary depending on
+whether we have stopped in the middle of a source line or not. In the
+former case, the address at which the program stopped will be printed as
+well.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{stepi}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-exec-step-instruction
^running
-(gdb)
+(gdb)
*stopped,reason="end-stepping-range",
frame=@{func="foo",args=@{@},file="try.c",line="10"@}
-(gdb)
+(gdb)
-exec-step-instruction
^running
-(gdb)
+(gdb)
*stopped,reason="end-stepping-range",
frame=@{addr="0x000100f4",func="foo",args=@{@},file="try.c",line="10"@}
-(gdb)
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-exec-until} Command
+@findex -exec-until
+
+@subsubheading Synopsis
+
+@example
+ -exec-until [ @var{location} ]
@end example
-@section -exec-until
-Asynchronous command. Executes the inferior until the location specified
-in the argument is reached. If there is no argument, the inferior
+Asynchronous command. Executes the inferior until the @var{location}
+specified in the argument is reached. If there is no argument, the inferior
executes until a source line greater than the current one is reached.
The reason for stopping in this case will be ``location-reached''.
-@subsection GDB command
-until
-@subsection Example
-@example
-(gdb)
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{until}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-exec-until recursive2.c:6
^running
-(gdb)
+(gdb)
x = 55
*stopped,reason="location-reached",frame=@{func="main",args=@{@},
file="recursive2.c",line="6"@}
-(gdb)
-@end example
+(gdb)
+@end smallexample
-@section -file-clear
+@ignore
+@subheading -file-clear
Is this going away????
+@end ignore
+
+
+@subheading The @code{-file-exec-and-symbols} Command
+@findex -file-exec-and-symbols
-@section -file-exec-and-symbols <file>
-Specify the executable file to be debugged. This file is the one from
-which the symbol table is also read. If no file is specified, it clears
-the executable and symbol information. If breakpoints are set when
-using this command with no arguments, gdb will produce errors. No output
-is produced, except a completion notification.
-@subsection GDB command
-file <file>
+@subsubheading Synopsis
-@subsection Example
@example
+ -file-exec-and-symbols @var{file}
+@end example
+
+Specify the executable file to be debugged. This file is the one from
+which the symbol table is also read. If no file is specified, the
+command clears the executable and symbol information. If breakpoints
+are set when using this command with no arguments, gdb will produce
+error messages. Otherwise, no output is produced, except a completion
+notification.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{file}.
+
+@subsubheading Example
+
+@smallexample
(gdb)
-file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
^done
(gdb)
+@end smallexample
+
+
+@subheading The @code{-file-exec-file} Command
+@findex -file-exec-file
+
+@subsubheading Synopsis
+
+@example
+ -file-exec-file @var{file}
@end example
-@section -file-exec-file <file>
-Specify the executable file to be debugged. The symbol table is not read
-from this file. If used without argument gdb clears the information
+Specify the executable file to be debugged. Unlike
+@samp{-file-exec-and-symbols}, the symbol table is @emph{not} read
+from this file. If used without argument, GDB clears the information
about the executable file. No output is produced, except a completion
notification.
-@subsection GDB command
-exec-file <file>
-@subsection Example
-@example
-(gdb)
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{exec-file}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
^done
-(gdb)
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-file-list-exec-sections} Command
+@findex -file-list-exec-sections
+
+@subsubheading Synopsis
+
+@example
+ -file-list-exec-sections
@end example
-@section -file-list-exec-sections
List the sections of the current executable file.
-@subsection GDB command
-info file (only part of it), gdb_load_info
-@subsection Example
+
+@subsubheading GDB Command
+
+The GDB command @samp{info file} shows, among the rest, the same
+information as this command. @code{gdbtk} has a corresponding command
+@samp{gdb_load_info}.
+
+@subsubheading Example
N.A.
-@section -file-list-exec-source-files
+
+@subheading The @code{-file-list-exec-source-files} Command
+@findex -file-list-exec-source-files
+
+@subsubheading Synopsis
+
+@example
+ -file-list-exec-source-files
+@end example
+
List the source files for the current executable.
-@subsection GDB command
-gdb_listfiles (gdbtk).
-@subsection Example
+
+@subsubheading GDB Command
+
+There's no GDB command which directly corresponds to this one.
+@code{gdbtk} has an analogous command @samp{gdb_listfiles}.
+
+@subsubheading Example
N.A.
-@section -file-list-shared-libraries
+
+@subheading The @code{-file-list-shared-libraries} Command
+@findex -file-list-shared-libraries
+
+@subsubheading Synopsis
+
+@example
+ -file-list-shared-libraries
+@end example
+
List the shared libraries in the program.
-@subsection GDB command
-info shared
-@subsection Example
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{info shared}.
+
+@subsubheading Example
N.A.
-@section -file-list-symbol-files
+
+@subheading The @code{-file-list-symbol-files} Command
+@findex -file-list-symbol-files
+
+@subsubheading Synopsis
+
+@example
+ -file-list-symbol-files
+@end example
+
List symbol files.
-@subsection GDB command
-info file (part of it).
-@subsection Example
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{info file} (part of it).
+
+@subsubheading Example
N.A.
-@section -file-symbol-file <file>
-Read symbol table info from the file specified as argument. Used
-without arguments clears gdb's symbol table info. No output is
-produced, except a completion notification.
-@subsection GDB command
-symbol-file <file>
-@subsection Example
+@subheading The @code{-file-symbol-file} Command
+@findex -file-symbol-file
+
+@subsubheading Synopsis
+
@example
-(gdb)
+ -file-symbol-file @var{file}
+@end example
+
+Read symbol table info from the specified @var{file} argument. When
+used without arguments, clears GDB's symbol table info. No output is
+produced, except for a completion notification.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{symbol-file}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
^done
-(gdb)
-@end example
+(gdb)
+@end smallexample
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Misc GDB commands
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Miscellaneous Commands
+@section Miscellaneous GDB commands in @sc{gdb/mi}
-@c @section -gdb-complete
+@c @subheading -gdb-complete
-@section -gdb-exit
+@subheading The @code{-gdb-exit} Command
+@findex -gdb-exit
-Exit GDB immediately.
-@subsection GDB command
-Approximately corresponds to 'quit'.
+@subsubheading Synopsis
-@subsection Example
@example
-(gdb)
+ -gdb-exit
+@end example
+
+Exit GDB immediately.
+
+@subsubheading GDB Command
+
+Approximately corresponds to @samp{quit}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-gdb-exit
+@end smallexample
+
+@subheading The @code{-gdb-set} Command
+@findex -gdb-set
+
+@subsubheading Synopsis
+
+@example
+ -gdb-set
@end example
-@section -gdb-set
Set an internal GDB variable.
-IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ?????
+@c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ?????
-@subsection GDB command
-set
+@subsubheading GDB Command
-@subsection Example
-@example
+The corresponding GDB command is @samp{set}.
+
+@subsubheading Example
+
+@smallexample
(gdb)
-gdb-set $foo=3
^done
-(gdb)
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-gdb-show} Command
+@findex -gdb-show
+
+@subsubheading Synopsis
+
+@example
+ -gdb-show
@end example
-@section -gdb-show
Show the current value of a GDB variable.
-@subsection GDB command
-show
+@subsubheading GDB command
-@subsection Example
-@example
-(gdb)
+The corresponding GDB command is @samp{show}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-gdb-show annotate
^done,value="0"
-(gdb)
-@end example
+(gdb)
+@end smallexample
-@c @section -gdb-source
+@c @subheading -gdb-source
-@section -gdb-version
-Show version information for gdb. Used in testing mostly.
-@subsection GDB command
-No equivalent.
+@subheading The @code{-gdb-version} Command
+@findex -gdb-version
+
+@subsubheading Synopsis
-@subsection Example
@example
+ -gdb-version
+@end example
+
+Show version information for GDB. Used mostly in testing.
+
+@subsubheading GDB Command
+
+There's no equivalent GDB command. GDB by default shows this
+information when you start an interactive session.
+
+@subsubheading Example
+
+@c This example modifies the actual output from GDB to avoid overfull
+@c box in TeX.
+@smallexample
(gdb)
-gdb-version
-~GNU gdb 4.18.1 HEADLESS
-~Copyright 1998 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.
+~GNU gdb 5.2.1
+~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 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
+~There is absolutely no warranty for GDB. Type "show warranty" for
+~ details.
+~This GDB was configured as
+ "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
^done
-(gdb)
-@end example
+(gdb)
+@end smallexample
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Kod Commands
+@ignore
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Kod Commands
+@section @sc{gdb/mi} Kod Commands
The Kod commands are not implemented.
-@c @section -kod-info
+@c @subheading -kod-info
-@c @section -kod-list
+@c @subheading -kod-list
-@c @section -kod-list-object-types
+@c @subheading -kod-list-object-types
-@c @section -kod-show
+@c @subheading -kod-show
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Memory Overlay Commands
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Memory Overlay Commands
+@section @sc{gdb/mi} Memory Overlay Commands
-the memory overlay commands not implemented.
+The memory overlay commands are not implemented.
-@c @section -overlay-auto
+@c @subheading -overlay-auto
-@c @section -overlay-list-mapping-state
+@c @subheading -overlay-list-mapping-state
-@c @section -overlay-list-overlays
+@c @subheading -overlay-list-overlays
-@c @section -overlay-map
+@c @subheading -overlay-map
-@c @section -overlay-off
+@c @subheading -overlay-off
-@c @section -overlay-on
+@c @subheading -overlay-on
-@c @section -overlay-unmap
+@c @subheading -overlay-unmap
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Signal Handling Commands
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Signal Handling Commands
+@section @sc{gdb/mi} Signal Handling Commands
Signal handling commands are not implemented.
-@c @section -signal-handle
+@c @subheading -signal-handle
-@c @section -signal-list-handle-actions
+@c @subheading -signal-list-handle-actions
-@c @section -signal-list-signal-types
+@c @subheading -signal-list-signal-types
+@end ignore
+
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Stack Manipulation
+@section Stack manipulation commands in @sc{gdb/mi}
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Stack manipulation commands
-@section -stack-info-frame
+@subheading The @code{-stack-info-frame} Command
+@findex -stack-info-frame
+
+@subsubheading Synopsis
+
+@example
+ -stack-info-frame
+@end example
+
Get info on the current frame.
-@subsection GDB command
-info frame or frame (w/o args).
-@subsection Example
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{info frame} or @samp{frame}
+(without arguments).
+
+@subsubheading Example
N.A.
-@section -stack-info-depth [max-depth]
-Return the depth of the stack. If the integer argument <max-depth> is specified, do not
-count beyond max-depth frames.
-@subsection GDB command
-No equivalent.
-@subsection Example
-For a stack with frame levels 0 through 11:
+@subheading The @code{-stack-info-depth} Command
+@findex -stack-info-depth
+
+@subsubheading Synopsis
+
@example
-(gdb)
+ -stack-info-depth [ @var{max-depth} ]
+@end example
+
+Return the depth of the stack. If the integer argument @var{max-depth}
+is specified, do not count beyond @var{max-depth} frames.
+
+@subsubheading GDB Command
+
+There's no equivalent GDB command.
+
+@subsubheading Example
+
+For a stack with frame levels 0 through 11:
+
+@smallexample
+(gdb)
-stack-info-depth
^done,depth="12"
-(gdb)
+(gdb)
-stack-info-depth 4
^done,depth="4"
-(gdb)
+(gdb)
-stack-info-depth 12
^done,depth="12"
-(gdb)
+(gdb)
-stack-info-depth 11
^done,depth="11"
-(gdb)
+(gdb)
-stack-info-depth 13
^done,depth="12"
-(gdb)
-@end example
+(gdb)
+@end smallexample
+
+@subheading The @code{-stack-list-arguments} Command
+@findex -stack-list-arguments
+
+@subsubheading Synopsis
-@section -stack-list-arguments <show-values> [ <low-frame> <high-frame> ]
-Display a list of the arguments for the frames between low-frame and
-high-frame (inclusive). If low-frame and high-frame are not provided, it
-will list the arguments for the whole stack. The show-values argument
-must have a value of 0 or 1. A value of 0 means that only the names of
-the arguments are listed, a value of 1 means that both names and values
-of the argumetns are printed.
-@subsection GDB command
-gdb_get_args (partially).
-@subsection Example
@example
-(gdb)
+ -stack-list-arguments @var{show-values}
+ [ @var{low-frame} @var{high-frame} ]
+@end example
+
+Display a list of the arguments for the frames between @var{low-frame}
+and @var{high-frame} (inclusive). If @var{low-frame} and
+@var{high-frame} are not provided, list the arguments for the whole call
+stack.
+
+The @var{show-values} argument must have a value of 0 or 1. A value of
+0 means that only the names of the arguments are listed, a value of 1
+means that both names and values of the arguments are printed.
+
+@subsubheading GDB Command
+
+GDB does not have an equivalent command. @code{gdbtk} has a
+@samp{gdb_get_args} command which partially overlaps with the
+functionality of @samp{-stack-list-arguments}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-stack-list-frames
^done,
stack=@{
@@ -1715,7 +2578,7 @@ frame=@{level="3 ",addr="0x000107b4",func="callee1",
file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
frame=@{level="4 ",addr="0x000107e0",func="main",
file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}@}
-(gdb)
+(gdb)
-stack-list-arguments 0
^done,
stack-args=@{
@@ -1724,12 +2587,13 @@ 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=@{@}@}@}
-(gdb)
+(gdb)
-stack-list-arguments 1
^done,
stack-args=@{
frame=@{level="0",args=@{@}@},
-frame=@{level="1",args=@{@{name="strarg",value="0x11940 \"A string argument.\""@}@}@},
+frame=@{level="1",
+ args=@{@{name="strarg",value="0x11940 \"A string argument.\""@}@}@},
frame=@{level="2",args=@{
@{name="intarg",value="2"@},
@{name="strarg",value="0x11940 \"A string argument.\""@}@}@},
@@ -1738,249 +2602,494 @@ frame=@{level="2",args=@{
@{name="strarg",value="0x11940 \"A string argument.\""@},
@{name="fltarg",value="3.5"@}@}@},
frame=@{level="4",args=@{@}@}@}
-(gdb)
+(gdb)
-stack-list-arguments 0 2 2
^done,stack-args=@{frame=@{level="2",args=@{name="intarg",name="strarg"@}@}@}
-(gdb)
+(gdb)
-stack-list-arguments 1 2 2
^done,stack-args=@{frame=@{level="2",
args=@{@{name="intarg",value="2"@},
@{name="strarg",value="0x11940 \"A string argument.\""@}@}@}@}
-(gdb)
+(gdb)
+@end smallexample
+
+@c @subheading -stack-list-exception-handlers
+
+
+@subheading The @code{-stack-list-frames} Command
+@findex -stack-list-frames
+
+@subsubheading Synopsis
+
+@example
+ -stack-list-frames [ @var{low-frame} @var{high-frame} ]
@end example
-@c @section -stack-list-exception-handlers
+List the frames currently on the stack. For each frame it displays the
+following info:
-@section -stack-list-frames [ <low-frame> <high-frame> ]
-List the frames currently on the stack. For each frame it displays the following info:
@table @samp
-@item <level>
+@item @var{level}
The frame number, 0 being the topmost frame, i.e. the innermost function.
-@item <addr>
-Pc value for that frame.
-@item <func>
-Function name
-@item <file>
-File name of the source fle where the function lives.
-@item <line>
-Line number corresponding to the pc.
+@item @var{addr}
+The @code{$pc} value for that frame.
+@item @var{func}
+Function name.
+@item @var{file}
+File name of the source file where the function lives.
+@item @var{line}
+Line number corresponding to the @code{$pc}.
@end table
-If invoked without arguments, it prints a backtrace for the whole stack.
-If given two integer arguments it shows the frames whose levels are
-between the two arguments (inclusive). If the two arguments are equal,
-it shows the single frame at the corresponding level.
+If invoked without arguments, this command prints a backtrace for the
+whole stack. If given two integer arguments, it shows the frames whose
+levels are between the two arguments (inclusive). If the two arguments
+are equal, it shows the single frame at the corresponding level.
-@subsection GDB command
-backtrace or where
+@subsubheading GDB Command
-@subsection Example 1
-Whole stack backtrace.
+The corresponding GDB commands are @samp{backtrace} and @samp{where}.
-@example
+@subsubheading Example
+
+Full stack backtrace:
+
+@smallexample
(gdb)
-stack-list-frames
^done,stack=
-@{frame=@{level="0 ",addr="0x0001076c",func="foo",file="recursive2.c",line="11"@},
-frame=@{level="1 ",addr="0x000107a4",func="foo",file="recursive2.c",line="14"@},
-frame=@{level="2 ",addr="0x000107a4",func="foo",file="recursive2.c",line="14"@},
-frame=@{level="3 ",addr="0x000107a4",func="foo",file="recursive2.c",line="14"@},
-frame=@{level="4 ",addr="0x000107a4",func="foo",file="recursive2.c",line="14"@},
-frame=@{level="5 ",addr="0x000107a4",func="foo",file="recursive2.c",line="14"@},
-frame=@{level="6 ",addr="0x000107a4",func="foo",file="recursive2.c",line="14"@},
-frame=@{level="7 ",addr="0x000107a4",func="foo",file="recursive2.c",line="14"@},
-frame=@{level="8 ",addr="0x000107a4",func="foo",file="recursive2.c",line="14"@},
-frame=@{level="9 ",addr="0x000107a4",func="foo",file="recursive2.c",line="14"@},
-frame=@{level="10",addr="0x000107a4",func="foo",file="recursive2.c",line="14"@},
-frame=@{level="11",addr="0x00010738",func="main",file="recursive2.c",line="4"@}@}
-
-(gdb)
-@end example
-
-@subsection Example 2
-Show frames between low_frame and high_frame.
-@example
-(gdb)
+@{frame=@{level="0 ",addr="0x0001076c",func="foo",
+ file="recursive2.c",line="11"@},
+frame=@{level="1 ",addr="0x000107a4",func="foo",
+ file="recursive2.c",line="14"@},
+frame=@{level="2 ",addr="0x000107a4",func="foo",
+ file="recursive2.c",line="14"@},
+frame=@{level="3 ",addr="0x000107a4",func="foo",
+ file="recursive2.c",line="14"@},
+frame=@{level="4 ",addr="0x000107a4",func="foo",
+ file="recursive2.c",line="14"@},
+frame=@{level="5 ",addr="0x000107a4",func="foo",
+ file="recursive2.c",line="14"@},
+frame=@{level="6 ",addr="0x000107a4",func="foo",
+ file="recursive2.c",line="14"@},
+frame=@{level="7 ",addr="0x000107a4",func="foo",
+ file="recursive2.c",line="14"@},
+frame=@{level="8 ",addr="0x000107a4",func="foo",
+ file="recursive2.c",line="14"@},
+frame=@{level="9 ",addr="0x000107a4",func="foo",
+ file="recursive2.c",line="14"@},
+frame=@{level="10",addr="0x000107a4",func="foo",
+ file="recursive2.c",line="14"@},
+frame=@{level="11",addr="0x00010738",func="main",
+ file="recursive2.c",line="4"@}@}
+(gdb)
+@end smallexample
+
+Show frames between low_frame and high_frame:
+
+@smallexample
+(gdb)
-stack-list-frames 3 5
^done,stack=
-@{frame=@{level="3 ",addr="0x000107a4",func="foo",file="recursive2.c",line="14"@},
-frame=@{level="4 ",addr="0x000107a4",func="foo",file="recursive2.c",line="14"@},
-frame=@{level="5 ",addr="0x000107a4",func="foo",file="recursive2.c",line="14"@}@}
-(gdb)
-@end example
-@subsection Example 3
-Show one single frame.
-@example
-(gdb)
+@{frame=@{level="3 ",addr="0x000107a4",func="foo",
+ file="recursive2.c",line="14"@},
+frame=@{level="4 ",addr="0x000107a4",func="foo",
+ file="recursive2.c",line="14"@},
+frame=@{level="5 ",addr="0x000107a4",func="foo",
+ file="recursive2.c",line="14"@}@}
+(gdb)
+@end smallexample
+
+Show a single frame:
+
+@smallexample
+(gdb)
-stack-list-frames 3 3
^done,stack=
-@{frame=@{level="3 ",addr="0x000107a4",func="foo",file="recursive2.c",line="14"@}@}
-(gdb)
+@{frame=@{level="3 ",addr="0x000107a4",func="foo",
+ file="recursive2.c",line="14"@}@}
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-stack-list-locals} Command
+@findex -stack-list-locals
+
+@subsubheading Synopsis
+
+@example
+ -stack-list-locals @var{print-values}
@end example
-@section -stack-list-locals <print-values>
-Display the local variables names for the current frame. With an
+Display the local variable names for the current frame. With an
argument of 0 prints only the names of the variables, with argument of 1
-prints also the values.
-@subsection GDB command
-gdb_get_locals
+prints also their values.
-@subsection Example
-@example
-(gdb)
+@subsubheading GDB Command
+
+@samp{info locals} in GDB, @samp{gdb_get_locals} in @code{gdbtk}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-stack-list-locals 0
^done,locals=@{name="A",name="B",name="C"@}
-(gdb)
+(gdb)
-stack-list-locals 1
-^done,locals=@{@{name="A",value="1"@},@{name="B",value="2"@},@{name="C",value="3"@}@}
-(gdb)
-@end example
+^done,locals=@{@{name="A",value="1"@},@{name="B",value="2"@},
+ @{name="C",value="3"@}@}
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-stack-select-frame} Command
+@findex -stack-select-frame
+
+@subsubheading Synopsis
-@section -stack-select-frame <framenum>
-Change the current frame. Select a different frame on the stack.
-@subsection GDB command
-frame (part), up, down
-AND/OR select-frame,
-up-silent, down-silent
-@subsection Example
@example
-(gdb)
+ -stack-select-frame @var{framenum}
+@end example
+
+Change the current frame. Select a different frame @var{framenum} on
+the stack.
+
+@subsubheading GDB Command
+
+The corresponding GDB commands are @samp{frame}, @samp{up}, @samp{down},
+@samp{select-frame}, @samp{up-silent}, and @samp{down-silent}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-stack-select-frame 2
^done
-(gdb)
+(gdb)
+@end smallexample
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Symbol Query
+@section @sc{gdb/mi} Symbol Query Commands
+
+
+@subheading The @code{-symbol-info-address} Command
+@findex -symbol-info-address
+
+@subsubheading Synopsis
+
+@example
+ -symbol-info-address @var{symbol}
@end example
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Symbol query commands
+Describe where @var{symbol} is stored.
-@section -symbol-info-address <symbol>
-Describe where <symbol> is stored.
-@subsection GDB command
-Info address
-@subsection Example
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{info address}.
+
+@subsubheading Example
N.A.
-@section -symbol-info-file
-Show the file for the symbol [NOT SURE]
-@subsection GDB command
-gdb_filnd_file (gdbtk).
-@subsection Example
+
+@subheading The @code{-symbol-info-file} Command
+@findex -symbol-info-file
+
+@subsubheading Synopsis
+
+@example
+ -symbol-info-file
+@end example
+
+Show the file for the symbol.
+
+@subsubheading GDB Command
+
+There's no equivalent GDB command. @code{gdbtk} has
+@samp{gdb_filnd_file}.
+
+@subsubheading Example
N.A.
-@section -symbol-info-function
-Show which function the symbol lives in. [NOT SURE]
-@subsection GDB command
-gdb_get_function (gdbtk)
-@subsection Example
+
+@subheading The @code{-symbol-info-function} Command
+@findex -symbol-info-function
+
+@subsubheading Synopsis
+
+@example
+ -symbol-info-function
+@end example
+
+Show which function the symbol lives in.
+
+@subsubheading GDB Command
+
+@samp{gdb_get_function} in @code{gdbtk}.
+
+@subsubheading Example
N.A.
-@section -symbol-info-line
-Core addresses of the code for a source line.
-@subsection GDB command
-info line , gdb_get_line, gdb_get_file
-@subsection Example
+
+@subheading The @code{-symbol-info-line} Command
+@findex -symbol-info-line
+
+@subsubheading Synopsis
+
+@example
+ -symbol-info-line
+@end example
+
+Show the core addresses of the code for a source line.
+
+@subsubheading GDB Command
+
+The corresponding GDB comamnd is @samp{info line}. @code{gdbtk} has the
+@samp{gdb_get_line} @samp{gdb_get_file} commands.
+
+@subsubheading Example
N.A.
-@section -symbol-info-symbol
-Describe what symbol is at location ADDR [NOT SURE]
-@subsection GDB command
-info symbol
-@subsection Example
+
+@subheading The @code{-symbol-info-symbol} Command
+@findex -symbol-info-symbol
+
+@subsubheading Synopsis
+
+@example
+ -symbol-info-symbol @var{addr}
+@end example
+
+Describe what symbol is at location @var{addr}.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{info symbol}.
+
+@subsubheading Example
N.A.
-@section -symbol-list-functions
+
+@subheading The @code{-symbol-list-functions} Command
+@findex -symbol-list-functions
+
+@subsubheading Synopsis
+
+@example
+ -symbol-list-functions
+@end example
+
List the functions in the executable.
-@subsection GDB command
-info functions, gdb_listfunc, gdb_search
-@subsection Example
+
+@subsubheading GDB Command
+
+@samp{info functions} in GDB, @samp{gdb_listfunc} @samp{gdb_search} in
+@code{gdbtk}.
+
+@subsubheading Example
N.A.
-@section -symbol-list-types
+
+@subheading The @code{-symbol-list-types} Command
+@findex -symbol-list-types
+
+@subsubheading Synopsis
+
+@example
+ -symbol-list-types
+@end example
+
List all the type names.
-@subsection GDB command
-info types, gdb_search
-@subsection Example
+
+@subsubheading GDB Command
+
+The corresponding commands are @samp{info types} in GDB,
+@samp{gdb_search} in @code{gdbtk}.
+
+@subsubheading Example
N.A.
-@section -symbol-list-variables
-List all global and static variable names.
-@subsection GDB command
-Info variables, gdb_search
-@subsection Example
+
+@subheading The @code{-symbol-list-variables} Command
+@findex -symbol-list-variables
+
+@subsubheading Synopsis
+
+@example
+ -symbol-list-variables
+@end example
+
+List all the global and static variable names.
+
+@subsubheading GDB Command
+
+@samp{info variables} in GDB, @samp{gdb_search} in @code{gdbtk}.
+
+@subsubheading Example
N.A.
-@section -symbol-locate
-@subsection GDB command
-gdb_loc (gdbtk)
-@subsection Example
+
+@subheading The @code{-symbol-locate} Command
+@findex -symbol-locate
+
+@subsubheading Synopsis
+
+@example
+ -symbol-locate
+@end example
+
+@subsubheading GDB Command
+
+@samp{gdb_loc} in @code{gdbtk}.
+
+@subsubheading Example
N.A.
-@section -symbol-type
-Show type of a variable.
-@subsection GDB command
-ptype, gdb_obj_variable
-@subsection Example
+
+@subheading The @code{-symbol-type} Command
+@findex -symbol-type
+
+@subsubheading Synopsis
+
+@example
+ -symbol-type @var{variable}
+@end example
+
+Show type of @var{variable}.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{ptype}, @code{gdbtk} has
+@samp{gdb_obj_variable}.
+
+@subsubheading Example
N.A.
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Target manipulation commands
-@section -target-attach
-Attach to a process or file outside of GDB.
-@subsection GDB command
-attach
-@subsection Example
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Target Manipulation
+@section @sc{gdb/mi} Target Manipulation Commands
+
+
+@subheading The @code{-target-attach} Command
+@findex -target-attach
+
+@subsubheading Synopsis
+
+@example
+ -target-attach @var{pid} | @var{file}
+@end example
+
+Attach to a process @var{pid} or a file @var{file} outside of GDB.
+
+@subsubheading GDB command
+
+The corresponding GDB command is @samp{attach}.
+
+@subsubheading Example
N.A.
-@section -target-compare-sections
-Compare section data on target to the exec file.
-@subsection GDB command
-compare-sections
-@subsection Example
+
+@subheading The @code{-target-compare-sections} Command
+@findex -target-compare-sections
+
+@subsubheading Synopsis
+
+@example
+ -target-compare-sections [ @var{section} ]
+@end example
+
+Compare data of section @var{section} on target to the exec file.
+Without the argument, all sections are compared.
+
+@subsubheading GDB Command
+
+The GDB equivalent is @samp{compare-sections}.
+
+@subsubheading Example
N.A.
-@section -target-detach
-Disconnect from the remote target.
-No output.
-@subsection GDB command
-detach
+@subheading The @code{-target-detach} Command
+@findex -target-detach
+
+@subsubheading Synopsis
-@subsection Example
@example
-(gdb)
+ -target-detach
+@end example
+
+Disconnect from the remote target. There's no output.
+
+@subsubheading GDB command
+
+The corresponding GDB command is @samp{detach}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-target-detach
^done
-(gdb)
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-target-download} Command
+@findex -target-download
+
+@subsubheading Synopsis
+
+@example
+ -target-download
@end example
-@section -target-download
Loads the executable onto the remote target.
It prints out an update message every half second, which includes the fields:
-@itemize @bullet
-@item section: The name of the section.
-@item section-sent: The size of what has been sent so far for that section.
-@item section-size: The size of the section.
-@item total-sent: The total size of what was sent so far (the current and the previous sections).
-@item total-size: The size of the overall executable to download.
-@end itemize
-Each message is sent as status record.
-In addition it prints the name and size of the sections, as they are
-downloaded. These messages include the fields:
-@itemize @bullet
-@item section: The name of the section.
-@item section-size: The size of the section.
-@item total-size: The size of the overall executable to download.
-@end itemize
-At the end a summary is printed.
-@subsection GDB command
-load
+@table @samp
+@item section
+The name of the section.
+@item section-sent
+The size of what has been sent so far for that section.
+@item section-size
+The size of the section.
+@item total-sent
+The total size of what was sent so far (the current and the previous sections).
+@item total-size
+The size of the overall executable to download.
+@end table
-@subsection Example
-Note: Each status message appears on a single line. Here the messages
-have been broken down, so they can fit into a page.
-@example
+@noindent
+Each message is sent as status record (@pxref{GDB/MI Output Syntax, ,
+@sc{gdb/mi} Output Syntax}).
+
+In addition, it prints the name and size of the sections, as they are
+downloaded. These messages include the following fields:
+
+@table @samp
+@item section
+The name of the section.
+@item section-size
+The size of the section.
+@item total-size
+The size of the overall executable to download.
+@end table
+
+@noindent
+At the end, a summary is printed.
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{load}.
+
+@subsubheading Example
+
+Note: each status message appears on a single line. Here the messages
+have been broken down so that they can fit onto a page.
+
+@smallexample
(gdb)
-target-download
+download,@{section=".text",section-size="6668",total-size="9880"@}
@@ -2025,217 +3134,342 @@ total-sent="8772",total-size="9880"@}
total-sent="9284",total-size="9880"@}
+download,@{section=".data",section-sent="3072",section-size="3156",
total-sent="9796",total-size="9880"@}
-^done,address="0x10004",load-size="9880",transfer-rate="6586",write-rate="429"
-(gdb)
+^done,address="0x10004",load-size="9880",transfer-rate="6586",
+write-rate="429"
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-target-exec-status} Command
+@findex -target-exec-status
+
+@subsubheading Synopsis
+
+@example
+ -target-exec-status
@end example
-@section -target-exec-status
-Provide information on the state of the target. Whether it is running or not, for instance.
-@subsection GDB command
-No equivalent
-@subsection Example
+Provide information on the state of the target (whether it is running or
+not, for instance).
+
+@subsubheading GDB Command
+
+There's no equivalent GDB command.
+
+@subsubheading Example
N.A.
-@section -target-list-available-targets
+
+@subheading The @code{-target-list-available-targets} Command
+@findex -target-list-available-targets
+
+@subsubheading Synopsis
+
+@example
+ -target-list-available-targets
+@end example
+
List the possible targets to connect to.
-@subsection GDB command
-help target
-@subsection Example
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{help target}.
+
+@subsubheading Example
N.A.
-@section -target-list-current-targets
-What the current target is.
-@subsection GDB command
-info file (part of it).
-@subsection Example
+
+@subheading The @code{-target-list-current-targets} Command
+@findex -target-list-current-targets
+
+@subsubheading Synopsis
+
+@example
+ -target-list-current-targets
+@end example
+
+Describe the current target.
+
+@subsubheading GDB Command
+
+The corresponding information is printed by @samp{info file} (among
+other things).
+
+@subsubheading Example
N.A.
-@section -target-list-parameters
-????
-@subsection GDB command
-No equivalent
-@subsection Example
+
+@subheading The @code{-target-list-parameters} Command
+@findex -target-list-parameters
+
+@subsubheading Synopsis
+
+@example
+ -target-list-parameters
+@end example
+
+@c ????
+
+@subsubheading GDB Command
+
+No equivalent.
+
+@subsubheading Example
N.A.
-@section -target-select
-Connect GDB to the remote target.
-It takes two args:
--target-select <type> <parameters>.
+@subheading The @code{-target-select} Command
+@findex -target-select
-Where:
+@subsubheading Synopsis
+
+@example
+ -target-select @var{type} @var{parameters ...}
+@end example
+
+Connect GDB to the remote target. This command takes two args:
@table @samp
-@item <type>
-The type of target, for instance async, remote, etc.
-@item <parameters>
-Device names, host names and the like.
+@item @var{type}
+The type of target, for instance @samp{async}, @samp{remote}, etc.
+@item @var{parameters}
+Device names, host names and the like. @xref{Target Commands, ,
+Commands for managing targets}, for more details.
@end table
+
The output is a connection notification, followed by the address at
-which the target program is, in the following form:
-^connected,addr="<address>",func="<function name>",args=@{<arg list>@}
+which the target program is, in the following form:
-@subsection GDB command
-target
+@smallexample
+^connected,addr="@var{address}",func="@var{function name}",
+ args=@{@var{arg list}@}
+@end smallexample
-@subsection Example
-@example
-(gdb)
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{target}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-target-select async /dev/ttya
^connected,addr="0xfe00a300",func="??",args=@{@}
-(gdb)
+(gdb)
+@end smallexample
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Thread Commands
+@section @sc{gdb/mi} Thread Commands
+
+
+@subheading The @code{-thread-info} Command
+@findex -thread-info
+
+@subsubheading Synopsis
+
+@example
+ -thread-info
@end example
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Thread commands
-
-@section -thread-info
-@subsection GDB command
-@subsection Example
-
-@section -thread-list-all-threads
-@subsection GDB command
-@subsection Example
-
-@section -thread-list-ids
-Produces a list of the currently known gdb thread ids. At the end of the
-list it also prints the toal number of such threads.
-@subsection GDB command
-None equivalent. (Maybe part of info threads).
-@subsection Example 1
-No threads present, besides the main process.
+@subsubheading GDB command
+
+No equivalent.
+
+@subsubheading Example
+N.A.
+
+
+@subheading The @code{-thread-list-all-threads} Command
+@findex -thread-list-all-threads
+
+@subsubheading Synopsis
+
@example
-(gdb)
+ -thread-list-all-threads
+@end example
+
+@subsubheading GDB Command
+
+The equivalent GDB command is @samp{info threads}.
+
+@subsubheading Example
+N.A.
+
+
+@subheading The @code{-thread-list-ids} Command
+@findex -thread-list-ids
+
+@subsubheading Synopsis
+
+@example
+ -thread-list-ids
+@end example
+
+Produces a list of the currently known gdb thread ids. At the end of the
+list it also prints the total number of such threads.
+
+@subsubheading GDB Command
+
+Part of @samp{info threads} supplies the same information.
+
+@subsubheading Example
+
+No threads present, besides the main process.
+
+@smallexample
+(gdb)
-thread-list-ids
^done,thread-ids=@{@},number-of-threads="0"
-(gdb)
-@end example
-@subsection Example 2
+(gdb)
+@end smallexample
+
+
Several threads.
-@example
-(gdb)
+
+@smallexample
+(gdb)
-thread-list-ids
^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
number-of-threads="3"
-(gdb)
+(gdb)
+@end smallexample
+
+
+@subheading The @code{-thread-select} Command
+@findex -thread-select
+
+@subsubheading Synopsis
+
+@example
+ -thread-select @var{threadnum}
@end example
-@section -thread-select <threadnum>
-Make <threadnum> the current thread. It prints the number of the new
+Make @var{threadnum} the current thread. It prints the number of the new
current thread, and the topmost frame for that thread.
-@subsection GDB command
-thread
-@subsection Example
-@example
-(gdb)
+
+@subsubheading GDB Command
+
+The corresponding GDB command is @samp{thread}.
+
+@subsubheading Example
+
+@smallexample
+(gdb)
-exec-next
^running
-(gdb)
+(gdb)
*stopped,reason="end-stepping-range",thread-id="2",line="187",
file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c"
-(gdb)
+(gdb)
-thread-list-ids
^done,
-thread-ids={thread-id="3",thread-id="2",thread-id="1"},
+thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
number-of-threads="3"
-(gdb)
+(gdb)
-thread-select 3
^done,new-thread-id="3",
frame=@{level="0 ",func="vprintf",
args=@{@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@},
@{name="arg",value="0x2"@}@},file="vprintf.c",line="31"@}
-(gdb)
-@end example
+(gdb)
+@end smallexample
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Tracepoint Commands
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Tracepoint Commands
+@section @sc{gdb/mi} Tracepoint Commands
-The tracepoint commands are not implemented.
+The tracepoint commands are not yet implemented.
-@c @section -trace-actions
+@c @subheading -trace-actions
-@c @section -trace-delete
+@c @subheading -trace-delete
-@c @section -trace-disable
+@c @subheading -trace-disable
-@c @section -trace-dump
+@c @subheading -trace-dump
-@c @section -trace-enable
+@c @subheading -trace-enable
-@c @section -trace-exists
+@c @subheading -trace-exists
-@c @section -trace-find
+@c @subheading -trace-find
-@c @section -trace-frame-number
+@c @subheading -trace-frame-number
-@c @section -trace-info
+@c @subheading -trace-info
-@c @section -trace-insert
+@c @subheading -trace-insert
-@c @section -trace-list
+@c @subheading -trace-list
-@c @section -trace-pass-count
+@c @subheading -trace-pass-count
-@c @section -trace-save
+@c @subheading -trace-save
-@c @section -trace-start
+@c @subheading -trace-start
-@c @section -trace-stop
+@c @subheading -trace-stop
-@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@chapter Variable Objects
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Variable Objects
+@section @sc{gdb/mi} Variable Objects
+
-@section Motivation
+@subheading Motivation for Variable Objects in @sc{gdb/mi}
For the implementation of a variable debugger window (locals, watched
-expressions, etc.), we are proposing the adaptation of the existent code
-used by Insight.
+expressions, etc.), we are proposing the adaptation of the existing code
+used by @code{Insight}.
-The two main reason for that are:
+The two main reasons for that are:
@enumerate 1
@item
-It has been proven in practice (it is already on it's second generation)
+It has been proven in practice (it is already on its second generation).
+
@item
It will shorten development time (needless to say how important it is
-now)
+now).
@end enumerate
The original interface was designed to be used by Tcl code, so it was
-slightly changed so it can be used through flathead. This document
+slightly changed so it could be used through flathead. This document
describes the flathead operations that will be available and gives some
-hints about its use.
+hints about their use.
@emph{Note}: In addition to the set of operations described here, we
-expect the GUI implementation of a variable window to require, at least,
-the following operations:
-@itemize bullet
+expect the @sc{gui} implementation of a variable window to require, at
+least, the following operations:
+
+@itemize @bullet
@item -gdb-show output-radix
@item -stack-list-arguments
@item -stack-list-locals
@item -stack-select-frame
@end itemize
-@section Introduction
+@subheading Introduction to Variable Objects in @sc{gdb/mi}
+@cindex variable objects in @sc{gdb/mi}
The basic idea behind variable objects is the creation of a named object
to represent a variable, an expression, a memory location or even a CPU
register. For each object created, a set of operations is available for
examining or changing its properties.
Furthermore, complex data types, such as C structures, are represented
-in a tree format. For instance, the struct type variable is the root
-and the children will represent the struct members. If a children is
-itself of a complex type, it will also have children of its own.
-Appropriate language differences are handled for C, C++ and Java.
+in a tree format. For instance, the @code{struct} type variable is the
+root and the children will represent the struct members. If a child
+is itself of a complex type, it will also have children of its own.
+Appropriate language differences are handled for C, C@t{++} and Java.
When returning the actual values of the objects, this facility allows
for the individual selection of the display format used in the result
creation. It can be chosen among: binary, decimal, hexadecimal, octal
-and natural. Natural refers to the a default format automatically chosen
-based on the variable type (like decimal for int, hex for pointers,
-etc.).
+and natural. Natural refers to a default format automatically
+chosen based on the variable type (like decimal for an @code{int}, hex
+for pointers, etc.).
The following is the complete set of flathead operations defined to
access this functionality:
@@ -2270,193 +3504,341 @@ access this functionality:
@tab update the variable and its children
@end multitable
-In the next section we describe each operation in detail and suggest how
-it can be used.
+In the next subsection we describe each operation in detail and suggest
+how it can be used.
+@subheading Description And Use of Operations on Variable Objects
-@section Operations Description And Use
+@subheading The @code{-var-create} Command
+@findex -var-create
-@subsection -var-create @{<name> | '-'@} @{<frame-addr> | '*'@} <expression>
+@subsubheading Synopsis
+
+@example
+ -var-create @{@var{name} | "-"@}
+ @{@var{frame-addr} | "*"@} @var{expression}
+@end example
This operation creates a variable object, which allows the monitoring of
a variable, the result of an expression, a memory cell or a CPU
register.
-The <name> parameter is the string by which the object can be
-referenced. It must be unique. If '-' is specified, the varobj system
-will generate a string "varNNNNNN" automatically. It will be unique
-provided that one does not specify <name> on that format. The command
-fails if a duplicate name is found.
+The @var{name} parameter is the string by which the object can be
+referenced. It must be unique. If @samp{-} is specified, the varobj
+system will generate a string "varNNNNNN'' automatically. It will be
+unique provided that one does not specify @var{name} on that format.
+The command fails if a duplicate name is found.
The frame under which the expression should be evaluated can be
-specified. A '*' indicates that the current frame should be used.
+specified by @var{frame-addr}. A @samp{*} indicates that the current
+frame should be used.
+
+@var{expression} is any expression valid on the current language set (must not
+begin with a @samp{*}), or one of the following:
+
+@itemize @bullet
+@item
+@samp{*@var{addr}}, where @var{addr} is the address of a memory cell
+
+@item
+@samp{*@var{addr}-@var{addr}} -- a memory address range (TBD)
+
+@item
+@samp{$@var{regname}} -- a CPU register name
+@end itemize
+
+@subsubheading Result
-Expression is any expression valid on the current language set (must not
-begin with '*') or: *<addr> - The address of a memory cell
-*<addr>-<addr> - An memory address range (TBD) $<regname> - A CPU
-register
-
This operation returns the name, number of children and the type of the
object created. Type is returned as a string as the ones generated by
-gdb CLI.
+the GDB CLI:
-name="<name>",numchild="N",type="<type>"
+@example
+ name="@var{name}",numchild="N",type="@var{type}"
+@end example
-@subsection -var-delete <name>
-Deletes a previously created variable object and all of it's children.
+@subheading The @code{-var-delete} Command
+@findex -var-delete
-Returns an error if the object <name> is not found.
+@subsubheading Synopsis
-@subsection -var-set-format <name> <format-spec>
+@example
+ -var-delete @var{name}
+@end example
-Sets the output format for the value of the object.
+Deletes a previously created variable object and all of its children.
-<format-spec> = @{binary | decimal | hexadecimal | octal | natural@}
+Returns an error if the object @var{name} is not found.
-@subsection -var-show-format <name>
-Returns the format used to display the value of the object.
+@subheading The @code{-var-set-format} Command
+@findex -var-set-format
-format="<format-spec>"
+@subsubheading Synopsis
-@subsection -var-info-num-children <name>
+@example
+ -var-set-format @var{name} @var{format-spec}
+@end example
-Returns the number of children of a variable object.
+Sets the output format for the value of the object @var{name} to be
+@var{format-spec}.
-numchild="N"
+The syntax for the @var{format-spec} is as follows:
-@subsection -var-list-children <name>
+@example
+ @var{format-spec} @expansion{}
+ @{binary | decimal | hexadecimal | octal | natural@}
+@end example
-Returns a list of the children of the specified variable object.
-numchild="N",children=@{@{name="<name>",numchild="N",type="<type>"@},(repeats N times)@}
+@subheading The @code{-var-show-format} Command
+@findex -var-show-format
-@subsection -var-info-type <name>
+@subsubheading Synopsis
-Returns the type of the specified variable. The type is returned as a
-string in the same format as it is output by gdb's CLI.
+@example
+ -var-show-format @var{name}
+@end example
-type="<type>"
+Returns the format used to display the value of the object @var{name}.
-@subsection -var-info-expression <name>
+@example
+ format @expansion{}
+ @var{format-spec}
+@end example
+
+
+@subheading The @code{-var-info-num-children} Command
+@findex -var-info-num-children
+
+@subsubheading Synopsis
+
+@example
+ -var-info-num-children @var{name}
+@end example
+
+Returns the number of children of a variable object @var{name}:
+
+@example
+ numchild=@var{n}
+@end example
+
+
+@subheading The @code{-var-list-children} Command
+@findex -var-list-children
+
+@subsubheading Synopsis
+
+@example
+ -var-list-children @var{name}
+@end example
+
+Returns a list of the children of the specified variable object:
+
+@example
+ numchild=@var{n},children=@{@{name=@var{name},
+ numchild=@var{n},type=@var{type}@},(repeats N times)@}
+@end example
+
+
+@subheading The @code{-var-info-type} Command
+@findex -var-info-type
+
+@subsubheading Synopsis
+
+@example
+ -var-info-type @var{name}
+@end example
+
+Returns the type of the specified variable @var{name}. The type is
+returned as a string in the same format as it is output by the GDB CLI:
+
+@example
+ type=@var{typename}
+@end example
+
+
+@subheading The @code{-var-info-expression} Command
+@findex -var-info-expression
+
+@subsubheading Synopsis
-Returns what is represented by the specified variable object.
+@example
+ -var-info-expression @var{name}
+@end example
+
+Returns what is represented by the variable object @var{name}:
+
+@example
+ lang=@var{lang-spec},exp=@var{expression}
+@end example
+
+@noindent
+where @var{lang-spec} is @code{@{"C" | "C++" | "Java"@}}.
+
+@subheading The @code{-var-show-attributes} Command
+@findex -var-show-attributes
+
+@subsubheading Synopsis
-lang="<lang-spec>",exp="<expression>"
+@example
+ -var-show-attributes @var{name}
+@end example
-where <lang-spec> = @{"C" | "C++" | "Java"@}
+List attributes of the specified variable object @var{name}:
-@subsection -var-show-attributes <name>
+@example
+ status=@var{attr} [ ( ,@var{attr} )* ]
+@end example
-List attributes of the specified variable object.
+@noindent
+where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}.
-status="<attr>[,<attr>]*"
+@subheading The @code{-var-evaluate-expression} Command
+@findex -var-evaluate-expression
-where <attr> = @{ @{ editable | noneditable @} | TBD @}
+@subsubheading Synopsis
-@subsection -var-evaluate-expression <name>
+@example
+ -var-evaluate-expression @var{name}
+@end example
Evaluates the expression that is represented by the specified variable
object and returns its value as a string in the current format specified
-for the object.
+for the object:
-value="<value>"
+@example
+ value=@var{value}
+@end example
-@subsection -var-assign <name> <expression>
+@subheading The @code{-var-assign} Command
+@findex -var-assign
-Assigns a new value for the variable object specified. The object must
-be "editable".
+@subsubheading Synopsis
-@subsection -var-update @{<name> | '*'@}
+@example
+ -var-assign @var{name} @var{expression}
+@end example
+
+Assigns the value of @var{expression} to the variable object specified
+by @var{name}. The object must be ``editable''.
+
+@subheading The @code{-var-update} Command
+@findex -var-update
-Update the value of the variable object by evaluating its expression
-after fetching all the new values from memory or registers. A '*'
-causes all existing variable objects to be updated.
+@subsubheading Synopsis
+@example
+ -var-update @{@var{name} | "*"@}
+@end example
-@c%%%%%%%%%%%%%%%%%%%%%%%%%%%% APPENDIX %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-@appendix Proposed v2.0 Output Syntax
+Update the value of the variable object @var{name} by evaluating its
+expression after fetching all the new values from memory or registers.
+A @samp{*} causes all existing variable objects to be updated.
-This appendix is not part of the MI specification. It is provided as a
-discussion point.
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node GDB/MI Draft Changes to Output Syntax
+@section @sc{gdb/mi} Draft Changes to Output Syntax
-The output from GDB/MI consists of zero or more out-of-band records
-optionally followed by a single result record. The result record being
-for the most recent command input. The sequence being terminated by
+@cindex draft changes to output syntax of @sc{gdb/mi}
+@cindex @sc{gdb/mi}, draft changes to output syntax
+
+One problem identified in the existing @sc{gdb/mi} output syntax was the
+difficulty in differentiating between a tuple such as:
+
+@example
+@{number="1",type="breakpoint",disp="keep",enabled="y"@}
+@end example
+
+where each value has a unique label, and a list such as:
+
+@example
+@{"1","2","4"@}
+@{bp="1",bp="2",bp="4"@}
+@end example
+
+where values are un-labeled or the label is duplicated.
+
+What follows is a draft revision to the output specification that
+addresses this problem.
+
+The output from @sc{gdb/mi} consists of zero or more out-of-band records
+optionally followed by a single result record, the result record being
+for the most recent command input. The sequence is terminated by
``(gdb)''.
-Asynchronous GDB/MI output is similar.
+Asynchronous @sc{gdb/mi} output is similar.
Each output record directly associated with an input command is prefixed
-by the input commands @code{<token>}.
+by the input commands @code{@var{token}}.
@table @code
-@item <output> @expansion{}
-@{ <out-of-band-record> @} [ <result-record> ] ``(gdb)'' <nl>
+@item @var{output} @expansion{}
+@{ @var{out-of-band-record} @} @code{[} @var{result-record} @code{]} "(gdb)" @var{nl}
-@item <result-record> @expansion{}
-[ <token> ] ``^'' <result-class> @{ ``,'' <result> @} <nl>
+@item @var{result-record} @expansion{}
+@code{[} @var{token} @code{]} "^" @var{result-class} @{ "," @var{result} @} @var{nl}
-@item <out-of-band-record> @expansion{}
-<async-record> | <stream-record>
+@item @var{out-of-band-record} @expansion{}
+@var{async-record} @code{|} @var{stream-record}
-@item <async-record> @expansion{}
-<exec-async-output> | <status-async-output> | <notify-async-output>
+@item @var{async-record} @expansion{}
+@var{exec-async-output} @code{|} @var{status-async-output} @code{|} @var{notify-async-output}
-@item <exec-async-output> @expansion{}
-[ <token> ] ``*'' <async-output>
+@item @var{exec-async-output} @expansion{}
+@code{[} @var{token} @code{]} "*" @var{async-output}
-@item <status-async-output> @expansion{}
-[ <token> ] ``+'' <async-output>
+@item @var{status-async-output} @expansion{}
+@code{[} @var{token} @code{]} "+" @var{async-output}
-@item <notify-async-output> @expansion{}
-[ <token> ] ``='' <async-output>
+@item @var{notify-async-output} @expansion{}
+@code{[} @var{token} @code{]} "=" @var{async-output}
-@item <async-output> @expansion{}
-<async-class> @{ ``,'' <result> @} <nl>
+@item @var{async-output} @expansion{}
+@var{async-class} @{ "," @var{result} @} @var{nl}
-@item <result-class> @expansion{}
-``done'' | ``running'' | ``connected'' | ``error'' | ``exit''
+@item @var{result-class} @expansion{}
+"done" @code{|} "running" @code{|} "connected" @code{|} "error" @code{|} "exit"
-@item <async-class> @expansion{}
-``stopped'' | @emph{others depending on need as still in development}
+@item @var{async-class} @expansion{}
+"stopped" @code{|} @emph{others depending on need as still in development}
-@item <result> @expansion{}
-<string> ``='' <value>
+@item @var{result} @expansion{}
+@var{string} "=" @var{value}
-@item <value> @expansion{}
-<c-string> | <tupple> | <list>
+@item @var{value} @expansion{}
+@var{c-string} @code{|} @var{tupple} @code{|} @var{list}
-@item <tupple> @expansion{}
-``@{@}'' | ``@{'' <result> @{ ``,'' <result> @} ``@}''
+@item @var{tupple} @expansion{}
+"@{@}" @code{|} "@{" @var{result} @{ "," @var{result} @} "@}"
-@item <list> @expansion{}
-``[]'' | ``['' <value> @{ ``,'' <value> @} ``]''
+@item @var{list} @expansion{}
+"@code{[]}" @code{|} "@code{[}" @var{value} @{ "," @var{value} @} "@code{]}"
-@item <string> @expansion{}
+@item @var{string} @expansion{}
@emph{[-A-Za-z\.0-9_]*}
-@item <c-string> @expansion{}
+@item @var{c-string} @expansion{}
@emph{See the input specification}
-@item <stream-record> @expansion{}
-<console-stream-output> | <target-stream-output> | <log-stream-output>
+@item @var{stream-record} @expansion{}
+@var{console-stream-output} @code{|} @var{target-stream-output} @code{|} @var{log-stream-output}
-@item <console-stream-output> @expansion{}
-``~'' <c-string>
+@item @var{console-stream-output} @expansion{}
+"~" @var{c-string}
-@item <target-stream-output> @expansion{}
-``@@'' <c-string>
+@item @var{target-stream-output} @expansion{}
+"@@" @var{c-string}
-@item <log-stream-output> @expansion{}
-``&'' <c-string>
+@item @var{log-stream-output} @expansion{}
+"&" @var{c-string}
-@item <nl> @expansion{}
-CR | CR-LF
+@item @var{nl} @expansion{}
+CR @code{|} CR-LF
-@item <token> @expansion{}
-``any sequence of digits''
+@item @var{token} @expansion{}
+"any sequence of digits"
@end table
@@ -2464,7 +3846,7 @@ In addition, the following are still being developed.
@table @code
-@item <query>
+@item @var{query}
This action is currently undefined.
@end table
@@ -2477,44 +3859,42 @@ Notes:
All output sequences end in a single line containing a period.
@item
-The @code{<token>} is from the corresponding request. If an execution
+The @code{@var{token}} is from the corresponding request. If an execution
command is interrupted by the -exec-interrupt command, the token
associated with the `*stopped' message is the one of the original
execution command, not the one of the interrupt-command.
@item
-<status-async-output> contains on-going status information about the progress
+@var{status-async-output} contains on-going status information about the progress
of a slow operation. It can be discarded. All status output is prefixed by
the prefix `+'.
@item
-<exec-async-output> contains asynchronous state change on the target
+@var{exec-async-output} contains asynchronous state change on the target
(stopped, started, disappeared). All async output is prefixed by
the prefix `*'.
@item
-<notify-async-output> contains supplementary information that the client should
+@var{notify-async-output} contains supplementary information that the client should
handle (new breakpoint information). All notify output is prefixed by
the prefix `='.
@item
-<console-stream-output> is output that should be displayed as is in the
+@var{console-stream-output} is output that should be displayed as is, in the
console. It is the textual response to a CLI command. All the console
output is prefixed by the prefix ``~''.
@item
-<target-stream-output> is the output produced by the target program.
+@var{target-stream-output} is the output produced by the target program.
All the target output is prefixed by the prefix ``@@''.
@item
-<log-stream-output> is output text coming from GDB's internals, for
+@var{log-stream-output} is output text coming from GDB's internals, for
instance messages that should be displayed as part of an error log. All
the log output is prefixed by the prefix ``&''.
@end itemize
-
@c Local variables:
@c change-log-default-name: "ChangeLog-mi"
@c End:
-@bye
diff --git a/gdb/mi/mi-cmd-break.c b/gdb/mi/mi-cmd-break.c
index 6545cee4039..fc22be715fa 100644
--- a/gdb/mi/mi-cmd-break.c
+++ b/gdb/mi/mi-cmd-break.c
@@ -247,7 +247,3 @@ mi_cmd_break_watch (char *command, char **argv, int argc)
}
return MI_CMD_DONE;
}
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/mi/mi-cmd-disas.c b/gdb/mi/mi-cmd-disas.c
index 11ba7fef5c6..bbd1c00d374 100644
--- a/gdb/mi/mi-cmd-disas.c
+++ b/gdb/mi/mi-cmd-disas.c
@@ -492,7 +492,3 @@ mi_cmd_disassemble (char *command, char **argv, int argc)
return MI_CMD_DONE;
}
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/mi/mi-cmd-stack.c b/gdb/mi/mi-cmd-stack.c
index 48a8b530384..abe7e919638 100644
--- a/gdb/mi/mi-cmd-stack.c
+++ b/gdb/mi/mi-cmd-stack.c
@@ -311,7 +311,3 @@ mi_cmd_stack_select_frame (char *command, char **argv, int argc)
#endif
return MI_CMD_DONE;
}
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/mi/mi-cmd-var.c b/gdb/mi/mi-cmd-var.c
index a20f4f1bbee..771d8ef37dc 100644
--- a/gdb/mi/mi-cmd-var.c
+++ b/gdb/mi/mi-cmd-var.c
@@ -61,8 +61,7 @@ mi_cmd_var_create (char *command, char **argv, int argc)
name = xstrdup (argv[0]);
/* Add cleanup for name. Must be free_current_contents as
name can be reallocated */
- old_cleanups = make_cleanup ((make_cleanup_func) free_current_contents,
- &name);
+ old_cleanups = make_cleanup (free_current_contents, &name);
frame = xstrdup (argv[1]);
old_cleanups = make_cleanup (free, frame);
@@ -128,8 +127,7 @@ mi_cmd_var_delete (char *command, char **argv, int argc)
name = xstrdup (argv[0]);
/* Add cleanup for name. Must be free_current_contents as
name can be reallocated */
- old_cleanups = make_cleanup ((make_cleanup_func) free_current_contents,
- &name);
+ old_cleanups = make_cleanup (free_current_contents, &name);
/* If we have one single argument it cannot be '-c' or any string
starting with '-'. */
@@ -501,7 +499,3 @@ varobj_update_one (struct varobj *var)
}
return 1;
}
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/mi/mi-cmds.c b/gdb/mi/mi-cmds.c
index 1361b7c3883..f03d5beb021 100644
--- a/gdb/mi/mi-cmds.c
+++ b/gdb/mi/mi-cmds.c
@@ -258,7 +258,3 @@ _initialize_mi_cmds ()
build_table (mi_cmds);
memset (&stats, 0, sizeof (stats));
}
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/mi/mi-cmds.h b/gdb/mi/mi-cmds.h
index 2f6b3867b75..0891bbe2988 100644
--- a/gdb/mi/mi-cmds.h
+++ b/gdb/mi/mi-cmds.h
@@ -123,7 +123,3 @@ extern int mi_debug_p;
extern struct ui_file *raw_stdout;
#endif
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/mi/mi-console.c b/gdb/mi/mi-console.c
index 1506e90631b..8df51ab2f91 100644
--- a/gdb/mi/mi-console.c
+++ b/gdb/mi/mi-console.c
@@ -112,7 +112,3 @@ mi_console_file_flush (struct ui_file *file)
ui_file_put (mi_console->buffer, mi_console_raw_packet, mi_console);
ui_file_rewind (mi_console->buffer);
}
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/mi/mi-console.h b/gdb/mi/mi-console.h
index 74fcd52f577..2db5a0cb197 100644
--- a/gdb/mi/mi-console.h
+++ b/gdb/mi/mi-console.h
@@ -25,7 +25,3 @@
extern struct ui_file *mi_console_file_new (struct ui_file *raw, const char *prefix);
#endif
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/mi/mi-getopt.c b/gdb/mi/mi-getopt.c
index 2c5e853d181..7436c5fa81b 100644
--- a/gdb/mi/mi-getopt.c
+++ b/gdb/mi/mi-getopt.c
@@ -73,8 +73,3 @@ mi_getopt (const char *prefix,
}
error ("%s: Unknown option ``%s''", prefix, arg + 1);
}
-
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/mi/mi-getopt.h b/gdb/mi/mi-getopt.h
index 5a94d852755..e4689bbaf3e 100644
--- a/gdb/mi/mi-getopt.h
+++ b/gdb/mi/mi-getopt.h
@@ -58,7 +58,3 @@ struct mi_opt
struct mi_opt;
#endif
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
index 3153da7e0d3..b7b5ae3b964 100644
--- a/gdb/mi/mi-main.c
+++ b/gdb/mi/mi-main.c
@@ -70,7 +70,6 @@ static enum mi_cmd_result mi_execute_async_cli_command (char *mi, char *args, in
static void mi_execute_command_wrapper (char *cmd);
void mi_exec_async_cli_cmd_continuation (struct continuation_arg *arg);
-static void free_and_reset (char **arg);
static int register_changed_p (int regnum);
static int get_register (int regnum, int format);
@@ -640,7 +639,7 @@ mi_cmd_data_assign (char *command, char **argv, int argc)
01-12-1999: Need to decide what to do with this for libgdb purposes. */
expr = parse_expression (argv[0]);
- old_chain = make_cleanup ((make_cleanup_func) free_current_contents, &expr);
+ old_chain = make_cleanup (free_current_contents, &expr);
evaluate_expression (expr);
do_cleanups (old_chain);
return MI_CMD_DONE;
@@ -669,7 +668,7 @@ mi_cmd_data_evaluate_expression (char *command, char **argv, int argc)
expr = parse_expression (argv[0]);
- old_chain = make_cleanup ((make_cleanup_func) free_current_contents, &expr);
+ old_chain = make_cleanup (free_current_contents, &expr);
val = evaluate_expression (expr);
@@ -1199,7 +1198,7 @@ mi_cmd_execute (struct mi_parse *parse)
}
}
last_async_command = xstrdup (parse->token);
- make_exec_cleanup ((make_cleanup_func) free_and_reset, &last_async_command);
+ make_exec_cleanup (free_current_contents, &last_async_command);
/* FIXME: DELETE THIS! */
if (parse->cmd->args_func != NULL)
return parse->cmd->args_func (parse->args, 0 /*from_tty */ );
@@ -1226,13 +1225,6 @@ mi_cmd_execute (struct mi_parse *parse)
}
}
-void
-free_and_reset (char **arg)
-{
- free (*arg);
- *arg = NULL;
-}
-
static void
mi_execute_command_wrapper (char *cmd)
{
@@ -1516,7 +1508,3 @@ _initialize_mi_main ()
/* FIXME: Should we notify main that we are here as a possible
interpreter? */
}
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/mi/mi-out.c b/gdb/mi/mi-out.c
index 7e3f57ad7bc..8554a8877ac 100644
--- a/gdb/mi/mi-out.c
+++ b/gdb/mi/mi-out.c
@@ -88,7 +88,7 @@ struct ui_out_impl mi_ui_out_impl =
/* Prototypes for local functions */
-extern void _initialize_mi_out PARAMS ((void));
+extern void _initialize_mi_out (void);
static void field_separator (struct ui_out *uiout);
static void list_open (struct ui_out *uiout);
static void list_close (struct ui_out *uiout);
@@ -395,7 +395,3 @@ _initialize_mi_out ()
{
/* nothing happens here */
}
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/mi/mi-out.h b/gdb/mi/mi-out.h
index 75cfad61476..cb145ae1f86 100644
--- a/gdb/mi/mi-out.h
+++ b/gdb/mi/mi-out.h
@@ -33,7 +33,3 @@ extern void mi_out_rewind (struct ui_out *uiout);
extern void mi_out_buffered (struct ui_out *uiout, char *string);
#endif /* MI_OUT_H */
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/mi/mi-parse.c b/gdb/mi/mi-parse.c
index d408cdd27ff..26c47a82f07 100644
--- a/gdb/mi/mi-parse.c
+++ b/gdb/mi/mi-parse.c
@@ -237,7 +237,3 @@ void
_initialize_mi_parse ()
{
}
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/mi/mi-parse.h b/gdb/mi/mi-parse.h
index de18e9776c2..53341f648d7 100644
--- a/gdb/mi/mi-parse.h
+++ b/gdb/mi/mi-parse.h
@@ -53,7 +53,3 @@ extern struct mi_parse *mi_parse (char *cmd);
extern void mi_parse_free (struct mi_parse *cmd);
#endif
-
-/* Local variables: */
-/* change-log-default-name: "ChangeLog-mi" */
-/* End: */
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index b8339f26d65..e6978e7909f 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -75,12 +75,10 @@ static int msym_count;
/* Prototypes for local functions. */
-static int
-compare_minimal_symbols PARAMS ((const void *, const void *));
+static int compare_minimal_symbols (const void *, const void *);
static int
-compact_minimal_symbols PARAMS ((struct minimal_symbol *, int,
- struct objfile *));
+compact_minimal_symbols (struct minimal_symbol *, int, struct objfile *);
static void add_minsym_to_demangled_hash_table (struct minimal_symbol *sym,
struct minimal_symbol **table);
@@ -570,7 +568,7 @@ find_stab_function_addr (namestring, filename, objfile)
/* Return leading symbol character for a BFD. If BFD is NULL,
return the leading symbol character from the main objfile. */
-static int get_symbol_leading_char PARAMS ((bfd *));
+static int get_symbol_leading_char (bfd *);
static int
get_symbol_leading_char (abfd)
@@ -609,15 +607,15 @@ prim_record_minimal_symbol (name, address, ms_type, objfile)
case mst_text:
case mst_file_text:
case mst_solib_trampoline:
- section = SECT_OFF_TEXT;
+ section = SECT_OFF_TEXT (objfile);
break;
case mst_data:
case mst_file_data:
- section = SECT_OFF_DATA;
+ section = SECT_OFF_DATA (objfile);
break;
case mst_bss:
case mst_file_bss:
- section = SECT_OFF_BSS;
+ section = SECT_OFF_BSS (objfile);
break;
default:
section = -1;
@@ -685,7 +683,7 @@ prim_record_minimal_symbol_and_info (name, address, ms_type, info, section,
MSYMBOL_INFO (msymbol) = info; /* FIXME! */
/* The hash pointers must be cleared! If they're not,
- MSYMBOL_HASH_ADD will NOT add this msymbol to the hash table. */
+ add_minsym_to_hash_table will NOT add this msymbol to the hash table. */
msymbol->hash_next = NULL;
msymbol->demangled_hash_next = NULL;
@@ -743,10 +741,8 @@ compare_minimal_symbols (fn1p, fn2p)
obstack and then simply blow the obstack away when we are done with
it. Is it worth the extra trouble though? */
-/* ARGSUSED */
-void
-discard_minimal_symbols (foo)
- int foo;
+static void
+do_discard_minimal_symbols_cleanup (void *arg)
{
register struct msym_bunch *next;
@@ -758,6 +754,13 @@ discard_minimal_symbols (foo)
}
}
+struct cleanup *
+make_cleanup_discard_minimal_symbols (void)
+{
+ return make_cleanup (do_discard_minimal_symbols_cleanup, 0);
+}
+
+
/* Compact duplicate entries out of a minimal symbol table by walking
through the table and compacting out entries with duplicate addresses
diff --git a/gdb/mips-nat.c b/gdb/mips-nat.c
index 90dbad858c7..5064d055f1c 100644
--- a/gdb/mips-nat.c
+++ b/gdb/mips-nat.c
@@ -63,7 +63,7 @@
static char zerobuf[MAX_REGISTER_RAW_SIZE] =
{0};
-static void fetch_core_registers PARAMS ((char *, unsigned, int, CORE_ADDR));
+static void fetch_core_registers (char *, unsigned, int, CORE_ADDR);
/* Get all registers from the inferior */
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 71b3482b1c6..95dc72d7440 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -33,34 +33,46 @@
#include "objfiles.h"
#include "gdbtypes.h"
#include "target.h"
+#include "arch-utils.h"
#include "opcode/mips.h"
#include "elf/mips.h"
#include "elf-bfd.h"
+/* All the possible MIPS ABIs. */
+
+enum mips_abi
+ {
+ MIPS_ABI_UNKNOWN,
+ MIPS_ABI_N32,
+ MIPS_ABI_O32,
+ MIPS_ABI_O64,
+ MIPS_ABI_EABI32,
+ MIPS_ABI_EABI64
+ };
+
struct frame_extra_info
{
mips_extra_func_info_t proc_desc;
int num_args;
};
-/* We allow the user to override MIPS_SAVED_REGSIZE, so define
- the subcommand enum settings allowed. */
-static char saved_gpreg_size_auto[] = "auto";
-static char saved_gpreg_size_32[] = "32";
-static char saved_gpreg_size_64[] = "64";
+/* Various MIPS ISA options (related to stack analysis) can be
+ overridden dynamically. Establish an enum/array for managing
+ them. */
-static char *saved_gpreg_size_enums[] = {
- saved_gpreg_size_auto,
- saved_gpreg_size_32,
- saved_gpreg_size_64,
+static char size_auto[] = "auto";
+static char size_32[] = "32";
+static char size_64[] = "64";
+
+static char *size_enums[] = {
+ size_auto,
+ size_32,
+ size_64,
0
};
-/* The current (string) value of saved_gpreg_size. */
-static char *mips_saved_regsize_string = saved_gpreg_size_auto;
-
/* Some MIPS boards don't support floating point while others only
support single-precision floating-point operations. See also
FP_REGISTER_DOUBLE. */
@@ -79,12 +91,6 @@ static int mips_fpu_type_auto = 1;
static enum mips_fpu_type mips_fpu_type = MIPS_DEFAULT_FPU_TYPE;
#define MIPS_FPU_TYPE mips_fpu_type
-#ifndef MIPS_DEFAULT_SAVED_REGSIZE
-#define MIPS_DEFAULT_SAVED_REGSIZE MIPS_REGSIZE
-#endif
-
-#define MIPS_SAVED_REGSIZE (mips_saved_regsize())
-
/* Do not use "TARGET_IS_MIPS64" to test the size of floating point registers */
#ifndef FP_REGISTER_DOUBLE
#define FP_REGISTER_DOUBLE (REGISTER_VIRTUAL_SIZE(FP0_REGNUM) == 8)
@@ -97,17 +103,20 @@ struct gdbarch_tdep
/* from the elf header */
int elf_flags;
/* mips options */
- int mips_eabi;
+ enum mips_abi mips_abi;
enum mips_fpu_type mips_fpu_type;
int mips_last_arg_regnum;
int mips_last_fp_arg_regnum;
int mips_default_saved_regsize;
int mips_fp_register_double;
+ int mips_regs_have_home_p;
+ int mips_default_stack_argsize;
};
#if GDB_MULTI_ARCH
#undef MIPS_EABI
-#define MIPS_EABI (gdbarch_tdep (current_gdbarch)->mips_eabi)
+#define MIPS_EABI (gdbarch_tdep (current_gdbarch)->mips_abi == MIPS_ABI_EABI32 \
+ || gdbarch_tdep (current_gdbarch)->mips_abi == MIPS_ABI_EABI64)
#endif
#if GDB_MULTI_ARCH
@@ -125,11 +134,30 @@ struct gdbarch_tdep
#define MIPS_FPU_TYPE (gdbarch_tdep (current_gdbarch)->mips_fpu_type)
#endif
+/* Return the currently configured (or set) saved register size. */
+
#if GDB_MULTI_ARCH
#undef MIPS_DEFAULT_SAVED_REGSIZE
#define MIPS_DEFAULT_SAVED_REGSIZE (gdbarch_tdep (current_gdbarch)->mips_default_saved_regsize)
+#elif !defined (MIPS_DEFAULT_SAVED_REGSIZE)
+#define MIPS_DEFAULT_SAVED_REGSIZE MIPS_REGSIZE
#endif
+static char *mips_saved_regsize_string = size_auto;
+
+#define MIPS_SAVED_REGSIZE (mips_saved_regsize())
+
+static unsigned int
+mips_saved_regsize ()
+{
+ if (mips_saved_regsize_string == size_auto)
+ return MIPS_DEFAULT_SAVED_REGSIZE;
+ else if (mips_saved_regsize_string == size_64)
+ return 8;
+ else /* if (mips_saved_regsize_string == size_32) */
+ return 4;
+}
+
/* Indicate that the ABI makes use of double-precision registers
provided by the FPU (rather than combining pairs of registers to
form double-precision values). Do not use "TARGET_IS_MIPS64" to
@@ -140,36 +168,72 @@ struct gdbarch_tdep
#define FP_REGISTER_DOUBLE (gdbarch_tdep (current_gdbarch)->mips_fp_register_double)
#endif
+/* Does the caller allocate a ``home'' for each register used in the
+ function call? The N32 ABI and MIPS_EABI do not, the others do. */
+
+#if GDB_MULTI_ARCH
+#undef MIPS_REGS_HAVE_HOME_P
+#define MIPS_REGS_HAVE_HOME_P (gdbarch_tdep (current_gdbarch)->mips_regs_have_home_p)
+#elif !defined (MIPS_REGS_HAVE_HOME_P)
+#define MIPS_REGS_HAVE_HOME_P (!MIPS_EABI)
+#endif
+
+/* The amount of space reserved on the stack for registers. This is
+ different to MIPS_SAVED_REGSIZE as it determines the alignment of
+ data allocated after the registers have run out. */
+
+#if GDB_MULTI_ARCH
+#undef MIPS_DEFAULT_STACK_ARGSIZE
+#define MIPS_DEFAULT_STACK_ARGSIZE (gdbarch_tdep (current_gdbarch)->mips_default_stack_argsize)
+#elif !defined (MIPS_DEFAULT_STACK_ARGSIZE)
+#define MIPS_DEFAULT_STACK_ARGSIZE (MIPS_DEFAULT_SAVED_REGSIZE)
+#endif
+
+#define MIPS_STACK_ARGSIZE (mips_stack_argsize ())
+
+static char *mips_stack_argsize_string = size_auto;
+
+static unsigned int
+mips_stack_argsize (void)
+{
+ if (mips_stack_argsize_string == size_auto)
+ return MIPS_DEFAULT_STACK_ARGSIZE;
+ else if (mips_stack_argsize_string == size_64)
+ return 8;
+ else /* if (mips_stack_argsize_string == size_32) */
+ return 4;
+}
+
+
#define VM_MIN_ADDRESS (CORE_ADDR)0x400000
#if 0
-static int mips_in_lenient_prologue PARAMS ((CORE_ADDR, CORE_ADDR));
+static int mips_in_lenient_prologue (CORE_ADDR, CORE_ADDR);
#endif
-int gdb_print_insn_mips PARAMS ((bfd_vma, disassemble_info *));
+int gdb_print_insn_mips (bfd_vma, disassemble_info *);
-static void mips_print_register PARAMS ((int, int));
+static void mips_print_register (int, int);
static mips_extra_func_info_t
- heuristic_proc_desc PARAMS ((CORE_ADDR, CORE_ADDR, struct frame_info *));
+heuristic_proc_desc (CORE_ADDR, CORE_ADDR, struct frame_info *);
-static CORE_ADDR heuristic_proc_start PARAMS ((CORE_ADDR));
+static CORE_ADDR heuristic_proc_start (CORE_ADDR);
-static CORE_ADDR read_next_frame_reg PARAMS ((struct frame_info *, int));
+static CORE_ADDR read_next_frame_reg (struct frame_info *, int);
-int mips_set_processor_type PARAMS ((char *));
+int mips_set_processor_type (char *);
-static void mips_show_processor_type_command PARAMS ((char *, int));
+static void mips_show_processor_type_command (char *, int);
-static void reinit_frame_cache_sfunc PARAMS ((char *, int,
- struct cmd_list_element *));
+static void reinit_frame_cache_sfunc (char *, int, struct cmd_list_element *);
static mips_extra_func_info_t
- find_proc_desc PARAMS ((CORE_ADDR pc, struct frame_info * next_frame));
+find_proc_desc (CORE_ADDR pc, struct frame_info *next_frame);
-static CORE_ADDR after_prologue PARAMS ((CORE_ADDR pc,
- mips_extra_func_info_t proc_desc));
+static CORE_ADDR after_prologue (CORE_ADDR pc,
+ mips_extra_func_info_t proc_desc);
/* This value is the model of MIPS in use. It is derived from the value
of the PrID register. */
@@ -325,19 +389,6 @@ mips_print_extra_frame_info (fi)
paddr_d (fi->extra_info->proc_desc->pdr.frameoffset));
}
-/* Return the currently configured (or set) saved register size */
-
-static unsigned int
-mips_saved_regsize ()
-{
- if (mips_saved_regsize_string == saved_gpreg_size_auto)
- return MIPS_DEFAULT_SAVED_REGSIZE;
- else if (mips_saved_regsize_string == saved_gpreg_size_64)
- return 8;
- else /* if (mips_saved_regsize_string == saved_gpreg_size_32) */
- return 4;
-}
-
/* Convert between RAW and VIRTUAL registers. The RAW register size
defines the remote-gdb packet. */
@@ -1992,20 +2043,6 @@ setup_arbitrary_frame (argc, argv)
return create_new_frame (argv[0], argv[1]);
}
-/*
- * STACK_ARGSIZE -- how many bytes does a pushed function arg take up on the stack?
- *
- * For n32 ABI, eight.
- * For all others, he same as the size of a general register.
- */
-#if defined (_MIPS_SIM_NABI32) && _MIPS_SIM == _MIPS_SIM_NABI32
-#define MIPS_NABI32 1
-#define STACK_ARGSIZE 8
-#else
-#define MIPS_NABI32 0
-#define STACK_ARGSIZE MIPS_SAVED_REGSIZE
-#endif
-
CORE_ADDR
mips_push_arguments (nargs, args, sp, struct_return, struct_addr)
int nargs;
@@ -2157,15 +2194,15 @@ mips_push_arguments (nargs, args, sp, struct_return, struct_addr)
int longword_offset = 0;
if (TARGET_BYTE_ORDER == BIG_ENDIAN)
{
- if (STACK_ARGSIZE == 8 &&
+ if (MIPS_STACK_ARGSIZE == 8 &&
(typecode == TYPE_CODE_INT ||
typecode == TYPE_CODE_PTR ||
typecode == TYPE_CODE_FLT) && len <= 4)
- longword_offset = STACK_ARGSIZE - len;
+ longword_offset = MIPS_STACK_ARGSIZE - len;
else if ((typecode == TYPE_CODE_STRUCT ||
typecode == TYPE_CODE_UNION) &&
- TYPE_LENGTH (arg_type) < STACK_ARGSIZE)
- longword_offset = STACK_ARGSIZE - len;
+ TYPE_LENGTH (arg_type) < MIPS_STACK_ARGSIZE)
+ longword_offset = MIPS_STACK_ARGSIZE - len;
}
write_memory (sp + stack_offset + longword_offset,
@@ -2222,9 +2259,8 @@ mips_push_arguments (nargs, args, sp, struct_return, struct_addr)
stack offset does not get incremented until after
we have used up the 8 parameter registers. */
- if (!(MIPS_EABI || MIPS_NABI32) ||
- argnum >= 8)
- stack_offset += ROUND_UP (partial_len, STACK_ARGSIZE);
+ if (MIPS_REGS_HAVE_HOME_P || argnum >= 8)
+ stack_offset += ROUND_UP (partial_len, MIPS_STACK_ARGSIZE);
}
}
}
@@ -2510,7 +2546,7 @@ do_fp_register_row (regnum)
regnum + 1, REGISTER_NAME (regnum + 1));
/* copy the two floats into one double, and unpack both */
- memcpy (dbl_buffer, raw_buffer, sizeof (dbl_buffer));
+ memcpy (dbl_buffer, raw_buffer, 2 * REGISTER_RAW_SIZE (FP0_REGNUM));
flt1 = unpack_double (builtin_type_float, raw_buffer[HI], &inv1);
flt2 = unpack_double (builtin_type_float, raw_buffer[LO], &inv2);
doub = unpack_double (builtin_type_double, dbl_buffer, &inv3);
@@ -2528,7 +2564,7 @@ do_fp_register_row (regnum)
{ /* eight byte registers: print each one as float AND as double. */
int offset = 4 * (TARGET_BYTE_ORDER == BIG_ENDIAN);
- memcpy (dbl_buffer, raw_buffer[HI], sizeof (dbl_buffer));
+ memcpy (dbl_buffer, raw_buffer[HI], 2 * REGISTER_RAW_SIZE (FP0_REGNUM));
flt1 = unpack_double (builtin_type_float,
&raw_buffer[HI][offset], &inv1);
doub = unpack_double (builtin_type_double, dbl_buffer, &inv3);
@@ -2657,7 +2693,7 @@ mips_frame_num_args (frame)
/* Is this a branch with a delay slot? */
-static int is_delayed PARAMS ((unsigned long));
+static int is_delayed (unsigned long);
static int
is_delayed (insn)
@@ -2956,7 +2992,8 @@ struct return_value_word
int buf_offset;
};
-static void return_value_location PARAMS ((struct type *, struct return_value_word *, struct return_value_word *));
+static void return_value_location (struct type *, struct return_value_word *,
+ struct return_value_word *);
static void
return_value_location (valtype, hi, lo)
@@ -3182,7 +3219,7 @@ in_sigtramp (pc, ignore)
/* Root of all "set mips "/"show mips " commands. This will eventually be
used for all MIPS-specific commands. */
-static void show_mips_command PARAMS ((char *, int));
+static void show_mips_command (char *, int);
static void
show_mips_command (args, from_tty)
char *args;
@@ -3191,7 +3228,7 @@ show_mips_command (args, from_tty)
help_list (showmipscmdlist, "show mips ", all_commands, gdb_stdout);
}
-static void set_mips_command PARAMS ((char *, int));
+static void set_mips_command (char *, int);
static void
set_mips_command (args, from_tty)
char *args;
@@ -3203,7 +3240,7 @@ set_mips_command (args, from_tty)
/* Commands to show/set the MIPS FPU type. */
-static void show_mipsfpu_command PARAMS ((char *, int));
+static void show_mipsfpu_command (char *, int);
static void
show_mipsfpu_command (args, from_tty)
char *args;
@@ -3232,7 +3269,7 @@ show_mipsfpu_command (args, from_tty)
}
-static void set_mipsfpu_command PARAMS ((char *, int));
+static void set_mipsfpu_command (char *, int);
static void
set_mipsfpu_command (args, from_tty)
char *args;
@@ -3242,7 +3279,7 @@ set_mipsfpu_command (args, from_tty)
show_mipsfpu_command (args, from_tty);
}
-static void set_mipsfpu_single_command PARAMS ((char *, int));
+static void set_mipsfpu_single_command (char *, int);
static void
set_mipsfpu_single_command (args, from_tty)
char *args;
@@ -3256,7 +3293,7 @@ set_mipsfpu_single_command (args, from_tty)
}
}
-static void set_mipsfpu_double_command PARAMS ((char *, int));
+static void set_mipsfpu_double_command (char *, int);
static void
set_mipsfpu_double_command (args, from_tty)
char *args;
@@ -3270,7 +3307,7 @@ set_mipsfpu_double_command (args, from_tty)
}
}
-static void set_mipsfpu_none_command PARAMS ((char *, int));
+static void set_mipsfpu_none_command (char *, int);
static void
set_mipsfpu_none_command (args, from_tty)
char *args;
@@ -3284,7 +3321,7 @@ set_mipsfpu_none_command (args, from_tty)
}
}
-static void set_mipsfpu_auto_command PARAMS ((char *, int));
+static void set_mipsfpu_auto_command (char *, int);
static void
set_mipsfpu_auto_command (args, from_tty)
char *args;
@@ -3714,6 +3751,72 @@ mips_coerce_float_to_double (struct type *formal, struct type *actual)
return current_language->la_language == language_c;
}
+/* 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
+ stack using their ABI size and then stored into the RAW_BUFFER
+ using their raw size.
+
+ The alternative to adding this function would be to add an ABI
+ macro - REGISTER_STACK_SIZE(). */
+
+static void
+mips_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval)
+ char *raw_buffer;
+ int *optimized;
+ CORE_ADDR *addrp;
+ struct frame_info *frame;
+ int regnum;
+ enum lval_type *lval;
+{
+ CORE_ADDR addr;
+
+ if (!target_has_registers)
+ error ("No registers.");
+
+ /* Normal systems don't optimize out things with register numbers. */
+ if (optimized != NULL)
+ *optimized = 0;
+ addr = find_saved_register (frame, regnum);
+ if (addr != 0)
+ {
+ if (lval != NULL)
+ *lval = lval_memory;
+ if (regnum == SP_REGNUM)
+ {
+ if (raw_buffer != NULL)
+ {
+ /* Put it back in target format. */
+ store_address (raw_buffer, REGISTER_RAW_SIZE (regnum),
+ (LONGEST) addr);
+ }
+ if (addrp != NULL)
+ *addrp = 0;
+ return;
+ }
+ if (raw_buffer != NULL)
+ {
+ LONGEST val;
+ if (regnum < 32)
+ /* Only MIPS_SAVED_REGSIZE bytes of GP registers are
+ saved. */
+ val = read_memory_integer (addr, MIPS_SAVED_REGSIZE);
+ else
+ val = read_memory_integer (addr, REGISTER_RAW_SIZE (regnum));
+ store_address (raw_buffer, REGISTER_RAW_SIZE (regnum), val);
+ }
+ }
+ else
+ {
+ if (lval != NULL)
+ *lval = lval_register;
+ addr = REGISTER_BYTE (regnum);
+ if (raw_buffer != NULL)
+ read_register_gen (regnum, raw_buffer);
+ }
+ if (addrp != NULL)
+ *addrp = addr;
+}
static gdbarch_init_ftype mips_gdbarch_init;
static struct gdbarch *
@@ -3729,6 +3832,7 @@ mips_gdbarch_init (info, arches)
char *ef_mips_abi;
int ef_mips_bitptrs;
int ef_mips_arch;
+ enum mips_abi mips_abi;
/* Extract the elf_flags if available */
if (info.abfd != NULL
@@ -3737,6 +3841,30 @@ mips_gdbarch_init (info, arches)
else
elf_flags = 0;
+ /* Check ELF_FLAGS to see if it specifies the ABI being used. */
+ switch ((elf_flags & EF_MIPS_ABI))
+ {
+ case E_MIPS_ABI_O32:
+ mips_abi = MIPS_ABI_O32;
+ break;
+ case E_MIPS_ABI_O64:
+ mips_abi = MIPS_ABI_O64;
+ break;
+ case E_MIPS_ABI_EABI32:
+ mips_abi = MIPS_ABI_EABI32;
+ break;
+ case E_MIPS_ABI_EABI64:
+ mips_abi = MIPS_ABI_EABI32;
+ break;
+ default:
+ mips_abi = MIPS_ABI_UNKNOWN;
+ break;
+ }
+#ifdef MIPS_DEFAULT_ABI
+ if (mips_abi == MIPS_ABI_UNKNOWN)
+ mips_abi = MIPS_DEFAULT_ABI;
+#endif
+
/* try to find a pre-existing architecture */
for (arches = gdbarch_list_lookup_by_info (arches, &info);
arches != NULL;
@@ -3746,6 +3874,8 @@ mips_gdbarch_init (info, arches)
using. */
if (gdbarch_tdep (current_gdbarch)->elf_flags != elf_flags)
continue;
+ if (gdbarch_tdep (current_gdbarch)->mips_abi != mips_abi)
+ continue;
return arches->gdbarch;
}
@@ -3760,49 +3890,77 @@ mips_gdbarch_init (info, arches)
set_gdbarch_float_bit (gdbarch, 32);
set_gdbarch_double_bit (gdbarch, 64);
set_gdbarch_long_double_bit (gdbarch, 64);
- switch ((elf_flags & EF_MIPS_ABI))
+ tdep->mips_abi = mips_abi;
+ switch (mips_abi)
{
- case E_MIPS_ABI_O32:
+ case MIPS_ABI_O32:
ef_mips_abi = "o32";
- tdep->mips_eabi = 0;
tdep->mips_default_saved_regsize = 4;
+ tdep->mips_default_stack_argsize = 4;
tdep->mips_fp_register_double = 0;
+ tdep->mips_last_arg_regnum = ZERO_REGNUM + 7;
+ tdep->mips_last_fp_arg_regnum = FP0_REGNUM + 15;
+ tdep->mips_regs_have_home_p = 1;
set_gdbarch_long_bit (gdbarch, 32);
set_gdbarch_ptr_bit (gdbarch, 32);
set_gdbarch_long_long_bit (gdbarch, 64);
break;
- case E_MIPS_ABI_O64:
+ case MIPS_ABI_O64:
ef_mips_abi = "o64";
- tdep->mips_eabi = 0;
tdep->mips_default_saved_regsize = 8;
+ tdep->mips_default_stack_argsize = 8;
tdep->mips_fp_register_double = 1;
+ tdep->mips_last_arg_regnum = ZERO_REGNUM + 7;
+ tdep->mips_last_fp_arg_regnum = FP0_REGNUM + 15;
+ tdep->mips_regs_have_home_p = 1;
set_gdbarch_long_bit (gdbarch, 32);
set_gdbarch_ptr_bit (gdbarch, 32);
set_gdbarch_long_long_bit (gdbarch, 64);
break;
- case E_MIPS_ABI_EABI32:
+ case MIPS_ABI_EABI32:
ef_mips_abi = "eabi32";
- tdep->mips_eabi = 1;
tdep->mips_default_saved_regsize = 4;
+ tdep->mips_default_stack_argsize = 4;
tdep->mips_fp_register_double = 0;
+ tdep->mips_last_arg_regnum = ZERO_REGNUM + 11;
+ tdep->mips_last_fp_arg_regnum = FP0_REGNUM + 19;
+ tdep->mips_regs_have_home_p = 0;
set_gdbarch_long_bit (gdbarch, 32);
set_gdbarch_ptr_bit (gdbarch, 32);
set_gdbarch_long_long_bit (gdbarch, 64);
break;
- case E_MIPS_ABI_EABI64:
+ case MIPS_ABI_EABI64:
ef_mips_abi = "eabi64";
- tdep->mips_eabi = 1;
tdep->mips_default_saved_regsize = 8;
+ tdep->mips_default_stack_argsize = 8;
tdep->mips_fp_register_double = 1;
+ tdep->mips_last_arg_regnum = ZERO_REGNUM + 11;
+ tdep->mips_last_fp_arg_regnum = FP0_REGNUM + 19;
+ tdep->mips_regs_have_home_p = 0;
set_gdbarch_long_bit (gdbarch, 64);
set_gdbarch_ptr_bit (gdbarch, 64);
set_gdbarch_long_long_bit (gdbarch, 64);
break;
+ case MIPS_ABI_N32:
+ ef_mips_abi = "n32";
+ tdep->mips_default_saved_regsize = 4;
+ tdep->mips_default_stack_argsize = 8;
+ tdep->mips_fp_register_double = 1;
+ tdep->mips_last_arg_regnum = ZERO_REGNUM + 11;
+ tdep->mips_last_fp_arg_regnum = FP0_REGNUM + 19;
+ tdep->mips_regs_have_home_p = 0;
+ set_gdbarch_long_bit (gdbarch, 32);
+ set_gdbarch_ptr_bit (gdbarch, 32);
+ set_gdbarch_long_long_bit (gdbarch, 64);
+ break;
default:
ef_mips_abi = "default";
- tdep->mips_eabi = 0;
tdep->mips_default_saved_regsize = MIPS_REGSIZE;
+ tdep->mips_default_stack_argsize = MIPS_REGSIZE;
tdep->mips_fp_register_double = (REGISTER_VIRTUAL_SIZE (FP0_REGNUM) == 8);
+ tdep->mips_last_arg_regnum = ZERO_REGNUM + 11;
+ tdep->mips_last_fp_arg_regnum = FP0_REGNUM + 19;
+ tdep->mips_regs_have_home_p = 1;
set_gdbarch_long_bit (gdbarch, 32);
set_gdbarch_ptr_bit (gdbarch, 32);
set_gdbarch_long_long_bit (gdbarch, 64);
@@ -3865,22 +4023,6 @@ mips_gdbarch_init (info, arches)
}
#endif
- /* Select either of the two alternative ABI's */
- if (tdep->mips_eabi)
- {
- /* EABI uses R4 through R11 for args */
- tdep->mips_last_arg_regnum = 11;
- /* EABI uses F12 through F19 for args */
- tdep->mips_last_fp_arg_regnum = FP0_REGNUM + 19;
- }
- else
- {
- /* old ABI uses R4 through R7 for args */
- tdep->mips_last_arg_regnum = 7;
- /* old ABI uses F12 through F15 for args */
- tdep->mips_last_fp_arg_regnum = FP0_REGNUM + 15;
- }
-
/* enable/disable the MIPS FPU */
if (!mips_fpu_type_auto)
tdep->mips_fpu_type = mips_fpu_type;
@@ -3934,46 +4076,55 @@ mips_gdbarch_init (info, arches)
set_gdbarch_coerce_float_to_double (gdbarch, mips_coerce_float_to_double);
set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
- set_gdbarch_get_saved_register (gdbarch, default_get_saved_register);
+ set_gdbarch_get_saved_register (gdbarch, mips_get_saved_register);
if (gdbarch_debug)
{
- fprintf_unfiltered (gdb_stderr,
- "mips_gdbarch_init: (info)elf_flags = 0x%x\n",
- elf_flags);
- fprintf_unfiltered (gdb_stderr,
+ fprintf_unfiltered (gdb_stdlog,
"mips_gdbarch_init: (info)ef_mips_abi = %s\n",
ef_mips_abi);
- fprintf_unfiltered (gdb_stderr,
+ fprintf_unfiltered (gdb_stdlog,
"mips_gdbarch_init: (info)ef_mips_arch = %d\n",
ef_mips_arch);
- fprintf_unfiltered (gdb_stderr,
+ fprintf_unfiltered (gdb_stdlog,
"mips_gdbarch_init: (info)ef_mips_bitptrs = %d\n",
ef_mips_bitptrs);
- fprintf_unfiltered (gdb_stderr,
- "mips_gdbarch_init: MIPS_EABI = %d\n",
- tdep->mips_eabi);
- fprintf_unfiltered (gdb_stderr,
- "mips_gdbarch_init: MIPS_LAST_ARG_REGNUM = %d\n",
- tdep->mips_last_arg_regnum);
- fprintf_unfiltered (gdb_stderr,
- "mips_gdbarch_init: MIPS_LAST_FP_ARG_REGNUM = %d (%d)\n",
- tdep->mips_last_fp_arg_regnum,
- tdep->mips_last_fp_arg_regnum - FP0_REGNUM);
- fprintf_unfiltered (gdb_stderr,
- "mips_gdbarch_init: tdep->mips_fpu_type = %d (%s)\n",
+ fprintf_unfiltered (gdb_stdlog,
+ "mips_gdbarch_init: MIPS_REGSIZE = %d\n",
+ MIPS_REGSIZE);
+ fprintf_unfiltered (gdb_stdlog,
+ "mips_gdbarch_init: tdep->elf_flags = 0x%x\n",
+ tdep->elf_flags);
+ fprintf_unfiltered (gdb_stdlog,
+ "mips_gdbarch_init: tdep->mips_abi = %d\n",
+ tdep->mips_abi);
+ fprintf_unfiltered (gdb_stdlog,
+ "mips_gdbarch_init: tdep->mips_fpu_type = %d (%s)\n",
tdep->mips_fpu_type,
(tdep->mips_fpu_type == MIPS_FPU_NONE ? "none"
- : tdep->mips_fpu_type == MIPS_FPU_SINGLE ? "single"
- : tdep->mips_fpu_type == MIPS_FPU_DOUBLE ? "double"
+ : tdep->mips_fpu_type == MIPS_FPU_SINGLE ? "single"
+ : tdep->mips_fpu_type == MIPS_FPU_DOUBLE ? "double"
: "???"));
- fprintf_unfiltered (gdb_stderr,
- "mips_gdbarch_init: tdep->mips_default_saved_regsize = %d\n",
+ fprintf_unfiltered (gdb_stdlog,
+ "mips_gdbarch_init: tdep->mips_last_arg_regnum = %d\n",
+ tdep->mips_last_arg_regnum);
+ fprintf_unfiltered (gdb_stdlog,
+ "mips_gdbarch_init: tdep->mips_last_fp_arg_regnum = %d (%d)\n",
+ tdep->mips_last_fp_arg_regnum,
+ tdep->mips_last_fp_arg_regnum - FP0_REGNUM);
+ fprintf_unfiltered (gdb_stdlog,
+ "mips_gdbarch_init: tdep->mips_default_saved_regsize = %d\n",
tdep->mips_default_saved_regsize);
- fprintf_unfiltered (gdb_stderr,
- "mips_gdbarch_init: tdep->mips_fp_register_double = %d (%s)\n",
+ fprintf_unfiltered (gdb_stdlog,
+ "mips_gdbarch_init: tdep->mips_fp_register_double = %d (%s)\n",
tdep->mips_fp_register_double,
- (tdep->mips_fp_register_double ? "true" : "false"));
+ (tdep->mips_fp_register_double ? "true" : "false"));
+ fprintf_unfiltered (gdb_stdlog,
+ "mips_gdbarch_init: tdep->mips_regs_have_home_p = %d\n",
+ tdep->mips_regs_have_home_p);
+ fprintf_unfiltered (gdb_stdlog,
+ "mips_gdbarch_init: tdep->mips_default_stack_argsize = %d\n",
+ tdep->mips_default_stack_argsize);
}
return gdbarch;
@@ -4002,9 +4153,9 @@ _initialize_mips_tdep ()
/* Allow the user to override the saved register size. */
add_show_from_set (add_set_enum_cmd ("saved-gpreg-size",
- class_obscure,
- saved_gpreg_size_enums,
- (char *) &mips_saved_regsize_string, "\
+ class_obscure,
+ size_enums,
+ &mips_saved_regsize_string, "\
Set size of general purpose registers saved on the stack.\n\
This option can be set to one of:\n\
32 - Force GDB to treat saved GP registers as 32-bit\n\
@@ -4012,7 +4163,21 @@ This option can be set to one of:\n\
auto - Allow GDB to use the target's default setting or autodetect the\n\
saved GP register size from information contained in the executable.\n\
(default: auto)",
- &setmipscmdlist),
+ &setmipscmdlist),
+ &showmipscmdlist);
+
+ /* Allow the user to override the argument stack size. */
+ add_show_from_set (add_set_enum_cmd ("stack-arg-size",
+ class_obscure,
+ size_enums,
+ &mips_stack_argsize_string, "\
+Set the amount of stack space reserved for each argument.\n\
+This option can be set to one of:\n\
+ 32 - Force GDB to allocate 32-bit chunks per argument\n\
+ 64 - Force GDB to allocate 64-bit chunks per argument\n\
+ auto - Allow GDB to determine the correct setting from the current\n\
+ target and executable (default)",
+ &setmipscmdlist),
&showmipscmdlist);
/* Let the user turn off floating point and set the fence post for
diff --git a/gdb/mipsread.c b/gdb/mipsread.c
index d137a9aaac5..2c90b5612d5 100644
--- a/gdb/mipsread.c
+++ b/gdb/mipsread.c
@@ -42,23 +42,19 @@
#include "elf/common.h"
#include "elf/mips.h"
-extern void _initialize_mipsread PARAMS ((void));
+extern void _initialize_mipsread (void);
-static void
-mipscoff_new_init PARAMS ((struct objfile *));
+static void mipscoff_new_init (struct objfile *);
-static void
-mipscoff_symfile_init PARAMS ((struct objfile *));
+static void mipscoff_symfile_init (struct objfile *);
-static void
-mipscoff_symfile_read PARAMS ((struct objfile *, int));
+static void mipscoff_symfile_read (struct objfile *, int);
-static void
-mipscoff_symfile_finish PARAMS ((struct objfile *));
+static void mipscoff_symfile_finish (struct objfile *);
static void
-read_alphacoff_dynamic_symtab PARAMS ((struct section_offsets *,
- struct objfile * objfile));
+read_alphacoff_dynamic_symtab (struct section_offsets *,
+ struct objfile *objfile);
/* Initialize anything that needs initializing when a completely new
symbol file is specified (not just adding some symbols from another
@@ -94,7 +90,7 @@ mipscoff_symfile_read (objfile, mainline)
struct cleanup *back_to;
init_minimal_symbol_collection ();
- back_to = make_cleanup ((make_cleanup_func) discard_minimal_symbols, 0);
+ back_to = make_cleanup_discard_minimal_symbols ();
/* Now that the executable file is positioned at symbol table,
process it and define symbols accordingly. */
@@ -194,8 +190,7 @@ struct alphacoff_dynsecinfo
asection *got_sect; /* Section pointer for .got section */
};
-static void
-alphacoff_locate_sections PARAMS ((bfd *, asection *, void *));
+static void alphacoff_locate_sections (bfd *, asection *, void *);
/* We are called once per section from read_alphacoff_dynamic_symtab.
We need to examine each section we are passed, check to see
@@ -402,7 +397,7 @@ read_alphacoff_dynamic_symtab (section_offsets, objfile)
ms_type = mst_text;
else
ms_type = mst_file_text;
- sym_value += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ sym_value += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
}
else if (sym_shndx == SHN_MIPS_DATA)
{
@@ -410,7 +405,7 @@ read_alphacoff_dynamic_symtab (section_offsets, objfile)
ms_type = mst_data;
else
ms_type = mst_file_data;
- sym_value += ANOFFSET (section_offsets, SECT_OFF_DATA);
+ sym_value += ANOFFSET (section_offsets, SECT_OFF_DATA (objfile));
}
else if (sym_shndx == SHN_MIPS_ACOMMON)
{
@@ -418,7 +413,7 @@ read_alphacoff_dynamic_symtab (section_offsets, objfile)
ms_type = mst_bss;
else
ms_type = mst_file_bss;
- sym_value += ANOFFSET (section_offsets, SECT_OFF_BSS);
+ sym_value += ANOFFSET (section_offsets, SECT_OFF_BSS (objfile));
}
else if (sym_shndx == SHN_ABS)
{
diff --git a/gdb/mipsv4-nat.c b/gdb/mipsv4-nat.c
index 8551186bc0f..01ac8c05784 100644
--- a/gdb/mipsv4-nat.c
+++ b/gdb/mipsv4-nat.c
@@ -27,6 +27,9 @@
#include <sys/procfs.h>
#include <setjmp.h> /* For JB_XXX. */
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
/* Size of elements in jmpbuf */
#define JB_ELEMENT_SIZE 4
diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c
index d6369600ea9..8311a9ec506 100644
--- a/gdb/mn10300-tdep.c
+++ b/gdb/mn10300-tdep.c
@@ -30,8 +30,8 @@
#include "symfile.h"
extern void _initialize_mn10300_tdep (void);
-static CORE_ADDR mn10300_analyze_prologue PARAMS ((struct frame_info * fi,
- CORE_ADDR pc));
+static CORE_ADDR mn10300_analyze_prologue (struct frame_info *fi,
+ CORE_ADDR pc);
/* Additional info used by the frame */
@@ -102,7 +102,7 @@ mn10300_store_return_value (type, valbuf)
write_register_bytes (REGISTER_BYTE (0), valbuf, TYPE_LENGTH (type));
}
-static struct frame_info *analyze_dummy_frame PARAMS ((CORE_ADDR, CORE_ADDR));
+static struct frame_info *analyze_dummy_frame (CORE_ADDR, CORE_ADDR);
static struct frame_info *
analyze_dummy_frame (pc, frame)
CORE_ADDR pc;
diff --git a/gdb/mon960-rom.c b/gdb/mon960-rom.c
index 549be3e36c8..19123979063 100644
--- a/gdb/mon960-rom.c
+++ b/gdb/mon960-rom.c
@@ -34,7 +34,7 @@
static struct target_ops mon960_ops;
-static void mon960_open PARAMS ((char *args, int from_tty));
+static void mon960_open (char *args, int from_tty);
#ifdef USE_GENERIC_LOAD
diff --git a/gdb/monitor.c b/gdb/monitor.c
index b857bbce00f..03817542b71 100644
--- a/gdb/monitor.c
+++ b/gdb/monitor.c
@@ -57,51 +57,49 @@
static char *dev_name;
static struct target_ops *targ_ops;
-static void monitor_vsprintf PARAMS ((char *sndbuf, char *pattern, va_list args));
+static void monitor_vsprintf (char *sndbuf, char *pattern, va_list args);
-static int readchar PARAMS ((int timeout));
+static int readchar (int timeout);
-static void monitor_fetch_register PARAMS ((int regno));
-static void monitor_store_register PARAMS ((int regno));
+static void monitor_fetch_register (int regno);
+static void monitor_store_register (int regno);
static void monitor_printable_string (char *newstr, char *oldstr, int len);
static void monitor_error (char *function, char *message, CORE_ADDR memaddr, int len, char *string, int final_char);
-static void monitor_detach PARAMS ((char *args, int from_tty));
-static void monitor_resume PARAMS ((int pid, int step, enum target_signal sig));
-static void monitor_interrupt PARAMS ((int signo));
-static void monitor_interrupt_twice PARAMS ((int signo));
-static void monitor_interrupt_query PARAMS ((void));
-static void monitor_wait_cleanup PARAMS ((void *old_timeout));
-
-static int monitor_wait PARAMS ((int pid, struct target_waitstatus * status));
-static void monitor_fetch_registers PARAMS ((int regno));
-static void monitor_store_registers PARAMS ((int regno));
-static void monitor_prepare_to_store PARAMS ((void));
-static int monitor_xfer_memory PARAMS ((CORE_ADDR memaddr, char *myaddr, int len, int write, struct target_ops * target));
-static void monitor_files_info PARAMS ((struct target_ops * ops));
-static int monitor_insert_breakpoint PARAMS ((CORE_ADDR addr, char *shadow));
-static int monitor_remove_breakpoint PARAMS ((CORE_ADDR addr, char *shadow));
-static void monitor_kill PARAMS ((void));
-static void monitor_load PARAMS ((char *file, int from_tty));
-static void monitor_mourn_inferior PARAMS ((void));
-static void monitor_stop PARAMS ((void));
-
-static int monitor_read_memory PARAMS ((CORE_ADDR addr, char *myaddr, int len));
-static int monitor_write_memory PARAMS ((CORE_ADDR addr, char *myaddr, int len));
-static int monitor_write_memory_bytes PARAMS ((CORE_ADDR addr,
- char *myaddr, int len));
-static int monitor_write_memory_block PARAMS ((
- CORE_ADDR memaddr,
- char *myaddr,
- int len));
-static int monitor_expect_regexp PARAMS ((struct re_pattern_buffer * pat,
- char *buf, int buflen));
-static void monitor_dump_regs PARAMS ((void));
+static void monitor_detach (char *args, int from_tty);
+static void monitor_resume (int pid, int step, enum target_signal sig);
+static void monitor_interrupt (int signo);
+static void monitor_interrupt_twice (int signo);
+static void monitor_interrupt_query (void);
+static void monitor_wait_cleanup (void *old_timeout);
+
+static int monitor_wait (int pid, struct target_waitstatus *status);
+static void monitor_fetch_registers (int regno);
+static void monitor_store_registers (int regno);
+static void monitor_prepare_to_store (void);
+static int monitor_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len,
+ int write, struct target_ops *target);
+static void monitor_files_info (struct target_ops *ops);
+static int monitor_insert_breakpoint (CORE_ADDR addr, char *shadow);
+static int monitor_remove_breakpoint (CORE_ADDR addr, char *shadow);
+static void monitor_kill (void);
+static void monitor_load (char *file, int from_tty);
+static void monitor_mourn_inferior (void);
+static void monitor_stop (void);
+
+static int monitor_read_memory (CORE_ADDR addr, char *myaddr, int len);
+static int monitor_write_memory (CORE_ADDR addr, char *myaddr, int len);
+static int monitor_write_memory_bytes (CORE_ADDR addr, char *myaddr, int len);
+static int monitor_write_memory_block (CORE_ADDR memaddr,
+ char *myaddr, int len);
+static int monitor_expect_regexp (struct re_pattern_buffer *pat,
+ char *buf, int buflen);
+static void monitor_dump_regs (void);
#if 0
-static int from_hex PARAMS ((int a));
-static unsigned long get_hex_word PARAMS ((void));
+static int from_hex (int a);
+static unsigned long get_hex_word (void);
#endif
-static void parse_register_dump PARAMS ((char *, int));
+static void parse_register_dump (char *, int);
static struct monitor_ops *current_monitor;
@@ -1206,11 +1204,14 @@ monitor_fetch_register (regno)
int regno;
{
char *name;
- static char zerobuf[MAX_REGISTER_RAW_SIZE] =
- {0};
- char regbuf[MAX_REGISTER_RAW_SIZE * 2 + 1];
+ char *zerobuf;
+ char *regbuf;
int i;
+ regbuf = alloca (MAX_REGISTER_RAW_SIZE * 2 + 1);
+ zerobuf = alloca (MAX_REGISTER_RAW_SIZE);
+ memset (zerobuf, 0, MAX_REGISTER_RAW_SIZE);
+
name = current_monitor->regnames[regno];
monitor_debug ("MON fetchreg %d '%s'\n", regno, name ? name : "(null name)");
@@ -1374,7 +1375,8 @@ monitor_store_register (regno)
}
val = read_register (regno);
- monitor_debug ("MON storeg %d %s\n", regno, preg (val));
+ monitor_debug ("MON storeg %d %s\n", regno,
+ phex (val, REGISTER_RAW_SIZE (regno)));
/* send the register deposit command */
diff --git a/gdb/monitor.h b/gdb/monitor.h
index cef907bc41d..23fad577e4f 100644
--- a/gdb/monitor.h
+++ b/gdb/monitor.h
@@ -95,16 +95,15 @@ struct monitor_ops
GDB with the value of a register. */
char *dump_registers; /* Command to dump all regs at once */
char *register_pattern; /* Pattern that picks out register from reg dump */
- void (*supply_register) PARAMS ((char *name, int namelen,
- char *val, int vallen));
+ void (*supply_register) (char *name, int namelen, char *val, int vallen);
void (*load_routine) PARAMS ((serial_t desc, char *file,
int hashmark)); /* Download routine */
int (*dumpregs) PARAMS ((void)); /* routine to dump all registers */
int (*continue_hook) PARAMS ((void)); /* Emit the continue command */
- int (*wait_filter) PARAMS ((char *buf, /* Maybe contains registers */
- int bufmax,
- int *response_length,
- struct target_waitstatus * status));
+ int (*wait_filter) (char *buf, /* Maybe contains registers */
+ int bufmax,
+ int *response_length,
+ struct target_waitstatus * status);
char *load; /* load command */
char *loadresp; /* Response to load command */
char *prompt; /* monitor command prompt */
@@ -233,20 +232,18 @@ struct monitor_ops
#define SREC_SIZE 160
-extern void monitor_open PARAMS ((char *args, struct monitor_ops * ops,
- int from_tty));
-extern void monitor_close PARAMS ((int quitting));
-extern char *monitor_supply_register PARAMS ((int regno, char *valstr));
-extern int monitor_expect PARAMS ((char *prompt, char *buf, int buflen));
-extern int monitor_expect_prompt PARAMS ((char *buf, int buflen));
-extern void monitor_printf
-PARAMS ((char *,...))
+extern void monitor_open (char *args, struct monitor_ops *ops, int from_tty);
+extern void monitor_close (int quitting);
+extern char *monitor_supply_register (int regno, char *valstr);
+extern int monitor_expect (char *prompt, char *buf, int buflen);
+extern int monitor_expect_prompt (char *buf, int buflen);
+extern void monitor_printf (char *, ...) ATTR_FORMAT (printf, 1, 2);
+extern void
+monitor_printf_noecho (char *, ...)
ATTR_FORMAT (printf, 1, 2);
- extern void monitor_printf_noecho PARAMS ((char *,...))
- ATTR_FORMAT (printf, 1, 2);
- extern void monitor_write PARAMS ((char *buf, int buflen));
- extern int monitor_readchar PARAMS ((void));
- extern char *monitor_get_dev_name PARAMS ((void));
- extern void init_monitor_ops PARAMS ((struct target_ops *));
- extern int monitor_dump_reg_block PARAMS ((char *dump_cmd));
- extern void flush_monitor_dcache PARAMS ((void));
+extern void monitor_write (char *buf, int buflen);
+extern int monitor_readchar (void);
+extern char *monitor_get_dev_name (void);
+extern void init_monitor_ops (struct target_ops *);
+extern int monitor_dump_reg_block (char *dump_cmd);
+extern void flush_monitor_dcache (void);
diff --git a/gdb/nlmread.c b/gdb/nlmread.c
index 03413b33d80..c710b0abf3a 100644
--- a/gdb/nlmread.c
+++ b/gdb/nlmread.c
@@ -29,22 +29,17 @@
#include "buildsym.h"
#include "stabsread.h"
-extern void _initialize_nlmread PARAMS ((void));
+extern void _initialize_nlmread (void);
-static void
-nlm_new_init PARAMS ((struct objfile *));
+static void nlm_new_init (struct objfile *);
-static void
-nlm_symfile_init PARAMS ((struct objfile *));
+static void nlm_symfile_init (struct objfile *);
-static void
-nlm_symfile_read PARAMS ((struct objfile *, int));
+static void nlm_symfile_read (struct objfile *, int);
-static void
-nlm_symfile_finish PARAMS ((struct objfile *));
+static void nlm_symfile_finish (struct objfile *);
-static void
-nlm_symtab_read PARAMS ((bfd *, CORE_ADDR, struct objfile *));
+static void nlm_symtab_read (bfd *, CORE_ADDR, struct objfile *);
/* Initialize anything that needs initializing when a completely new symbol
file is specified (not just adding some symbols from another file, e.g. a
@@ -192,7 +187,7 @@ nlm_symfile_read (objfile, mainline)
struct symbol *mainsym;
init_minimal_symbol_collection ();
- back_to = make_cleanup ((make_cleanup_func) discard_minimal_symbols, 0);
+ back_to = make_cleanup_discard_minimal_symbols ();
/* FIXME, should take a section_offsets param, not just an offset. */
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 41ec317bc5c..f1c70fa1ba7 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -42,19 +42,15 @@
#if defined(USE_MMALLOC) && defined(HAVE_MMAP)
-static int
-open_existing_mapped_file PARAMS ((char *, long, int));
+static int open_existing_mapped_file (char *, long, int);
-static int
-open_mapped_file PARAMS ((char *filename, long mtime, int flags));
+static int open_mapped_file (char *filename, long mtime, int flags);
-static PTR
- map_to_file PARAMS ((int));
+static PTR map_to_file (int);
#endif /* defined(USE_MMALLOC) && defined(HAVE_MMAP) */
-static void
-add_to_objfile_sections PARAMS ((bfd *, sec_ptr, PTR));
+static void add_to_objfile_sections (bfd *, sec_ptr, PTR);
/* Externally visible variables that are owned by this module.
See declarations in objfile.h for more info. */
@@ -305,6 +301,14 @@ allocate_objfile (abfd, flags)
}
}
+ /* Initialize the section indexes for this objfile, so that we can
+ later detect if they are used w/o being properly assigned to. */
+
+ objfile->sect_index_text = -1;
+ objfile->sect_index_data = -1;
+ objfile->sect_index_bss = -1;
+ objfile->sect_index_rodata = -1;
+
/* Add this file onto the tail of the linked list of other such files. */
objfile->next = NULL;
@@ -486,6 +490,17 @@ free_objfile (objfile)
}
}
+static void
+do_free_objfile_cleanup (void *obj)
+{
+ free_objfile (obj);
+}
+
+struct cleanup *
+make_cleanup_free_objfile (struct objfile *obj)
+{
+ return make_cleanup (do_free_objfile_cleanup, obj);
+}
/* Free all the object files at once and clean up their users. */
@@ -591,8 +606,8 @@ objfile_relocate (objfile, new_offsets)
ALL_OBJFILE_PSYMTABS (objfile, p)
{
- p->textlow += ANOFFSET (delta, SECT_OFF_TEXT);
- p->texthigh += ANOFFSET (delta, SECT_OFF_TEXT);
+ p->textlow += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
+ p->texthigh += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
}
}
@@ -643,41 +658,41 @@ objfile_relocate (objfile, new_offsets)
if (flags & SEC_CODE)
{
- s->addr += ANOFFSET (delta, SECT_OFF_TEXT);
- s->endaddr += ANOFFSET (delta, SECT_OFF_TEXT);
+ s->addr += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
+ s->endaddr += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
}
else if (flags & (SEC_DATA | SEC_LOAD))
{
- s->addr += ANOFFSET (delta, SECT_OFF_DATA);
- s->endaddr += ANOFFSET (delta, SECT_OFF_DATA);
+ s->addr += ANOFFSET (delta, SECT_OFF_DATA (objfile));
+ s->endaddr += ANOFFSET (delta, SECT_OFF_DATA (objfile));
}
else if (flags & SEC_ALLOC)
{
- s->addr += ANOFFSET (delta, SECT_OFF_BSS);
- s->endaddr += ANOFFSET (delta, SECT_OFF_BSS);
+ s->addr += ANOFFSET (delta, SECT_OFF_BSS (objfile));
+ s->endaddr += ANOFFSET (delta, SECT_OFF_BSS (objfile));
}
}
}
if (objfile->ei.entry_point != ~(CORE_ADDR) 0)
- objfile->ei.entry_point += ANOFFSET (delta, SECT_OFF_TEXT);
+ objfile->ei.entry_point += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
if (objfile->ei.entry_func_lowpc != INVALID_ENTRY_LOWPC)
{
- objfile->ei.entry_func_lowpc += ANOFFSET (delta, SECT_OFF_TEXT);
- objfile->ei.entry_func_highpc += ANOFFSET (delta, SECT_OFF_TEXT);
+ objfile->ei.entry_func_lowpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
+ objfile->ei.entry_func_highpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
}
if (objfile->ei.entry_file_lowpc != INVALID_ENTRY_LOWPC)
{
- objfile->ei.entry_file_lowpc += ANOFFSET (delta, SECT_OFF_TEXT);
- objfile->ei.entry_file_highpc += ANOFFSET (delta, SECT_OFF_TEXT);
+ objfile->ei.entry_file_lowpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
+ objfile->ei.entry_file_highpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
}
if (objfile->ei.main_func_lowpc != INVALID_ENTRY_LOWPC)
{
- objfile->ei.main_func_lowpc += ANOFFSET (delta, SECT_OFF_TEXT);
- objfile->ei.main_func_highpc += ANOFFSET (delta, SECT_OFF_TEXT);
+ objfile->ei.main_func_lowpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
+ objfile->ei.main_func_highpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
}
/* Relocate breakpoints as necessary, after things are relocated. */
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index d1bd4dad2a8..86b77a5b303 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -197,8 +197,8 @@ struct objstats
#define OBJSTAT(objfile, expr) (objfile -> stats.expr)
#define OBJSTATS struct objstats stats
-extern void print_objfile_statistics PARAMS ((void));
-extern void print_symbol_bcache_statistics PARAMS ((void));
+extern void print_objfile_statistics (void);
+extern void print_symbol_bcache_statistics (void);
/* Number of entries in the minimal symbol hash table. */
#define MINIMAL_SYMBOL_HASH_SIZE 349
@@ -372,6 +372,18 @@ struct objfile
struct section_offsets *section_offsets;
int num_sections;
+ /* Indexes in the section_offsets array. These are initialized by the
+ *_symfile_offsets() family of functions (som_symfile_offsets,
+ xcoff_symfile_offsets, default_symfile_offsets). In theory they
+ should correspond to the section indexes used by bfd for the
+ current objfile. The exception to this for the time being is the
+ SOM version. */
+
+ int sect_index_text;
+ int sect_index_data;
+ int sect_index_bss;
+ int sect_index_rodata;
+
/* These pointers are used to locate the section table, which
among other things, is used to map pc addresses into sections.
SECTIONS points to the first entry in the table, and
@@ -481,56 +493,45 @@ extern struct objfile *object_files;
/* Declarations for functions defined in objfiles.c */
-extern struct objfile *
-allocate_objfile PARAMS ((bfd *, int));
+extern struct objfile *allocate_objfile (bfd *, int);
-extern int
-build_objfile_section_table PARAMS ((struct objfile *));
+extern int build_objfile_section_table (struct objfile *);
-extern void objfile_to_front PARAMS ((struct objfile *));
+extern void objfile_to_front (struct objfile *);
-extern void
-unlink_objfile PARAMS ((struct objfile *));
+extern void unlink_objfile (struct objfile *);
-extern void
-free_objfile PARAMS ((struct objfile *));
+extern void free_objfile (struct objfile *);
-extern void
-free_all_objfiles PARAMS ((void));
+extern struct cleanup *make_cleanup_free_objfile (struct objfile *);
-extern void
-objfile_relocate PARAMS ((struct objfile *, struct section_offsets *));
+extern void free_all_objfiles (void);
-extern int
-have_partial_symbols PARAMS ((void));
+extern void objfile_relocate (struct objfile *, struct section_offsets *);
-extern int
-have_full_symbols PARAMS ((void));
+extern int have_partial_symbols (void);
+
+extern int have_full_symbols (void);
/* This operation deletes all objfile entries that represent solibs that
weren't explicitly loaded by the user, via e.g., the add-symbol-file
command.
*/
-extern void
-objfile_purge_solibs PARAMS ((void));
+extern void objfile_purge_solibs (void);
/* Functions for dealing with the minimal symbol table, really a misc
address<->symbol mapping for things we don't have debug symbols for. */
-extern int
-have_minimal_symbols PARAMS ((void));
+extern int have_minimal_symbols (void);
-extern struct obj_section *
- find_pc_section PARAMS ((CORE_ADDR pc));
+extern struct obj_section *find_pc_section (CORE_ADDR pc);
-extern struct obj_section *
- find_pc_sect_section PARAMS ((CORE_ADDR pc, asection * section));
+extern struct obj_section *find_pc_sect_section (CORE_ADDR pc,
+ asection * section);
-extern int
-in_plt_section PARAMS ((CORE_ADDR, char *));
+extern int in_plt_section (CORE_ADDR, char *);
-extern int
-is_in_import_list PARAMS ((char *, struct objfile *));
+extern int is_in_import_list (char *, struct objfile *);
/* Traverse all object files. ALL_OBJFILES_SAFE works even if you delete
the objfile during the traversal. */
@@ -584,4 +585,20 @@ is_in_import_list PARAMS ((char *, struct objfile *));
ALL_OBJFILES (objfile) \
ALL_OBJFILE_OSECTIONS (objfile, osect)
+#define SECT_OFF_DATA(objfile) \
+ ((objfile->sect_index_data == -1) ? \
+ (internal_error ("sect_index_data not initialized"), -1) : objfile->sect_index_data)
+
+#define SECT_OFF_RODATA(objfile) \
+ ((objfile->sect_index_rodata == -1) ? \
+ (internal_error ("sect_index_rodata not initialized"), -1) : objfile->sect_index_rodata)
+
+#define SECT_OFF_TEXT(objfile) \
+ ((objfile->sect_index_text == -1) ? \
+ (internal_error ("sect_index_text not initialized"), -1) : objfile->sect_index_text)
+
+#define SECT_OFF_BSS(objfile) \
+ ((objfile->sect_index_bss == -1) ? \
+ (internal_error ("sect_index_bss not initialized"), -1) : objfile->sect_index_bss)
+
#endif /* !defined (OBJFILES_H) */
diff --git a/gdb/ocd.c b/gdb/ocd.c
index e826ca0e56f..1eeed77ed2e 100644
--- a/gdb/ocd.c
+++ b/gdb/ocd.c
@@ -39,32 +39,31 @@
/* Prototypes for local functions */
-static int ocd_read_bytes PARAMS ((CORE_ADDR memaddr,
- char *myaddr, int len));
+static int ocd_read_bytes (CORE_ADDR memaddr, char *myaddr, int len);
-static int ocd_start_remote PARAMS ((PTR dummy));
+static int ocd_start_remote (PTR dummy);
-static int readchar PARAMS ((int timeout));
+static int readchar (int timeout);
-static void reset_packet PARAMS ((void));
+static void reset_packet (void);
-static void output_packet PARAMS ((void));
+static void output_packet (void);
-static int get_quoted_char PARAMS ((int timeout));
+static int get_quoted_char (int timeout);
-static void put_quoted_char PARAMS ((int c));
+static void put_quoted_char (int c);
-static void ocd_interrupt PARAMS ((int signo));
+static void ocd_interrupt (int signo);
-static void ocd_interrupt_twice PARAMS ((int signo));
+static void ocd_interrupt_twice (int signo);
-static void interrupt_query PARAMS ((void));
+static void interrupt_query (void);
-static unsigned char *ocd_do_command PARAMS ((int cmd, int *statusp, int *lenp));
+static unsigned char *ocd_do_command (int cmd, int *statusp, int *lenp);
-static void ocd_put_packet PARAMS ((unsigned char *packet, int pktlen));
+static void ocd_put_packet (unsigned char *packet, int pktlen);
-static unsigned char *ocd_get_packet PARAMS ((int cmd, int *pktlen, int timeout));
+static unsigned char *ocd_get_packet (int cmd, int *pktlen, int timeout);
static struct target_ops *current_ops = NULL;
@@ -1410,7 +1409,7 @@ bdm_update_flash_command (args, from_tty)
{
int status, pktlen;
struct cleanup *old_chain;
- void (*store_registers_tmp) PARAMS ((int));
+ void (*store_registers_tmp) (int);
if (!ocd_desc)
error ("Not connected to OCD device.");
diff --git a/gdb/ocd.h b/gdb/ocd.h
index 6a71d6a51a4..85636e83281 100644
--- a/gdb/ocd.h
+++ b/gdb/ocd.h
@@ -86,57 +86,52 @@ enum ocd_target_type
OCD_TARGET_IBM_PPC = 0x3
}; /* IBM PPC 4xx */
-void ocd_open PARAMS ((char *name, int from_tty, enum ocd_target_type,
- struct target_ops * ops));
+void ocd_open (char *name, int from_tty, enum ocd_target_type,
+ struct target_ops *ops);
-void ocd_close PARAMS ((int quitting));
+void ocd_close (int quitting);
-void ocd_detach PARAMS ((char *args, int from_tty));
+void ocd_detach (char *args, int from_tty);
-void ocd_resume PARAMS ((int pid, int step, enum target_signal siggnal));
+void ocd_resume (int pid, int step, enum target_signal siggnal);
-void ocd_prepare_to_store PARAMS ((void));
+void ocd_prepare_to_store (void);
-void ocd_stop PARAMS ((void));
+void ocd_stop (void);
-void ocd_files_info PARAMS ((struct target_ops * ignore));
+void ocd_files_info (struct target_ops *ignore);
-int ocd_xfer_memory PARAMS ((CORE_ADDR memaddr, char *myaddr,
- int len, int should_write,
- struct target_ops * target));
+int ocd_xfer_memory (CORE_ADDR memaddr, char *myaddr,
+ int len, int should_write, struct target_ops *target);
-void ocd_mourn PARAMS ((void));
+void ocd_mourn (void);
-void ocd_create_inferior PARAMS ((char *exec_file,
- char *args,
- char **env));
+void ocd_create_inferior (char *exec_file, char *args, char **env);
-int ocd_thread_alive PARAMS ((int th));
+int ocd_thread_alive (int th);
-void ocd_error PARAMS ((char *s, int error_code));
+void ocd_error (char *s, int error_code);
-void ocd_kill PARAMS ((void));
+void ocd_kill (void);
-void ocd_load PARAMS ((char *args, int from_tty));
+void ocd_load (char *args, int from_tty);
-unsigned char *ocd_read_bdm_registers PARAMS ((int first_bdm_regno,
- int last_bdm_regno,
- int *reglen));
+unsigned char *ocd_read_bdm_registers (int first_bdm_regno,
+ int last_bdm_regno, int *reglen);
-CORE_ADDR ocd_read_bdm_register PARAMS ((int bdm_regno));
+CORE_ADDR ocd_read_bdm_register (int bdm_regno);
-void ocd_write_bdm_registers PARAMS ((int first_bdm_regno,
- unsigned char *regptr,
- int reglen));
+void ocd_write_bdm_registers (int first_bdm_regno,
+ unsigned char *regptr, int reglen);
-void ocd_write_bdm_register PARAMS ((int bdm_regno, CORE_ADDR reg));
+void ocd_write_bdm_register (int bdm_regno, CORE_ADDR reg);
-int ocd_wait PARAMS ((void));
+int ocd_wait (void);
-int ocd_insert_breakpoint PARAMS ((CORE_ADDR addr, char *contents_cache));
-int ocd_remove_breakpoint PARAMS ((CORE_ADDR addr, char *contents_cache));
+int ocd_insert_breakpoint (CORE_ADDR addr, char *contents_cache);
+int ocd_remove_breakpoint (CORE_ADDR addr, char *contents_cache);
-int ocd_write_bytes PARAMS ((CORE_ADDR memaddr, char *myaddr, int len));
+int ocd_write_bytes (CORE_ADDR memaddr, char *myaddr, int len);
#endif /* OCD_H */
diff --git a/gdb/op50-rom.c b/gdb/op50-rom.c
index 997b77ace4a..92eccef9163 100644
--- a/gdb/op50-rom.c
+++ b/gdb/op50-rom.c
@@ -25,7 +25,7 @@
#include "monitor.h"
#include "serial.h"
-static void op50n_open PARAMS ((char *args, int from_tty));
+static void op50n_open (char *args, int from_tty);
/*
* this array of registers need to match the indexes used by GDB. The
diff --git a/gdb/os9kread.c b/gdb/os9kread.c
index f820fe8dffa..d3e782f9ae1 100644
--- a/gdb/os9kread.c
+++ b/gdb/os9kread.c
@@ -61,7 +61,7 @@
#include "os9k.h"
#include "stabsread.h"
-extern void _initialize_os9kread PARAMS ((void));
+extern void _initialize_os9kread (void);
/* Each partial symbol table entry contains a pointer to private data for the
read_symtab() function to use when expanding a partial symbol table entry
@@ -126,51 +126,41 @@ static struct complaint lbrac_mismatch_complaint =
/* Local function prototypes */
-static void
-read_minimal_symbols PARAMS ((struct objfile *));
+static void read_minimal_symbols (struct objfile *);
-static void
-os9k_read_ofile_symtab PARAMS ((struct partial_symtab *));
+static void os9k_read_ofile_symtab (struct partial_symtab *);
-static void
-os9k_psymtab_to_symtab PARAMS ((struct partial_symtab *));
+static void os9k_psymtab_to_symtab (struct partial_symtab *);
-static void
-os9k_psymtab_to_symtab_1 PARAMS ((struct partial_symtab *));
+static void os9k_psymtab_to_symtab_1 (struct partial_symtab *);
-static void
-read_os9k_psymtab PARAMS ((struct objfile *, CORE_ADDR, int));
+static void read_os9k_psymtab (struct objfile *, CORE_ADDR, int);
-static int
-fill_sym PARAMS ((FILE *, bfd *));
+static int fill_sym (FILE *, bfd *);
-static void
-os9k_symfile_init PARAMS ((struct objfile *));
+static void os9k_symfile_init (struct objfile *);
-static void
-os9k_new_init PARAMS ((struct objfile *));
+static void os9k_new_init (struct objfile *);
-static void
-os9k_symfile_read PARAMS ((struct objfile *, int));
+static void os9k_symfile_read (struct objfile *, int);
-static void
-os9k_symfile_finish PARAMS ((struct objfile *));
+static void os9k_symfile_finish (struct objfile *);
static void
-os9k_process_one_symbol PARAMS ((int, int, CORE_ADDR, char *,
- struct section_offsets *, struct objfile *));
+os9k_process_one_symbol (int, int, CORE_ADDR, char *,
+ struct section_offsets *, struct objfile *);
-static struct partial_symtab *
- os9k_start_psymtab PARAMS ((struct objfile *, char *,
- CORE_ADDR, int, int, struct partial_symbol **,
- struct partial_symbol **));
+static struct partial_symtab *os9k_start_psymtab (struct objfile *, char *,
+ CORE_ADDR, int, int,
+ struct partial_symbol **,
+ struct partial_symbol **);
-static struct partial_symtab *
- os9k_end_psymtab PARAMS ((struct partial_symtab *, char **, int, int, CORE_ADDR,
- struct partial_symtab **, int));
+static struct partial_symtab *os9k_end_psymtab (struct partial_symtab *,
+ char **, int, int, CORE_ADDR,
+ struct partial_symtab **,
+ int);
-static void
-record_minimal_symbol PARAMS ((char *, CORE_ADDR, int, struct objfile *));
+static void record_minimal_symbol (char *, CORE_ADDR, int, struct objfile *);
#define HANDLE_RBRAC(val) \
if ((val) > pst->texthigh) pst->texthigh = (val);
@@ -208,7 +198,7 @@ record_minimal_symbol (name, address, type, objfile)
{
case N_TEXT:
ms_type = mst_text;
- address += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ address += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
break;
case N_DATA:
ms_type = mst_data;
@@ -342,7 +332,7 @@ os9k_symfile_read (objfile, mainline)
free_pending_blocks ();
back_to = make_cleanup (really_free_pendings, 0);
- make_cleanup ((make_cleanup_func) discard_minimal_symbols, 0);
+ make_cleanup_discard_minimal_symbols ();
read_minimal_symbols (objfile);
/* Now that the symbol table data of the executable file are all in core,
@@ -608,7 +598,7 @@ read_os9k_psymtab (objfile, text_addr, text_size)
#ifdef END_OF_TEXT_DEFAULT
end_of_text_addr = END_OF_TEXT_DEFAULT;
#else
- end_of_text_addr = text_addr + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT)
+ end_of_text_addr = text_addr + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))
+ text_size; /* Relocate */
#endif
@@ -655,7 +645,7 @@ read_os9k_psymtab (objfile, text_addr, text_size)
continue;
case N_SYM_SE:
- CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
if (psymfile_depth == 1 && pst)
{
os9k_end_psymtab (pst, psymtab_include_list, includes_used,
@@ -692,7 +682,7 @@ read_os9k_psymtab (objfile, text_addr, text_size)
valu = CUR_SYMBOL_VALUE;
if (valu)
- valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
past_first_source_file = 1;
p = strchr (namestring, ':');
@@ -884,7 +874,7 @@ read_os9k_psymtab (objfile, text_addr, text_size)
continue;
case 'f':
- CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
if (pst && pst->textlow == 0)
pst->textlow = CUR_SYMBOL_VALUE;
@@ -895,7 +885,7 @@ read_os9k_psymtab (objfile, text_addr, text_size)
continue;
case 'F':
- CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
if (pst && pst->textlow == 0)
pst->textlow = CUR_SYMBOL_VALUE;
@@ -933,7 +923,7 @@ read_os9k_psymtab (objfile, text_addr, text_size)
}
case N_SYM_RBRAC:
- CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
#ifdef HANDLE_RBRAC
HANDLE_RBRAC (CUR_SYMBOL_VALUE);
continue;
@@ -1423,7 +1413,7 @@ os9k_read_ofile_symtab (pst)
which comes from pst->textlow is correct. */
if (last_source_start_addr == 0)
last_source_start_addr = text_offset;
- pst->symtab = end_symtab (text_offset + text_size, objfile, SECT_OFF_TEXT);
+ pst->symtab = end_symtab (text_offset + text_size, objfile, SECT_OFF_TEXT (objfile));
end_stabs ();
}
@@ -1473,12 +1463,12 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
case N_SYM_LBRAC:
/* On most machines, the block addresses are relative to the
N_SO, the linker did not relocate them (sigh). */
- valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
new = push_context (desc, valu);
break;
case N_SYM_RBRAC:
- valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
new = pop_context ();
#if !defined (OS9K_VARIABLES_INSIDE_BLOCK)
@@ -1547,7 +1537,7 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
one line-number -- core-address correspondence.
Enter it in the line list for this symbol table. */
/* Relocate for dynamic loading and for ELF acc fn-relative syms. */
- valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
/* FIXME: loses if sizeof (char *) > sizeof (int) */
record_line (current_subfile, (int) name, valu);
break;
@@ -1570,7 +1560,7 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
switch (deftype)
{
case 'S':
- valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
n = strrchr (name, '/');
if (n != NULL)
{
@@ -1588,7 +1578,7 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
{
if (last_source_file)
{
- end_symtab (valu, objfile, SECT_OFF_TEXT);
+ end_symtab (valu, objfile, SECT_OFF_TEXT (objfile));
end_stabs ();
}
start_stabs ();
@@ -1605,7 +1595,7 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
case 'f':
case 'F':
- valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
function_stab_type = type;
within_function = 1;
@@ -1615,7 +1605,7 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
case 'V':
case 'v':
- valu += ANOFFSET (section_offsets, SECT_OFF_DATA);
+ valu += ANOFFSET (section_offsets, SECT_OFF_DATA (objfile));
define_symbol (valu, name, desc, type, objfile);
break;
diff --git a/gdb/osfsolib.c b/gdb/osfsolib.c
index 3ea550ace31..34b809d8717 100644
--- a/gdb/osfsolib.c
+++ b/gdb/osfsolib.c
@@ -113,7 +113,7 @@ static ldr_process_t fake_ldr_process;
/* Called by ldr_* routines to read memory from the current target. */
-static int ldr_read_memory PARAMS ((CORE_ADDR, char *, int, int));
+static int ldr_read_memory (CORE_ADDR, char *, int, int);
static int
ldr_read_memory (memaddr, myaddr, len, readstring)
@@ -173,34 +173,25 @@ struct so_list
static struct so_list *so_list_head; /* List of known shared objects */
-extern int
-fdmatch PARAMS ((int, int)); /* In libiberty */
+extern int fdmatch (int, int); /* In libiberty */
/* Local function prototypes */
-static void
-sharedlibrary_command PARAMS ((char *, int));
+static void sharedlibrary_command (char *, int);
-static void
-info_sharedlibrary_command PARAMS ((char *, int));
+static void info_sharedlibrary_command (char *, int);
-static int
-symbol_add_stub PARAMS ((char *));
+static int symbol_add_stub (char *);
-static struct so_list *
- find_solib PARAMS ((struct so_list *));
+static struct so_list *find_solib (struct so_list *);
-static struct link_map *
- first_link_map_member PARAMS ((void));
+static struct link_map *first_link_map_member (void);
-static struct link_map *
- next_link_map_member PARAMS ((struct so_list *));
+static struct link_map *next_link_map_member (struct so_list *);
-static void
-xfer_link_map_member PARAMS ((struct so_list *, struct link_map *));
+static void xfer_link_map_member (struct so_list *, struct link_map *);
-static int
-solib_map_sections PARAMS ((char *));
+static int solib_map_sections (char *);
/*
@@ -598,7 +589,8 @@ symbol_add_stub (arg)
text_addr = bfd_section_vma (so->abfd, lowest_sect) + LM_OFFSET (so);
}
- section_addrs.text_addr = text_addr;
+ section_addrs.other[0].addr = text_addr;
+ section_addrs.other[0].name = ".text";
so->objfile = symbol_file_add (so->so_name, so->from_tty,
&section_addrs, 0, OBJF_SHARED);
return (1);
diff --git a/gdb/pa64solib.c b/gdb/pa64solib.c
index 271efc2367b..88ff67e941e 100644
--- a/gdb/pa64solib.c
+++ b/gdb/pa64solib.c
@@ -59,10 +59,9 @@
/* Defined in exec.c; used to prevent dangling pointer bug. */
extern struct target_ops exec_ops;
-static CORE_ADDR
- bfd_lookup_symbol PARAMS ((bfd *, char *));
+static CORE_ADDR bfd_lookup_symbol (bfd *, char *);
/* This lives in hppa-tdep.c. */
-extern struct unwind_table_entry *find_unwind_entry PARAMS ((CORE_ADDR pc));
+extern struct unwind_table_entry *find_unwind_entry (CORE_ADDR pc);
/* These ought to be defined in some public interface, but aren't. They
identify dynamic linker events. */
@@ -121,18 +120,18 @@ dld_cache_t;
static dld_cache_t dld_cache;
-static void pa64_sharedlibrary_info_command PARAMS ((char *, int));
+static void pa64_sharedlibrary_info_command (char *, int);
-static void pa64_solib_sharedlibrary_command PARAMS ((char *, int));
+static void pa64_solib_sharedlibrary_command (char *, int);
-static void * pa64_target_read_memory PARAMS ((void *, CORE_ADDR, size_t, int));
+static void *pa64_target_read_memory (void *, CORE_ADDR, size_t, int);
-static boolean read_dld_descriptor PARAMS ((struct target_ops *));
+static boolean read_dld_descriptor (struct target_ops *);
-static boolean read_dynamic_info PARAMS ((asection *, dld_cache_t *));
+static boolean read_dynamic_info (asection *, dld_cache_t *);
-static void add_to_solist PARAMS ((boolean, char *, struct load_module_desc *,
- CORE_ADDR, struct target_ops *));
+static void add_to_solist (boolean, char *, struct load_module_desc *,
+ CORE_ADDR, struct target_ops *);
/* When examining the shared library for debugging information we have to
look for HP debug symbols, stabs and dwarf2 debug symbols. */
@@ -272,7 +271,8 @@ pa64_solib_add_solib_objfile (so, name, from_tty, text_addr)
tmp_bfd = NULL;
/* Now let the generic code load up symbols for this library. */
- section_addrs.text_addr = text_addr;
+ section_addrs.other[0].addr = text_addr;
+ section_addrs.other[0].name = ".text";
so->objfile = symbol_file_add (name, from_tty, &section_addrs, 0, OBJF_SHARED);
so->abfd = so->objfile->obfd;
@@ -327,9 +327,9 @@ pa64_solib_load_symbols (so, name, from_tty, text_addr, target)
return;
}
- ANOFFSET (so->objfile->section_offsets, SECT_OFF_TEXT)
+ ANOFFSET (so->objfile->section_offsets, SECT_OFF_TEXT (so->objfile))
= so->pa64_solib_desc.text_base;
- ANOFFSET (so->objfile->section_offsets, SECT_OFF_DATA)
+ ANOFFSET (so->objfile->section_offsets, SECT_OFF_DATA (so->objfile))
= so->pa64_solib_desc.data_base;
/* Relocate all the sections based on where they got loaded. */
@@ -337,13 +337,13 @@ pa64_solib_load_symbols (so, name, from_tty, text_addr, target)
{
if (p->the_bfd_section->flags & SEC_CODE)
{
- p->addr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_TEXT);
- p->endaddr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_TEXT);
+ p->addr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_TEXT (so->objfile));
+ p->endaddr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_TEXT (so->objfile));
}
else if (p->the_bfd_section->flags & SEC_DATA)
{
- p->addr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_DATA);
- p->endaddr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_DATA);
+ p->addr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_DATA (so->objfile));
+ p->endaddr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_DATA (so->objfile));
}
}
diff --git a/gdb/pa64solib.h b/gdb/pa64solib.h
index e0e44f1082e..b646074dd37 100644
--- a/gdb/pa64solib.h
+++ b/gdb/pa64solib.h
@@ -28,11 +28,9 @@ struct section_offsets;
#define SOLIB_ADD(filename, from_tty, targ) \
pa64_solib_add (filename, from_tty, targ)
-extern void
- pa64_solib_add PARAMS ((char *, int, struct target_ops *));
+extern void pa64_solib_add (char *, int, struct target_ops *);
-extern CORE_ADDR
- pa64_solib_get_got_by_pc PARAMS ((CORE_ADDR));
+extern CORE_ADDR pa64_solib_get_got_by_pc (CORE_ADDR);
/* Function to be called when the inferior starts up, to discover the names
of shared libraries that are dynamically linked, the base addresses to
@@ -41,8 +39,7 @@ extern CORE_ADDR
#define SOLIB_CREATE_INFERIOR_HOOK(PID) pa64_solib_create_inferior_hook()
-extern void
- pa64_solib_create_inferior_hook PARAMS ((void));
+extern void pa64_solib_create_inferior_hook (void);
/* Function to be called to remove the connection between debugger and
dynamic linker that was established by SOLIB_CREATE_INFERIOR_HOOK.
@@ -50,8 +47,7 @@ extern void
the debugger, as CLEAR_SOLIB does.) */
#define SOLIB_REMOVE_INFERIOR_HOOK(PID) pa64_solib_remove_inferior_hook(PID)
-extern void
- pa64_solib_remove_inferior_hook PARAMS ((int));
+extern void pa64_solib_remove_inferior_hook (int);
/* This function is called by the "catch load" command. It allows
the debugger to be notified by the dynamic linker when a specified
@@ -59,8 +55,7 @@ extern void
#define SOLIB_CREATE_CATCH_LOAD_HOOK(pid,tempflag, filename,cond_string) \
pa64_solib_create_catch_load_hook (pid, tempflag, filename, cond_string)
-extern void
- pa64_solib_create_catch_load_hook PARAMS ((int, int, char *, char *));
+extern void pa64_solib_create_catch_load_hook (int, int, char *, char *);
/* This function is called by the "catch unload" command. It allows
the debugger to be notified by the dynamic linker when a specified
@@ -68,8 +63,7 @@ extern void
#define SOLIB_CREATE_CATCH_UNLOAD_HOOK(pid,tempflag,filename, cond_string) \
pa64_solib_create_catch_unload_hook (pid, tempflag, filename, cond_string)
-extern void
- pa64_solib_create_catch_unload_hook PARAMS ((int, int, char *, char *));
+extern void pa64_solib_create_catch_unload_hook (int, int, char *, char *);
/* This function returns TRUE if the dynamic linker has just reported
a load of a library.
@@ -79,8 +73,7 @@ extern void
#define SOLIB_HAVE_LOAD_EVENT(pid) \
pa64_solib_have_load_event (pid)
-extern int
- pa64_solib_have_load_event PARAMS ((int));
+extern int pa64_solib_have_load_event (int);
/* This function returns a pointer to the string representation of the
pathname of the dynamically-linked library that has just been loaded.
@@ -95,8 +88,7 @@ extern int
#define SOLIB_LOADED_LIBRARY_PATHNAME(pid) \
pa64_solib_loaded_library_pathname (pid)
-extern char *
- pa64_solib_loaded_library_pathname PARAMS ((int));
+extern char *pa64_solib_loaded_library_pathname (int);
/* This function returns TRUE if the dynamic linker has just reported
an unload of a library.
@@ -106,8 +98,7 @@ extern char *
#define SOLIB_HAVE_UNLOAD_EVENT(pid) \
pa64_solib_have_unload_event (pid)
-extern int
- pa64_solib_have_unload_event PARAMS ((int));
+extern int pa64_solib_have_unload_event (int);
/* This function returns a pointer to the string representation of the
pathname of the dynamically-linked library that has just been unloaded.
@@ -122,8 +113,7 @@ extern int
#define SOLIB_UNLOADED_LIBRARY_PATHNAME(pid) \
pa64_solib_unloaded_library_pathname (pid)
-extern char *
- pa64_solib_unloaded_library_pathname PARAMS ((int));
+extern char *pa64_solib_unloaded_library_pathname (int);
/* This function returns TRUE if pc is the address of an instruction that
lies within the dynamic linker (such as the event hook, or the dld
@@ -135,8 +125,7 @@ extern char *
#define SOLIB_IN_DYNAMIC_LINKER(pid,pc) \
pa64_solib_in_dynamic_linker (pid, pc)
-extern int
- pa64_solib_in_dynamic_linker PARAMS ((int, CORE_ADDR));
+extern int pa64_solib_in_dynamic_linker (int, CORE_ADDR);
/* This function must be called when the inferior is killed, and the program
restarted. This is not the same as CLEAR_SOLIB, in that it doesn't discard
@@ -146,16 +135,14 @@ extern int
#define SOLIB_RESTART() \
pa64_solib_restart ()
-extern void
- pa64_solib_restart PARAMS ((void));
+extern void pa64_solib_restart (void);
/* If we can't set a breakpoint, and it's in a shared library, just
disable it. */
#define DISABLE_UNSETTABLE_BREAK(addr) (pa64_solib_address(addr) != NULL)
-extern char *
- pa64_solib_address PARAMS ((CORE_ADDR)); /* somsolib.c */
+extern char *pa64_solib_address (CORE_ADDR); /* somsolib.c */
/* If ADDR lies in a shared library, return its name. */
diff --git a/gdb/parse.c b/gdb/parse.c
index 7a5db47f2b0..a39c21dcfcb 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -77,16 +77,14 @@ static int expressiondebug = 0;
extern int hp_som_som_object_present;
-static void
-free_funcalls PARAMS ((void));
+static void free_funcalls (void *ignore);
-static void
-prefixify_expression PARAMS ((struct expression *));
+static void prefixify_expression (struct expression *);
static void
-prefixify_subexp PARAMS ((struct expression *, struct expression *, int, int));
+prefixify_subexp (struct expression *, struct expression *, int, int);
-void _initialize_parse PARAMS ((void));
+void _initialize_parse (void);
/* Data structure for saving values of arglist_len for function calls whose
arguments contain other function calls. */
@@ -177,7 +175,7 @@ end_arglist ()
Used when there is an error inside parsing. */
static void
-free_funcalls ()
+free_funcalls (void *ignore)
{
register struct funcall *call, *next;
@@ -1165,7 +1163,7 @@ parse_exp_1 (stringptr, block, comma)
if (lexptr == 0 || *lexptr == 0)
error_no_arg ("expression to compute");
- old_chain = make_cleanup ((make_cleanup_func) free_funcalls, 0);
+ old_chain = make_cleanup (free_funcalls, 0 /*ignore*/);
funcall_chain = 0;
expression_context_block = block ? block : get_selected_block ();
@@ -1176,7 +1174,7 @@ parse_exp_1 (stringptr, block, comma)
expout = (struct expression *)
xmalloc (sizeof (struct expression) + EXP_ELEM_TO_BYTES (expout_size));
expout->language_defn = current_language;
- make_cleanup ((make_cleanup_func) free_current_contents, &expout);
+ make_cleanup (free_current_contents, &expout);
if (current_language->la_parser ())
current_language->la_error (NULL);
@@ -1315,7 +1313,7 @@ follow_types (follow_type)
return follow_type;
}
-static void build_parse PARAMS ((void));
+static void build_parse (void);
static void
build_parse ()
{
diff --git a/gdb/parser-defs.h b/gdb/parser-defs.h
index 1458b494df8..ded9c330f40 100644
--- a/gdb/parser-defs.h
+++ b/gdb/parser-defs.h
@@ -92,60 +92,53 @@ union type_stack_elt
extern union type_stack_elt *type_stack;
extern int type_stack_depth, type_stack_size;
-extern void write_exp_elt PARAMS ((union exp_element));
+extern void write_exp_elt (union exp_element);
-extern void write_exp_elt_opcode PARAMS ((enum exp_opcode));
+extern void write_exp_elt_opcode (enum exp_opcode);
-extern void write_exp_elt_sym PARAMS ((struct symbol *));
+extern void write_exp_elt_sym (struct symbol *);
-extern void write_exp_elt_longcst PARAMS ((LONGEST));
+extern void write_exp_elt_longcst (LONGEST);
-extern void write_exp_elt_dblcst PARAMS ((DOUBLEST));
+extern void write_exp_elt_dblcst (DOUBLEST);
-extern void write_exp_elt_type PARAMS ((struct type *));
+extern void write_exp_elt_type (struct type *);
-extern void write_exp_elt_intern PARAMS ((struct internalvar *));
+extern void write_exp_elt_intern (struct internalvar *);
-extern void write_exp_string PARAMS ((struct stoken));
+extern void write_exp_string (struct stoken);
-extern void write_exp_bitstring PARAMS ((struct stoken));
+extern void write_exp_bitstring (struct stoken);
-extern void write_exp_elt_block PARAMS ((struct block *));
+extern void write_exp_elt_block (struct block *);
-extern void write_exp_msymbol PARAMS ((struct minimal_symbol *,
- struct type *, struct type *));
+extern void write_exp_msymbol (struct minimal_symbol *,
+ struct type *, struct type *);
-extern void write_dollar_variable PARAMS ((struct stoken str));
+extern void write_dollar_variable (struct stoken str);
-extern struct symbol *parse_nested_classes_for_hpacc PARAMS ((char *, int, char **, int *, char **));
+extern struct symbol *parse_nested_classes_for_hpacc (char *, int, char **,
+ int *, char **);
-extern char *find_template_name_end PARAMS ((char *));
+extern char *find_template_name_end (char *);
-extern void
-start_arglist PARAMS ((void));
+extern void start_arglist (void);
-extern int
-end_arglist PARAMS ((void));
+extern int end_arglist (void);
-extern char *
- copy_name PARAMS ((struct stoken));
+extern char *copy_name (struct stoken);
-extern void
-push_type PARAMS ((enum type_pieces));
+extern void push_type (enum type_pieces);
-extern void
-push_type_int PARAMS ((int));
+extern void push_type_int (int);
-extern enum type_pieces
-pop_type PARAMS ((void));
+extern enum type_pieces pop_type (void);
-extern int
-pop_type_int PARAMS ((void));
+extern int pop_type_int (void);
-extern int
-length_of_subexp PARAMS ((struct expression *, int));
+extern int length_of_subexp (struct expression *, int);
-extern struct type *follow_types PARAMS ((struct type *));
+extern struct type *follow_types (struct type *);
/* During parsing of a C expression, the pointer to the next character
is in this variable. */
@@ -206,6 +199,6 @@ struct op_print
named. The mapping can be derived from three sources:
REGISTER_NAME; std_regs; or a target specific alias hook. */
-extern int target_map_name_to_register PARAMS ((char *, int));
+extern int target_map_name_to_register (char *, int);
#endif /* PARSER_DEFS_H */
diff --git a/gdb/partial-stab.h b/gdb/partial-stab.h
index 9c4be680a2b..b8c9de8d1fe 100644
--- a/gdb/partial-stab.h
+++ b/gdb/partial-stab.h
@@ -46,19 +46,19 @@ switch (CUR_SYMBOL_TYPE)
case N_TEXT | N_EXT:
case N_NBTEXT | N_EXT:
- CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
goto record_it;
case N_DATA | N_EXT:
case N_NBDATA | N_EXT:
- CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA);
+ CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
goto record_it;
case N_BSS:
case N_BSS | N_EXT:
case N_NBBSS | N_EXT:
case N_SETV | N_EXT: /* FIXME, is this in BSS? */
- CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_BSS);
+ CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_BSS (objfile));
goto record_it;
case N_ABS | N_EXT:
@@ -85,7 +85,7 @@ switch (CUR_SYMBOL_TYPE)
case N_FN_SEQ:
case N_TEXT:
#ifdef DBXREAD_ONLY
- CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
SET_NAMESTRING ();
if ((namestring[0] == '-' && namestring[1] == 'l')
|| (namestring[(nsl = strlen (namestring)) - 1] == 'o'
@@ -121,7 +121,7 @@ switch (CUR_SYMBOL_TYPE)
continue;
case N_DATA:
- CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA);
+ CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
goto record_it;
case N_UNDF | N_EXT:
@@ -203,7 +203,7 @@ switch (CUR_SYMBOL_TYPE)
char *p;
int prev_textlow_not_set;
- valu = CUR_SYMBOL_VALUE + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ valu = CUR_SYMBOL_VALUE + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
prev_textlow_not_set = textlow_not_set;
@@ -423,7 +423,7 @@ switch (CUR_SYMBOL_TYPE)
switch (p[1])
{
case 'S':
- CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA);
+ CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
#ifdef STATIC_TRANSFORM_NAME
namestring = STATIC_TRANSFORM_NAME (namestring);
#endif
@@ -434,7 +434,7 @@ switch (CUR_SYMBOL_TYPE)
psymtab_language, objfile);
continue;
case 'G':
- CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA);
+ CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
/* The addresses in these entries are reported to be
wrong. See the code that reads 'G's for symtabs. */
add_psymbol_to_list (namestring, p - namestring,
@@ -575,7 +575,7 @@ switch (CUR_SYMBOL_TYPE)
continue;
case 'f':
- CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
#ifdef DBXREAD_ONLY
/* Kludges for ELF/STABS with Sun ACC */
last_function_name = namestring;
@@ -602,7 +602,7 @@ switch (CUR_SYMBOL_TYPE)
if (textlow_not_set
|| (CUR_SYMBOL_VALUE < pst->textlow
&& CUR_SYMBOL_VALUE
- != ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT)))
+ != ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))))
{
pst->textlow = CUR_SYMBOL_VALUE;
textlow_not_set = 0;
@@ -619,7 +619,7 @@ switch (CUR_SYMBOL_TYPE)
are put into the global psymtab like one would expect.
They're also in the minimal symbol table. */
case 'F':
- CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+ CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
#ifdef DBXREAD_ONLY
/* Kludges for ELF/STABS with Sun ACC */
last_function_name = namestring;
@@ -627,7 +627,7 @@ switch (CUR_SYMBOL_TYPE)
/* Do not fix textlow==0 for .o or NLM files, as 0 is a legit
value for the bottom of the text seg in those cases. */
if (CUR_SYMBOL_VALUE == ANOFFSET (objfile->section_offsets,
- SECT_OFF_TEXT))
+ SECT_OFF_TEXT (objfile)))
CUR_SYMBOL_VALUE =
find_stab_function_addr (namestring, pst->filename, objfile);
if (pst && textlow_not_set)
@@ -649,7 +649,7 @@ switch (CUR_SYMBOL_TYPE)
if (textlow_not_set
|| (CUR_SYMBOL_VALUE < pst->textlow
&& CUR_SYMBOL_VALUE
- != ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT)))
+ != ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))))
{
pst->textlow = CUR_SYMBOL_VALUE;
textlow_not_set = 0;
diff --git a/gdb/ppc-bdm.c b/gdb/ppc-bdm.c
index d34ccbef116..e10ebace770 100644
--- a/gdb/ppc-bdm.c
+++ b/gdb/ppc-bdm.c
@@ -37,14 +37,13 @@
#include "serial.h"
#include "ocd.h"
-static void bdm_ppc_open PARAMS ((char *name, int from_tty));
+static void bdm_ppc_open (char *name, int from_tty);
-static int bdm_ppc_wait PARAMS ((int pid,
- struct target_waitstatus * target_status));
+static int bdm_ppc_wait (int pid, struct target_waitstatus *target_status);
-static void bdm_ppc_fetch_registers PARAMS ((int regno));
+static void bdm_ppc_fetch_registers (int regno);
-static void bdm_ppc_store_registers PARAMS ((int regno));
+static void bdm_ppc_store_registers (int regno);
extern struct target_ops bdm_ppc_ops; /* Forward decl */
diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
index 2f242a8427e..30e580a0def 100644
--- a/gdb/ppc-linux-nat.c
+++ b/gdb/ppc-linux-nat.c
@@ -31,6 +31,9 @@
#include <fcntl.h>
#include <sys/procfs.h>
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
int
kernel_u_size ()
{
diff --git a/gdb/ppcnbsd-nat.c b/gdb/ppcnbsd-nat.c
new file mode 100644
index 00000000000..b754fa71a48
--- /dev/null
+++ b/gdb/ppcnbsd-nat.c
@@ -0,0 +1,135 @@
+/* Native-dependent code for PowerPC's running NetBSD, for GDB.
+ Copyright 1988, 1989, 1991, 1992, 1994, 1996, 2000 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include <sys/types.h>
+#include <sys/ptrace.h>
+#include <machine/reg.h>
+#include <machine/frame.h>
+
+#include "defs.h"
+#include "inferior.h"
+#include "gdbcore.h"
+
+#define RF(dst, src) \
+ memcpy(&registers[REGISTER_BYTE(dst)], &src, sizeof(src))
+
+#define RS(src, dst) \
+ memcpy(&dst, &registers[REGISTER_BYTE(src)], sizeof(dst))
+
+void
+fetch_inferior_registers (regno)
+ int regno;
+{
+ struct reg inferior_registers;
+ struct fpreg inferior_fp_registers;
+ int i;
+
+ ptrace (PT_GETREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) & inferior_registers, 0);
+ for (i = 0; i < 32; i++)
+ RF (i, inferior_registers.fixreg[i]);
+ RF (LR_REGNUM, inferior_registers.lr);
+ RF (CR_REGNUM, inferior_registers.cr);
+ RF (XER_REGNUM, inferior_registers.xer);
+ RF (CTR_REGNUM, inferior_registers.ctr);
+ RF (PC_REGNUM, inferior_registers.pc);
+
+ ptrace (PT_GETFPREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) & inferior_fp_registers, 0);
+ for (i = 0; i < 32; i++)
+ RF (FP0_REGNUM + i, inferior_fp_registers.r_regs[i]);
+
+ registers_fetched ();
+}
+
+void
+store_inferior_registers (regno)
+ int regno;
+{
+ struct reg inferior_registers;
+ struct fpreg inferior_fp_registers;
+ int i;
+
+ for (i = 0; i < 32; i++)
+ RS (i, inferior_registers.fixreg[i]);
+ RS (LR_REGNUM, inferior_registers.lr);
+ RS (CR_REGNUM, inferior_registers.cr);
+ RS (XER_REGNUM, inferior_registers.xer);
+ RS (CTR_REGNUM, inferior_registers.ctr);
+ RS (PC_REGNUM, inferior_registers.pc);
+
+ ptrace (PT_SETREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) & inferior_registers, 0);
+
+ for (i = 0; i < 32; i++)
+ RS (FP0_REGNUM + i, inferior_fp_registers.r_regs[i]);
+ ptrace (PT_SETFPREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) & inferior_fp_registers, 0);
+}
+
+struct md_core
+{
+ struct reg intreg;
+ struct fpreg freg;
+};
+
+void
+fetch_core_registers (core_reg_sect, core_reg_size, which, ignore)
+ char *core_reg_sect;
+ unsigned core_reg_size;
+ int which;
+ CORE_ADDR ignore;
+{
+ struct md_core *core_reg = (struct md_core *) core_reg_sect;
+ int i;
+
+ /* Integer registers */
+ for (i = 0; i < 32; i++)
+ RF (i, core_reg->intreg.fixreg[i]);
+ RF (LR_REGNUM, core_reg->intreg.lr);
+ RF (CR_REGNUM, core_reg->intreg.cr);
+ RF (XER_REGNUM, core_reg->intreg.xer);
+ RF (CTR_REGNUM, core_reg->intreg.ctr);
+ RF (PC_REGNUM, core_reg->intreg.pc);
+
+ /* Floating point registers */
+ for (i = 0; i < 32; i++)
+ RF (FP0_REGNUM + i, core_reg->freg.r_regs[i]);
+
+ registers_fetched ();
+}
+
+/* Register that we are able to handle ppcnbsd core file formats.
+ FIXME: is this really bfd_target_unknown_flavour? */
+
+static struct core_fns ppcnbsd_core_fns =
+{
+ bfd_target_unknown_flavour, /* core_flavour */
+ default_check_format, /* check_format */
+ default_core_sniffer, /* core_sniffer */
+ fetch_core_registers, /* core_read_registers */
+ NULL /* next */
+};
+
+void
+_initialize_ppcnbsd_nat ()
+{
+ add_core_fns (&ppcnbsd_core_fns);
+}
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index 5068cc96c48..dcc3329d676 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -121,60 +121,61 @@ static int display_number;
/* Prototypes for exported functions. */
-void output_command PARAMS ((char *, int));
+void output_command (char *, int);
-void _initialize_printcmd PARAMS ((void));
+void _initialize_printcmd (void);
/* Prototypes for local functions. */
-static void delete_display PARAMS ((int));
+static void delete_display (int);
-static void enable_display PARAMS ((char *, int));
+static void enable_display (char *, int);
-static void disable_display_command PARAMS ((char *, int));
+static void disable_display_command (char *, int);
-static void disassemble_command PARAMS ((char *, int));
+static void disassemble_command (char *, int);
-static void printf_command PARAMS ((char *, int));
+static void printf_command (char *, int);
static void print_frame_nameless_args (struct frame_info *, long,
int, int, struct ui_file *);
-static void display_info PARAMS ((char *, int));
+static void display_info (char *, int);
-static void do_one_display PARAMS ((struct display *));
+static void do_one_display (struct display *);
-static void undisplay_command PARAMS ((char *, int));
+static void undisplay_command (char *, int);
-static void free_display PARAMS ((struct display *));
+static void free_display (struct display *);
-static void display_command PARAMS ((char *, int));
+static void display_command (char *, int);
-void x_command PARAMS ((char *, int));
+void x_command (char *, int);
-static void address_info PARAMS ((char *, int));
+static void address_info (char *, int);
-static void set_command PARAMS ((char *, int));
+static void set_command (char *, int);
-static void call_command PARAMS ((char *, int));
+static void call_command (char *, int);
-static void inspect_command PARAMS ((char *, int));
+static void inspect_command (char *, int);
-static void print_command PARAMS ((char *, int));
+static void print_command (char *, int);
-static void print_command_1 PARAMS ((char *, int, int));
+static void print_command_1 (char *, int, int);
-static void validate_format PARAMS ((struct format_data, char *));
+static void validate_format (struct format_data, char *);
-static void do_examine PARAMS ((struct format_data, CORE_ADDR addr, asection * section));
+static void do_examine (struct format_data, CORE_ADDR addr,
+ asection * section);
static void print_formatted (value_ptr, int, int, struct ui_file *);
-static struct format_data decode_format PARAMS ((char **, int, int));
+static struct format_data decode_format (char **, int, int);
static int print_insn (CORE_ADDR, struct ui_file *);
-static void sym_info PARAMS ((char *, int));
+static void sym_info (char *, int);
/* Decode a format specification. *STRING_PTR should point to it.
@@ -537,8 +538,8 @@ set_next_address (addr)
/* Make address available to the user as $_. */
set_internalvar (lookup_internalvar ("_"),
- value_from_longest (lookup_pointer_type (builtin_type_void),
- (LONGEST) addr));
+ value_from_pointer (lookup_pointer_type (builtin_type_void),
+ addr));
}
/* Optionally print address ADDR symbolically as <SYMBOL+OFFSET> on STREAM,
@@ -562,12 +563,15 @@ print_address_symbolic (addr, stream, do_demangle, leadin)
int offset = 0;
int line = 0;
- struct cleanup *cleanup_chain = make_cleanup (free, name);
- if (print_symbol_filename)
- make_cleanup (free, filename);
+ /* throw away both name and filename */
+ struct cleanup *cleanup_chain = make_cleanup (free_current_contents, &name);
+ make_cleanup (free_current_contents, &filename);
if (build_address_symbolic (addr, do_demangle, &name, &offset, &filename, &line, &unmapped))
- return;
+ {
+ do_cleanups (cleanup_chain);
+ return;
+ }
fputs_filtered (leadin, stream);
if (unmapped)
@@ -932,8 +936,7 @@ print_command_1 (exp, inspect, voidprint)
{
struct type *type;
expr = parse_expression (exp);
- old_chain = make_cleanup ((make_cleanup_func) free_current_contents,
- &expr);
+ old_chain = make_cleanup (free_current_contents, &expr);
cleanup = 1;
val = evaluate_expression (expr);
@@ -1046,7 +1049,7 @@ output_command (exp, from_tty)
}
expr = parse_expression (exp);
- old_chain = make_cleanup ((make_cleanup_func) free_current_contents, &expr);
+ old_chain = make_cleanup (free_current_contents, &expr);
val = evaluate_expression (expr);
@@ -1069,8 +1072,8 @@ set_command (exp, from_tty)
int from_tty;
{
struct expression *expr = parse_expression (exp);
- register struct cleanup *old_chain
- = make_cleanup ((make_cleanup_func) free_current_contents, &expr);
+ register struct cleanup *old_chain =
+ make_cleanup (free_current_contents, &expr);
evaluate_expression (expr);
do_cleanups (old_chain);
}
@@ -1367,8 +1370,7 @@ x_command (exp, from_tty)
But don't clobber a user-defined command's definition. */
if (from_tty)
*exp = 0;
- old_chain = make_cleanup ((make_cleanup_func) free_current_contents,
- &expr);
+ old_chain = make_cleanup (free_current_contents, &expr);
val = evaluate_expression (expr);
if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_REF)
val = value_ind (val);
@@ -1396,10 +1398,11 @@ x_command (exp, from_tty)
{
/* Make last address examined available to the user as $_. Use
the correct pointer type. */
+ struct type *pointer_type
+ = lookup_pointer_type (VALUE_TYPE (last_examine_value));
set_internalvar (lookup_internalvar ("_"),
- value_from_longest (
- lookup_pointer_type (VALUE_TYPE (last_examine_value)),
- (LONGEST) last_examine_address));
+ value_from_pointer (pointer_type,
+ last_examine_address));
/* Make contents of last address examined available to the user as $__. */
/* If the last value has not been fetched from memory then don't
@@ -1850,7 +1853,7 @@ print_frame_args (func, fi, num, stream)
struct ui_stream *stb;
stb = ui_out_stream_new (uiout);
- old_chain = make_cleanup ((make_cleanup_func) ui_out_stream_delete, stb);
+ old_chain = make_cleanup_ui_out_stream_delete (stb);
#endif /* UI_OUT */
if (func)
@@ -1877,8 +1880,8 @@ print_frame_args (func, fi, num, stream)
/* Compute address of next argument by adding the size of
this argument and rounding to an int boundary. */
- current_offset
- = ((current_offset + arg_size + sizeof (int) - 1)
+ current_offset =
+ ((current_offset + arg_size + sizeof (int) - 1)
& ~(sizeof (int) - 1));
/* If this is the highest offset seen yet, set highest_offset. */
@@ -2106,8 +2109,7 @@ printf_command (arg, from_tty)
struct cleanup *old_cleanups;
val_args = (value_ptr *) xmalloc (allocated_args * sizeof (value_ptr));
- old_cleanups = make_cleanup ((make_cleanup_func) free_current_contents,
- &val_args);
+ old_cleanups = make_cleanup (free_current_contents, &val_args);
if (s == 0)
error_no_arg ("format-control string and values to print");
@@ -2318,15 +2320,14 @@ printf_command (arg, from_tty)
{
char c;
QUIT;
- read_memory_section (tem + j, &c, 1,
- VALUE_BFD_SECTION (val_args[i]));
+ read_memory (tem + j, &c, 1);
if (c == 0)
break;
}
/* Copy the string contents into a string inside GDB. */
str = (char *) alloca (j + 1);
- read_memory_section (tem, str, j, VALUE_BFD_SECTION (val_args[i]));
+ read_memory (tem, str, j);
str[j] = 0;
printf_filtered (current_substring, str);
diff --git a/gdb/proc-api.c b/gdb/proc-api.c
index a3629d747a5..cf12d424d65 100644
--- a/gdb/proc-api.c
+++ b/gdb/proc-api.c
@@ -36,7 +36,9 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <sys/types.h>
#include <sys/procfs.h>
#include <sys/proc.h> /* for struct proc */
+#ifdef HAVE_SYS_USER_H
#include <sys/user.h> /* for struct user */
+#endif
#include <fcntl.h> /* for O_RDWR etc. */
#include <sys/wait.h>
@@ -53,12 +55,20 @@ struct trans {
char *desc; /* Short description of value */
};
-static int procfs_trace = 1;
-/*static int info_verbose = 1;*/ /* kludge */
+static int procfs_trace = 0;
static FILE *procfs_file = NULL;
static char *procfs_filename = "procfs_trace";
static void
+prepare_to_trace (void)
+{
+ if (procfs_trace) /* if procfs tracing turned on */
+ if (procfs_file == NULL) /* if output file not yet open */
+ if (procfs_filename != NULL) /* if output filename known */
+ procfs_file = fopen (procfs_filename, "a"); /* open output file */
+}
+
+static void
set_procfs_trace_cmd (args, from_tty, c)
char *args;
int from_tty;
@@ -110,8 +120,12 @@ static struct trans ioctl_table[] = {
{ PIOCGETPTIMER, "PIOCGETPTIMER", "get process timers" },
#endif /* irix event counters */
{ PIOCGENTRY, "PIOCGENTRY", "get traced syscall entry set" },
+#if defined (PIOCGETPR)
{ PIOCGETPR, "PIOCGETPR", "read struct proc" },
+#endif
+#if defined (PIOCGETU)
{ PIOCGETU, "PIOCGETU", "read user area" },
+#endif
#if defined (PIOCGETUTK) && (defined(KERNEL) || defined(SHOW_UTT)) /* osf */
{ PIOCGETUTK, "PIOCGETUTK", "get the utask struct" },
#endif
@@ -218,11 +232,10 @@ ioctl_with_trace (fd, opcode, ptr, file, line)
{
int i, ret, arg1;
+ prepare_to_trace ();
+
if (procfs_trace)
{
- if (procfs_file == NULL && procfs_filename != NULL)
- procfs_file = fopen (procfs_filename, "a");
-
for (i = 0; ioctl_table[i].name != NULL; i++)
if (ioctl_table[i].value == opcode)
break;
@@ -364,13 +377,15 @@ ioctl_with_trace (fd, opcode, ptr, file, line)
if (procfs_file)
fflush (procfs_file);
}
+ errno = 0;
ret = ioctl (fd, opcode, ptr);
if (procfs_trace && ret < 0)
{
fprintf (procfs_file ? procfs_file : stdout,
- "[ioctl (%s) FAILED!]\n",
+ "[ioctl (%s) FAILED! (%s)]\n",
ioctl_table[i].name != NULL ?
- ioctl_table[i].name : "<unknown>");
+ ioctl_table[i].name : "<unknown>",
+ safe_strerror (errno));
if (procfs_file)
fflush (procfs_file);
}
@@ -438,22 +453,21 @@ static struct trans rw_table[] = {
static off_t lseek_offset;
int
-write_with_trace (fd, arg, len, file, line)
+write_with_trace (fd, varg, len, file, line)
int fd;
- long *arg;
+ void *varg;
size_t len;
char *file;
int line;
{
int i;
- long opcode = arg[0];
int ret;
+ long *arg = (long *) varg;
+ prepare_to_trace ();
if (procfs_trace)
{
- if (procfs_file == NULL && procfs_filename != NULL)
- procfs_file = fopen (procfs_filename, "a");
-
+ long opcode = arg[0];
for (i = 0; rw_table[i].name != NULL; i++)
if (rw_table[i].value == opcode)
break;
@@ -558,7 +572,8 @@ write_with_trace (fd, arg, len, file, line)
if (len == sizeof (break_insn) &&
memcmp (arg, &break_insn, len) == 0)
fprintf (procfs_file ? procfs_file : stdout,
- "write (<breakpoint at 0x%08x>) \n", lseek_offset);
+ "write (<breakpoint at 0x%08lx>) \n",
+ (unsigned long) lseek_offset);
else if (rw_table[i].name)
fprintf (procfs_file ? procfs_file : stdout,
"write (%s) %s\n",
@@ -568,11 +583,12 @@ write_with_trace (fd, arg, len, file, line)
{
if (lseek_offset != -1)
fprintf (procfs_file ? procfs_file : stdout,
- "write (<unknown>, %d bytes at 0x%08x) \n",
- len, lseek_offset);
+ "write (<unknown>, %lud bytes at 0x%08lx) \n",
+ (unsigned long) len, (unsigned long) lseek_offset);
else
fprintf (procfs_file ? procfs_file : stdout,
- "write (<unknown>, %d bytes) \n", len);
+ "write (<unknown>, %lud bytes) \n",
+ (unsigned long) len);
}
break;
}
@@ -580,13 +596,15 @@ write_with_trace (fd, arg, len, file, line)
if (procfs_file)
fflush (procfs_file);
}
- ret = write (fd, arg, len);
+ errno = 0;
+ ret = write (fd, (void *) arg, len);
if (procfs_trace && ret != len)
{
fprintf (procfs_file ? procfs_file : stdout,
- "[write (%s) FAILED!\n",
+ "[write (%s) FAILED! (%s)]\n",
rw_table[i].name != NULL ?
- rw_table[i].name : "<unknown>");
+ rw_table[i].name : "<unknown>",
+ safe_strerror (errno));
if (procfs_file)
fflush (procfs_file);
}
@@ -605,34 +623,15 @@ lseek_with_trace (fd, offset, whence, file, line)
{
off_t ret;
-#if 0 /* don't need output, just need address */
- if (procfs_trace)
- {
- if (procfs_file == NULL && procfs_filename != NULL)
- procfs_file = fopen (procfs_filename, "a");
-
- if (info_verbose)
- fprintf (procfs_file ? procfs_file : stdout,
- "%s:%d -- ", file, line);
- fprintf (procfs_file ? procfs_file : stdout,
- "lseek (0x%08x, %s) \n", offset,
- whence == SEEK_SET ? "SEEK_SET" :
- whence == SEEK_CUR ? "SEEK_CUR" :
- whence == SEEK_END ? "SEEK_END" :
- "<unknown whence>");
- if (procfs_file)
- fflush (procfs_file);
- }
-#endif
+ prepare_to_trace ();
+ errno = 0;
ret = lseek (fd, offset, whence);
lseek_offset = ret;
- if (procfs_trace && ret == -1)
+ if (procfs_trace && (ret == -1 || errno != 0))
{
- if (procfs_file == NULL && procfs_filename != NULL)
- procfs_file = fopen (procfs_filename, "a");
-
fprintf (procfs_file ? procfs_file : stdout,
- "[lseek (0x%08x) FAILED!\n", offset);
+ "[lseek (0x%08lx) FAILED! (%s)]\n",
+ (unsigned long) offset, safe_strerror (errno));
if (procfs_file)
fflush (procfs_file);
}
@@ -649,24 +648,37 @@ open_with_trace (filename, mode, file, line)
char *file;
int line;
{
- int ret = open (filename, mode);
+ int ret;
+ prepare_to_trace ();
+ errno = 0;
+ ret = open (filename, mode);
if (procfs_trace)
{
- if (procfs_file == NULL && procfs_filename != NULL)
- procfs_file = fopen (procfs_filename, "a");
-
if (info_verbose)
fprintf (procfs_file ? procfs_file : stdout,
"%s:%d -- ", file, line);
- fprintf (procfs_file ? procfs_file : stdout,
- "%d = open (%s, ", ret, filename);
- if (mode == O_RDONLY)
- fprintf (procfs_file ? procfs_file : stdout, "O_RDONLY) %d\n", line);
- else if (mode == O_WRONLY)
- fprintf (procfs_file ? procfs_file : stdout, "O_WRONLY) %d\n", line);
- else if (mode == O_RDWR)
- fprintf (procfs_file ? procfs_file : stdout, "O_RDWR) %d\n", line);
+
+ if (errno)
+ {
+ fprintf (procfs_file ? procfs_file : stdout,
+ "[open FAILED! (%s) line %d]\\n",
+ safe_strerror (errno), line);
+ }
+ else
+ {
+ fprintf (procfs_file ? procfs_file : stdout,
+ "%d = open (%s, ", ret, filename);
+ if (mode == O_RDONLY)
+ fprintf (procfs_file ? procfs_file : stdout, "O_RDONLY) %d\n",
+ line);
+ else if (mode == O_WRONLY)
+ fprintf (procfs_file ? procfs_file : stdout, "O_WRONLY) %d\n",
+ line);
+ else if (mode == O_RDWR)
+ fprintf (procfs_file ? procfs_file : stdout, "O_RDWR) %d\n",
+ line);
+ }
if (procfs_file)
fflush (procfs_file);
}
@@ -680,18 +692,22 @@ close_with_trace (fd, file, line)
char *file;
int line;
{
- int ret = close (fd);
+ int ret;
+ prepare_to_trace ();
+ errno = 0;
+ ret = close (fd);
if (procfs_trace)
{
- if (procfs_file == NULL && procfs_filename != NULL)
- procfs_file = fopen (procfs_filename, "a");
-
if (info_verbose)
fprintf (procfs_file ? procfs_file : stdout,
"%s:%d -- ", file, line);
- fprintf (procfs_file ? procfs_file : stdout,
- "%d = close (%d)\n", ret, fd);
+ if (errno)
+ fprintf (procfs_file ? procfs_file : stdout,
+ "[close FAILED! (%s)]\n", safe_strerror (errno));
+ else
+ fprintf (procfs_file ? procfs_file : stdout,
+ "%d = close (%d)\n", ret, fd);
if (procfs_file)
fflush (procfs_file);
}
@@ -699,7 +715,7 @@ close_with_trace (fd, file, line)
return ret;
}
-int
+pid_t
wait_with_trace (wstat, file, line)
int *wstat;
char *file;
@@ -707,11 +723,9 @@ wait_with_trace (wstat, file, line)
{
int ret, lstat = 0;
+ prepare_to_trace ();
if (procfs_trace)
{
- if (procfs_file == NULL && procfs_filename != NULL)
- procfs_file = fopen (procfs_filename, "a");
-
if (info_verbose)
fprintf (procfs_file ? procfs_file : stdout,
"%s:%d -- ", file, line);
@@ -720,11 +734,16 @@ wait_with_trace (wstat, file, line)
if (procfs_file)
fflush (procfs_file);
}
+ errno = 0;
ret = wait (&lstat);
if (procfs_trace)
{
- fprintf (procfs_file ? procfs_file : stdout,
- "returned pid %d, status 0x%x\n", ret, lstat);
+ if (errno)
+ fprintf (procfs_file ? procfs_file : stdout,
+ "[wait FAILED! (%s)]\n", safe_strerror (errno));
+ else
+ fprintf (procfs_file ? procfs_file : stdout,
+ "returned pid %d, status 0x%x\n", ret, lstat);
if (procfs_file)
fflush (procfs_file);
}
@@ -740,11 +759,9 @@ procfs_note (msg, file, line)
char *file;
int line;
{
+ prepare_to_trace ();
if (procfs_trace)
{
- if (procfs_file == NULL && procfs_filename != NULL)
- procfs_file = fopen (procfs_filename, "a");
-
if (info_verbose)
fprintf (procfs_file ? procfs_file : stdout,
"%s:%d -- ", file, line);
@@ -761,11 +778,9 @@ proc_prettyfprint_status (flags, why, what, thread)
int what;
int thread;
{
+ prepare_to_trace ();
if (procfs_trace)
{
- if (procfs_file == NULL && procfs_filename != NULL)
- procfs_file = fopen (procfs_filename, "a");
-
if (thread)
fprintf (procfs_file ? procfs_file : stdout,
"Thread %d: ", thread);
@@ -789,7 +804,7 @@ _initialize_proc_api ()
c = add_set_cmd ("procfs-trace", no_class,
var_boolean, (char *) &procfs_trace,
- "Set tracing for /proc ioctl calls.\n", &setlist);
+ "Set tracing for /proc api calls.\n", &setlist);
add_show_from_set (c, &showlist);
c->function.sfunc = set_procfs_trace_cmd;
@@ -800,9 +815,4 @@ _initialize_proc_api ()
add_show_from_set (c, &showlist);
c->function.sfunc = set_procfs_file_cmd;
-
-#ifdef TRACE_PROCFS
- if (procfs_file == NULL && procfs_filename != NULL)
- procfs_file = fopen (procfs_filename, "a");
-#endif
}
diff --git a/gdb/proc-events.c b/gdb/proc-events.c
index 2a430d8a6e6..8af9671a2cc 100644
--- a/gdb/proc-events.c
+++ b/gdb/proc-events.c
@@ -1389,7 +1389,7 @@ init_syscall_table (void)
#if defined (SYS_yield)
syscall_table[SYS_yield] = "yield";
#endif
-};
+}
/*
* Prettyprint a single syscall by number.
diff --git a/gdb/proc-utils.h b/gdb/proc-utils.h
index cdab0c3723e..7274550d923 100644
--- a/gdb/proc-utils.h
+++ b/gdb/proc-utils.h
@@ -18,12 +18,18 @@ along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+/*
+ * Pretty-print functions for /proc data
+ */
+
extern void
proc_prettyprint_why (unsigned long why, unsigned long what, int verbose);
-extern void proc_prettyprint_syscalls (sysset_t *sysset, int verbose);
+extern void
+proc_prettyprint_syscalls (sysset_t *sysset, int verbose);
-extern void proc_prettyprint_syscall (int num, int verbose);
+extern void
+proc_prettyprint_syscall (int num, int verbose);
extern void proc_prettyprint_flags (unsigned long flags, int verbose);
@@ -43,10 +49,46 @@ extern void
proc_prettyfprint_flags (FILE *file, unsigned long flags, int verbose);
extern void
-proc_prettyfprint_why (FILE *file, unsigned long why, unsigned long what, int verbose);
+proc_prettyfprint_why (FILE *file, unsigned long why,
+ unsigned long what, int verbose);
extern void
proc_prettyfprint_fault (FILE *file, int faultno, int verbose);
extern void
proc_prettyfprint_syscalls (FILE *file, sysset_t *sysset, int verbose);
+
+extern void
+proc_prettyfprint_status (long, int, int, int);
+
+/*
+ * Trace functions for /proc api.
+ */
+
+extern int write_with_trace (int, void *, size_t, char *, int);
+extern off_t lseek_with_trace (int, off_t, int, char *, int);
+extern int ioctl_with_trace (int, long, void *, char *, int);
+extern pid_t wait_with_trace (int *, char *, int);
+extern int open_with_trace (char *, int, char *, int);
+extern int close_with_trace (int, char *, int);
+extern void procfs_note (char *, char *, int);
+
+#ifdef PROCFS_TRACE
+/*
+ * Debugging code:
+ *
+ * These macros allow me to trace the system calls that we make
+ * to control the child process. This is quite handy for comparing
+ * with the older version of procfs.
+ */
+
+#define write(X,Y,Z) write_with_trace (X, Y, Z, __FILE__, __LINE__)
+#define lseek(X,Y,Z) lseek_with_trace (X, Y, Z, __FILE__, __LINE__)
+#define ioctl(X,Y,Z) ioctl_with_trace (X, Y, Z, __FILE__, __LINE__)
+#define open(X,Y) open_with_trace (X, Y, __FILE__, __LINE__)
+#define close(X) close_with_trace (X, __FILE__, __LINE__)
+#define wait(X) wait_with_trace (X, __FILE__, __LINE__)
+#endif
+#define PROCFS_NOTE(X) procfs_note (X, __FILE__, __LINE__)
+#define PROC_PRETTYFPRINT_STATUS(X,Y,Z,T) \
+ proc_prettyfprint_status (X, Y, Z, T)
diff --git a/gdb/procfs.c b/gdb/procfs.c
index f385e941b2b..b127c5f37b4 100644
--- a/gdb/procfs.c
+++ b/gdb/procfs.c
@@ -1,5 +1,5 @@
/* Machine independent support for SVR4 /proc (process file system) for GDB.
- Copyright 1999 Free Software Foundation, Inc.
+ Copyright 1999-2000 Free Software Foundation, Inc.
Written by Michael Snyder at Cygnus Solutions.
Based on work by Fred Fish, Stu Grossman, Geoff Noer, and others.
@@ -38,8 +38,6 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <signal.h>
#include <ctype.h>
-#include "proc-utils.h"
-
/*
* PROCFS.C
*
@@ -78,13 +76,22 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef NEW_PROC_API
#include <sys/types.h>
-#include <dirent.h> /* opendir/readdir, for listing the LWP's */
+#include "gdb_dirent.h" /* opendir/readdir, for listing the LWP's */
#endif
#include <fcntl.h> /* for O_RDONLY */
#include <unistd.h> /* for "X_OK" */
#include "gdb_stat.h" /* for struct stat */
+/* Note: procfs-utils.h must be included after the above system header
+ files, because it redefines various system calls using macros.
+ This may be incompatible with the prototype declarations. */
+
+#include "proc-utils.h"
+
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
/* =================== TARGET_OPS "MODULE" =================== */
/*
@@ -92,29 +99,27 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
*/
static void procfs_open PARAMS((char *, int));
-static void procfs_attach PARAMS ((char *, int));
-static void procfs_detach PARAMS ((char *, int));
-static void procfs_resume PARAMS ((int, int, enum target_signal));
-static int procfs_can_run PARAMS ((void));
-static void procfs_stop PARAMS ((void));
-static void procfs_files_info PARAMS ((struct target_ops *));
-static void procfs_fetch_registers PARAMS ((int));
-static void procfs_store_registers PARAMS ((int));
-static void procfs_notice_signals PARAMS ((int));
-static void procfs_prepare_to_store PARAMS ((void));
-static void procfs_kill_inferior PARAMS ((void));
-static void procfs_mourn_inferior PARAMS ((void));
-static void procfs_create_inferior PARAMS ((char *, char *, char **));
-static int procfs_wait PARAMS ((int,
- struct target_waitstatus *));
-static int procfs_xfer_memory PARAMS ((CORE_ADDR,
- char *, int, int,
- struct target_ops *));
-
-static int procfs_thread_alive PARAMS ((int));
-
-void procfs_find_new_threads PARAMS ((void));
-char *procfs_pid_to_str PARAMS ((int));
+static void procfs_attach (char *, int);
+static void procfs_detach (char *, int);
+static void procfs_resume (int, int, enum target_signal);
+static int procfs_can_run (void);
+static void procfs_stop (void);
+static void procfs_files_info (struct target_ops *);
+static void procfs_fetch_registers (int);
+static void procfs_store_registers (int);
+static void procfs_notice_signals (int);
+static void procfs_prepare_to_store (void);
+static void procfs_kill_inferior (void);
+static void procfs_mourn_inferior (void);
+static void procfs_create_inferior (char *, char *, char **);
+static int procfs_wait (int, struct target_waitstatus *);
+static int procfs_xfer_memory (CORE_ADDR,
+ char *, int, int, struct target_ops *);
+
+static int procfs_thread_alive (int);
+
+void procfs_find_new_threads (void);
+char *procfs_pid_to_str (int);
struct target_ops procfs_ops; /* the target vector */
@@ -154,8 +159,8 @@ init_procfs_ops ()
procfs_ops.to_thread_alive = procfs_thread_alive;
procfs_ops.to_pid_to_str = procfs_pid_to_str;
- procfs_ops.to_has_all_memory = 1;
- procfs_ops.to_has_memory = 1;
+ procfs_ops.to_has_all_memory = 1;
+ procfs_ops.to_has_memory = 1;
procfs_ops.to_has_execution = 1;
procfs_ops.to_has_stack = 1;
procfs_ops.to_has_registers = 1;
@@ -167,36 +172,6 @@ init_procfs_ops ()
/* =================== END, TARGET_OPS "MODULE" =================== */
/*
- * Temporary debugging code:
- *
- * These macros allow me to trace the system calls that we make
- * to control the child process. This is quite handy for comparing
- * with the older version of procfs.
- */
-
-#ifdef TRACE_PROCFS
-#ifdef NEW_PROC_API
-extern int write_with_trace PARAMS ((int, void *, size_t, char *, int));
-extern off_t lseek_with_trace PARAMS ((int, off_t, int, char *, int));
-#define write(X,Y,Z) write_with_trace (X, Y, Z, __FILE__, __LINE__)
-#define lseek(X,Y,Z) lseek_with_trace (X, Y, Z, __FILE__, __LINE__)
-#else
-extern int ioctl_with_trace PARAMS ((int, long, void *, char *, int));
-#define ioctl(X,Y,Z) ioctl_with_trace (X, Y, Z, __FILE__, __LINE__)
-#endif
-#define open(X,Y) open_with_trace (X, Y, __FILE__, __LINE__)
-#define close(X) close_with_trace (X, __FILE__, __LINE__)
-#define wait(X) wait_with_trace (X, __FILE__, __LINE__)
-#define PROCFS_NOTE(X) procfs_note (X, __FILE__, __LINE__)
-#define PROC_PRETTYFPRINT_STATUS(X,Y,Z,T) \
-proc_prettyfprint_status (X, Y, Z, T)
-#else
-#define PROCFS_NOTE(X)
-#define PROC_PRETTYFPRINT_STATUS(X,Y,Z,T)
-#endif
-
-
-/*
* World Unification:
*
* Put any typedefs, defines etc. here that are required for
@@ -271,24 +246,6 @@ typedef prstatus_t gdb_prstatus_t;
typedef prstatus_t gdb_lwpstatus_t;
#endif /* NEW_PROC_API */
-
-/* These #ifdefs are for sol2.x in particular. sol2.x has
- both a "gregset_t" and a "prgregset_t", which have
- similar uses but different layouts. sol2.x gdb tries to
- use prgregset_t (and prfpregset_t) everywhere. */
-
-#ifdef GDB_GREGSET_TYPE
- typedef GDB_GREGSET_TYPE gdb_gregset_t;
-#else
- typedef gregset_t gdb_gregset_t;
-#endif
-
-#ifdef GDB_FPREGSET_TYPE
- typedef GDB_FPREGSET_TYPE gdb_fpregset_t;
-#else
- typedef fpregset_t gdb_fpregset_t;
-#endif
-
/* Provide default composite pid manipulation macros for systems that
don't have threads. */
@@ -350,14 +307,14 @@ static char errmsg[128]; /* shared error msg buffer */
/* Function prototypes for procinfo module: */
-static procinfo *find_procinfo_or_die PARAMS ((int pid, int tid));
-static procinfo *find_procinfo PARAMS ((int pid, int tid));
-static procinfo *create_procinfo PARAMS ((int pid, int tid));
-static void destroy_procinfo PARAMS ((procinfo *p));
-static void dead_procinfo PARAMS ((procinfo *p,
- char *msg, int killp));
-static int open_procinfo_files PARAMS ((procinfo *p, int which));
-static void close_procinfo_files PARAMS ((procinfo *p));
+static procinfo *find_procinfo_or_die (int pid, int tid);
+static procinfo *find_procinfo (int pid, int tid);
+static procinfo *create_procinfo (int pid, int tid);
+static void destroy_procinfo (procinfo * p);
+static void do_destroy_procinfo_cleanup (void *);
+static void dead_procinfo (procinfo * p, char *msg, int killp);
+static int open_procinfo_files (procinfo * p, int which);
+static void close_procinfo_files (procinfo * p);
/* The head of the procinfo list: */
static procinfo * procinfo_list;
@@ -590,7 +547,7 @@ open_procinfo_files (pi, which)
* Function: create_procinfo
*
* Allocate a data structure and link it into the procinfo list.
- * (First tries to find a pre-existing one (FIXME: why???)
+ * (First tries to find a pre-existing one (FIXME: why?)
*
* Return: pointer to new procinfo struct.
*/
@@ -709,6 +666,12 @@ destroy_procinfo (pi)
}
}
+static void
+do_destroy_procinfo_cleanup (void *pi)
+{
+ destroy_procinfo (pi);
+}
+
enum { NOKILL, KILL };
/*
@@ -759,56 +722,55 @@ dead_procinfo (pi, msg, kill_p)
* functions, we do our best to hide them all in here.
*/
-int proc_get_status PARAMS ((procinfo *pi));
-long proc_flags PARAMS ((procinfo *pi));
-int proc_why PARAMS ((procinfo *pi));
-int proc_what PARAMS ((procinfo *pi));
-int proc_set_run_on_last_close PARAMS ((procinfo *pi));
-int proc_unset_run_on_last_close PARAMS ((procinfo *pi));
-int proc_set_inherit_on_fork PARAMS ((procinfo *pi));
-int proc_unset_inherit_on_fork PARAMS ((procinfo *pi));
-int proc_set_async PARAMS ((procinfo *pi));
-int proc_unset_async PARAMS ((procinfo *pi));
-int proc_stop_process PARAMS ((procinfo *pi));
-int proc_trace_signal PARAMS ((procinfo *pi, int signo));
-int proc_ignore_signal PARAMS ((procinfo *pi, int signo));
-int proc_clear_current_fault PARAMS ((procinfo *pi));
-int proc_set_current_signal PARAMS ((procinfo *pi, int signo));
-int proc_clear_current_signal PARAMS ((procinfo *pi));
-int proc_set_gregs PARAMS ((procinfo *pi));
-int proc_set_fpregs PARAMS ((procinfo *pi));
-int proc_wait_for_stop PARAMS ((procinfo *pi));
-int proc_run_process PARAMS ((procinfo *pi, int step, int signo));
-int proc_kill PARAMS ((procinfo *pi, int signo));
-int proc_parent_pid PARAMS ((procinfo *pi));
-int proc_get_nthreads PARAMS ((procinfo *pi));
-int proc_get_current_thread PARAMS ((procinfo *pi));
-int proc_set_held_signals PARAMS ((procinfo *pi, sigset_t *sighold));
-int proc_set_traced_sysexit PARAMS ((procinfo *pi, sysset_t *sysset));
-int proc_set_traced_sysentry PARAMS ((procinfo *pi, sysset_t *sysset));
-int proc_set_traced_faults PARAMS ((procinfo *pi, fltset_t *fltset));
-int proc_set_traced_signals PARAMS ((procinfo *pi, sigset_t *sigset));
-
-int proc_update_threads PARAMS ((procinfo *pi));
-int proc_iterate_over_threads PARAMS ((procinfo *pi,
- int (*func) PARAMS ((procinfo *,
- procinfo *,
- void *)),
- void *ptr));
-
-gdb_gregset_t *proc_get_gregs PARAMS ((procinfo *pi));
-gdb_fpregset_t *proc_get_fpregs PARAMS ((procinfo *pi));
-sysset_t *proc_get_traced_sysexit PARAMS ((procinfo *pi, sysset_t *save));
-sysset_t *proc_get_traced_sysentry PARAMS ((procinfo *pi, sysset_t *save));
-fltset_t *proc_get_traced_faults PARAMS ((procinfo *pi, fltset_t *save));
-sigset_t *proc_get_traced_signals PARAMS ((procinfo *pi, sigset_t *save));
-sigset_t *proc_get_held_signals PARAMS ((procinfo *pi, sigset_t *save));
-sigset_t *proc_get_pending_signals PARAMS ((procinfo *pi, sigset_t *save));
-struct sigaction *proc_get_signal_actions PARAMS ((procinfo *pi,
- struct sigaction *save));
-
-void proc_warn PARAMS ((procinfo *pi, char *func, int line));
-void proc_error PARAMS ((procinfo *pi, char *func, int line));
+int proc_get_status (procinfo * pi);
+long proc_flags (procinfo * pi);
+int proc_why (procinfo * pi);
+int proc_what (procinfo * pi);
+int proc_set_run_on_last_close (procinfo * pi);
+int proc_unset_run_on_last_close (procinfo * pi);
+int proc_set_inherit_on_fork (procinfo * pi);
+int proc_unset_inherit_on_fork (procinfo * pi);
+int proc_set_async (procinfo * pi);
+int proc_unset_async (procinfo * pi);
+int proc_stop_process (procinfo * pi);
+int proc_trace_signal (procinfo * pi, int signo);
+int proc_ignore_signal (procinfo * pi, int signo);
+int proc_clear_current_fault (procinfo * pi);
+int proc_set_current_signal (procinfo * pi, int signo);
+int proc_clear_current_signal (procinfo * pi);
+int proc_set_gregs (procinfo * pi);
+int proc_set_fpregs (procinfo * pi);
+int proc_wait_for_stop (procinfo * pi);
+int proc_run_process (procinfo * pi, int step, int signo);
+int proc_kill (procinfo * pi, int signo);
+int proc_parent_pid (procinfo * pi);
+int proc_get_nthreads (procinfo * pi);
+int proc_get_current_thread (procinfo * pi);
+int proc_set_held_signals (procinfo * pi, sigset_t * sighold);
+int proc_set_traced_sysexit (procinfo * pi, sysset_t * sysset);
+int proc_set_traced_sysentry (procinfo * pi, sysset_t * sysset);
+int proc_set_traced_faults (procinfo * pi, fltset_t * fltset);
+int proc_set_traced_signals (procinfo * pi, sigset_t * sigset);
+
+int proc_update_threads (procinfo * pi);
+int proc_iterate_over_threads (procinfo * pi,
+ int (*func) PARAMS ((procinfo *,
+ procinfo *,
+ void *)), void *ptr);
+
+gdb_gregset_t *proc_get_gregs (procinfo * pi);
+gdb_fpregset_t *proc_get_fpregs (procinfo * pi);
+sysset_t *proc_get_traced_sysexit (procinfo * pi, sysset_t * save);
+sysset_t *proc_get_traced_sysentry (procinfo * pi, sysset_t * save);
+fltset_t *proc_get_traced_faults (procinfo * pi, fltset_t * save);
+sigset_t *proc_get_traced_signals (procinfo * pi, sigset_t * save);
+sigset_t *proc_get_held_signals (procinfo * pi, sigset_t * save);
+sigset_t *proc_get_pending_signals (procinfo * pi, sigset_t * save);
+struct sigaction *proc_get_signal_actions (procinfo * pi,
+ struct sigaction *save);
+
+void proc_warn (procinfo * pi, char *func, int line);
+void proc_error (procinfo * pi, char *func, int line);
void
proc_warn (pi, func, line)
@@ -1391,7 +1353,7 @@ proc_stop_process (pi)
else
{
#ifdef NEW_PROC_API
- int cmd = PCSTOP;
+ long cmd = PCSTOP;
win = (write (pi->ctl_fd, (char *) &cmd, sizeof (cmd)) == sizeof (cmd));
#else /* ioctl method */
win = (ioctl (pi->ctl_fd, PIOCSTOP, &pi->prstatus) >= 0);
@@ -1435,7 +1397,7 @@ proc_wait_for_stop (pi)
#ifdef NEW_PROC_API
{
- int cmd = PCWSTOP;
+ long cmd = PCWSTOP;
win = (write (pi->ctl_fd, (char *) &cmd, sizeof (cmd)) == sizeof (cmd));
/* We been runnin' and we stopped -- need to update status. */
pi->status_valid = 0;
@@ -1512,7 +1474,7 @@ proc_run_process (pi, step, signo)
#ifdef NEW_PROC_API
{
- int cmd[2];
+ long cmd[2];
cmd[0] = PCRUN;
cmd[1] = runflags;
@@ -1558,7 +1520,7 @@ proc_set_traced_signals (pi, sigset)
#ifdef NEW_PROC_API
{
struct {
- int cmd;
+ long cmd;
/* Use char array to avoid alignment issues. */
char sigset[sizeof (sigset_t)];
} arg;
@@ -1606,7 +1568,7 @@ proc_set_traced_faults (pi, fltset)
#ifdef NEW_PROC_API
{
struct {
- int cmd;
+ long cmd;
/* Use char array to avoid alignment issues. */
char fltset[sizeof (fltset_t)];
} arg;
@@ -1652,7 +1614,7 @@ proc_set_traced_sysentry (pi, sysset)
#ifdef NEW_PROC_API
{
struct {
- int cmd;
+ long cmd;
/* Use char array to avoid alignment issues. */
char sysset[sizeof (sysset_t)];
} arg;
@@ -1698,7 +1660,7 @@ proc_set_traced_sysexit (pi, sysset)
#ifdef NEW_PROC_API
{
struct {
- int cmd;
+ long cmd;
/* Use char array to avoid alignment issues. */
char sysset[sizeof (sysset_t)];
} arg;
@@ -1744,7 +1706,7 @@ proc_set_held_signals (pi, sighold)
#ifdef NEW_PROC_API
{
struct {
- int cmd;
+ long cmd;
/* Use char array to avoid alignment issues. */
char hold[sizeof (sigset_t)];
} arg;
@@ -2162,7 +2124,7 @@ proc_clear_current_fault (pi)
#ifdef NEW_PROC_API
{
- int cmd = PCCFAULT;
+ long cmd = PCCFAULT;
win = (write (pi->ctl_fd, (void *) &cmd, sizeof (cmd)) == sizeof (cmd));
}
#else
@@ -2192,7 +2154,7 @@ proc_set_current_signal (pi, signo)
{
int win;
struct {
- int cmd;
+ long cmd;
/* Use char array to avoid alignment issues. */
char sinfo[sizeof (struct siginfo)];
} arg;
@@ -2262,7 +2224,7 @@ proc_clear_current_signal (pi)
#ifdef NEW_PROC_API
{
struct {
- int cmd;
+ long cmd;
/* Use char array to avoid alignment issues. */
char sinfo[sizeof (struct siginfo)];
} arg;
@@ -2422,7 +2384,7 @@ proc_set_gregs (pi)
{
#ifdef NEW_PROC_API
struct {
- int cmd;
+ long cmd;
/* Use char array to avoid alignment issues. */
char gregs[sizeof (gdb_gregset_t)];
} arg;
@@ -2466,7 +2428,7 @@ proc_set_fpregs (pi)
{
#ifdef NEW_PROC_API
struct {
- int cmd;
+ long cmd;
/* Use char array to avoid alignment issues. */
char fpregs[sizeof (gdb_fpregset_t)];
} arg;
@@ -2530,7 +2492,7 @@ proc_kill (pi, signo)
else
{
#ifdef NEW_PROC_API
- int cmd[2];
+ long cmd[2];
cmd[0] = PCKILL;
cmd[1] = signo;
@@ -2594,13 +2556,13 @@ proc_set_watchpoint (pi, addr, len, wflags)
return 0;
#else
struct {
- int cmd;
+ long cmd;
char watch[sizeof (prwatch_t)];
} arg;
prwatch_t *pwatch;
pwatch = (prwatch_t *) &arg.watch;
- pwatch->pr_vaddr = addr;
+ pwatch->pr_vaddr = address_to_host_pointer (addr);
pwatch->pr_size = len;
pwatch->pr_wflags = wflags;
#if defined(NEW_PROC_API) && defined (PCWATCH)
@@ -2636,7 +2598,7 @@ proc_set_watchpoint (pi, addr, len, wflags)
every time, I don't need to lseek it. */
int
proc_iterate_over_mappings (func)
- int (*func) PARAMS ((int, CORE_ADDR));
+ int (*func) (int, CORE_ADDR);
{
struct prmap *map;
procinfo *pi;
@@ -2659,7 +2621,7 @@ proc_iterate_over_mappings (func)
proc_error (pi, "proc_iterate_over_mappings (open)", __LINE__);
/* Make sure it gets closed again. */
- make_cleanup ((make_cleanup_func) close, (void *) map_fd);
+ make_cleanup_close (map_fd);
/* Allocate space for mapping (lifetime only for this function). */
map = alloca (sizeof (struct prmap));
@@ -2721,7 +2683,8 @@ proc_iterate_over_mappings (func)
not a problem. */
/* Stop looping if the callback returns non-zero. */
- if ((funcstat = (*func) (fd, (CORE_ADDR) map[i].pr_vaddr)) != 0)
+ funcstat = (*func) (fd, host_pointer_to_address (map[i].pr_vaddr));
+ if (funcstat != 0)
break;
}
#endif
@@ -2770,7 +2733,7 @@ proc_get_LDT_entry (pi, key)
return NULL;
}
/* Make sure it gets closed again! */
- old_chain = make_cleanup ((make_cleanup_func) close, (void *) fd);
+ old_chain = make_cleanup_close (fd);
/* Now 'read' thru the table, find a match and return it. */
while (read (fd, ldt_entry, sizeof (struct ssd)) == sizeof (struct ssd))
@@ -3039,6 +3002,12 @@ proc_update_threads (pi)
/*
* Unixware and Solaris 6 (and later) version
*/
+static void
+do_closedir_cleanup (void *dir)
+{
+ closedir (dir);
+}
+
int
proc_update_threads (pi)
procinfo *pi;
@@ -3077,7 +3046,7 @@ proc_update_threads (pi)
if ((dirp = opendir (pathname)) == NULL)
proc_error (pi, "update_threads, opendir", __LINE__);
- old_chain = make_cleanup ((make_cleanup_func) closedir, dirp);
+ old_chain = make_cleanup (do_closedir_cleanup, dirp);
while ((direntry = readdir (dirp)) != NULL)
if (direntry->d_name[0] != '.') /* skip '.' and '..' */
{
@@ -3172,7 +3141,7 @@ proc_update_threads (pi)
int
proc_iterate_over_threads (pi, func, ptr)
procinfo *pi;
- int (*func) PARAMS ((procinfo *, procinfo *, void *));
+ int (*func) (procinfo *, procinfo *, void *);
void *ptr;
{
procinfo *thread, *next;
@@ -3208,9 +3177,9 @@ proc_iterate_over_threads (pi, func, ptr)
* Here are all of the gdb target vector functions and their friends.
*/
-static int do_attach PARAMS ((int pid));
-static void do_detach PARAMS ((int signo));
-static int register_gdb_signals PARAMS ((procinfo *, sigset_t *));
+static int do_attach (int pid);
+static void do_detach (int signo);
+static int register_gdb_signals (procinfo *, sigset_t *);
/*
* Function: procfs_debug_inferior
@@ -3515,21 +3484,20 @@ procfs_fetch_registers (regno)
supply_gregset (gregs);
-#if defined (FP0_REGNUM) /* need floating point? */
- if ((regno >= 0 && regno < FP0_REGNUM) ||
- regno == PC_REGNUM ||
-#ifdef NPC_REGNUM
- regno == NPC_REGNUM ||
-#endif
- regno == FP_REGNUM ||
- regno == SP_REGNUM)
- return; /* not a floating point register */
+ if (FP0_REGNUM >= 0) /* need floating point? */
+ {
+ if ((regno >= 0 && regno < FP0_REGNUM) ||
+ regno == PC_REGNUM ||
+ (NPC_REGNUM >= 0 && regno == NPC_REGNUM) ||
+ regno == FP_REGNUM ||
+ regno == SP_REGNUM)
+ return; /* not a floating point register */
- if ((fpregs = proc_get_fpregs (pi)) == NULL)
- proc_error (pi, "fetch_registers, get_fpregs", __LINE__);
+ if ((fpregs = proc_get_fpregs (pi)) == NULL)
+ proc_error (pi, "fetch_registers, get_fpregs", __LINE__);
- supply_fpregset (fpregs);
-#endif
+ supply_fpregset (fpregs);
+ }
}
/* Get ready to modify the registers array. On machines which store
@@ -3591,23 +3559,22 @@ procfs_store_registers (regno)
if (!proc_set_gregs (pi))
proc_error (pi, "store_registers, set_gregs", __LINE__);
-#if defined (FP0_REGNUM) /* need floating point? */
- if ((regno >= 0 && regno < FP0_REGNUM) ||
- regno == PC_REGNUM ||
-#ifdef NPC_REGNUM
- regno == NPC_REGNUM ||
-#endif
- regno == FP_REGNUM ||
- regno == SP_REGNUM)
- return; /* not a floating point register */
-
- if ((fpregs = proc_get_fpregs (pi)) == NULL)
- proc_error (pi, "store_registers, get_fpregs", __LINE__);
-
- fill_fpregset (fpregs, regno);
- if (!proc_set_fpregs (pi))
- proc_error (pi, "store_registers, set_fpregs", __LINE__);
-#endif
+ if (FP0_REGNUM >= 0) /* need floating point? */
+ {
+ if ((regno >= 0 && regno < FP0_REGNUM) ||
+ regno == PC_REGNUM ||
+ (NPC_REGNUM >= 0 && regno == NPC_REGNUM) ||
+ regno == FP_REGNUM ||
+ regno == SP_REGNUM)
+ return; /* not a floating point register */
+
+ if ((fpregs = proc_get_fpregs (pi)) == NULL)
+ proc_error (pi, "store_registers, get_fpregs", __LINE__);
+
+ fill_fpregset (fpregs, regno);
+ if (!proc_set_fpregs (pi))
+ proc_error (pi, "store_registers, set_fpregs", __LINE__);
+ }
}
/*
@@ -3750,7 +3717,7 @@ wait_again:
return a "success" exit code. Bogus: what if
it returns something else? */
wstat = 0;
- retval = inferior_pid; /* ??? */
+ retval = inferior_pid; /* ? ? ? */
}
else
{
@@ -3781,7 +3748,7 @@ wait_again:
{
printf_filtered ("%ld syscall arguments:\n", nsysargs);
for (i = 0; i < nsysargs; i++)
- printf_filtered ("#%ld: 0x%08x\n",
+ printf_filtered ("#%ld: 0x%08lx\n",
i, sysargs[i]);
}
@@ -3895,7 +3862,7 @@ wait_again:
{
printf_filtered ("%ld syscall arguments:\n", nsysargs);
for (i = 0; i < nsysargs; i++)
- printf_filtered ("#%ld: 0x%08x\n",
+ printf_filtered ("#%ld: 0x%08lx\n",
i, sysargs[i]);
}
}
@@ -4128,14 +4095,13 @@ invalidate_cache (parent, pi, ptr)
if (!proc_set_gregs (pi)) /* flush gregs cache */
proc_warn (pi, "target_resume, set_gregs",
__LINE__);
-#ifdef FP0_REGNUM
- if (pi->fpregs_dirty)
- if (parent == NULL ||
- proc_get_current_thread (parent) != pi->tid)
- if (!proc_set_fpregs (pi)) /* flush fpregs cache */
- proc_warn (pi, "target_resume, set_fpregs",
- __LINE__);
-#endif
+ if (FP0_REGNUM >= 0)
+ if (pi->fpregs_dirty)
+ if (parent == NULL ||
+ proc_get_current_thread (parent) != pi->tid)
+ if (!proc_set_fpregs (pi)) /* flush fpregs cache */
+ proc_warn (pi, "target_resume, set_fpregs",
+ __LINE__);
#endif
if (parent != NULL)
@@ -4451,7 +4417,7 @@ unconditionally_kill_inferior (pi)
}
#else /* PROCFS_NEED_PIOCSSIG_FOR_KILL */
if (!proc_kill (pi, SIGKILL))
- proc_warn (pi, "unconditionally_kill, proc_kill", __LINE__);
+ proc_error (pi, "unconditionally_kill, proc_kill", __LINE__);
#endif /* PROCFS_NEED_PIOCSSIG_FOR_KILL */
destroy_procinfo (pi);
@@ -5049,7 +5015,7 @@ info_proc_cmd (args, from_tty)
if ((argv = buildargv (args)) == NULL)
nomem (0);
else
- make_cleanup ((make_cleanup_func) freeargv, argv);
+ make_cleanup_freeargv (argv);
}
while (argv != NULL && *argv != NULL)
{
@@ -5083,7 +5049,7 @@ info_proc_cmd (args, from_tty)
/* No. So open a procinfo for it, but
remember to close it again when finished. */
process = create_procinfo (pid, 0);
- make_cleanup ((make_cleanup_func) destroy_procinfo, process);
+ make_cleanup (do_destroy_procinfo_cleanup, process);
if (!open_procinfo_files (process, FD_CTL))
proc_error (process, "info proc, open_procinfo_files", __LINE__);
}
@@ -5192,27 +5158,6 @@ proc_untrace_sysexit_cmd (args, from_tty)
}
-int
-mapping_test (fd, core_addr)
- int fd;
- CORE_ADDR core_addr;
-{
- printf ("File descriptor %d, base address 0x%08x\n", fd, core_addr);
- if (fd > 0)
- close (fd);
- return 0;
-}
-
-void
-test_mapping_cmd (args, from_tty)
- char *args;
- int from_tty;
-{
- int ret;
- ret = proc_iterate_over_mappings (mapping_test);
- printf ("iterate_over_mappings returned %d.\n", ret);
-}
-
void
_initialize_procfs ()
{
@@ -5229,9 +5174,6 @@ Default is the process being debugged.");
"Cancel a trace of entries into the syscall.");
add_com ("proc-untrace-exit", no_class, proc_untrace_sysexit_cmd,
"Cancel a trace of exits from the syscall.");
-
- add_com ("test-mapping", no_class, test_mapping_cmd,
- "test iterate-over-mappings");
}
/* =================== END, GDB "MODULE" =================== */
diff --git a/gdb/ptx4-nat.c b/gdb/ptx4-nat.c
index 9640d283eba..d1a5248a87e 100644
--- a/gdb/ptx4-nat.c
+++ b/gdb/ptx4-nat.c
@@ -26,6 +26,9 @@
#include <sys/param.h>
#include <fcntl.h>
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
/* Given a pointer to a general register set in /proc format (gregset_t *),
unpack the register contents and supply them as gdb's idea of the current
register values. */
@@ -62,8 +65,6 @@ fill_gregset (gregsetp, regno)
}
}
-#if defined (FP0_REGNUM)
-
/* Given a pointer to a floating point register set in /proc format
(fpregset_t *), unpack the register contents and supply them as gdb's
idea of the current floating point register values. */
@@ -93,8 +94,6 @@ fill_fpregset (fpregsetp, regno)
/* FIXME: see m68k-tdep.c for an example, for the m68k. */
}
-#endif /* defined (FP0_REGNUM) */
-
/*
* This doesn't quite do the same thing as the procfs.c version, but give
* it the same name so we don't have to put an ifdef in solib.c.
@@ -102,7 +101,7 @@ fill_fpregset (fpregsetp, regno)
/* this could use elf_interpreter() from elfread.c */
int
proc_iterate_over_mappings (func)
- int (*func) PARAMS ((int, CORE_ADDR));
+ int (*func) (int, CORE_ADDR);
{
vaddr_t curseg, memptr;
pt_vseg_t pv;
diff --git a/gdb/remote-array.c b/gdb/remote-array.c
index 5ee67c7378c..fcbddc03790 100644
--- a/gdb/remote-array.c
+++ b/gdb/remote-array.c
@@ -62,7 +62,7 @@ extern int baud_rate;
} \
while (0)
-static void debuglogs PARAMS ((int, char *,...));
+static void debuglogs (int, char *, ...);
static void array_open ();
static void array_close ();
static void array_detach ();
diff --git a/gdb/remote-bug.c b/gdb/remote-bug.c
index b97f6bc7a02..6c331a124db 100644
--- a/gdb/remote-bug.c
+++ b/gdb/remote-bug.c
@@ -48,15 +48,13 @@ extern int stop_soon_quietly; /* for wait_for_inferior */
extern struct target_ops bug_ops; /* Forward declaration */
/* Forward function declarations */
-static int bug_clear_breakpoints PARAMS ((void));
+static int bug_clear_breakpoints (void);
-static int bug_read_memory PARAMS ((CORE_ADDR memaddr,
- unsigned char *myaddr,
- int len));
+static int bug_read_memory (CORE_ADDR memaddr,
+ unsigned char *myaddr, int len);
-static int bug_write_memory PARAMS ((CORE_ADDR memaddr,
- unsigned char *myaddr,
- int len));
+static int bug_write_memory (CORE_ADDR memaddr,
+ unsigned char *myaddr, int len);
/* This variable is somewhat arbitrary. It's here so that it can be
set from within a running gdb. */
diff --git a/gdb/remote-e7000.c b/gdb/remote-e7000.c
index c5ced876caf..6de03150083 100644
--- a/gdb/remote-e7000.c
+++ b/gdb/remote-e7000.c
@@ -61,37 +61,35 @@
#define ACK 0x06
#define CTRLZ 0x1a
-extern void notice_quit PARAMS ((void));
+extern void notice_quit (void);
-extern void report_transfer_performance PARAMS ((unsigned long,
- time_t, time_t));
+extern void report_transfer_performance (unsigned long, time_t, time_t);
extern char *sh_processor_type;
/* Local function declarations. */
-static void e7000_close PARAMS ((int));
+static void e7000_close (int);
-static void e7000_fetch_register PARAMS ((int));
+static void e7000_fetch_register (int);
-static void e7000_store_register PARAMS ((int));
+static void e7000_store_register (int);
-static void e7000_command PARAMS ((char *, int));
+static void e7000_command (char *, int);
-static void e7000_login_command PARAMS ((char *, int));
+static void e7000_login_command (char *, int);
-static void e7000_ftp_command PARAMS ((char *, int));
+static void e7000_ftp_command (char *, int);
-static void e7000_drain_command PARAMS ((char *, int));
+static void e7000_drain_command (char *, int);
-static void expect PARAMS ((char *));
+static void expect (char *);
-static void expect_full_prompt PARAMS ((void));
+static void expect_full_prompt (void);
-static void expect_prompt PARAMS ((void));
+static void expect_prompt (void);
-static int e7000_parse_device PARAMS ((char *args, char *dev_name,
- int baudrate));
+static int e7000_parse_device (char *args, char *dev_name, int baudrate);
/* Variables. */
static serial_t e7000_desc;
@@ -1580,7 +1578,7 @@ e7000_load (args, from_tty)
perror_with_name (filename);
return;
}
- old_chain = make_cleanup ((make_cleanup_func) bfd_close, pbfd);
+ old_chain = make_cleanup_bfd_close (pbfd);
if (!bfd_check_format (pbfd, bfd_object))
error ("\"%s\" is not an object file: %s", filename,
diff --git a/gdb/remote-es.c b/gdb/remote-es.c
index 5663191ce1e..6805a7ddbe2 100644
--- a/gdb/remote-es.c
+++ b/gdb/remote-es.c
@@ -112,132 +112,93 @@
/* Prototypes for local functions */
-static void
-es1800_child_detach PARAMS ((char *, int));
+static void es1800_child_detach (char *, int);
-static void
-es1800_child_open PARAMS ((char *, int));
+static void es1800_child_open (char *, int);
-static void
-es1800_transparent PARAMS ((char *, int));
+static void es1800_transparent (char *, int);
-static void
-es1800_create_inferior PARAMS ((char *, char *, char **));
+static void es1800_create_inferior (char *, char *, char **);
-static void
-es1800_load PARAMS ((char *, int));
+static void es1800_load (char *, int);
-static void
-es1800_kill PARAMS ((void));
+static void es1800_kill (void);
-static int
-verify_break PARAMS ((int));
+static int verify_break (int);
-static int
-es1800_remove_breakpoint PARAMS ((CORE_ADDR, char *));
+static int es1800_remove_breakpoint (CORE_ADDR, char *);
-static int
-es1800_insert_breakpoint PARAMS ((CORE_ADDR, char *));
+static int es1800_insert_breakpoint (CORE_ADDR, char *);
-static void
-es1800_files_info PARAMS ((struct target_ops *));
+static void es1800_files_info (struct target_ops *);
static int
-es1800_xfer_inferior_memory PARAMS ((CORE_ADDR, char *, int, int,
- struct target_ops *));
+es1800_xfer_inferior_memory (CORE_ADDR, char *, int, int,
+ struct target_ops *);
-static void
-es1800_prepare_to_store PARAMS ((void));
+static void es1800_prepare_to_store (void);
-static int es1800_wait PARAMS ((int, struct target_waitstatus *));
+static int es1800_wait (int, struct target_waitstatus *);
-static void es1800_resume PARAMS ((int, int, enum target_signal));
+static void es1800_resume (int, int, enum target_signal);
-static void
-es1800_detach PARAMS ((char *, int));
+static void es1800_detach (char *, int);
-static void
-es1800_attach PARAMS ((char *, int));
+static void es1800_attach (char *, int);
-static int
-damn_b PARAMS ((char *));
+static int damn_b (char *);
-static void
-es1800_open PARAMS ((char *, int));
+static void es1800_open (char *, int);
-static void
-es1800_timer PARAMS ((void));
+static void es1800_timer (void);
-static void
-es1800_reset PARAMS ((char *));
+static void es1800_reset (char *);
-static void
-es1800_request_quit PARAMS ((void));
+static void es1800_request_quit (void);
-static int
-readchar PARAMS ((void));
+static int readchar (void);
-static void
-expect PARAMS ((char *, int));
+static void expect (char *, int);
-static void
-expect_prompt PARAMS ((void));
+static void expect_prompt (void);
-static void
-download PARAMS ((FILE *, int, int));
+static void download (FILE *, int, int);
#if 0
-static void
-bfd_copy PARAMS ((bfd *, bfd *));
+static void bfd_copy (bfd *, bfd *);
#endif
-static void
-get_break_addr PARAMS ((int, CORE_ADDR *));
+static void get_break_addr (int, CORE_ADDR *);
-static int
-fromhex PARAMS ((int));
+static int fromhex (int);
-static int
-tohex PARAMS ((int));
+static int tohex (int);
-static void
-es1800_close PARAMS ((int));
+static void es1800_close (int);
-static void
-es1800_fetch_registers PARAMS ((void));
+static void es1800_fetch_registers (void);
-static void
-es1800_fetch_register PARAMS ((int));
+static void es1800_fetch_register (int);
-static void
-es1800_store_register PARAMS ((int));
+static void es1800_store_register (int);
-static void
-es1800_read_bytes PARAMS ((CORE_ADDR, char *, int));
+static void es1800_read_bytes (CORE_ADDR, char *, int);
-static void
-es1800_write_bytes PARAMS ((CORE_ADDR, char *, int));
+static void es1800_write_bytes (CORE_ADDR, char *, int);
-static void
-send_with_reply PARAMS ((char *, char *, int));
+static void send_with_reply (char *, char *, int);
-static void
-send_command PARAMS ((char *));
+static void send_command (char *);
-static void
-send PARAMS ((char *));
+static void send (char *);
-static void
-getmessage PARAMS ((char *, int));
+static void getmessage (char *, int);
-static void
-es1800_mourn_inferior PARAMS ((void));
+static void es1800_mourn_inferior (void);
-static void
-es1800_create_break_insn PARAMS ((char *, int));
+static void es1800_create_break_insn (char *, int);
-static void
-es1800_init_break PARAMS ((char *, int));
+static void es1800_init_break (char *, int);
/* Local variables */
diff --git a/gdb/remote-est.c b/gdb/remote-est.c
index 1810a6adf24..97c24c4df99 100644
--- a/gdb/remote-est.c
+++ b/gdb/remote-est.c
@@ -28,7 +28,7 @@
#include "monitor.h"
#include "serial.h"
-static void est_open PARAMS ((char *args, int from_tty));
+static void est_open (char *args, int from_tty);
static void
est_supply_register (regname, regnamelen, val, vallen)
diff --git a/gdb/remote-hms.c b/gdb/remote-hms.c
index 5e66464f032..1bf592087fe 100644
--- a/gdb/remote-hms.c
+++ b/gdb/remote-hms.c
@@ -26,7 +26,7 @@
#include "monitor.h"
#include "serial.h"
-static void hms_open PARAMS ((char *args, int from_tty));
+static void hms_open (char *args, int from_tty);
static void
hms_supply_register (regname, regnamelen, val, vallen)
char *regname;
diff --git a/gdb/remote-mips.c b/gdb/remote-mips.c
index efafd6d1103..883ee9e8617 100644
--- a/gdb/remote-mips.c
+++ b/gdb/remote-mips.c
@@ -58,105 +58,99 @@ enum break_type
/* Prototypes for local functions. */
-static int mips_readchar PARAMS ((int timeout));
+static int mips_readchar (int timeout);
-static int mips_receive_header PARAMS ((unsigned char *hdr, int *pgarbage,
- int ch, int timeout));
+static int mips_receive_header (unsigned char *hdr, int *pgarbage,
+ int ch, int timeout);
-static int mips_receive_trailer PARAMS ((unsigned char *trlr, int *pgarbage,
- int *pch, int timeout));
+static int mips_receive_trailer (unsigned char *trlr, int *pgarbage,
+ int *pch, int timeout);
-static int mips_cksum PARAMS ((const unsigned char *hdr,
- const unsigned char *data,
- int len));
+static int mips_cksum (const unsigned char *hdr,
+ const unsigned char *data, int len);
-static void mips_send_packet PARAMS ((const char *s, int get_ack));
+static void mips_send_packet (const char *s, int get_ack);
-static void mips_send_command PARAMS ((const char *cmd, int prompt));
+static void mips_send_command (const char *cmd, int prompt);
-static int mips_receive_packet PARAMS ((char *buff, int throw_error,
- int timeout));
+static int mips_receive_packet (char *buff, int throw_error, int timeout);
-static CORE_ADDR mips_request PARAMS ((int cmd, CORE_ADDR addr,
- CORE_ADDR data, int *perr, int timeout,
- char *buff));
+static CORE_ADDR mips_request (int cmd, CORE_ADDR addr,
+ CORE_ADDR data, int *perr, int timeout,
+ char *buff);
-static void mips_initialize PARAMS ((void));
+static void mips_initialize (void);
-static void mips_open PARAMS ((char *name, int from_tty));
+static void mips_open (char *name, int from_tty);
-static void pmon_open PARAMS ((char *name, int from_tty));
+static void pmon_open (char *name, int from_tty);
-static void ddb_open PARAMS ((char *name, int from_tty));
+static void ddb_open (char *name, int from_tty);
-static void lsi_open PARAMS ((char *name, int from_tty));
+static void lsi_open (char *name, int from_tty);
-static void mips_close PARAMS ((int quitting));
+static void mips_close (int quitting);
-static void mips_detach PARAMS ((char *args, int from_tty));
+static void mips_detach (char *args, int from_tty);
-static void mips_resume PARAMS ((int pid, int step,
- enum target_signal siggnal));
+static void mips_resume (int pid, int step, enum target_signal siggnal);
-static int mips_wait PARAMS ((int pid, struct target_waitstatus * status));
+static int mips_wait (int pid, struct target_waitstatus *status);
-static int mips_map_regno PARAMS ((int regno));
+static int mips_map_regno (int regno);
-static void mips_fetch_registers PARAMS ((int regno));
+static void mips_fetch_registers (int regno);
-static void mips_prepare_to_store PARAMS ((void));
+static void mips_prepare_to_store (void);
-static void mips_store_registers PARAMS ((int regno));
+static void mips_store_registers (int regno);
-static unsigned int mips_fetch_word PARAMS ((CORE_ADDR addr));
+static unsigned int mips_fetch_word (CORE_ADDR addr);
-static int mips_store_word PARAMS ((CORE_ADDR addr, unsigned int value,
- char *old_contents));
+static int mips_store_word (CORE_ADDR addr, unsigned int value,
+ char *old_contents);
-static int mips_xfer_memory PARAMS ((CORE_ADDR memaddr, char *myaddr, int len,
- int write, struct target_ops * ignore));
+static int mips_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len,
+ int write, struct target_ops *ignore);
-static void mips_files_info PARAMS ((struct target_ops * ignore));
+static void mips_files_info (struct target_ops *ignore);
-static void mips_create_inferior PARAMS ((char *execfile, char *args,
- char **env));
+static void mips_create_inferior (char *execfile, char *args, char **env);
-static void mips_mourn_inferior PARAMS ((void));
+static void mips_mourn_inferior (void);
-static int pmon_makeb64 PARAMS ((unsigned long v, char *p, int n, int *chksum));
+static int pmon_makeb64 (unsigned long v, char *p, int n, int *chksum);
-static int pmon_zeroset PARAMS ((int recsize, char **buff, int *amount,
- unsigned int *chksum));
+static int pmon_zeroset (int recsize, char **buff, int *amount,
+ unsigned int *chksum);
-static int pmon_checkset PARAMS ((int recsize, char **buff, int *value));
+static int pmon_checkset (int recsize, char **buff, int *value);
-static void pmon_make_fastrec PARAMS ((char **outbuf, unsigned char *inbuf,
- int *inptr, int inamount, int *recsize,
- unsigned int *csum, unsigned int *zerofill));
+static void pmon_make_fastrec (char **outbuf, unsigned char *inbuf,
+ int *inptr, int inamount, int *recsize,
+ unsigned int *csum, unsigned int *zerofill);
-static int pmon_check_ack PARAMS ((char *mesg));
+static int pmon_check_ack (char *mesg);
-static void pmon_start_download PARAMS ((void));
+static void pmon_start_download (void);
-static void pmon_end_download PARAMS ((int final, int bintotal));
+static void pmon_end_download (int final, int bintotal);
-static void pmon_download PARAMS ((char *buffer, int length));
+static void pmon_download (char *buffer, int length);
-static void pmon_load_fast PARAMS ((char *file));
+static void pmon_load_fast (char *file);
-static void mips_load PARAMS ((char *file, int from_tty));
+static void mips_load (char *file, int from_tty);
-static int mips_make_srec PARAMS ((char *buffer, int type, CORE_ADDR memaddr,
- unsigned char *myaddr, int len));
+static int mips_make_srec (char *buffer, int type, CORE_ADDR memaddr,
+ unsigned char *myaddr, int len);
-static int set_breakpoint PARAMS ((CORE_ADDR addr, int len,
- enum break_type type));
+static int set_breakpoint (CORE_ADDR addr, int len, enum break_type type);
-static int clear_breakpoint PARAMS ((CORE_ADDR addr, int len,
- enum break_type type));
+static int clear_breakpoint (CORE_ADDR addr, int len, enum break_type type);
-static int common_breakpoint PARAMS ((int set, CORE_ADDR addr, int len,
- enum break_type type));
+static int common_breakpoint (int set, CORE_ADDR addr, int len,
+ enum break_type type);
/* Forward declarations. */
extern struct target_ops mips_ops;
diff --git a/gdb/remote-nindy.c b/gdb/remote-nindy.c
index a1ccea76947..8350547c115 100644
--- a/gdb/remote-nindy.c
+++ b/gdb/remote-nindy.c
@@ -151,11 +151,9 @@ static int regs_changed = 0; /* 1 iff regs were modified since last read */
extern char *exists ();
-static void
-nindy_fetch_registers PARAMS ((int));
+static void nindy_fetch_registers (int);
-static void
-nindy_store_registers PARAMS ((int));
+static void nindy_store_registers (int);
static char *savename;
diff --git a/gdb/remote-nrom.c b/gdb/remote-nrom.c
index ccd2f0de97b..861b2d8ab47 100644
--- a/gdb/remote-nrom.c
+++ b/gdb/remote-nrom.c
@@ -37,11 +37,11 @@
#define DEFAULT_NETROM_LOAD_PORT 1236
#define DEFAULT_NETROM_CONTROL_PORT 1237
-static void nrom_close PARAMS ((int quitting));
+static void nrom_close (int quitting);
/* New commands. */
-static void nrom_passthru PARAMS ((char *, int));
+static void nrom_passthru (char *, int);
/* We talk to the NetROM over these sockets. */
diff --git a/gdb/remote-os9k.c b/gdb/remote-os9k.c
index dd821154e42..fd758b5a1b1 100644
--- a/gdb/remote-os9k.c
+++ b/gdb/remote-os9k.c
@@ -514,8 +514,8 @@ rombug_wait (pid, status)
new_symfile_objfile (obj_sec->objfile, 1, 0);
offs = (struct section_offsets *) alloca (SIZEOF_SECTION_OFFSETS);
memcpy (offs, symfile_objfile->section_offsets, SIZEOF_SECTION_OFFSETS);
- ANOFFSET (offs, SECT_OFF_DATA) = addr;
- ANOFFSET (offs, SECT_OFF_BSS) = addr;
+ ANOFFSET (offs, SECT_OFF_DATA (symfile_objfile)) = addr;
+ ANOFFSET (offs, SECT_OFF_BSS (symfile_objfile)) = addr;
objfile_relocate (symfile_objfile, offs);
}
diff --git a/gdb/remote-rdi.c b/gdb/remote-rdi.c
index eff85ad283d..f41f1791f7b 100644
--- a/gdb/remote-rdi.c
+++ b/gdb/remote-rdi.c
@@ -44,57 +44,55 @@
#include "rdi-share/adp.h"
#include "rdi-share/hsys.h"
-extern int isascii PARAMS ((int));
+extern int isascii (int);
/* Prototypes for local functions */
-static void arm_rdi_files_info PARAMS ((struct target_ops * ignore));
+static void arm_rdi_files_info (struct target_ops *ignore);
-static int arm_rdi_xfer_memory PARAMS ((CORE_ADDR memaddr, char *myaddr,
- int len, int should_write,
- struct target_ops * target));
+static int arm_rdi_xfer_memory (CORE_ADDR memaddr, char *myaddr,
+ int len, int should_write,
+ struct target_ops *target);
-static void arm_rdi_prepare_to_store PARAMS ((void));
+static void arm_rdi_prepare_to_store (void);
-static void arm_rdi_fetch_registers PARAMS ((int regno));
+static void arm_rdi_fetch_registers (int regno);
-static void arm_rdi_resume PARAMS ((int pid, int step,
- enum target_signal siggnal));
+static void arm_rdi_resume (int pid, int step, enum target_signal siggnal);
-static int arm_rdi_start_remote PARAMS ((char *dummy));
+static int arm_rdi_start_remote (char *dummy);
-static void arm_rdi_open PARAMS ((char *name, int from_tty));
+static void arm_rdi_open (char *name, int from_tty);
-static void arm_rdi_create_inferior PARAMS ((char *exec_file, char *args,
- char **env));
+static void arm_rdi_create_inferior (char *exec_file, char *args, char **env);
-static void arm_rdi_close PARAMS ((int quitting));
+static void arm_rdi_close (int quitting);
-static void arm_rdi_store_registers PARAMS ((int regno));
+static void arm_rdi_store_registers (int regno);
-static void arm_rdi_mourn PARAMS ((void));
+static void arm_rdi_mourn (void);
-static void arm_rdi_send PARAMS ((char *buf));
+static void arm_rdi_send (char *buf);
-static int arm_rdi_wait PARAMS ((int pid, struct target_waitstatus * status));
+static int arm_rdi_wait (int pid, struct target_waitstatus *status);
-static void arm_rdi_kill PARAMS ((void));
+static void arm_rdi_kill (void);
-static void arm_rdi_detach PARAMS ((char *args, int from_tty));
+static void arm_rdi_detach (char *args, int from_tty);
-static void arm_rdi_interrupt PARAMS ((int signo));
+static void arm_rdi_interrupt (int signo);
-static void arm_rdi_interrupt_twice PARAMS ((int signo));
+static void arm_rdi_interrupt_twice (int signo);
-static void interrupt_query PARAMS ((void));
+static void interrupt_query (void);
-static int arm_rdi_insert_breakpoint PARAMS ((CORE_ADDR, char *));
+static int arm_rdi_insert_breakpoint (CORE_ADDR, char *);
-static int arm_rdi_remove_breakpoint PARAMS ((CORE_ADDR, char *));
+static int arm_rdi_remove_breakpoint (CORE_ADDR, char *);
-static char *rdi_error_message PARAMS ((int err));
+static char *rdi_error_message (int err);
-static enum target_signal rdi_error_signal PARAMS ((int err));
+static enum target_signal rdi_error_signal (int err);
/* Global variables. */
diff --git a/gdb/remote-rdp.c b/gdb/remote-rdp.c
index e193abb4bf5..09365ec88d9 100644
--- a/gdb/remote-rdp.c
+++ b/gdb/remote-rdp.c
@@ -167,11 +167,10 @@ static int timeout = 2;
static char *commandline = NULL;
static int
-remote_rdp_xfer_inferior_memory PARAMS ((CORE_ADDR memaddr,
- char *myaddr,
- int len,
- int write,
- struct target_ops * target));
+remote_rdp_xfer_inferior_memory (CORE_ADDR memaddr,
+ char *myaddr,
+ int len,
+ int write, struct target_ops *target);
/* Stuff for talking to the serial layer. */
diff --git a/gdb/remote-sds.c b/gdb/remote-sds.c
index 5bab41d7404..0c1b107172b 100644
--- a/gdb/remote-sds.c
+++ b/gdb/remote-sds.c
@@ -46,72 +46,71 @@
#include <signal.h>
#include "serial.h"
-extern void _initialize_remote_sds PARAMS ((void));
+extern void _initialize_remote_sds (void);
/* Declarations of local functions. */
-static int sds_write_bytes PARAMS ((CORE_ADDR, char *, int));
+static int sds_write_bytes (CORE_ADDR, char *, int);
-static int sds_read_bytes PARAMS ((CORE_ADDR, char *, int));
+static int sds_read_bytes (CORE_ADDR, char *, int);
-static void sds_files_info PARAMS ((struct target_ops * ignore));
+static void sds_files_info (struct target_ops *ignore);
-static int sds_xfer_memory PARAMS ((CORE_ADDR, char *,
- int, int, struct target_ops *));
+static int sds_xfer_memory (CORE_ADDR, char *, int, int, struct target_ops *);
-static void sds_prepare_to_store PARAMS ((void));
+static void sds_prepare_to_store (void);
-static void sds_fetch_registers PARAMS ((int));
+static void sds_fetch_registers (int);
-static void sds_resume PARAMS ((int, int, enum target_signal));
+static void sds_resume (int, int, enum target_signal);
-static int sds_start_remote PARAMS ((PTR));
+static int sds_start_remote (PTR);
-static void sds_open PARAMS ((char *, int));
+static void sds_open (char *, int);
-static void sds_close PARAMS ((int));
+static void sds_close (int);
-static void sds_store_registers PARAMS ((int));
+static void sds_store_registers (int);
-static void sds_mourn PARAMS ((void));
+static void sds_mourn (void);
-static void sds_create_inferior PARAMS ((char *, char *, char **));
+static void sds_create_inferior (char *, char *, char **);
-static void sds_load PARAMS ((char *, int));
+static void sds_load (char *, int);
-static int getmessage PARAMS ((unsigned char *, int));
+static int getmessage (unsigned char *, int);
-static int putmessage PARAMS ((unsigned char *, int));
+static int putmessage (unsigned char *, int);
-static int sds_send PARAMS ((unsigned char *, int));
+static int sds_send (unsigned char *, int);
-static int readchar PARAMS ((int));
+static int readchar (int);
-static int sds_wait PARAMS ((int, struct target_waitstatus *));
+static int sds_wait (int, struct target_waitstatus *);
-static void sds_kill PARAMS ((void));
+static void sds_kill (void);
-static int tohex PARAMS ((int));
+static int tohex (int);
-static int fromhex PARAMS ((int));
+static int fromhex (int);
-static void sds_detach PARAMS ((char *, int));
+static void sds_detach (char *, int);
-static void sds_interrupt PARAMS ((int));
+static void sds_interrupt (int);
-static void sds_interrupt_twice PARAMS ((int));
+static void sds_interrupt_twice (int);
-static void interrupt_query PARAMS ((void));
+static void interrupt_query (void);
-static int read_frame PARAMS ((char *));
+static int read_frame (char *);
-static int sds_insert_breakpoint PARAMS ((CORE_ADDR, char *));
+static int sds_insert_breakpoint (CORE_ADDR, char *);
-static int sds_remove_breakpoint PARAMS ((CORE_ADDR, char *));
+static int sds_remove_breakpoint (CORE_ADDR, char *);
-static void init_sds_ops PARAMS ((void));
+static void init_sds_ops (void);
-static void sds_command PARAMS ((char *args, int from_tty));
+static void sds_command (char *args, int from_tty);
/* Define the target operations vector. */
diff --git a/gdb/remote-sim.c b/gdb/remote-sim.c
index dd231ad3ca6..3377fef450f 100644
--- a/gdb/remote-sim.c
+++ b/gdb/remote-sim.c
@@ -40,69 +40,68 @@
/* Prototypes */
-extern void _initialize_remote_sim PARAMS ((void));
+extern void _initialize_remote_sim (void);
-extern int (*ui_loop_hook) PARAMS ((int signo));
+extern int (*ui_loop_hook) (int signo);
-static void dump_mem PARAMS ((char *buf, int len));
+static void dump_mem (char *buf, int len);
-static void init_callbacks PARAMS ((void));
+static void init_callbacks (void);
-static void end_callbacks PARAMS ((void));
+static void end_callbacks (void);
-static int gdb_os_write_stdout PARAMS ((host_callback *, const char *, int));
+static int gdb_os_write_stdout (host_callback *, const char *, int);
-static void gdb_os_flush_stdout PARAMS ((host_callback *));
+static void gdb_os_flush_stdout (host_callback *);
-static int gdb_os_write_stderr PARAMS ((host_callback *, const char *, int));
+static int gdb_os_write_stderr (host_callback *, const char *, int);
-static void gdb_os_flush_stderr PARAMS ((host_callback *));
+static void gdb_os_flush_stderr (host_callback *);
-static int gdb_os_poll_quit PARAMS ((host_callback *));
+static int gdb_os_poll_quit (host_callback *);
/* printf_filtered is depreciated */
-static void gdb_os_printf_filtered PARAMS ((host_callback *, const char *,...));
+static void gdb_os_printf_filtered (host_callback *, const char *, ...);
-static void gdb_os_vprintf_filtered PARAMS ((host_callback *, const char *, va_list));
+static void gdb_os_vprintf_filtered (host_callback *, const char *, va_list);
-static void gdb_os_evprintf_filtered PARAMS ((host_callback *, const char *, va_list));
+static void gdb_os_evprintf_filtered (host_callback *, const char *, va_list);
-static void gdb_os_error PARAMS ((host_callback *, const char *,...));
+static void gdb_os_error (host_callback *, const char *, ...);
-static void gdbsim_fetch_register PARAMS ((int regno));
+static void gdbsim_fetch_register (int regno);
-static void gdbsim_store_register PARAMS ((int regno));
+static void gdbsim_store_register (int regno);
-static void gdbsim_kill PARAMS ((void));
+static void gdbsim_kill (void);
-static void gdbsim_load PARAMS ((char *prog, int fromtty));
+static void gdbsim_load (char *prog, int fromtty);
-static void gdbsim_create_inferior PARAMS ((char *exec_file, char *args, char **env));
+static void gdbsim_create_inferior (char *exec_file, char *args, char **env);
-static void gdbsim_open PARAMS ((char *args, int from_tty));
+static void gdbsim_open (char *args, int from_tty);
-static void gdbsim_close PARAMS ((int quitting));
+static void gdbsim_close (int quitting);
-static void gdbsim_detach PARAMS ((char *args, int from_tty));
+static void gdbsim_detach (char *args, int from_tty);
-static void gdbsim_resume PARAMS ((int pid, int step, enum target_signal siggnal));
+static void gdbsim_resume (int pid, int step, enum target_signal siggnal);
-static int gdbsim_wait PARAMS ((int pid, struct target_waitstatus * status));
+static int gdbsim_wait (int pid, struct target_waitstatus *status);
-static void gdbsim_prepare_to_store PARAMS ((void));
+static void gdbsim_prepare_to_store (void);
-static int gdbsim_xfer_inferior_memory PARAMS ((CORE_ADDR memaddr,
- char *myaddr, int len,
- int write,
- struct target_ops * target));
+static int gdbsim_xfer_inferior_memory (CORE_ADDR memaddr,
+ char *myaddr, int len,
+ int write, struct target_ops *target);
-static void gdbsim_files_info PARAMS ((struct target_ops * target));
+static void gdbsim_files_info (struct target_ops *target);
-static void gdbsim_mourn_inferior PARAMS ((void));
+static void gdbsim_mourn_inferior (void);
-static void gdbsim_stop PARAMS ((void));
+static void gdbsim_stop (void);
-void simulator_command PARAMS ((char *args, int from_tty));
+void simulator_command (char *args, int from_tty);
/* Naming convention:
diff --git a/gdb/remote-udi.c b/gdb/remote-udi.c
index 12590f88111..e0e1f7024d9 100644
--- a/gdb/remote-udi.c
+++ b/gdb/remote-udi.c
@@ -54,20 +54,20 @@
extern int stop_soon_quietly; /* for wait_for_inferior */
extern struct value *call_function_by_hand ();
-static void udi_resume PARAMS ((int pid, int step, enum target_signal sig));
-static void udi_fetch_registers PARAMS ((int regno));
-static void udi_load PARAMS ((char *args, int from_tty));
-static void fetch_register PARAMS ((int regno));
-static void udi_store_registers PARAMS ((int regno));
-static int store_register PARAMS ((int regno));
-static int regnum_to_srnum PARAMS ((int regno));
-static void udi_close PARAMS ((int quitting));
-static CPUSpace udi_memory_space PARAMS ((CORE_ADDR addr));
-static int udi_write_inferior_memory PARAMS ((CORE_ADDR memaddr, char *myaddr,
- int len));
-static int udi_read_inferior_memory PARAMS ((CORE_ADDR memaddr, char *myaddr,
- int len));
-static void download PARAMS ((char *load_arg_string, int from_tty));
+static void udi_resume (int pid, int step, enum target_signal sig);
+static void udi_fetch_registers (int regno);
+static void udi_load (char *args, int from_tty);
+static void fetch_register (int regno);
+static void udi_store_registers (int regno);
+static int store_register (int regno);
+static int regnum_to_srnum (int regno);
+static void udi_close (int quitting);
+static CPUSpace udi_memory_space (CORE_ADDR addr);
+static int udi_write_inferior_memory (CORE_ADDR memaddr, char *myaddr,
+ int len);
+static int udi_read_inferior_memory (CORE_ADDR memaddr, char *myaddr,
+ int len);
+static void download (char *load_arg_string, int from_tty);
char CoffFileName[100] = "";
#define FREEZE_MODE (read_register(CPS_REGNUM) & 0x400)
@@ -1108,7 +1108,7 @@ download (load_arg_string, from_tty)
error ("Must specify at least a file name with the load command");
filename = tilde_expand (filename);
- make_cleanup ((make_cleanup_func) free, filename);
+ make_cleanup (free, filename);
while (token = strtok (NULL, " \t"))
{
@@ -1162,7 +1162,7 @@ download (load_arg_string, from_tty)
/* FIXME: should be checking for errors from bfd_close (for one thing,
on error it does not free all the storage associated with the
bfd). */
- make_cleanup ((make_cleanup_func) bfd_close, pbfd);
+ make_cleanup_bfd_close (pbfd);
QUIT;
immediate_quit++;
diff --git a/gdb/remote-utils.c b/gdb/remote-utils.c
index 1b9ae39970e..457d7b1a9ab 100644
--- a/gdb/remote-utils.c
+++ b/gdb/remote-utils.c
@@ -52,7 +52,7 @@
#include "remote-utils.h"
-void _initialize_sr_support PARAMS ((void));
+void _initialize_sr_support (void);
struct _sr_settings sr_settings =
{
@@ -74,8 +74,8 @@ struct _sr_settings sr_settings =
struct gr_settings *gr_settings = NULL;
-static void usage PARAMS ((char *, char *));
-static void sr_com PARAMS ((char *, int));
+static void usage (char *, char *);
+static void sr_com (char *, int);
static void
usage (proto, junk)
diff --git a/gdb/remote-utils.h b/gdb/remote-utils.h
index a0fd261f72e..d82ea8d2e9b 100644
--- a/gdb/remote-utils.h
+++ b/gdb/remote-utils.h
@@ -77,10 +77,10 @@ struct gr_settings
DCACHE *dcache;
char *prompt;
struct target_ops *ops;
- int (*clear_all_breakpoints) PARAMS ((void));
+ int (*clear_all_breakpoints) (void);
memxferfunc readfunc;
memxferfunc writefunc;
- void (*checkin) PARAMS ((void));
+ void (*checkin) (void);
};
extern struct gr_settings *gr_settings;
@@ -117,29 +117,28 @@ extern struct gr_settings *gr_settings;
#define gr_expect_prompt() sr_expect(gr_get_prompt())
-int gr_fetch_word PARAMS ((CORE_ADDR addr));
-int gr_multi_scan PARAMS ((char *list[], int passthrough));
-int sr_get_hex_digit PARAMS ((int ignore_space));
-int sr_pollchar PARAMS ((void));
-int sr_readchar PARAMS ((void));
-int sr_timed_read PARAMS ((char *buf, int n));
-long sr_get_hex_word PARAMS ((void));
-void gr_close PARAMS ((int quitting));
-void gr_create_inferior PARAMS ((char *execfile, char *args, char **env));
-void gr_detach PARAMS ((char *args, int from_tty));
-void gr_files_info PARAMS ((struct target_ops * ops));
-void gr_generic_checkin PARAMS ((void));
-void gr_kill PARAMS ((void));
-void gr_mourn PARAMS ((void));
-void gr_prepare_to_store PARAMS ((void));
-void gr_store_word PARAMS ((CORE_ADDR addr, int word));
-void sr_expect PARAMS ((char *string));
-void sr_get_hex_byte PARAMS ((char *byt));
-void sr_scan_args PARAMS ((char *proto, char *args));
-void sr_write PARAMS ((char *a, int l));
-void sr_write_cr PARAMS ((char *s));
-
-void gr_open PARAMS ((char *args, int from_tty,
- struct gr_settings * gr_settings));
-void gr_load_image PARAMS ((char *, int from_tty));
+int gr_fetch_word (CORE_ADDR addr);
+int gr_multi_scan (char *list[], int passthrough);
+int sr_get_hex_digit (int ignore_space);
+int sr_pollchar (void);
+int sr_readchar (void);
+int sr_timed_read (char *buf, int n);
+long sr_get_hex_word (void);
+void gr_close (int quitting);
+void gr_create_inferior (char *execfile, char *args, char **env);
+void gr_detach (char *args, int from_tty);
+void gr_files_info (struct target_ops *ops);
+void gr_generic_checkin (void);
+void gr_kill (void);
+void gr_mourn (void);
+void gr_prepare_to_store (void);
+void gr_store_word (CORE_ADDR addr, int word);
+void sr_expect (char *string);
+void sr_get_hex_byte (char *byt);
+void sr_scan_args (char *proto, char *args);
+void sr_write (char *a, int l);
+void sr_write_cr (char *s);
+
+void gr_open (char *args, int from_tty, struct gr_settings *gr_settings);
+void gr_load_image (char *, int from_tty);
#endif /* REMOTE_UTILS_H */
diff --git a/gdb/remote-vx.c b/gdb/remote-vx.c
index 06407041e69..c471373bd58 100644
--- a/gdb/remote-vx.c
+++ b/gdb/remote-vx.c
@@ -651,8 +651,7 @@ vx_mourn_inferior ()
}
-static void vx_add_symbols PARAMS ((char *, int, CORE_ADDR, CORE_ADDR,
- CORE_ADDR));
+static void vx_add_symbols (char *, int, CORE_ADDR, CORE_ADDR, CORE_ADDR);
struct find_sect_args
{
@@ -661,7 +660,7 @@ struct find_sect_args
CORE_ADDR bss_start;
};
-static void find_sect PARAMS ((bfd *, asection *, void *));
+static void find_sect (bfd *, asection *, void *);
static void
find_sect (abfd, sect, obj)
@@ -717,9 +716,9 @@ vx_add_symbols (name, from_tty, text_addr, data_addr, bss_addr)
bfd_map_over_sections (objfile->obfd, find_sect, &ss);
/* Both COFF and b.out frontends use these SECT_OFF_* values. */
- ANOFFSET (offs, SECT_OFF_TEXT) = text_addr - ss.text_start;
- ANOFFSET (offs, SECT_OFF_DATA) = data_addr - ss.data_start;
- ANOFFSET (offs, SECT_OFF_BSS) = bss_addr - ss.bss_start;
+ ANOFFSET (offs, SECT_OFF_TEXT (so->objfile)) = text_addr - ss.text_start;
+ ANOFFSET (offs, SECT_OFF_DATA (so->objfile)) = data_addr - ss.data_start;
+ ANOFFSET (offs, SECT_OFF_BSS (so->objfile)) = bss_addr - ss.bss_start;
objfile_relocate (objfile, offs);
}
diff --git a/gdb/remote.c b/gdb/remote.c
index 54d3b2c5cf1..fbe959a24b8 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -57,181 +57,179 @@ static void cleanup_sigint_signal_handler (void *dummy);
static void initialize_sigint_signal_handler (void);
static int getpkt_sane (char *buf, long sizeof_buf, int forever);
-static void handle_remote_sigint PARAMS ((int));
-static void handle_remote_sigint_twice PARAMS ((int));
-static void async_remote_interrupt PARAMS ((gdb_client_data));
-void async_remote_interrupt_twice PARAMS ((gdb_client_data));
+static void handle_remote_sigint (int);
+static void handle_remote_sigint_twice (int);
+static void async_remote_interrupt (gdb_client_data);
+void async_remote_interrupt_twice (gdb_client_data);
-static void build_remote_gdbarch_data PARAMS ((void));
+static void build_remote_gdbarch_data (void);
static int remote_write_bytes (CORE_ADDR memaddr, char *myaddr, int len);
-static int remote_read_bytes PARAMS ((CORE_ADDR memaddr,
- char *myaddr, int len));
+static int remote_read_bytes (CORE_ADDR memaddr, char *myaddr, int len);
-static void remote_files_info PARAMS ((struct target_ops * ignore));
+static void remote_files_info (struct target_ops *ignore);
-static int remote_xfer_memory PARAMS ((CORE_ADDR memaddr, char *myaddr,
- int len, int should_write,
- struct target_ops * target));
+static int remote_xfer_memory (CORE_ADDR memaddr, char *myaddr,
+ int len, int should_write,
+ struct target_ops *target);
-static void remote_prepare_to_store PARAMS ((void));
+static void remote_prepare_to_store (void);
-static void remote_fetch_registers PARAMS ((int regno));
+static void remote_fetch_registers (int regno);
-static void remote_resume PARAMS ((int pid, int step,
- enum target_signal siggnal));
-static void remote_async_resume PARAMS ((int pid, int step,
- enum target_signal siggnal));
-static int remote_start_remote PARAMS ((PTR));
+static void remote_resume (int pid, int step, enum target_signal siggnal);
+static void remote_async_resume (int pid, int step,
+ enum target_signal siggnal);
+static int remote_start_remote (PTR);
-static void remote_open PARAMS ((char *name, int from_tty));
-static void remote_async_open PARAMS ((char *name, int from_tty));
+static void remote_open (char *name, int from_tty);
+static void remote_async_open (char *name, int from_tty);
-static void extended_remote_open PARAMS ((char *name, int from_tty));
-static void extended_remote_async_open PARAMS ((char *name, int from_tty));
+static void extended_remote_open (char *name, int from_tty);
+static void extended_remote_async_open (char *name, int from_tty);
-static void remote_open_1 PARAMS ((char *, int, struct target_ops *,
- int extended_p));
-static void remote_async_open_1 PARAMS ((char *, int, struct target_ops *,
- int extended_p));
+static void remote_open_1 (char *, int, struct target_ops *, int extended_p);
+static void remote_async_open_1 (char *, int, struct target_ops *,
+ int extended_p);
-static void remote_close PARAMS ((int quitting));
+static void remote_close (int quitting);
-static void remote_store_registers PARAMS ((int regno));
+static void remote_store_registers (int regno);
-static void remote_mourn PARAMS ((void));
-static void remote_async_mourn PARAMS ((void));
+static void remote_mourn (void);
+static void remote_async_mourn (void);
-static void extended_remote_restart PARAMS ((void));
+static void extended_remote_restart (void);
-static void extended_remote_mourn PARAMS ((void));
+static void extended_remote_mourn (void);
-static void extended_remote_create_inferior PARAMS ((char *, char *, char **));
-static void extended_remote_async_create_inferior PARAMS ((char *, char *, char **));
+static void extended_remote_create_inferior (char *, char *, char **);
+static void extended_remote_async_create_inferior (char *, char *, char **);
-static void remote_mourn_1 PARAMS ((struct target_ops *));
+static void remote_mourn_1 (struct target_ops *);
static void remote_send (char *buf, long sizeof_buf);
-static int readchar PARAMS ((int timeout));
+static int readchar (int timeout);
-static int remote_wait PARAMS ((int pid, struct target_waitstatus * status));
-static int remote_async_wait PARAMS ((int pid, struct target_waitstatus * status));
+static int remote_wait (int pid, struct target_waitstatus *status);
+static int remote_async_wait (int pid, struct target_waitstatus *status);
-static void remote_kill PARAMS ((void));
-static void remote_async_kill PARAMS ((void));
+static void remote_kill (void);
+static void remote_async_kill (void);
-static int tohex PARAMS ((int nib));
+static int tohex (int nib);
-static void remote_detach PARAMS ((char *args, int from_tty));
-static void remote_async_detach PARAMS ((char *args, int from_tty));
+static void remote_detach (char *args, int from_tty);
+static void remote_async_detach (char *args, int from_tty);
-static void remote_interrupt PARAMS ((int signo));
+static void remote_interrupt (int signo);
-static void remote_interrupt_twice PARAMS ((int signo));
+static void remote_interrupt_twice (int signo);
-static void interrupt_query PARAMS ((void));
+static void interrupt_query (void);
-static void set_thread PARAMS ((int, int));
+static void set_thread (int, int);
-static int remote_thread_alive PARAMS ((int));
+static int remote_thread_alive (int);
-static void get_offsets PARAMS ((void));
+static void get_offsets (void);
static long read_frame (char *buf, long sizeof_buf);
-static int remote_insert_breakpoint PARAMS ((CORE_ADDR, char *));
+static int remote_insert_breakpoint (CORE_ADDR, char *);
-static int remote_remove_breakpoint PARAMS ((CORE_ADDR, char *));
+static int remote_remove_breakpoint (CORE_ADDR, char *);
-static int hexnumlen PARAMS ((ULONGEST num));
+static int hexnumlen (ULONGEST num);
-static void init_remote_ops PARAMS ((void));
+static void init_remote_ops (void);
-static void init_extended_remote_ops PARAMS ((void));
+static void init_extended_remote_ops (void);
-static void init_remote_cisco_ops PARAMS ((void));
+static void init_remote_cisco_ops (void);
static struct target_ops remote_cisco_ops;
-static void remote_stop PARAMS ((void));
+static void remote_stop (void);
-static int ishex PARAMS ((int ch, int *val));
+static int ishex (int ch, int *val);
-static int stubhex PARAMS ((int ch));
+static int stubhex (int ch);
-static int remote_query PARAMS ((int /*char */ , char *, char *, int *));
+static int remote_query (int /*char */ , char *, char *, int *);
-static int hexnumstr PARAMS ((char *, ULONGEST));
+static int hexnumstr (char *, ULONGEST);
-static int hexnumnstr PARAMS ((char *, ULONGEST, int));
+static int hexnumnstr (char *, ULONGEST, int);
-static CORE_ADDR remote_address_masked PARAMS ((CORE_ADDR));
+static CORE_ADDR remote_address_masked (CORE_ADDR);
-static void print_packet PARAMS ((char *));
+static void print_packet (char *);
-static unsigned long crc32 PARAMS ((unsigned char *, int, unsigned int));
+static unsigned long crc32 (unsigned char *, int, unsigned int);
-static void compare_sections_command PARAMS ((char *, int));
+static void compare_sections_command (char *, int);
-static void packet_command PARAMS ((char *, int));
+static void packet_command (char *, int);
-static int stub_unpack_int PARAMS ((char *buff, int fieldlength));
+static int stub_unpack_int (char *buff, int fieldlength);
-static int remote_current_thread PARAMS ((int oldpid));
+static int remote_current_thread (int oldpid);
-static void remote_find_new_threads PARAMS ((void));
+static void remote_find_new_threads (void);
-static void record_currthread PARAMS ((int currthread));
+static void record_currthread (int currthread);
/* exported functions */
-extern int fromhex PARAMS ((int a));
+extern int fromhex (int a);
-static int putpkt_binary PARAMS ((char *buf, int cnt));
+static int putpkt_binary (char *buf, int cnt);
-static void check_binary_download PARAMS ((CORE_ADDR addr));
+static void check_binary_download (CORE_ADDR addr);
struct packet_config;
-static void show_packet_config_cmd PARAMS ((struct packet_config * config));
+static void show_packet_config_cmd (struct packet_config *config);
-static void set_packet_config_cmd PARAMS ((struct packet_config * config,
- struct cmd_list_element * c));
+static void set_packet_config_cmd (struct packet_config *config,
+ struct cmd_list_element *c);
-static void add_packet_config_cmd PARAMS ((struct packet_config * config,
- char *name,
- char *title,
- void (*set_func) (char *args, int from_tty, struct cmd_list_element * c),
- void (*show_func) (char *name, int from_tty),
- struct cmd_list_element **setlist,
- struct cmd_list_element **showlist));
+static void add_packet_config_cmd (struct packet_config *config,
+ char *name,
+ char *title,
+ void (*set_func) (char *args, int from_tty,
+ struct cmd_list_element *
+ c),
+ void (*show_func) (char *name,
+ int from_tty),
+ struct cmd_list_element **setlist,
+ struct cmd_list_element **showlist);
-static void init_packet_config PARAMS ((struct packet_config * config));
+static void init_packet_config (struct packet_config *config);
-static void set_remote_protocol_P_packet_cmd PARAMS ((char *args,
- int from_tty,
- struct cmd_list_element * c));
+static void set_remote_protocol_P_packet_cmd (char *args,
+ int from_tty,
+ struct cmd_list_element *c);
-static void show_remote_protocol_P_packet_cmd PARAMS ((char *args,
- int from_tty));
+static void show_remote_protocol_P_packet_cmd (char *args, int from_tty);
-static void set_remote_protocol_Z_packet_cmd PARAMS ((char *args,
- int from_tty,
- struct cmd_list_element * c));
+static void set_remote_protocol_Z_packet_cmd (char *args,
+ int from_tty,
+ struct cmd_list_element *c);
-static void show_remote_protocol_Z_packet_cmd PARAMS ((char *args,
- int from_tty));
+static void show_remote_protocol_Z_packet_cmd (char *args, int from_tty);
/* Define the target subroutine names */
-void open_remote_target PARAMS ((char *, int, struct target_ops *, int));
+void open_remote_target (char *, int, struct target_ops *, int);
-void _initialize_remote PARAMS ((void));
+void _initialize_remote (void);
/* */
@@ -605,9 +603,8 @@ add_packet_config_cmd (config, name, title, set_func, show_func,
struct packet_config *config;
char *name;
char *title;
- void (*set_func) PARAMS ((char *args, int from_tty,
- struct cmd_list_element * c));
- void (*show_func) PARAMS ((char *name, int from_tty));
+ void (*set_func) (char *args, int from_tty, struct cmd_list_element * c);
+ void (*show_func) (char *name, int from_tty);
struct cmd_list_element **setlist;
struct cmd_list_element **showlist;
{
@@ -624,7 +621,7 @@ add_packet_config_cmd (config, name, title, set_func, show_func,
asprintf (&full_name, "%s-packet", name);
c = add_set_enum_cmd (full_name,
class_obscure, packet_support_enums,
- (char *) &config->state,
+ &config->state,
set_doc, setlist);
c->function.sfunc = set_func;
add_cmd (full_name, class_obscure, show_func, show_doc, showlist);
@@ -733,8 +730,8 @@ PTR sigint_remote_token;
/* These are pointers to hook functions that may be set in order to
modify resume/wait behavior for a particular architecture. */
-void (*target_resume_hook) PARAMS ((void));
-void (*target_wait_loop_hook) PARAMS ((void));
+void (*target_resume_hook) (void);
+void (*target_wait_loop_hook) (void);
@@ -865,73 +862,70 @@ struct gdb_ext_thread_info
#define BUF_THREAD_ID_SIZE (OPAQUETHREADBYTES*2)
-char *unpack_varlen_hex PARAMS ((char *buff, int *result));
+char *unpack_varlen_hex (char *buff, int *result);
-static char *unpack_nibble PARAMS ((char *buf, int *val));
+static char *unpack_nibble (char *buf, int *val);
-static char *pack_nibble PARAMS ((char *buf, int nibble));
+static char *pack_nibble (char *buf, int nibble);
-static char *pack_hex_byte PARAMS ((char *pkt, int /*unsigned char */ byte));
+static char *pack_hex_byte (char *pkt, int /*unsigned char */ byte);
-static char *unpack_byte PARAMS ((char *buf, int *value));
+static char *unpack_byte (char *buf, int *value);
-static char *pack_int PARAMS ((char *buf, int value));
+static char *pack_int (char *buf, int value);
-static char *unpack_int PARAMS ((char *buf, int *value));
+static char *unpack_int (char *buf, int *value);
-static char *unpack_string PARAMS ((char *src, char *dest, int length));
+static char *unpack_string (char *src, char *dest, int length);
-static char *pack_threadid PARAMS ((char *pkt, threadref * id));
+static char *pack_threadid (char *pkt, threadref * id);
-static char *unpack_threadid PARAMS ((char *inbuf, threadref * id));
+static char *unpack_threadid (char *inbuf, threadref * id);
-void int_to_threadref PARAMS ((threadref * id, int value));
+void int_to_threadref (threadref * id, int value);
-static int threadref_to_int PARAMS ((threadref * ref));
+static int threadref_to_int (threadref * ref);
-static void copy_threadref PARAMS ((threadref * dest, threadref * src));
+static void copy_threadref (threadref * dest, threadref * src);
-static int threadmatch PARAMS ((threadref * dest, threadref * src));
+static int threadmatch (threadref * dest, threadref * src);
-static char *pack_threadinfo_request PARAMS ((char *pkt, int mode,
- threadref * id));
+static char *pack_threadinfo_request (char *pkt, int mode, threadref * id);
-static int remote_unpack_thread_info_response PARAMS ((char *pkt,
- threadref * expectedref,
- struct gdb_ext_thread_info * info));
+static int remote_unpack_thread_info_response (char *pkt,
+ threadref * expectedref,
+ struct gdb_ext_thread_info
+ *info);
-static int remote_get_threadinfo PARAMS ((threadref * threadid,
- int fieldset, /*TAG mask */
- struct gdb_ext_thread_info * info));
+static int remote_get_threadinfo (threadref * threadid, int fieldset, /*TAG mask */
+ struct gdb_ext_thread_info *info);
-static int adapt_remote_get_threadinfo PARAMS ((gdb_threadref * ref,
- int selection,
- struct gdb_ext_thread_info * info));
+static int adapt_remote_get_threadinfo (gdb_threadref * ref,
+ int selection,
+ struct gdb_ext_thread_info *info);
-static char *pack_threadlist_request PARAMS ((char *pkt, int startflag,
- int threadcount,
- threadref * nextthread));
+static char *pack_threadlist_request (char *pkt, int startflag,
+ int threadcount,
+ threadref * nextthread);
-static int parse_threadlist_response PARAMS ((char *pkt,
- int result_limit,
- threadref * original_echo,
- threadref * resultlist,
- int *doneflag));
+static int parse_threadlist_response (char *pkt,
+ int result_limit,
+ threadref * original_echo,
+ threadref * resultlist, int *doneflag);
-static int remote_get_threadlist PARAMS ((int startflag,
- threadref * nextthread,
- int result_limit,
- int *done,
- int *result_count,
- threadref * threadlist));
+static int remote_get_threadlist (int startflag,
+ threadref * nextthread,
+ int result_limit,
+ int *done,
+ int *result_count, threadref * threadlist);
typedef int (*rmt_thread_action) (threadref * ref, void *context);
-static int remote_threadlist_iterator PARAMS ((rmt_thread_action stepfunction,
- void *context, int looplimit));
+static int remote_threadlist_iterator (rmt_thread_action stepfunction,
+ void *context, int looplimit);
-static int remote_newthread_step PARAMS ((threadref * ref, void *context));
+static int remote_newthread_step (threadref * ref, void *context);
/* encode 64 bits in 16 chars of hex */
@@ -1069,7 +1063,7 @@ unpack_int (buf, value)
}
#if 0 /* currently unused, uncomment when needed */
-static char *pack_string PARAMS ((char *pkt, char *string));
+static char *pack_string (char *pkt, char *string);
static char *
pack_string (pkt, string)
@@ -1803,14 +1797,14 @@ get_offsets ()
offs = (struct section_offsets *) alloca (SIZEOF_SECTION_OFFSETS);
memcpy (offs, symfile_objfile->section_offsets, SIZEOF_SECTION_OFFSETS);
- ANOFFSET (offs, SECT_OFF_TEXT) = text_addr;
+ ANOFFSET (offs, SECT_OFF_TEXT (symfile_objfile)) = text_addr;
/* This is a temporary kludge to force data and bss to use the same offsets
because that's what nlmconv does now. The real solution requires changes
to the stub and remote.c that I don't have time to do right now. */
- ANOFFSET (offs, SECT_OFF_DATA) = data_addr;
- ANOFFSET (offs, SECT_OFF_BSS) = data_addr;
+ ANOFFSET (offs, SECT_OFF_DATA (symfile_objfile)) = data_addr;
+ ANOFFSET (offs, SECT_OFF_BSS (symfile_objfile)) = data_addr;
objfile_relocate (symfile_objfile, offs);
}
@@ -1918,9 +1912,9 @@ remote_cisco_objfile_relocate (text_off, data_off, bss_off)
offs = (struct section_offsets *) alloca (SIZEOF_SECTION_OFFSETS);
memcpy (offs, symfile_objfile->section_offsets, SIZEOF_SECTION_OFFSETS);
- ANOFFSET (offs, SECT_OFF_TEXT) = text_off;
- ANOFFSET (offs, SECT_OFF_DATA) = data_off;
- ANOFFSET (offs, SECT_OFF_BSS) = bss_off;
+ ANOFFSET (offs, SECT_OFF_TEXT (symfile_objfile)) = text_off;
+ ANOFFSET (offs, SECT_OFF_DATA (symfile_objfile)) = data_off;
+ ANOFFSET (offs, SECT_OFF_BSS (symfile_objfile)) = bss_off;
/* First call the standard objfile_relocate. */
objfile_relocate (symfile_objfile, offs);
@@ -2450,7 +2444,7 @@ cleanup_sigint_signal_handler (void *dummy)
/* Send ^C to target to halt it. Target will respond, and send us a
packet. */
-static void (*ofunc) PARAMS ((int));
+static void (*ofunc) (int);
/* The command line interface's stop routine. This function is installed
as a signal handler for SIGINT. The first time a user requests a
@@ -3596,11 +3590,6 @@ remote_read_bytes (memaddr, myaddr, len)
SHOULD_WRITE is nonzero. Returns length of data written or read; 0
for error. */
-#ifndef REMOTE_TRANSLATE_XFER_ADDRESS
-#define REMOTE_TRANSLATE_XFER_ADDRESS(MEM_ADDR, MEM_LEN, TARG_ADDR, TARG_LEN) \
- (*(TARG_ADDR) = (MEM_ADDR), *(TARG_LEN) = (MEM_LEN))
-#endif
-
/* ARGSUSED */
static int
remote_xfer_memory (mem_addr, buffer, mem_len, should_write, target)
@@ -4821,23 +4810,23 @@ packet_command (args, from_tty)
#if 0
/* --------- UNIT_TEST for THREAD oriented PACKETS ------------------------- */
-static void display_thread_info PARAMS ((struct gdb_ext_thread_info * info));
+static void display_thread_info (struct gdb_ext_thread_info *info);
-static void threadset_test_cmd PARAMS ((char *cmd, int tty));
+static void threadset_test_cmd (char *cmd, int tty);
-static void threadalive_test PARAMS ((char *cmd, int tty));
+static void threadalive_test (char *cmd, int tty);
-static void threadlist_test_cmd PARAMS ((char *cmd, int tty));
+static void threadlist_test_cmd (char *cmd, int tty);
-int get_and_display_threadinfo PARAMS ((threadref * ref));
+int get_and_display_threadinfo (threadref * ref);
-static void threadinfo_test_cmd PARAMS ((char *cmd, int tty));
+static void threadinfo_test_cmd (char *cmd, int tty);
-static int thread_display_step PARAMS ((threadref * ref, void *context));
+static int thread_display_step (threadref * ref, void *context);
-static void threadlist_update_test_cmd PARAMS ((char *cmd, int tty));
+static void threadlist_update_test_cmd (char *cmd, int tty);
-static void init_remote_threadtests PARAMS ((void));
+static void init_remote_threadtests (void);
#define SAMPLE_THREAD 0x05060708 /* Truncated 64 bit threadid */
@@ -4866,7 +4855,7 @@ threadalive_test (cmd, tty)
printf_filtered ("FAIL: Thread alive test\n");
}
-void output_threadid PARAMS ((char *title, threadref * ref));
+void output_threadid (char *title, threadref * ref);
void
output_threadid (title, ref)
diff --git a/gdb/rom68k-rom.c b/gdb/rom68k-rom.c
index 8b938b5139c..212bdf4031c 100644
--- a/gdb/rom68k-rom.c
+++ b/gdb/rom68k-rom.c
@@ -24,7 +24,7 @@
#include "monitor.h"
#include "serial.h"
-static void rom68k_open PARAMS ((char *args, int from_tty));
+static void rom68k_open (char *args, int from_tty);
static void
rom68k_supply_register (regname, regnamelen, val, vallen)
diff --git a/gdb/rs6000-nat.c b/gdb/rs6000-nat.c
index 63fadcf9616..f1ee4225fe5 100644
--- a/gdb/rs6000-nat.c
+++ b/gdb/rs6000-nat.c
@@ -48,33 +48,26 @@
extern int errno;
-extern struct vmap *map_vmap PARAMS ((bfd * bf, bfd * arch));
+extern struct vmap *map_vmap (bfd * bf, bfd * arch);
extern struct target_ops exec_ops;
-static void
-vmap_exec PARAMS ((void));
+static void vmap_exec (void);
-static void
-vmap_ldinfo PARAMS ((struct ld_info *));
+static void vmap_ldinfo (struct ld_info *);
-static struct vmap *
- add_vmap PARAMS ((struct ld_info *));
+static struct vmap *add_vmap (struct ld_info *);
-static int
-objfile_symbol_add PARAMS ((char *));
+static int objfile_symbol_add (char *);
-static void
-vmap_symtab PARAMS ((struct vmap *));
+static void vmap_symtab (struct vmap *);
-static void
-fetch_core_registers PARAMS ((char *, unsigned int, int, CORE_ADDR));
+static void fetch_core_registers (char *, unsigned int, int, CORE_ADDR);
-static void
-exec_one_dummy_insn PARAMS ((void));
+static void exec_one_dummy_insn (void);
extern void
-fixup_breakpoints PARAMS ((CORE_ADDR low, CORE_ADDR high, CORE_ADDR delta));
+fixup_breakpoints (CORE_ADDR low, CORE_ADDR high, CORE_ADDR delta);
/* Conversion from gdb-to-system special purpose register numbers.. */
@@ -357,9 +350,9 @@ vmap_symtab (vp)
/* The symbols in the object file are linked to the VMA of the section,
relocate them VMA relative. */
- ANOFFSET (new_offsets, SECT_OFF_TEXT) = vp->tstart - vp->tvma;
- ANOFFSET (new_offsets, SECT_OFF_DATA) = vp->dstart - vp->dvma;
- ANOFFSET (new_offsets, SECT_OFF_BSS) = vp->dstart - vp->dvma;
+ ANOFFSET (new_offsets, SECT_OFF_TEXT (objfile)) = vp->tstart - vp->tvma;
+ ANOFFSET (new_offsets, SECT_OFF_DATA (objfile)) = vp->dstart - vp->dvma;
+ ANOFFSET (new_offsets, SECT_OFF_BSS (objfile)) = vp->dstart - vp->dvma;
objfile_relocate (objfile, new_offsets);
}
@@ -639,29 +632,39 @@ void
xcoff_relocate_symtab (pid)
unsigned int pid;
{
-#define MAX_LOAD_SEGS 64 /* maximum number of load segments */
-
- struct ld_info *ldi;
-
- ldi = (void *) alloca (MAX_LOAD_SEGS * sizeof (*ldi));
-
- /* According to my humble theory, AIX has some timing problems and
- when the user stack grows, kernel doesn't update stack info in time
- and ptrace calls step on user stack. That is why we sleep here a little,
- and give kernel to update its internals. */
+ int load_segs = 64; /* number of load segments */
+ int rc;
+ struct ld_info *ldi = NULL;
- usleep (36000);
+ do
+ {
+ ldi = (void *) xrealloc (ldi, load_segs * sizeof (*ldi));
- errno = 0;
- ptrace (PT_LDINFO, pid, (PTRACE_ARG3_TYPE) ldi,
- MAX_LOAD_SEGS * sizeof (*ldi), (int *) ldi);
- if (errno)
- perror_with_name ("ptrace ldinfo");
+ /* According to my humble theory, AIX has some timing problems and
+ when the user stack grows, kernel doesn't update stack info in time
+ and ptrace calls step on user stack. That is why we sleep here a
+ little, and give kernel to update its internals. */
- vmap_ldinfo (ldi);
+ usleep (36000);
- /* relocate the exec and core sections as well. */
- vmap_exec ();
+ errno = 0;
+ rc = ptrace (PT_LDINFO, pid, (PTRACE_ARG3_TYPE) ldi,
+ load_segs * sizeof (*ldi), (int *) ldi);
+ if (rc == -1)
+ {
+ if (errno == ENOMEM)
+ load_segs *= 2;
+ else
+ perror_with_name ("ptrace ldinfo");
+ }
+ else
+ {
+ vmap_ldinfo (ldi);
+ vmap_exec (); /* relocate the exec and core sections as well. */
+ }
+ } while (rc == -1);
+ if (ldi)
+ free (ldi);
}
/* Core file stuff. */
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index c3cd31b75e4..eeadae5296b 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -47,19 +47,19 @@ stepBreaks[2];
inferior under AIX. The initialization code in rs6000-nat.c sets
this hook to point to find_toc_address. */
-CORE_ADDR (*find_toc_address_hook) PARAMS ((CORE_ADDR)) = NULL;
+CORE_ADDR (*find_toc_address_hook) (CORE_ADDR) = NULL;
/* Static function prototypes */
- static CORE_ADDR branch_dest PARAMS ((int opcode, int instr, CORE_ADDR pc,
- CORE_ADDR safety));
+static CORE_ADDR branch_dest (int opcode, int instr, CORE_ADDR pc,
+ CORE_ADDR safety);
- static void frame_get_saved_regs PARAMS ((struct frame_info * fi,
- struct rs6000_framedata * fdatap));
+static void frame_get_saved_regs (struct frame_info *fi,
+ struct rs6000_framedata *fdatap);
- static void pop_dummy_frame PARAMS ((void));
+static void pop_dummy_frame (void);
- static CORE_ADDR frame_initial_stack_address PARAMS ((struct frame_info *));
+static CORE_ADDR frame_initial_stack_address (struct frame_info *);
CORE_ADDR
rs6000_skip_prologue (pc)
diff --git a/gdb/scm-exp.c b/gdb/scm-exp.c
index bacc29a8541..43cb4d8a43e 100644
--- a/gdb/scm-exp.c
+++ b/gdb/scm-exp.c
@@ -31,12 +31,12 @@
#define USE_EXPRSTRING 0
-static void scm_lreadparen PARAMS ((int));
-static int scm_skip_ws PARAMS ((void));
-static void scm_read_token PARAMS ((int, int));
-static LONGEST scm_istring2number PARAMS ((char *, int, int));
-static LONGEST scm_istr2int PARAMS ((char *, int, int));
-static void scm_lreadr PARAMS ((int));
+static void scm_lreadparen (int);
+static int scm_skip_ws (void);
+static void scm_read_token (int, int);
+static LONGEST scm_istring2number (char *, int, int);
+static LONGEST scm_istr2int (char *, int, int);
+static void scm_lreadr (int);
static LONGEST
scm_istr2int (str, len, radix)
diff --git a/gdb/scm-lang.c b/gdb/scm-lang.c
index ac09fe6aa32..d38eb4ed28c 100644
--- a/gdb/scm-lang.c
+++ b/gdb/scm-lang.c
@@ -31,11 +31,11 @@
#include "gdb_string.h"
#include "gdbcore.h"
-extern void _initialize_scheme_language PARAMS ((void));
-static value_ptr evaluate_subexp_scm PARAMS ((struct type *, struct expression *,
- int *, enum noside));
-static value_ptr scm_lookup_name PARAMS ((char *));
-static int in_eval_c PARAMS ((void));
+extern void _initialize_scheme_language (void);
+static value_ptr evaluate_subexp_scm (struct type *, struct expression *,
+ int *, enum noside);
+static value_ptr scm_lookup_name (char *);
+static int in_eval_c (void);
static void scm_printstr (struct ui_file * stream, char *string,
unsigned int length, int width,
int force_ellipses);
diff --git a/gdb/scm-lang.h b/gdb/scm-lang.h
index eb708fb53ef..4ce53c39404 100644
--- a/gdb/scm-lang.h
+++ b/gdb/scm-lang.h
@@ -52,19 +52,19 @@ extern int scm_val_print (struct type *, char *, int, CORE_ADDR,
struct ui_file *, int, int, int,
enum val_prettyprint);
-extern LONGEST scm_get_field PARAMS ((LONGEST, int));
+extern LONGEST scm_get_field (LONGEST, int);
extern void scm_scmval_print (LONGEST, struct ui_file *, int, int, int,
enum val_prettyprint);
-extern int is_scmvalue_type PARAMS ((struct type *));
+extern int is_scmvalue_type (struct type *);
extern void scm_printchar (int, struct ui_file *);
-extern struct value *scm_evaluate_string PARAMS ((char *, int));
+extern struct value *scm_evaluate_string (char *, int);
extern struct type *builtin_type_scm;
-extern int scm_parse PARAMS ((void));
+extern int scm_parse (void);
-extern LONGEST scm_unpack PARAMS ((struct type *, char *, enum type_code));
+extern LONGEST scm_unpack (struct type *, char *, enum type_code);
diff --git a/gdb/ser-e7kpc.c b/gdb/ser-e7kpc.c
index 73982f7e501..c7b23aa79c4 100644
--- a/gdb/ser-e7kpc.c
+++ b/gdb/ser-e7kpc.c
@@ -37,14 +37,14 @@
#include <sys/dos.h>
#endif
-static int e7000pc_open PARAMS ((serial_t scb, const char *name));
-static void e7000pc_raw PARAMS ((serial_t scb));
-static int e7000pc_readchar PARAMS ((serial_t scb, int timeout));
-static int e7000pc_setbaudrate PARAMS ((serial_t scb, int rate));
-static int e7000pc_write PARAMS ((serial_t scb, const char *str, int len));
-static void e7000pc_close PARAMS ((serial_t scb));
-static serial_ttystate e7000pc_get_tty_state PARAMS ((serial_t scb));
-static int e7000pc_set_tty_state PARAMS ((serial_t scb, serial_ttystate state));
+static int e7000pc_open (serial_t scb, const char *name);
+static void e7000pc_raw (serial_t scb);
+static int e7000pc_readchar (serial_t scb, int timeout);
+static int e7000pc_setbaudrate (serial_t scb, int rate);
+static int e7000pc_write (serial_t scb, const char *str, int len);
+static void e7000pc_close (serial_t scb);
+static serial_ttystate e7000pc_get_tty_state (serial_t scb);
+static int e7000pc_set_tty_state (serial_t scb, serial_ttystate state);
#define OFF_DPD 0x0000
#define OFF_DDP 0x1000
diff --git a/gdb/ser-go32.c b/gdb/ser-go32.c
index 93e43ca422e..a8f09e7a30b 100644
--- a/gdb/ser-go32.c
+++ b/gdb/ser-go32.c
@@ -230,15 +230,15 @@ ports[4] =
}
};
-static int dos_open PARAMS ((serial_t scb, const char *name));
-static void dos_raw PARAMS ((serial_t scb));
-static int dos_readchar PARAMS ((serial_t scb, int timeout));
-static int dos_setbaudrate PARAMS ((serial_t scb, int rate));
-static int dos_write PARAMS ((serial_t scb, const char *str, int len));
-static void dos_close PARAMS ((serial_t scb));
-static serial_ttystate dos_get_tty_state PARAMS ((serial_t scb));
-static int dos_set_tty_state PARAMS ((serial_t scb, serial_ttystate state));
-static int dos_baudconv PARAMS ((int rate));
+static int dos_open (serial_t scb, const char *name);
+static void dos_raw (serial_t scb);
+static int dos_readchar (serial_t scb, int timeout);
+static int dos_setbaudrate (serial_t scb, int rate);
+static int dos_write (serial_t scb, const char *str, int len);
+static void dos_close (serial_t scb);
+static serial_ttystate dos_get_tty_state (serial_t scb);
+static int dos_set_tty_state (serial_t scb, serial_ttystate state);
+static int dos_baudconv (int rate);
#define inb(p,a) inportb((p)->base + (a))
#define outb(p,a,v) outportb((p)->base + (a), (v))
diff --git a/gdb/ser-mac.c b/gdb/ser-mac.c
index fe154ab3301..e5d34b6787e 100644
--- a/gdb/ser-mac.c
+++ b/gdb/ser-mac.c
@@ -35,15 +35,15 @@ struct mac_ttystate
int bogus;
};
-static int mac_open PARAMS ((serial_t scb, const char *name));
-static void mac_raw PARAMS ((serial_t scb));
-static int mac_readchar PARAMS ((serial_t scb, int timeout));
-static int mac_setbaudrate PARAMS ((serial_t scb, int rate));
-static int mac_write PARAMS ((serial_t scb, const char *str, int len));
-static void mac_close PARAMS ((serial_t scb));
-static serial_ttystate mac_get_tty_state PARAMS ((serial_t scb));
-static int mac_set_tty_state PARAMS ((serial_t scb, serial_ttystate state));
-static char *aptr PARAMS ((short p));
+static int mac_open (serial_t scb, const char *name);
+static void mac_raw (serial_t scb);
+static int mac_readchar (serial_t scb, int timeout);
+static int mac_setbaudrate (serial_t scb, int rate);
+static int mac_write (serial_t scb, const char *str, int len);
+static void mac_close (serial_t scb);
+static serial_ttystate mac_get_tty_state (serial_t scb);
+static int mac_set_tty_state (serial_t scb, serial_ttystate state);
+static char *aptr (short p);
short input_refnum;
short output_refnum;
diff --git a/gdb/ser-ocd.c b/gdb/ser-ocd.c
index 733d69217c1..c5c71035af1 100644
--- a/gdb/ser-ocd.c
+++ b/gdb/ser-ocd.c
@@ -30,7 +30,7 @@
#ifdef _WIN32
/* On Windows, this function pointer is initialized to a function in
the wiggler DLL. */
-static int (*dll_do_command) PARAMS ((const char *, char *));
+static int (*dll_do_command) (const char *, char *);
#endif
static int
diff --git a/gdb/serial.c b/gdb/serial.c
index e843e0e0bbf..0914e39b33f 100644
--- a/gdb/serial.c
+++ b/gdb/serial.c
@@ -667,7 +667,7 @@ by gdbserver.",
add_show_from_set
(add_set_enum_cmd ("remotelogbase", no_class,
- logbase_enums, (char *) &serial_logbase,
+ logbase_enums, &serial_logbase,
"Set numerical base for remote session logging",
&setlist),
&showlist);
diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
index 1c98cafcee7..941e13feeeb 100644
--- a/gdb/sh-tdep.c
+++ b/gdb/sh-tdep.c
@@ -86,6 +86,30 @@ static char *sh3e_reg_names[] = {
"r0b0", "r1b0", "r2b0", "r3b0", "r4b0", "r5b0", "r6b0", "r7b0",
"r0b1", "r1b1", "r2b1", "r3b1", "r4b1", "r5b1", "r6b1", "r7b1",
};
+
+static char *sh_dsp_reg_names[] = {
+ "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
+ "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
+ "pc", "pr", "gbr", "vbr", "mach", "macl", "sr",
+ "", "dsr",
+ "a0g", "a0", "a1g", "a1", "m0", "m1", "x0", "x1",
+ "y0", "y1", "", "", "", "", "", "mod",
+ "", "",
+ "rs", "re", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+};
+
+static char *sh3_dsp_reg_names[] = {
+ "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
+ "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
+ "pc", "pr", "gbr", "vbr", "mach", "macl", "sr",
+ "", "dsr",
+ "a0g", "a0", "a1g", "a1", "m0", "m1", "x0", "x1",
+ "y0", "y1", "", "", "", "", "", "mod",
+ "ssr", "spc",
+ "rs", "re", "", "", "", "", "", "",
+ "r0b", "r1b", "r2b", "r3b", "r4b", "r5b", "r6b", "r7b",
+};
/* *INDENT-ON* */
#ifdef _WIN32_WCE
@@ -110,10 +134,18 @@ sh_processor_type_table[] =
}
,
{
+ sh_dsp_reg_names, bfd_mach_sh_dsp
+ }
+ ,
+ {
sh3_reg_names, bfd_mach_sh3
}
,
{
+ sh3_dsp_reg_names, bfd_mach_sh3_dsp
+ }
+ ,
+ {
sh3e_reg_names, bfd_mach_sh3e
}
,
@@ -648,18 +680,21 @@ sh_show_regs (args, from_tty)
printf_filtered ("GBR=%08lx VBR=%08lx",
(long) read_register (GBR_REGNUM),
(long) read_register (VBR_REGNUM));
- if (cpu == bfd_mach_sh3 || cpu == bfd_mach_sh3e)
+ if (cpu == bfd_mach_sh3 || cpu == bfd_mach_sh3e || cpu == bfd_mach_sh3_dsp
+ || cpu == bfd_mach_sh4)
{
printf_filtered (" SSR=%08lx SPC=%08lx",
(long) read_register (SSR_REGNUM),
(long) read_register (SPC_REGNUM));
- if (cpu == bfd_mach_sh3e)
+ if (cpu == bfd_mach_sh3e || cpu == bfd_mach_sh4)
{
printf_filtered (" FPUL=%08lx FPSCR=%08lx",
(long) read_register (FPUL_REGNUM),
(long) read_register (FPSCR_REGNUM));
}
}
+ if (cpu == bfd_mach_sh_dsp || cpu == bfd_mach_sh3_dsp)
+ printf_filtered (" DSR=%08lx", (long) read_register (DSR_REGNUM));
printf_filtered ("\nR0-R7 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
(long) read_register (0),
@@ -679,9 +714,13 @@ sh_show_regs (args, from_tty)
(long) read_register (13),
(long) read_register (14),
(long) read_register (15));
- if (cpu == bfd_mach_sh3e)
+ if (cpu == bfd_mach_sh3e || cpu == bfd_mach_sh4)
{
- printf_filtered ("FP0-FP7 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+ int pr = cpu == bfd_mach_sh4 && (read_register (FPSCR_REGNUM) & 0x80000);
+
+ printf_filtered ((pr
+ ? "DR0-DR6 %08lx%08lx %08lx%08lx %08lx%08lx %08lx%08lx\n"
+ : "FP0-FP7 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n"),
(long) read_register (FP0_REGNUM + 0),
(long) read_register (FP0_REGNUM + 1),
(long) read_register (FP0_REGNUM + 2),
@@ -690,7 +729,9 @@ sh_show_regs (args, from_tty)
(long) read_register (FP0_REGNUM + 5),
(long) read_register (FP0_REGNUM + 6),
(long) read_register (FP0_REGNUM + 7));
- printf_filtered ("FP8-FP15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+ printf_filtered ((pr
+ ? "DR8-DR14 %08lx%08lx %08lx%08lx %08lx%08lx %08lx%08lx\n"
+ : "FP8-FP15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n"),
(long) read_register (FP0_REGNUM + 8),
(long) read_register (FP0_REGNUM + 9),
(long) read_register (FP0_REGNUM + 10),
@@ -700,6 +741,25 @@ sh_show_regs (args, from_tty)
(long) read_register (FP0_REGNUM + 14),
(long) read_register (FP0_REGNUM + 15));
}
+ /* FIXME: sh4 has more registers */
+ if (cpu == bfd_mach_sh_dsp || cpu == bfd_mach_sh3_dsp)
+ {
+ printf_filtered ("A0G=%02lx A0=%08lx M0=%08lx X0=%08lx Y0=%08lx RS=%08lx MOD=%08lx\n",
+ (long) read_register (A0G_REGNUM) & 0xff,
+ (long) read_register (A0_REGNUM),
+ (long) read_register (M0_REGNUM),
+ (long) read_register (X0_REGNUM),
+ (long) read_register (Y0_REGNUM),
+ (long) read_register (RS_REGNUM),
+ (long) read_register (MOD_REGNUM));
+ printf_filtered ("A1G=%02lx A1=%08lx M1=%08lx X1=%08lx Y1=%08lx RE=%08lx\n",
+ (long) read_register (A1G_REGNUM) & 0xff,
+ (long) read_register (A1_REGNUM),
+ (long) read_register (M1_REGNUM),
+ (long) read_register (X1_REGNUM),
+ (long) read_register (Y1_REGNUM),
+ (long) read_register (RE_REGNUM));
+ }
}
/* Function: extract_return_value
diff --git a/gdb/sh3-rom.c b/gdb/sh3-rom.c
index 3fd1e68bb07..b76e8ca73af 100644
--- a/gdb/sh3-rom.c
+++ b/gdb/sh3-rom.c
@@ -28,7 +28,7 @@
static serial_t parallel;
static int parallel_in_use;
-static void sh3_open PARAMS ((char *args, int from_tty));
+static void sh3_open (char *args, int from_tty);
static void
sh3_supply_register (regname, regnamelen, val, vallen)
diff --git a/gdb/sol-thread.c b/gdb/sol-thread.c
index 14ca05a1c7a..563dbd07fad 100644
--- a/gdb/sol-thread.c
+++ b/gdb/sol-thread.c
@@ -70,21 +70,10 @@ struct target_ops sol_core_ops;
extern int procfs_suppress_run;
extern struct target_ops procfs_ops; /* target vector for procfs.c */
extern struct target_ops core_ops; /* target vector for corelow.c */
-extern char *procfs_pid_to_str PARAMS ((int pid));
-
-/* Note that these prototypes differ slightly from those used in procfs.c
- for of two reasons. One, we can't use gregset_t, as that's got a whole
- different meaning under Solaris (also, see above). Two, we can't use the
- pointer form here as these are actually arrays of ints (for Sparc's at
- least), and are automatically coerced into pointers to ints when used as
- parameters. That makes it impossible to avoid a compiler warning when
- passing pr{g fp}regset_t's from a parameter to an argument of one of
- these functions. */
-
-extern void supply_gregset PARAMS ((const prgregset_t));
-extern void fill_gregset PARAMS ((prgregset_t, int));
-extern void supply_fpregset PARAMS ((const prfpregset_t *));
-extern void fill_fpregset PARAMS ((prfpregset_t *, int));
+extern char *procfs_pid_to_str (int pid);
+
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
/* This struct is defined by us, but mainly used for the proc_service interface.
We don't have much use for it, except as a handy place to get a real pid
@@ -105,19 +94,18 @@ static struct ps_prochandle main_ph;
static td_thragent_t *main_ta;
static int sol_thread_active = 0;
-static struct cleanup *save_inferior_pid PARAMS ((void));
-static void restore_inferior_pid PARAMS ((void *pid));
-static char *td_err_string PARAMS ((td_err_e errcode));
-static char *td_state_string PARAMS ((td_thr_state_e statecode));
-static int thread_to_lwp PARAMS ((int thread_id, int default_lwp));
-static void sol_thread_resume PARAMS ((int pid, int step,
- enum target_signal signo));
-static int lwp_to_thread PARAMS ((int lwp));
-static int sol_thread_alive PARAMS ((int pid));
-static void sol_core_close PARAMS ((int quitting));
+static struct cleanup *save_inferior_pid (void);
+static void restore_inferior_pid (void *pid);
+static char *td_err_string (td_err_e errcode);
+static char *td_state_string (td_thr_state_e statecode);
+static int thread_to_lwp (int thread_id, int default_lwp);
+static void sol_thread_resume (int pid, int step, enum target_signal signo);
+static int lwp_to_thread (int lwp);
+static int sol_thread_alive (int pid);
+static void sol_core_close (int quitting);
-static void init_sol_thread_ops PARAMS ((void));
-static void init_sol_core_ops PARAMS ((void));
+static void init_sol_thread_ops (void);
+static void init_sol_core_ops (void);
/* Default definitions: These must be defined in tm.h
if they are to be shared with a process module such as procfs. */
@@ -133,54 +121,59 @@ static void init_sol_core_ops PARAMS ((void));
/* Pointers to routines from lithread_db resolved by dlopen() */
-static void
- (*p_td_log) (const int on_off);
-static td_err_e
- (*p_td_ta_new) (const struct ps_prochandle * ph_p, td_thragent_t ** ta_pp);
-static td_err_e
- (*p_td_ta_delete) (td_thragent_t * ta_p);
-static td_err_e
- (*p_td_init) (void);
-static td_err_e
- (*p_td_ta_get_ph) (const td_thragent_t * ta_p, struct ps_prochandle ** ph_pp);
-static td_err_e
- (*p_td_ta_get_nthreads) (const td_thragent_t * ta_p, int *nthread_p);
-static td_err_e
- (*p_td_ta_tsd_iter) (const td_thragent_t * ta_p, td_key_iter_f * cb, void *cbdata_p);
-static td_err_e
- (*p_td_ta_thr_iter) (const td_thragent_t * ta_p, td_thr_iter_f * cb, void *cbdata_p, td_thr_state_e state,
- int ti_pri, sigset_t * ti_sigmask_p, unsigned ti_user_flags);
-static td_err_e
- (*p_td_thr_validate) (const td_thrhandle_t * th_p);
-static td_err_e
- (*p_td_thr_tsd) (const td_thrhandle_t * th_p, const thread_key_t key, void **data_pp);
-static td_err_e
- (*p_td_thr_get_info) (const td_thrhandle_t * th_p, td_thrinfo_t * ti_p);
-static td_err_e
- (*p_td_thr_getfpregs) (const td_thrhandle_t * th_p, prfpregset_t * fpregset);
-static td_err_e
- (*p_td_thr_getxregsize) (const td_thrhandle_t * th_p, int *xregsize);
-static td_err_e
- (*p_td_thr_getxregs) (const td_thrhandle_t * th_p, const caddr_t xregset);
-static td_err_e
- (*p_td_thr_sigsetmask) (const td_thrhandle_t * th_p, const sigset_t ti_sigmask);
-static td_err_e
- (*p_td_thr_setprio) (const td_thrhandle_t * th_p, const int ti_pri);
-static td_err_e
- (*p_td_thr_setsigpending) (const td_thrhandle_t * th_p, const uchar_t ti_pending_flag, const sigset_t ti_pending);
-static td_err_e
- (*p_td_thr_setfpregs) (const td_thrhandle_t * th_p, const prfpregset_t * fpregset);
-static td_err_e
- (*p_td_thr_setxregs) (const td_thrhandle_t * th_p, const caddr_t xregset);
-static td_err_e
- (*p_td_ta_map_id2thr) (const td_thragent_t * ta_p, thread_t tid, td_thrhandle_t * th_p);
-static td_err_e
- (*p_td_ta_map_lwp2thr) (const td_thragent_t * ta_p, lwpid_t lwpid, td_thrhandle_t * th_p);
-static td_err_e
- (*p_td_thr_getgregs) (const td_thrhandle_t * th_p, prgregset_t regset);
-static td_err_e
- (*p_td_thr_setgregs) (const td_thrhandle_t * th_p, const prgregset_t regset);
-
+static void (*p_td_log) (const int on_off);
+static td_err_e (*p_td_ta_new) (const struct ps_prochandle * ph_p,
+ td_thragent_t ** ta_pp);
+static td_err_e (*p_td_ta_delete) (td_thragent_t * ta_p);
+static td_err_e (*p_td_init) (void);
+static td_err_e (*p_td_ta_get_ph) (const td_thragent_t * ta_p,
+ struct ps_prochandle ** ph_pp);
+static td_err_e (*p_td_ta_get_nthreads) (const td_thragent_t * ta_p,
+ int *nthread_p);
+static td_err_e (*p_td_ta_tsd_iter) (const td_thragent_t * ta_p,
+ td_key_iter_f * cb,
+ void *cbdata_p);
+static td_err_e (*p_td_ta_thr_iter) (const td_thragent_t * ta_p,
+ td_thr_iter_f * cb,
+ void *cbdata_p,
+ td_thr_state_e state,
+ int ti_pri,
+ sigset_t * ti_sigmask_p,
+ unsigned ti_user_flags);
+static td_err_e (*p_td_thr_validate) (const td_thrhandle_t * th_p);
+static td_err_e (*p_td_thr_tsd) (const td_thrhandle_t * th_p,
+ const thread_key_t key,
+ void **data_pp);
+static td_err_e (*p_td_thr_get_info) (const td_thrhandle_t * th_p,
+ td_thrinfo_t * ti_p);
+static td_err_e (*p_td_thr_getfpregs) (const td_thrhandle_t * th_p,
+ prfpregset_t * fpregset);
+static td_err_e (*p_td_thr_getxregsize) (const td_thrhandle_t * th_p,
+ int *xregsize);
+static td_err_e (*p_td_thr_getxregs) (const td_thrhandle_t * th_p,
+ const caddr_t xregset);
+static td_err_e (*p_td_thr_sigsetmask) (const td_thrhandle_t * th_p,
+ const sigset_t ti_sigmask);
+static td_err_e (*p_td_thr_setprio) (const td_thrhandle_t * th_p,
+ const int ti_pri);
+static td_err_e (*p_td_thr_setsigpending) (const td_thrhandle_t * th_p,
+ const uchar_t ti_pending_flag,
+ const sigset_t ti_pending);
+static td_err_e (*p_td_thr_setfpregs) (const td_thrhandle_t * th_p,
+ const prfpregset_t * fpregset);
+static td_err_e (*p_td_thr_setxregs) (const td_thrhandle_t * th_p,
+ const caddr_t xregset);
+static td_err_e (*p_td_ta_map_id2thr) (const td_thragent_t * ta_p,
+ thread_t tid,
+ td_thrhandle_t * th_p);
+static td_err_e (*p_td_ta_map_lwp2thr) (const td_thragent_t * ta_p,
+ lwpid_t lwpid,
+ td_thrhandle_t * th_p);
+static td_err_e (*p_td_thr_getgregs) (const td_thrhandle_t * th_p,
+ prgregset_t regset);
+static td_err_e (*p_td_thr_setgregs) (const td_thrhandle_t * th_p,
+ const prgregset_t regset);
+
/*
LOCAL FUNCTION
@@ -390,7 +383,8 @@ lwp_to_thread (lwp)
val = p_td_thr_validate (&th);
if (val == TD_NOTHR)
- return lwp; /* libthread doesn't know about it, just return lwp */
+ return lwp; /* libthread doesn't know about it;
+ just return lwp */
else if (val != TD_OK)
error ("lwp_to_thread: td_thr_validate: %s.", td_err_string (val));
@@ -654,8 +648,8 @@ sol_thread_fetch_registers (regno)
because the td routines call ps_lget* which affect the values stored in the
registers array. */
- supply_gregset (gregset);
- supply_fpregset (&fpregset);
+ supply_gregset ((gdb_gregset_t *) &gregset);
+ supply_fpregset ((gdb_fpregset_t *) &fpregset);
#if 0
/* thread_db doesn't seem to handle this right */
@@ -682,7 +676,7 @@ sol_thread_store_registers (regno)
thread_t thread;
td_thrhandle_t thandle;
td_err_e val;
- prgregset_t regset;
+ prgregset_t gregset;
prfpregset_t fpregset;
#if 0
int xregsize;
@@ -710,7 +704,7 @@ sol_thread_store_registers (regno)
char old_value[REGISTER_SIZE];
memcpy (old_value, &registers[REGISTER_BYTE (regno)], REGISTER_SIZE);
- val = p_td_thr_getgregs (&thandle, regset);
+ val = p_td_thr_getgregs (&thandle, gregset);
if (val != TD_OK)
error ("sol_thread_store_registers: td_thr_getgregs %s",
td_err_string (val));
@@ -740,10 +734,10 @@ sol_thread_store_registers (regno)
#endif
}
- fill_gregset (regset, regno);
- fill_fpregset (&fpregset, regno);
+ fill_gregset ((gdb_gregset_t *) &gregset, regno);
+ fill_fpregset ((gdb_fpregset_t *) &fpregset, regno);
- val = p_td_thr_setgregs (&thandle, regset);
+ val = p_td_thr_setgregs (&thandle, gregset);
if (val != TD_OK)
error ("sol_thread_store_registers: td_thr_setgregs %s",
td_err_string (val));
@@ -847,7 +841,8 @@ sol_thread_create_inferior (exec_file, allargs, env)
if (inferior_pid == -1)
inferior_pid = main_ph.pid;
- add_thread (inferior_pid);
+ if (!in_thread_list (inferior_pid))
+ add_thread (inferior_pid);
}
}
@@ -862,7 +857,7 @@ sol_thread_create_inferior (exec_file, allargs, env)
*/
/* Saved pointer to previous owner of the new_objfile event. */
-static void (*target_new_objfile_chain) PARAMS ((struct objfile *));
+static void (*target_new_objfile_chain) (struct objfile *);
void
sol_thread_new_objfile (objfile)
@@ -1095,6 +1090,20 @@ rw_common (int dowrite, const struct ps_prochandle *ph, gdb_ps_addr_t addr,
return PS_ERR;
}
+ else if (cc == 0)
+ {
+ if (dowrite == 0)
+ warning ("rw_common (): unable to read at addr 0x%lx",
+ (long) addr);
+ else
+ warning ("rw_common (): unable to write at addr 0x%lx",
+ (long) addr);
+
+ do_cleanups (old_chain);
+
+ return PS_ERR;
+ }
+
size -= cc;
buf += cc;
}
@@ -1156,7 +1165,7 @@ ps_lgetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
procfs_ops.to_fetch_registers (-1);
else
orig_core_ops.to_fetch_registers (-1);
- fill_gregset (gregset, -1);
+ fill_gregset ((gdb_gregset_t *) gregset, -1);
do_cleanups (old_chain);
@@ -1175,7 +1184,7 @@ ps_lsetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
inferior_pid = BUILD_LWP (lwpid, PIDGET (inferior_pid));
- supply_gregset (gregset);
+ supply_gregset ((gdb_gregset_t *) gregset);
if (target_has_execution)
procfs_ops.to_store_registers (-1);
else
@@ -1288,7 +1297,7 @@ ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
procfs_ops.to_fetch_registers (-1);
else
orig_core_ops.to_fetch_registers (-1);
- fill_fpregset (fpregset, -1);
+ fill_fpregset ((gdb_fpregset_t *) fpregset, -1);
do_cleanups (old_chain);
@@ -1307,7 +1316,7 @@ ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
inferior_pid = BUILD_LWP (lwpid, PIDGET (inferior_pid));
- supply_fpregset (fpregset);
+ supply_fpregset ((gdb_fpregset_t *) fpregset);
if (target_has_execution)
procfs_ops.to_store_registers (-1);
else
@@ -1632,7 +1641,13 @@ init_sol_core_ops ()
sol_core_ops.to_has_registers = 1;
sol_core_ops.to_has_execution = 0;
sol_core_ops.to_has_thread_control = tc_none;
+ sol_core_ops.to_thread_alive = sol_thread_alive;
sol_core_ops.to_pid_to_str = solaris_pid_to_str;
+ /* On Solaris/x86, when debugging a threaded core file from process <n>,
+ the following causes "info threads" to produce "procfs: couldn't find pid
+ <n> in procinfo list" where <n> is the pid of the process that produced
+ the core file. Disable it for now. */
+ /* sol_core_ops.to_find_new_threads = sol_find_new_threads; */
sol_core_ops.to_sections = 0;
sol_core_ops.to_sections_end = 0;
sol_core_ops.to_magic = OPS_MAGIC;
diff --git a/gdb/solib.c b/gdb/solib.c
index ded9faee19e..080962e92e1 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -184,61 +184,49 @@ static CORE_ADDR breakpoint_addr; /* Address where end bkpt is set */
static int solib_cleanup_queued = 0; /* make_run_cleanup called */
-extern int
-fdmatch PARAMS ((int, int)); /* In libiberty */
+extern int fdmatch (int, int); /* In libiberty */
/* Local function prototypes */
-static void
-do_clear_solib PARAMS ((PTR));
+static void do_clear_solib (PTR);
-static int
-match_main PARAMS ((char *));
+static int match_main (char *);
-static void
-special_symbol_handling PARAMS ((void));
+static void special_symbol_handling (void);
-static void
-sharedlibrary_command PARAMS ((char *, int));
+static void sharedlibrary_command (char *, int);
-static int
-enable_break PARAMS ((void));
+static int enable_break (void);
-static void
-info_sharedlibrary_command PARAMS ((char *, int));
+static void info_sharedlibrary_command (char *, int);
-static int symbol_add_stub PARAMS ((PTR));
+static int symbol_add_stub (PTR);
-static CORE_ADDR
- first_link_map_member PARAMS ((void));
+static CORE_ADDR first_link_map_member (void);
-static CORE_ADDR
- locate_base PARAMS ((void));
+static CORE_ADDR locate_base (void);
-static int solib_map_sections PARAMS ((PTR));
+static int solib_map_sections (PTR);
#ifdef SVR4_SHARED_LIBS
-static CORE_ADDR
- elf_locate_base PARAMS ((void));
+static CORE_ADDR elf_locate_base (void);
#else
static struct so_list *current_sos (void);
static void free_so (struct so_list *node);
-static int
-disable_break PARAMS ((void));
+static int disable_break (void);
-static void
-allocate_rt_common_objfile PARAMS ((void));
+static void allocate_rt_common_objfile (void);
static void
solib_add_common_symbols (CORE_ADDR);
#endif
-void _initialize_solib PARAMS ((void));
+void _initialize_solib (void);
/* If non-zero, this is a prefix that will be added to the front of the name
shared libraries with an absolute filename for loading. */
@@ -445,7 +433,7 @@ solib_add_common_symbols (rtc_symp)
}
init_minimal_symbol_collection ();
- make_cleanup ((make_cleanup_func) discard_minimal_symbols, 0);
+ make_cleanup_discard_minimal_symbols ();
while (rtc_symp)
{
@@ -488,8 +476,7 @@ solib_add_common_symbols (rtc_symp)
#ifdef SVR4_SHARED_LIBS
-static CORE_ADDR
- bfd_lookup_symbol PARAMS ((bfd *, char *));
+static CORE_ADDR bfd_lookup_symbol (bfd *, char *);
/*
@@ -574,8 +561,7 @@ static char *debug_base_symbols[] =
NULL
};
-static int
-look_for_base PARAMS ((int, CORE_ADDR));
+static int look_for_base (int, CORE_ADDR);
/*
@@ -710,6 +696,7 @@ elf_locate_base ()
CORE_ADDR dyninfo_addr;
char *buf;
char *bufend;
+ int arch_size;
/* Find the start address of the .dynamic section. */
dyninfo_sect = bfd_get_section_by_name (exec_bfd, ".dynamic");
@@ -726,56 +713,67 @@ elf_locate_base ()
/* Find the DT_DEBUG entry in the the .dynamic section.
For mips elf we look for DT_MIPS_RLD_MAP, mips elf apparently has
no DT_DEBUG entries. */
-#ifndef TARGET_ELF64
- for (bufend = buf + dyninfo_sect_size;
- buf < bufend;
- buf += sizeof (Elf32_External_Dyn))
- {
- Elf32_External_Dyn *x_dynp = (Elf32_External_Dyn *) buf;
- long dyn_tag;
- CORE_ADDR dyn_ptr;
-
- dyn_tag = bfd_h_get_32 (exec_bfd, (bfd_byte *) x_dynp->d_tag);
- if (dyn_tag == DT_NULL)
- break;
- else if (dyn_tag == DT_DEBUG)
+
+ arch_size = bfd_elf_get_arch_size (exec_bfd);
+ if (arch_size == -1) /* failure */
+ return 0;
+
+ if (arch_size == 32)
+ { /* 32-bit elf */
+ for (bufend = buf + dyninfo_sect_size;
+ buf < bufend;
+ buf += sizeof (Elf32_External_Dyn))
{
- dyn_ptr = bfd_h_get_32 (exec_bfd, (bfd_byte *) x_dynp->d_un.d_ptr);
- return dyn_ptr;
- }
+ Elf32_External_Dyn *x_dynp = (Elf32_External_Dyn *) buf;
+ long dyn_tag;
+ CORE_ADDR dyn_ptr;
+
+ dyn_tag = bfd_h_get_32 (exec_bfd, (bfd_byte *) x_dynp->d_tag);
+ if (dyn_tag == DT_NULL)
+ break;
+ else if (dyn_tag == DT_DEBUG)
+ {
+ dyn_ptr = bfd_h_get_32 (exec_bfd,
+ (bfd_byte *) x_dynp->d_un.d_ptr);
+ return dyn_ptr;
+ }
#ifdef DT_MIPS_RLD_MAP
- else if (dyn_tag == DT_MIPS_RLD_MAP)
- {
- char pbuf[TARGET_PTR_BIT / HOST_CHAR_BIT];
-
- /* DT_MIPS_RLD_MAP contains a pointer to the address
- of the dynamic link structure. */
- dyn_ptr = bfd_h_get_32 (exec_bfd, (bfd_byte *) x_dynp->d_un.d_ptr);
- if (target_read_memory (dyn_ptr, pbuf, sizeof (pbuf)))
- return 0;
- return extract_unsigned_integer (pbuf, sizeof (pbuf));
- }
+ else if (dyn_tag == DT_MIPS_RLD_MAP)
+ {
+ char pbuf[TARGET_PTR_BIT / HOST_CHAR_BIT];
+
+ /* DT_MIPS_RLD_MAP contains a pointer to the address
+ of the dynamic link structure. */
+ dyn_ptr = bfd_h_get_32 (exec_bfd,
+ (bfd_byte *) x_dynp->d_un.d_ptr);
+ if (target_read_memory (dyn_ptr, pbuf, sizeof (pbuf)))
+ return 0;
+ return extract_unsigned_integer (pbuf, sizeof (pbuf));
+ }
#endif
+ }
}
-#else /* ELF64 */
- for (bufend = buf + dyninfo_sect_size;
- buf < bufend;
- buf += sizeof (Elf64_External_Dyn))
+ else /* 64-bit elf */
{
- Elf64_External_Dyn *x_dynp = (Elf64_External_Dyn *) buf;
- long dyn_tag;
- CORE_ADDR dyn_ptr;
-
- dyn_tag = bfd_h_get_64 (exec_bfd, (bfd_byte *) x_dynp->d_tag);
- if (dyn_tag == DT_NULL)
- break;
- else if (dyn_tag == DT_DEBUG)
+ for (bufend = buf + dyninfo_sect_size;
+ buf < bufend;
+ buf += sizeof (Elf64_External_Dyn))
{
- dyn_ptr = bfd_h_get_64 (exec_bfd, (bfd_byte *) x_dynp->d_un.d_ptr);
- return dyn_ptr;
+ Elf64_External_Dyn *x_dynp = (Elf64_External_Dyn *) buf;
+ long dyn_tag;
+ CORE_ADDR dyn_ptr;
+
+ dyn_tag = bfd_h_get_64 (exec_bfd, (bfd_byte *) x_dynp->d_tag);
+ if (dyn_tag == DT_NULL)
+ break;
+ else if (dyn_tag == DT_DEBUG)
+ {
+ dyn_ptr = bfd_h_get_64 (exec_bfd,
+ (bfd_byte *) x_dynp->d_un.d_ptr);
+ return dyn_ptr;
+ }
}
}
-#endif
/* DT_DEBUG entry not found. */
return 0;
@@ -972,7 +970,7 @@ open_symbol_file_object (from_ttyp)
return 0;
}
- make_cleanup ((make_cleanup_func) free, (void *) filename);
+ make_cleanup (free, filename);
/* Have a pathname: read the symbol file. */
symbol_file_command (filename, *from_ttyp);
@@ -1153,8 +1151,10 @@ symbol_add_stub (arg)
PTR arg;
{
register struct so_list *so = (struct so_list *) arg; /* catch_errs bogon */
- CORE_ADDR text_addr = 0;
struct section_addr_info *sap;
+ CORE_ADDR lowest_addr = 0;
+ int lowest_index;
+ asection *lowest_sect = NULL;
/* Have we already loaded this shared object? */
ALL_OBJFILES (so->objfile)
@@ -1165,25 +1165,33 @@ symbol_add_stub (arg)
/* Find the shared object's text segment. */
if (so->textsection)
- text_addr = so->textsection->addr;
+ {
+ lowest_addr = so->textsection->addr;
+ lowest_sect = bfd_get_section_by_name (so->abfd, ".text");
+ lowest_index = lowest_sect->index;
+ }
else if (so->abfd != NULL)
{
- asection *lowest_sect;
-
- /* If we didn't find a mapped non zero sized .text section, set up
- text_addr so that the relocation in symbol_file_add does no harm. */
+ /* If we didn't find a mapped non zero sized .text section, set
+ up lowest_addr so that the relocation in symbol_file_add does
+ no harm. */
lowest_sect = bfd_get_section_by_name (so->abfd, ".text");
if (lowest_sect == NULL)
bfd_map_over_sections (so->abfd, find_lowest_section,
(PTR) &lowest_sect);
if (lowest_sect)
- text_addr = bfd_section_vma (so->abfd, lowest_sect)
- + LM_ADDR (so);
+ {
+ lowest_addr = bfd_section_vma (so->abfd, lowest_sect)
+ + LM_ADDR (so);
+ lowest_index = lowest_sect->index;
+ }
}
sap = build_section_addr_info_from_section_table (so->sections,
so->sections_end);
- sap->text_addr = text_addr;
+
+ sap->other[lowest_index].addr = lowest_addr;
+
so->objfile = symbol_file_add (so->so_name, so->from_tty,
sap, 0, OBJF_SHARED);
free_section_addr_info (sap);
@@ -1475,6 +1483,7 @@ info_sharedlibrary_command (ignore, from_tty)
int header_done = 0;
int addr_width;
char *addr_fmt;
+ int arch_size;
if (exec_bfd == NULL)
{
@@ -1482,13 +1491,18 @@ info_sharedlibrary_command (ignore, from_tty)
return;
}
-#ifndef TARGET_ELF64
- addr_width = 8 + 4;
- addr_fmt = "08l";
-#else
- addr_width = 16 + 4;
- addr_fmt = "016l";
-#endif
+ arch_size = bfd_elf_get_arch_size (exec_bfd);
+ /* Default to 32-bit in case of failure (non-elf). */
+ if (arch_size == 32 || arch_size == -1)
+ {
+ addr_width = 8 + 4;
+ addr_fmt = "08l";
+ }
+ else if (arch_size == 64)
+ {
+ addr_width = 16 + 4;
+ addr_fmt = "016l";
+ }
update_solib_list (from_tty, 0);
diff --git a/gdb/solib.h b/gdb/solib.h
index bb5f5fc569f..dd8b23cff8d 100644
--- a/gdb/solib.h
+++ b/gdb/solib.h
@@ -26,16 +26,14 @@ struct target_ops;
#define CLEAR_SOLIB clear_solib
-extern void
-clear_solib PARAMS ((void));
+extern void clear_solib (void);
/* Called to add symbols from a shared library to gdb's symbol table. */
#define SOLIB_ADD(filename, from_tty, targ) \
solib_add (filename, from_tty, targ)
-extern void
-solib_add PARAMS ((char *, int, struct target_ops *));
+extern void solib_add (char *, int, struct target_ops *);
/* Function to be called when the inferior starts up, to discover the names
of shared libraries that are dynamically linked, the base addresses to
@@ -53,8 +51,7 @@ solib_add PARAMS ((char *, int, struct target_ops *));
*/
#define SOLIB_REMOVE_INFERIOR_HOOK(PID) (0)
-extern void
-solib_create_inferior_hook PARAMS ((void)); /* solib.c */
+extern void solib_create_inferior_hook (void); /* solib.c */
/* This function is called by the "catch load" command. It allows
the debugger to be notified by the dynamic linker when a specified
@@ -183,8 +180,7 @@ solib_create_inferior_hook PARAMS ((void)); /* solib.c */
#define DISABLE_UNSETTABLE_BREAK(addr) (solib_address(addr) != NULL)
-extern char *
- solib_address PARAMS ((CORE_ADDR)); /* solib.c */
+extern char *solib_address (CORE_ADDR); /* solib.c */
/* If ADDR lies in a shared library, return its name. */
@@ -197,7 +193,6 @@ extern char *
#define IN_SOLIB_DYNSYM_RESOLVE_CODE(pc) in_svr4_dynsym_resolve_code (pc)
-extern int
-in_svr4_dynsym_resolve_code PARAMS ((CORE_ADDR));
+extern int in_svr4_dynsym_resolve_code (CORE_ADDR);
#endif
diff --git a/gdb/somread.c b/gdb/somread.c
index 489a33095ab..b2aecc05671 100644
--- a/gdb/somread.c
+++ b/gdb/somread.c
@@ -36,38 +36,29 @@
/* Various things we might complain about... */
-static void
-som_symfile_init PARAMS ((struct objfile *));
+static void som_symfile_init (struct objfile *);
-static void
-som_new_init PARAMS ((struct objfile *));
+static void som_new_init (struct objfile *);
-static void
-som_symfile_read PARAMS ((struct objfile *, int));
+static void som_symfile_read (struct objfile *, int);
-static void
-som_symfile_finish PARAMS ((struct objfile *));
+static void som_symfile_finish (struct objfile *);
static void
-som_symtab_read PARAMS ((bfd *, struct objfile *,
- struct section_offsets *));
+som_symtab_read (bfd *, struct objfile *, struct section_offsets *);
static void
-som_symfile_offsets PARAMS ((struct objfile *, struct section_addr_info *));
+som_symfile_offsets (struct objfile *, struct section_addr_info *);
/* FIXME: These should really be in a common header somewhere */
-extern void
-hpread_build_psymtabs PARAMS ((struct objfile *, int));
+extern void hpread_build_psymtabs (struct objfile *, int);
-extern void
-hpread_symfile_finish PARAMS ((struct objfile *));
+extern void hpread_symfile_finish (struct objfile *);
-extern void
-hpread_symfile_init PARAMS ((struct objfile *));
+extern void hpread_symfile_init (struct objfile *);
-extern void
-do_pxdb PARAMS ((bfd *));
+extern void do_pxdb (bfd *);
/*
@@ -366,7 +357,7 @@ som_symfile_read (objfile, mainline)
do_pxdb (symfile_bfd_open (objfile->name));
init_minimal_symbol_collection ();
- back_to = make_cleanup ((make_cleanup_func) discard_minimal_symbols, 0);
+ back_to = make_cleanup_discard_minimal_symbols ();
/* Read in the import list and the export list. Currently
the export list isn't used; the import list is used in
@@ -465,17 +456,37 @@ som_symfile_offsets (objfile, addrs)
struct section_addr_info *addrs;
{
int i;
+ CORE_ADDR text_addr;
objfile->num_sections = SECT_OFF_MAX;
objfile->section_offsets = (struct section_offsets *)
obstack_alloc (&objfile->psymbol_obstack, SIZEOF_SECTION_OFFSETS);
+ /* FIXME: ezannoni 2000-04-20 The section names in SOM are not
+ .text, .data, etc, but $TEXT$, $DATA$,... We should initialize
+ SET_OFF_* from bfd. (See default_symfile_offsets()). But I don't
+ know the correspondence between SOM sections and GDB's idea of
+ section names. So for now we default to what is was before these
+ changes.*/
+ objfile->sect_index_text = 0;
+ objfile->sect_index_data = 1;
+ objfile->sect_index_bss = 2;
+ objfile->sect_index_rodata = 3;
+
/* First see if we're a shared library. If so, get the section
offsets from the library, else get them from addrs. */
if (!som_solib_section_offsets (objfile, objfile->section_offsets))
{
+ /* Note: Here is OK to compare with ".text" because this is the
+ name that gdb itself gives to that section, not the SOM
+ name. */
+ for (i = 0; i < SECT_OFF_MAX && addrs->other[i].name; i++)
+ if (strcmp (addrs->other[i].name, ".text") == 0)
+ break;
+ text_addr = addrs->other[i].addr;
+
for (i = 0; i < SECT_OFF_MAX; i++)
- ANOFFSET (objfile->section_offsets, i) = addrs -> text_addr;
+ ANOFFSET (objfile->section_offsets, i) = text_addr;
}
}
diff --git a/gdb/somsolib.c b/gdb/somsolib.c
index cde7f91d286..d5d53417117 100644
--- a/gdb/somsolib.c
+++ b/gdb/somsolib.c
@@ -57,7 +57,7 @@
extern struct target_ops exec_ops;
/* This lives in hppa-tdep.c. */
-extern struct unwind_table_entry *find_unwind_entry PARAMS ((CORE_ADDR pc));
+extern struct unwind_table_entry *find_unwind_entry (CORE_ADDR pc);
/* These ought to be defined in some public interface, but aren't. They
define the meaning of the various bits in the distinguished __dld_flags
@@ -203,9 +203,9 @@ dld_cache;
-static void som_sharedlibrary_info_command PARAMS ((char *, int));
+static void som_sharedlibrary_info_command (char *, int);
-static void som_solib_sharedlibrary_command PARAMS ((char *, int));
+static void som_solib_sharedlibrary_command (char *, int);
static LONGEST
som_solib_sizeof_symbol_table (filename)
@@ -290,7 +290,8 @@ som_solib_add_solib_objfile (so, name, from_tty, text_addr)
struct section_addr_info section_addrs;
memset (&section_addrs, 0, sizeof (section_addrs));
- section_addrs.text_addr = text_addr;
+ section_addrs.other[0].name = ".text";
+ section_addrs.other[0].addr = text_addr;
so->objfile = symbol_file_add (name, from_tty, &section_addrs, 0, OBJF_SHARED);
so->abfd = so->objfile->obfd;
@@ -354,13 +355,13 @@ som_solib_load_symbols (so, name, from_tty, text_addr, target)
{
if (p->the_bfd_section->flags & SEC_CODE)
{
- p->addr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_TEXT);
- p->endaddr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_TEXT);
+ p->addr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_TEXT (so->objfile));
+ p->endaddr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_TEXT (so->objfile));
}
else if (p->the_bfd_section->flags & SEC_DATA)
{
- p->addr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_DATA);
- p->endaddr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_DATA);
+ p->addr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_DATA (so->objfile));
+ p->endaddr += ANOFFSET (so->objfile->section_offsets, SECT_OFF_DATA (so->objfile));
}
}
@@ -1406,11 +1407,11 @@ som_solib_section_offsets (objfile, offsets)
asection *private_section;
/* The text offset is easy. */
- ANOFFSET (offsets, SECT_OFF_TEXT)
+ ANOFFSET (offsets, SECT_OFF_TEXT (objfile))
= (so_list->som_solib.text_addr
- so_list->som_solib.text_link_addr);
- ANOFFSET (offsets, SECT_OFF_RODATA)
- = ANOFFSET (offsets, SECT_OFF_TEXT);
+ ANOFFSET (offsets, SECT_OFF_RODATA (objfile))
+ = ANOFFSET (offsets, SECT_OFF_TEXT (objfile));
/* We should look at presumed_dp in the SOM header, but
that's not easily available. This should be OK though. */
@@ -1419,14 +1420,14 @@ som_solib_section_offsets (objfile, offsets)
if (!private_section)
{
warning ("Unable to find $PRIVATE$ in shared library!");
- ANOFFSET (offsets, SECT_OFF_DATA) = 0;
- ANOFFSET (offsets, SECT_OFF_BSS) = 0;
+ ANOFFSET (offsets, SECT_OFF_DATA (objfile)) = 0;
+ ANOFFSET (offsets, SECT_OFF_BSS (objfile)) = 0;
return 1;
}
- ANOFFSET (offsets, SECT_OFF_DATA)
+ ANOFFSET (offsets, SECT_OFF_DATA (objfile))
= (so_list->som_solib.data_start - private_section->vma);
- ANOFFSET (offsets, SECT_OFF_BSS)
- = ANOFFSET (offsets, SECT_OFF_DATA);
+ ANOFFSET (offsets, SECT_OFF_BSS (objfile))
+ = ANOFFSET (offsets, SECT_OFF_DATA (objfile));
return 1;
}
so_list = so_list->next;
diff --git a/gdb/somsolib.h b/gdb/somsolib.h
index 843ad85882f..cb6dd81c553 100644
--- a/gdb/somsolib.h
+++ b/gdb/somsolib.h
@@ -31,14 +31,12 @@ struct section_offsets;
#define SOLIB_ADD(filename, from_tty, targ) \
som_solib_add (filename, from_tty, targ)
-extern void
-som_solib_add PARAMS ((char *, int, struct target_ops *));
+extern void som_solib_add (char *, int, struct target_ops *);
-extern CORE_ADDR
- som_solib_get_got_by_pc PARAMS ((CORE_ADDR));
+extern CORE_ADDR som_solib_get_got_by_pc (CORE_ADDR);
extern int
-som_solib_section_offsets PARAMS ((struct objfile *, struct section_offsets *));
+som_solib_section_offsets (struct objfile *, struct section_offsets *);
/* Function to be called when the inferior starts up, to discover the names
of shared libraries that are dynamically linked, the base addresses to
@@ -47,8 +45,7 @@ som_solib_section_offsets PARAMS ((struct objfile *, struct section_offsets *));
#define SOLIB_CREATE_INFERIOR_HOOK(PID) som_solib_create_inferior_hook()
-extern void
-som_solib_create_inferior_hook PARAMS ((void));
+extern void som_solib_create_inferior_hook (void);
/* Function to be called to remove the connection between debugger and
dynamic linker that was established by SOLIB_CREATE_INFERIOR_HOOK.
@@ -57,8 +54,7 @@ som_solib_create_inferior_hook PARAMS ((void));
*/
#define SOLIB_REMOVE_INFERIOR_HOOK(PID) som_solib_remove_inferior_hook(PID)
-extern void
-som_solib_remove_inferior_hook PARAMS ((int));
+extern void som_solib_remove_inferior_hook (int);
/* This function is called by the "catch load" command. It allows
the debugger to be notified by the dynamic linker when a specified
@@ -67,8 +63,7 @@ som_solib_remove_inferior_hook PARAMS ((int));
#define SOLIB_CREATE_CATCH_LOAD_HOOK(pid,tempflag, filename,cond_string) \
som_solib_create_catch_load_hook (pid, tempflag, filename, cond_string)
-extern void
-som_solib_create_catch_load_hook PARAMS ((int, int, char *, char *));
+extern void som_solib_create_catch_load_hook (int, int, char *, char *);
/* This function is called by the "catch unload" command. It allows
the debugger to be notified by the dynamic linker when a specified
@@ -77,8 +72,7 @@ som_solib_create_catch_load_hook PARAMS ((int, int, char *, char *));
#define SOLIB_CREATE_CATCH_UNLOAD_HOOK(pid,tempflag,filename, cond_string) \
som_solib_create_catch_unload_hook (pid, tempflag, filename, cond_string)
-extern void
-som_solib_create_catch_unload_hook PARAMS ((int, int, char *, char *));
+extern void som_solib_create_catch_unload_hook (int, int, char *, char *);
/* This function returns TRUE if the dynamic linker has just reported
a load of a library.
@@ -89,8 +83,7 @@ som_solib_create_catch_unload_hook PARAMS ((int, int, char *, char *));
#define SOLIB_HAVE_LOAD_EVENT(pid) \
som_solib_have_load_event (pid)
-extern int
-som_solib_have_load_event PARAMS ((int));
+extern int som_solib_have_load_event (int);
/* This function returns a pointer to the string representation of the
pathname of the dynamically-linked library that has just been loaded.
@@ -106,8 +99,7 @@ som_solib_have_load_event PARAMS ((int));
#define SOLIB_LOADED_LIBRARY_PATHNAME(pid) \
som_solib_loaded_library_pathname (pid)
-extern char *
- som_solib_loaded_library_pathname PARAMS ((int));
+extern char *som_solib_loaded_library_pathname (int);
/* This function returns TRUE if the dynamic linker has just reported
an unload of a library.
@@ -118,8 +110,7 @@ extern char *
#define SOLIB_HAVE_UNLOAD_EVENT(pid) \
som_solib_have_unload_event (pid)
-extern int
-som_solib_have_unload_event PARAMS ((int));
+extern int som_solib_have_unload_event (int);
/* This function returns a pointer to the string representation of the
pathname of the dynamically-linked library that has just been unloaded.
@@ -135,8 +126,7 @@ som_solib_have_unload_event PARAMS ((int));
#define SOLIB_UNLOADED_LIBRARY_PATHNAME(pid) \
som_solib_unloaded_library_pathname (pid)
-extern char *
- som_solib_unloaded_library_pathname PARAMS ((int));
+extern char *som_solib_unloaded_library_pathname (int);
/* This function returns TRUE if pc is the address of an instruction that
lies within the dynamic linker (such as the event hook, or the dld
@@ -149,8 +139,7 @@ extern char *
#define SOLIB_IN_DYNAMIC_LINKER(pid,pc) \
som_solib_in_dynamic_linker (pid, pc)
-extern int
-som_solib_in_dynamic_linker PARAMS ((int, CORE_ADDR));
+extern int som_solib_in_dynamic_linker (int, CORE_ADDR);
/* This function must be called when the inferior is killed, and the program
restarted. This is not the same as CLEAR_SOLIB, in that it doesn't discard
@@ -161,16 +150,14 @@ som_solib_in_dynamic_linker PARAMS ((int, CORE_ADDR));
#define SOLIB_RESTART() \
som_solib_restart ()
-extern void
-som_solib_restart PARAMS ((void));
+extern void som_solib_restart (void);
/* If we can't set a breakpoint, and it's in a shared library, just
disable it. */
#define DISABLE_UNSETTABLE_BREAK(addr) (som_solib_address(addr) != NULL)
-extern char *
- som_solib_address PARAMS ((CORE_ADDR)); /* somsolib.c */
+extern char *som_solib_address (CORE_ADDR); /* somsolib.c */
/* If ADDR lies in a shared library, return its name. */
diff --git a/gdb/source.c b/gdb/source.c
index 9569aa0b1f0..f15badf640e 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -64,25 +64,25 @@
/* Prototypes for exported functions. */
-void _initialize_source PARAMS ((void));
+void _initialize_source (void);
/* Prototypes for local functions. */
-static int get_filename_and_charpos PARAMS ((struct symtab *, char **));
+static int get_filename_and_charpos (struct symtab *, char **);
-static void reverse_search_command PARAMS ((char *, int));
+static void reverse_search_command (char *, int);
-static void forward_search_command PARAMS ((char *, int));
+static void forward_search_command (char *, int);
-static void line_info PARAMS ((char *, int));
+static void line_info (char *, int);
-static void list_command PARAMS ((char *, int));
+static void list_command (char *, int);
-static void ambiguous_line_spec PARAMS ((struct symtabs_and_lines *));
+static void ambiguous_line_spec (struct symtabs_and_lines *);
-static void source_info PARAMS ((char *, int));
+static void source_info (char *, int);
-static void show_directories PARAMS ((char *, int));
+static void show_directories (char *, int);
/* Path of directories to search for source files.
Same format as the PATH environment variable's value. */
@@ -996,7 +996,8 @@ identify_source_line (s, line, mid_statement, pc)
/* Print source lines from the file of symtab S,
starting with line number LINE and stopping before line number STOPLINE. */
-static void print_source_lines_base PARAMS ((struct symtab * s, int line, int stopline, int noerror));
+static void print_source_lines_base (struct symtab *s, int line, int stopline,
+ int noerror);
static void
print_source_lines_base (s, line, stopline, noerror)
struct symtab *s;
@@ -1167,8 +1168,8 @@ print_source_lines (s, line, stopline, noerror)
else
{
TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
- extern void tui_vAddWinToLayout PARAMS ((va_list));
- extern void tui_vUpdateSourceWindowsWithLine PARAMS ((va_list));
+extern void tui_vAddWinToLayout (va_list);
+extern void tui_vUpdateSourceWindowsWithLine (va_list);
/* Regardless of whether we can open the file,
set current_source_symtab. */
diff --git a/gdb/sparc-nat.c b/gdb/sparc-nat.c
index fc7f6d4908d..a9b661ff99d 100644
--- a/gdb/sparc-nat.c
+++ b/gdb/sparc-nat.c
@@ -43,8 +43,7 @@
#define STACK_REGS 2
#define FP_REGS 4
-static void
-fetch_core_registers PARAMS ((char *, unsigned int, int, CORE_ADDR));
+static void fetch_core_registers (char *, unsigned int, int, CORE_ADDR);
/* Fetch one or more registers from the inferior. REGNO == -1 to get
them all. We actually fetch more than requested, when convenient,
diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c
index ed6245c0e59..0a901b1e2d7 100644
--- a/gdb/sparc-tdep.c
+++ b/gdb/sparc-tdep.c
@@ -22,6 +22,7 @@
/* ??? Support for calling functions from gdb in sparc64 is unfinished. */
#include "defs.h"
+#include "arch-utils.h"
#include "frame.h"
#include "inferior.h"
#include "obstack.h"
@@ -36,25 +37,88 @@
#include "gdbcore.h"
+#include "symfile.h" /* for 'entry_point_address' */
+
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
+
+/*
+ * Some local macros that have multi-arch and non-multi-arch versions:
+ */
+
+#if (GDB_MULTI_ARCH > 0)
+
+/* Does the target have Floating Point registers? */
+#define SPARC_HAS_FPU (gdbarch_tdep (current_gdbarch)->has_fpu)
+/* Number of bytes devoted to Floating Point registers: */
+#define FP_REGISTER_BYTES (gdbarch_tdep (current_gdbarch)->fp_register_bytes)
+/* Highest numbered Floating Point register. */
+#define FP_MAX_REGNUM (gdbarch_tdep (current_gdbarch)->fp_max_regnum)
+/* Size of a general (integer) register: */
+#define SPARC_INTREG_SIZE (gdbarch_tdep (current_gdbarch)->intreg_size)
+/* Offset within the call dummy stack of the saved registers. */
+#define DUMMY_REG_SAVE_OFFSET (gdbarch_tdep (current_gdbarch)->reg_save_offset)
+
+#else /* non-multi-arch */
+
+
+/* Does the target have Floating Point registers? */
#if defined(TARGET_SPARCLET) || defined(TARGET_SPARCLITE)
#define SPARC_HAS_FPU 0
#else
#define SPARC_HAS_FPU 1
#endif
-#ifdef GDB_TARGET_IS_SPARC64
+/* Number of bytes devoted to Floating Point registers: */
+#if (GDB_TARGET_IS_SPARC64)
#define FP_REGISTER_BYTES (64 * 4)
#else
+#if (SPARC_HAS_FPU)
#define FP_REGISTER_BYTES (32 * 4)
+#else
+#define FP_REGISTER_BYTES 0
+#endif
#endif
-/* If not defined, assume 32 bit sparc. */
-#ifndef FP_MAX_REGNUM
+/* Highest numbered Floating Point register. */
+#if (GDB_TARGET_IS_SPARC64)
+#define FP_MAX_REGNUM (FP0_REGNUM + 48)
+#else
#define FP_MAX_REGNUM (FP0_REGNUM + 32)
#endif
+/* Size of a general (integer) register: */
#define SPARC_INTREG_SIZE (REGISTER_RAW_SIZE (G0_REGNUM))
+/* Offset within the call dummy stack of the saved registers. */
+#if (GDB_TARGET_IS_SPARC64)
+#define DUMMY_REG_SAVE_OFFSET (128 + 16)
+#else
+#define DUMMY_REG_SAVE_OFFSET 0x60
+#endif
+
+#endif /* GDB_MULTI_ARCH */
+
+struct gdbarch_tdep
+ {
+ int has_fpu;
+ int fp_register_bytes;
+ int y_regnum;
+ int fp_max_regnum;
+ int intreg_size;
+ int reg_save_offset;
+ int call_dummy_call_offset;
+ int print_insn_mach;
+ };
+
+/* Now make GDB_TARGET_IS_SPARC64 a runtime test. */
+/* FIXME MVS: or try testing bfd_arch_info.arch and bfd_arch_info.mach ...
+ * define GDB_TARGET_IS_SPARC64 \
+ * (TARGET_ARCHITECTURE->arch == bfd_arch_sparc && \
+ * (TARGET_ARCHITECTURE->mach == bfd_mach_sparc_v9 || \
+ * TARGET_ARCHITECTURE->mach == bfd_mach_sparc_v9a))
+ */
+
/* From infrun.c */
extern int stop_after_trap;
@@ -64,7 +128,7 @@ extern int stop_after_trap;
track of which sets of registers we have locally-changed copies of,
so we only need send the groups that have changed. */
-int deferred_stores = 0; /* Cumulates stores we want to do eventually. */
+int deferred_stores = 0; /* Accumulated stores we want to do eventually. */
/* Some machines, such as Fujitsu SPARClite 86x, have a bi-endian mode
@@ -122,12 +186,8 @@ fetch_instruction (pc)
typedef enum
{
- Error, not_branch, bicc, bicca, ba, baa, ticc, ta,
-#ifdef GDB_TARGET_IS_SPARC64
- done_retry
-#endif
-}
-branch_type;
+ Error, not_branch, bicc, bicca, ba, baa, ticc, ta, done_retry
+} branch_type;
/* Simulate single-step ptrace call for sun4. Code written by Gary
Beihl (beihl@mcc.com). */
@@ -139,7 +199,7 @@ static int brknpc4, brktrg;
typedef char binsn_quantum[BREAKPOINT_MAX];
static binsn_quantum break_mem[3];
-static branch_type isbranch PARAMS ((long, CORE_ADDR, CORE_ADDR *));
+static branch_type isbranch (long, CORE_ADDR, CORE_ADDR *);
/* single_step() is called just before we want to resume the inferior,
if we want to single-step it but there is no hardware or kernel single-step
@@ -187,13 +247,11 @@ sparc_software_single_step (ignore, insert_breakpoints_p)
brktrg = 1;
target_insert_breakpoint (target, break_mem[2]);
}
-#ifdef GDB_TARGET_IS_SPARC64
- else if (br == done_retry)
+ else if (GDB_TARGET_IS_SPARC64 && br == done_retry)
{
brktrg = 1;
target_insert_breakpoint (target, break_mem[2]);
}
-#endif
}
else
{
@@ -208,11 +266,24 @@ sparc_software_single_step (ignore, insert_breakpoints_p)
}
}
-/* Call this for each newly created frame. For SPARC, we need to calculate
- the bottom of the frame, and do some extra work if the prologue
- has been generated via the -mflat option to GCC. In particular,
- we need to know where the previous fp and the pc have been stashed,
- since their exact position within the frame may vary. */
+struct frame_extra_info
+{
+ CORE_ADDR bottom;
+ int in_prologue;
+ int flat;
+ /* Following fields only relevant for flat frames. */
+ CORE_ADDR pc_addr;
+ CORE_ADDR fp_addr;
+ /* Add this to ->frame to get the value of the stack pointer at the
+ time of the register saves. */
+ int sp_offset;
+};
+
+/* Call this for each newly created frame. For SPARC, we need to
+ calculate the bottom of the frame, and do some extra work if the
+ prologue has been generated via the -mflat option to GCC. In
+ particular, we need to know where the previous fp and the pc have
+ been stashed, since their exact position within the frame may vary. */
void
sparc_init_extra_frame_info (fromleaf, fi)
@@ -223,16 +294,22 @@ sparc_init_extra_frame_info (fromleaf, fi)
CORE_ADDR prologue_start, prologue_end;
int insn;
- fi->bottom =
+ fi->extra_info = (struct frame_extra_info *)
+ frame_obstack_alloc (sizeof (struct frame_extra_info));
+ frame_saved_regs_zalloc (fi);
+
+ fi->extra_info->bottom =
(fi->next ?
- (fi->frame == fi->next->frame ? fi->next->bottom : fi->next->frame) :
- read_sp ());
+ (fi->frame == fi->next->frame ? fi->next->extra_info->bottom :
+ fi->next->frame) : read_sp ());
/* If fi->next is NULL, then we already set ->frame by passing read_fp()
to create_new_frame. */
if (fi->next)
{
- char buf[MAX_REGISTER_RAW_SIZE];
+ char *buf;
+
+ buf = alloca (MAX_REGISTER_RAW_SIZE);
/* Compute ->frame as if not flat. If it is flat, we'll change
it later. */
@@ -244,25 +321,23 @@ sparc_init_extra_frame_info (fromleaf, fi)
/* A frameless function interrupted by a signal did not change
the frame pointer, fix up frame pointer accordingly. */
fi->frame = FRAME_FP (fi->next);
- fi->bottom = fi->next->bottom;
+ fi->extra_info->bottom = fi->next->extra_info->bottom;
}
else
{
/* Should we adjust for stack bias here? */
get_saved_register (buf, 0, 0, fi, FP_REGNUM, 0);
fi->frame = extract_address (buf, REGISTER_RAW_SIZE (FP_REGNUM));
-#ifdef GDB_TARGET_IS_SPARC64
- if (fi->frame & 1)
- fi->frame += 2047;
-#endif
+ if (GDB_TARGET_IS_SPARC64 && (fi->frame & 1))
+ fi->frame += 2047;
}
}
/* Decide whether this is a function with a ``flat register window''
frame. For such functions, the frame pointer is actually in %i7. */
- fi->flat = 0;
- fi->in_prologue = 0;
+ fi->extra_info->flat = 0;
+ fi->extra_info->in_prologue = 0;
if (find_pc_partial_function (fi->pc, &name, &prologue_start, &prologue_end))
{
/* See if the function starts with an add (which will be of a
@@ -282,31 +357,35 @@ sparc_init_extra_frame_info (fromleaf, fi)
&& X_OP3 (insn) == 4
&& X_RS1 (insn) == 14)
{
- char buf[MAX_REGISTER_RAW_SIZE];
+ char *buf;
+
+ buf = alloca (MAX_REGISTER_RAW_SIZE);
/* We definitely have a flat frame now. */
- fi->flat = 1;
+ fi->extra_info->flat = 1;
- fi->sp_offset = offset;
+ fi->extra_info->sp_offset = offset;
/* Overwrite the frame's address with the value in %i7. */
get_saved_register (buf, 0, 0, fi, I7_REGNUM, 0);
fi->frame = extract_address (buf, REGISTER_RAW_SIZE (I7_REGNUM));
-#ifdef GDB_TARGET_IS_SPARC64
- if (fi->frame & 1)
+
+ if (GDB_TARGET_IS_SPARC64 && (fi->frame & 1))
fi->frame += 2047;
-#endif
+
/* Record where the fp got saved. */
- fi->fp_addr = fi->frame + fi->sp_offset + X_SIMM13 (insn);
+ fi->extra_info->fp_addr =
+ fi->frame + fi->extra_info->sp_offset + X_SIMM13 (insn);
/* Also try to collect where the pc got saved to. */
- fi->pc_addr = 0;
+ fi->extra_info->pc_addr = 0;
insn = fetch_instruction (prologue_start + 12);
if (X_OP (insn) == 3
&& X_RD (insn) == 15
&& X_OP3 (insn) == 4
&& X_RS1 (insn) == 14)
- fi->pc_addr = fi->frame + fi->sp_offset + X_SIMM13 (insn);
+ fi->extra_info->pc_addr =
+ fi->frame + fi->extra_info->sp_offset + X_SIMM13 (insn);
}
}
else
@@ -333,7 +412,7 @@ sparc_init_extra_frame_info (fromleaf, fi)
}
if (addr >= fi->pc)
{
- fi->in_prologue = 1;
+ fi->extra_info->in_prologue = 1;
fi->frame = read_register (SP_REGNUM);
}
}
@@ -359,7 +438,7 @@ sparc_frame_chain (frame)
CORE_ADDR
sparc_extract_struct_value_address (regbuf)
- char regbuf[REGISTER_BYTES];
+ char *regbuf;
{
return extract_address (regbuf + REGISTER_BYTE (O0_REGNUM),
REGISTER_RAW_SIZE (O0_REGNUM));
@@ -371,9 +450,10 @@ CORE_ADDR
sparc_frame_saved_pc (frame)
struct frame_info *frame;
{
- char buf[MAX_REGISTER_RAW_SIZE];
+ char *buf;
CORE_ADDR addr;
+ buf = alloca (MAX_REGISTER_RAW_SIZE);
if (frame->signal_handler_caller)
{
/* This is the signal trampoline frame.
@@ -384,10 +464,12 @@ sparc_frame_saved_pc (frame)
#endif
CORE_ADDR sigcontext_addr;
- char scbuf[TARGET_PTR_BIT / HOST_CHAR_BIT];
+ char *scbuf;
int saved_pc_offset = SIGCONTEXT_PC_OFFSET;
char *name = NULL;
+ scbuf = alloca (TARGET_PTR_BIT / HOST_CHAR_BIT);
+
/* Solaris2 ucbsigvechandler passes a pointer to a sigcontext
as the third parameter. The offset to the saved pc is 12. */
find_pc_partial_function (frame->pc, &name,
@@ -406,11 +488,11 @@ sparc_frame_saved_pc (frame)
scbuf, sizeof (scbuf));
return extract_address (scbuf, sizeof (scbuf));
}
- else if (frame->in_prologue ||
- (frame->next != NULL
- && (frame->next->signal_handler_caller
- || frame_in_dummy (frame->next))
- && frameless_look_for_prologue (frame)))
+ else if (frame->extra_info->in_prologue ||
+ (frame->next != NULL &&
+ (frame->next->signal_handler_caller ||
+ frame_in_dummy (frame->next)) &&
+ frameless_look_for_prologue (frame)))
{
/* A frameless function interrupted by a signal did not save
the PC, it is still in %o7. */
@@ -418,10 +500,10 @@ sparc_frame_saved_pc (frame)
frame, O7_REGNUM, (enum lval_type *) NULL);
return PC_ADJUST (extract_address (buf, SPARC_INTREG_SIZE));
}
- if (frame->flat)
- addr = frame->pc_addr;
+ if (frame->extra_info->flat)
+ addr = frame->extra_info->pc_addr;
else
- addr = frame->bottom + FRAME_SAVED_I0 +
+ addr = frame->extra_info->bottom + FRAME_SAVED_I0 +
SPARC_INTREG_SIZE * (I7_REGNUM - I0_REGNUM);
if (addr == 0)
@@ -456,7 +538,7 @@ setup_arbitrary_frame (argc, argv)
if (!frame)
internal_error ("create_new_frame returned invalid frame");
- frame->bottom = argv[1];
+ frame->extra_info->bottom = argv[1];
frame->pc = FRAME_SAVED_PC (frame);
return frame;
}
@@ -470,15 +552,15 @@ setup_arbitrary_frame (argc, argv)
This routine should be more specific in its actions; making sure
that it uses the same register in the initial prologue section. */
-static CORE_ADDR examine_prologue PARAMS ((CORE_ADDR, int, struct frame_info *,
- struct frame_saved_regs *));
+static CORE_ADDR examine_prologue (CORE_ADDR, int, struct frame_info *,
+ CORE_ADDR *);
static CORE_ADDR
examine_prologue (start_pc, frameless_p, fi, saved_regs)
CORE_ADDR start_pc;
int frameless_p;
struct frame_info *fi;
- struct frame_saved_regs *saved_regs;
+ CORE_ADDR *saved_regs;
{
int insn;
int dest = -1;
@@ -556,26 +638,52 @@ examine_prologue (start_pc, frameless_p, fi, saved_regs)
while (1)
{
/* Recognize stores into the frame from the input registers.
- This recognizes all non alternate stores of input register,
- into a location offset from the frame pointer. */
- if ((X_OP (insn) == 3
- && (X_OP3 (insn) & 0x3c) == 4 /* Store, non-alternate. */
- && (X_RD (insn) & 0x18) == 0x18 /* Input register. */
- && X_I (insn) /* Immediate mode. */
- && X_RS1 (insn) == 30 /* Off of frame pointer. */
- /* Into reserved stack space. */
- && X_SIMM13 (insn) >= 0x44
- && X_SIMM13 (insn) < 0x5b))
- ;
+ This recognizes all non alternate stores of an input register,
+ into a location offset from the frame pointer between
+ +68 and +92. */
+
+ /* The above will fail for arguments that are promoted
+ (eg. shorts to ints or floats to doubles), because the compiler
+ will pass them in positive-offset frame space, but the prologue
+ will save them (after conversion) in negative frame space at an
+ unpredictable offset. Therefore I am going to remove the
+ restriction on the target-address of the save, on the theory
+ that any unbroken sequence of saves from input registers must
+ be part of the prologue. In un-optimized code (at least), I'm
+ fairly sure that the compiler would emit SOME other instruction
+ (eg. a move or add) before emitting another save that is actually
+ a part of the function body.
+
+ Besides, the reserved stack space is different for SPARC64 anyway.
+
+ MVS 4/23/2000 */
+
+ if (X_OP (insn) == 3
+ && (X_OP3 (insn) & 0x3c) == 4 /* Store, non-alternate. */
+ && (X_RD (insn) & 0x18) == 0x18 /* Input register. */
+ && X_I (insn) /* Immediate mode. */
+ && X_RS1 (insn) == 30) /* Off of frame pointer. */
+ ; /* empty statement -- fall thru to end of loop */
+ else if (GDB_TARGET_IS_SPARC64
+ && X_OP (insn) == 3
+ && (X_OP3 (insn) & 0x3c) == 12 /* store, extended (64-bit) */
+ && (X_RD (insn) & 0x18) == 0x18 /* input register */
+ && X_I (insn) /* immediate mode */
+ && X_RS1 (insn) == 30) /* off of frame pointer */
+ ; /* empty statement -- fall thru to end of loop */
+ else if (X_OP (insn) == 3
+ && (X_OP3 (insn) & 0x3c) == 36 /* store, floating-point */
+ && X_I (insn) /* immediate mode */
+ && X_RS1 (insn) == 30) /* off of frame pointer */
+ ; /* empty statement -- fall thru to end of loop */
else if (is_flat
&& X_OP (insn) == 3
- && X_OP3 (insn) == 4
- && X_RS1 (insn) == 14
- )
+ && X_OP3 (insn) == 4 /* store? */
+ && X_RS1 (insn) == 14) /* off of frame pointer */
{
if (saved_regs && X_I (insn))
- saved_regs->regs[X_RD (insn)] =
- fi->frame + fi->sp_offset + X_SIMM13 (insn);
+ saved_regs[X_RD (insn)] =
+ fi->frame + fi->extra_info->sp_offset + X_SIMM13 (insn);
}
else
break;
@@ -616,10 +724,7 @@ isbranch (instruction, addr, target)
|| X_OP2 (instruction) == 1
|| X_OP2 (instruction) == 3
|| X_OP2 (instruction) == 5
-#ifndef GDB_TARGET_IS_SPARC64
- || X_OP2 (instruction) == 7
-#endif
- ))
+ || (GDB_TARGET_IS_SPARC64 && X_OP2 (instruction) == 7)))
{
if (X_COND (instruction) == 8)
val = X_A (instruction) ? baa : ba;
@@ -627,11 +732,12 @@ isbranch (instruction, addr, target)
val = X_A (instruction) ? bicca : bicc;
switch (X_OP2 (instruction))
{
+ case 7:
+ if (!GDB_TARGET_IS_SPARC64)
+ break;
+ /* else fall thru */
case 2:
case 6:
-#ifndef GDB_TARGET_IS_SPARC64
- case 7:
-#endif
offset = 4 * X_DISP22 (instruction);
break;
case 1:
@@ -644,8 +750,8 @@ isbranch (instruction, addr, target)
}
*target = addr + offset;
}
-#ifdef GDB_TARGET_IS_SPARC64
- else if (X_OP (instruction) == 2
+ else if (GDB_TARGET_IS_SPARC64
+ && X_OP (instruction) == 2
&& X_OP3 (instruction) == 62)
{
if (X_FCN (instruction) == 0)
@@ -661,7 +767,6 @@ isbranch (instruction, addr, target)
val = done_retry;
}
}
-#endif
return val;
}
@@ -728,8 +833,10 @@ sparc_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval)
while (frame1 != NULL)
{
- if (frame1->pc >= (frame1->bottom ? frame1->bottom :
- read_sp ())
+ /* FIXME MVS: wrong test for dummy frame at entry. */
+
+ if (frame1->pc >= (frame1->extra_info->bottom ?
+ frame1->extra_info->bottom : read_sp ())
&& frame1->pc <= FRAME_FP (frame1))
{
/* Dummy frame. All but the window regs are in there somewhere.
@@ -739,57 +846,57 @@ sparc_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval)
addr = frame1->frame + (regnum - G0_REGNUM) * SPARC_INTREG_SIZE
- (FP_REGISTER_BYTES + 8 * SPARC_INTREG_SIZE);
else if (regnum >= I0_REGNUM && regnum < I0_REGNUM + 8)
- addr = (frame1->prev->bottom
+ addr = (frame1->prev->extra_info->bottom
+ (regnum - I0_REGNUM) * SPARC_INTREG_SIZE
+ FRAME_SAVED_I0);
else if (regnum >= L0_REGNUM && regnum < L0_REGNUM + 8)
- addr = (frame1->prev->bottom
+ addr = (frame1->prev->extra_info->bottom
+ (regnum - L0_REGNUM) * SPARC_INTREG_SIZE
+ FRAME_SAVED_L0);
else if (regnum >= O0_REGNUM && regnum < O0_REGNUM + 8)
addr = frame1->frame + (regnum - O0_REGNUM) * SPARC_INTREG_SIZE
- (FP_REGISTER_BYTES + 16 * SPARC_INTREG_SIZE);
-#ifdef FP0_REGNUM
- else if (regnum >= FP0_REGNUM && regnum < FP0_REGNUM + 32)
+ else if (SPARC_HAS_FPU &&
+ regnum >= FP0_REGNUM && regnum < FP0_REGNUM + 32)
addr = frame1->frame + (regnum - FP0_REGNUM) * 4
- (FP_REGISTER_BYTES);
-#ifdef GDB_TARGET_IS_SPARC64
- else if (regnum >= FP0_REGNUM + 32 && regnum < FP_MAX_REGNUM)
+ else if (GDB_TARGET_IS_SPARC64 && SPARC_HAS_FPU &&
+ regnum >= FP0_REGNUM + 32 && regnum < FP_MAX_REGNUM)
addr = frame1->frame + 32 * 4 + (regnum - FP0_REGNUM - 32) * 8
- (FP_REGISTER_BYTES);
-#endif
-#endif /* FP0_REGNUM */
else if (regnum >= Y_REGNUM && regnum < NUM_REGS)
addr = frame1->frame + (regnum - Y_REGNUM) * SPARC_INTREG_SIZE
- (FP_REGISTER_BYTES + 24 * SPARC_INTREG_SIZE);
}
- else if (frame1->flat)
+ else if (frame1->extra_info->flat)
{
if (regnum == RP_REGNUM)
- addr = frame1->pc_addr;
+ addr = frame1->extra_info->pc_addr;
else if (regnum == I7_REGNUM)
- addr = frame1->fp_addr;
+ addr = frame1->extra_info->fp_addr;
else
{
CORE_ADDR func_start;
- struct frame_saved_regs regs;
- memset (&regs, 0, sizeof (regs));
+ CORE_ADDR *regs;
+
+ regs = alloca (NUM_REGS * sizeof (CORE_ADDR));
+ memset (regs, 0, NUM_REGS * sizeof (CORE_ADDR));
find_pc_partial_function (frame1->pc, NULL, &func_start, NULL);
- examine_prologue (func_start, 0, frame1, &regs);
- addr = regs.regs[regnum];
+ examine_prologue (func_start, 0, frame1, regs);
+ addr = regs[regnum];
}
}
else
{
/* Normal frame. Local and In registers are saved on stack. */
if (regnum >= I0_REGNUM && regnum < I0_REGNUM + 8)
- addr = (frame1->prev->bottom
+ addr = (frame1->prev->extra_info->bottom
+ (regnum - I0_REGNUM) * SPARC_INTREG_SIZE
+ FRAME_SAVED_I0);
else if (regnum >= L0_REGNUM && regnum < L0_REGNUM + 8)
- addr = (frame1->prev->bottom
+ addr = (frame1->prev->extra_info->bottom
+ (regnum - L0_REGNUM) * SPARC_INTREG_SIZE
+ FRAME_SAVED_L0);
else if (regnum >= O0_REGNUM && regnum < O0_REGNUM + 8)
@@ -842,42 +949,39 @@ sparc_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval)
/* Definitely see tm-sparc.h for more doc of the frame format here. */
-#ifdef GDB_TARGET_IS_SPARC64
-#define DUMMY_REG_SAVE_OFFSET (128 + 16)
-#else
-#define DUMMY_REG_SAVE_OFFSET 0x60
-#endif
-
/* See tm-sparc.h for how this is calculated. */
-#ifdef FP0_REGNUM
-#define DUMMY_STACK_REG_BUF_SIZE \
-(((8+8+8) * SPARC_INTREG_SIZE) + FP_REGISTER_BYTES)
-#else
+
#define DUMMY_STACK_REG_BUF_SIZE \
-(((8+8+8) * SPARC_INTREG_SIZE) )
-#endif /* FP0_REGNUM */
-#define DUMMY_STACK_SIZE (DUMMY_STACK_REG_BUF_SIZE + DUMMY_REG_SAVE_OFFSET)
+ (((8+8+8) * SPARC_INTREG_SIZE) + FP_REGISTER_BYTES)
+#define DUMMY_STACK_SIZE \
+ (DUMMY_STACK_REG_BUF_SIZE + DUMMY_REG_SAVE_OFFSET)
void
sparc_push_dummy_frame ()
{
CORE_ADDR sp, old_sp;
- char register_temp[DUMMY_STACK_SIZE];
+ char *register_temp;
+
+ register_temp = alloca (DUMMY_STACK_SIZE);
old_sp = sp = read_sp ();
-#ifdef GDB_TARGET_IS_SPARC64
- /* PC, NPC, CCR, FSR, FPRS, Y, ASI */
- read_register_bytes (REGISTER_BYTE (PC_REGNUM), &register_temp[0],
- REGISTER_RAW_SIZE (PC_REGNUM) * 7);
- read_register_bytes (REGISTER_BYTE (PSTATE_REGNUM), &register_temp[8],
- REGISTER_RAW_SIZE (PSTATE_REGNUM));
- /* FIXME: not sure what needs to be saved here. */
-#else
- /* Y, PS, WIM, TBR, PC, NPC, FPS, CPS regs */
- read_register_bytes (REGISTER_BYTE (Y_REGNUM), &register_temp[0],
- REGISTER_RAW_SIZE (Y_REGNUM) * 8);
-#endif
+ if (GDB_TARGET_IS_SPARC64)
+ {
+ /* PC, NPC, CCR, FSR, FPRS, Y, ASI */
+ read_register_bytes (REGISTER_BYTE (PC_REGNUM), &register_temp[0],
+ REGISTER_RAW_SIZE (PC_REGNUM) * 7);
+ read_register_bytes (REGISTER_BYTE (PSTATE_REGNUM),
+ &register_temp[7 * SPARC_INTREG_SIZE],
+ REGISTER_RAW_SIZE (PSTATE_REGNUM));
+ /* FIXME: not sure what needs to be saved here. */
+ }
+ else
+ {
+ /* Y, PS, WIM, TBR, PC, NPC, FPS, CPS regs */
+ read_register_bytes (REGISTER_BYTE (Y_REGNUM), &register_temp[0],
+ REGISTER_RAW_SIZE (Y_REGNUM) * 8);
+ }
read_register_bytes (REGISTER_BYTE (O0_REGNUM),
&register_temp[8 * SPARC_INTREG_SIZE],
@@ -887,11 +991,10 @@ sparc_push_dummy_frame ()
&register_temp[16 * SPARC_INTREG_SIZE],
SPARC_INTREG_SIZE * 8);
-#ifdef FP0_REGNUM
- read_register_bytes (REGISTER_BYTE (FP0_REGNUM),
- &register_temp[24 * SPARC_INTREG_SIZE],
- FP_REGISTER_BYTES);
-#endif /* FP0_REGNUM */
+ if (SPARC_HAS_FPU)
+ read_register_bytes (REGISTER_BYTE (FP0_REGNUM),
+ &register_temp[24 * SPARC_INTREG_SIZE],
+ FP_REGISTER_BYTES);
sp -= DUMMY_STACK_SIZE;
@@ -938,7 +1041,7 @@ sparc_push_dummy_frame ()
ugly duplication between sparc_frame_find_saved_regs and
get_saved_register.
- Stores, into a struct frame_saved_regs,
+ Stores, into an array of CORE_ADDR,
the addresses of the saved registers of frame described by FRAME_INFO.
This includes special registers such as pc and fp saved in special
ways in the stack frame. sp is even more special:
@@ -962,13 +1065,12 @@ sparc_push_dummy_frame ()
See tm-sparc.h (PUSH_DUMMY_FRAME and friends) for CRITICAL information
about how this works. */
-static void sparc_frame_find_saved_regs PARAMS ((struct frame_info *,
- struct frame_saved_regs *));
+static void sparc_frame_find_saved_regs (struct frame_info *, CORE_ADDR *);
static void
sparc_frame_find_saved_regs (fi, saved_regs_addr)
struct frame_info *fi;
- struct frame_saved_regs *saved_regs_addr;
+ CORE_ADDR *saved_regs_addr;
{
register int regnum;
CORE_ADDR frame_addr = FRAME_FP (fi);
@@ -976,90 +1078,86 @@ sparc_frame_find_saved_regs (fi, saved_regs_addr)
if (!fi)
internal_error ("Bad frame info struct in FRAME_FIND_SAVED_REGS");
- memset (saved_regs_addr, 0, sizeof (*saved_regs_addr));
+ memset (saved_regs_addr, 0, NUM_REGS * sizeof (CORE_ADDR));
- if (fi->pc >= (fi->bottom ? fi->bottom :
- read_sp ())
+ if (fi->pc >= (fi->extra_info->bottom ?
+ fi->extra_info->bottom : read_sp ())
&& fi->pc <= FRAME_FP (fi))
{
/* Dummy frame. All but the window regs are in there somewhere. */
for (regnum = G1_REGNUM; regnum < G1_REGNUM + 7; regnum++)
- saved_regs_addr->regs[regnum] =
+ saved_regs_addr[regnum] =
frame_addr + (regnum - G0_REGNUM) * SPARC_INTREG_SIZE
- DUMMY_STACK_REG_BUF_SIZE + 16 * SPARC_INTREG_SIZE;
+
for (regnum = I0_REGNUM; regnum < I0_REGNUM + 8; regnum++)
- saved_regs_addr->regs[regnum] =
+ saved_regs_addr[regnum] =
frame_addr + (regnum - I0_REGNUM) * SPARC_INTREG_SIZE
- DUMMY_STACK_REG_BUF_SIZE + 8 * SPARC_INTREG_SIZE;
-#ifdef FP0_REGNUM
- for (regnum = FP0_REGNUM; regnum < FP0_REGNUM + 32; regnum++)
- saved_regs_addr->regs[regnum] =
- frame_addr + (regnum - FP0_REGNUM) * 4
- - DUMMY_STACK_REG_BUF_SIZE + 24 * SPARC_INTREG_SIZE;
-#ifdef GDB_TARGET_IS_SPARC64
- for (regnum = FP0_REGNUM + 32; regnum < FP_MAX_REGNUM; regnum++)
- saved_regs_addr->regs[regnum] =
- frame_addr + 32 * 4 + (regnum - FP0_REGNUM - 32) * 4
- - DUMMY_STACK_REG_BUF_SIZE + 24 * SPARC_INTREG_SIZE;
-#endif
-#endif /* FP0_REGNUM */
-#ifdef GDB_TARGET_IS_SPARC64
- for (regnum = PC_REGNUM; regnum < PC_REGNUM + 7; regnum++)
+
+ if (SPARC_HAS_FPU)
+ for (regnum = FP0_REGNUM; regnum < FP_MAX_REGNUM; regnum++)
+ saved_regs_addr[regnum] = frame_addr + (regnum - FP0_REGNUM) * 4
+ - DUMMY_STACK_REG_BUF_SIZE + 24 * SPARC_INTREG_SIZE;
+
+ if (GDB_TARGET_IS_SPARC64)
{
- saved_regs_addr->regs[regnum] =
- frame_addr + (regnum - PC_REGNUM) * SPARC_INTREG_SIZE
- - DUMMY_STACK_REG_BUF_SIZE;
+ for (regnum = PC_REGNUM; regnum < PC_REGNUM + 7; regnum++)
+ {
+ saved_regs_addr[regnum] =
+ frame_addr + (regnum - PC_REGNUM) * SPARC_INTREG_SIZE
+ - DUMMY_STACK_REG_BUF_SIZE;
+ }
+ saved_regs_addr[PSTATE_REGNUM] =
+ frame_addr + 8 * SPARC_INTREG_SIZE - DUMMY_STACK_REG_BUF_SIZE;
}
- saved_regs_addr->regs[PSTATE_REGNUM] =
- frame_addr + 8 * SPARC_INTREG_SIZE - DUMMY_STACK_REG_BUF_SIZE;
-#else
- for (regnum = Y_REGNUM; regnum < NUM_REGS; regnum++)
- saved_regs_addr->regs[regnum] =
- frame_addr + (regnum - Y_REGNUM) * SPARC_INTREG_SIZE
- - DUMMY_STACK_REG_BUF_SIZE;
-#endif
- frame_addr = fi->bottom ?
- fi->bottom : read_sp ();
+ else
+ for (regnum = Y_REGNUM; regnum < NUM_REGS; regnum++)
+ saved_regs_addr[regnum] =
+ frame_addr + (regnum - Y_REGNUM) * SPARC_INTREG_SIZE
+ - DUMMY_STACK_REG_BUF_SIZE;
+
+ frame_addr = fi->extra_info->bottom ?
+ fi->extra_info->bottom : read_sp ();
}
- else if (fi->flat)
+ else if (fi->extra_info->flat)
{
CORE_ADDR func_start;
find_pc_partial_function (fi->pc, NULL, &func_start, NULL);
examine_prologue (func_start, 0, fi, saved_regs_addr);
/* Flat register window frame. */
- saved_regs_addr->regs[RP_REGNUM] = fi->pc_addr;
- saved_regs_addr->regs[I7_REGNUM] = fi->fp_addr;
+ saved_regs_addr[RP_REGNUM] = fi->extra_info->pc_addr;
+ saved_regs_addr[I7_REGNUM] = fi->extra_info->fp_addr;
}
else
{
/* Normal frame. Just Local and In registers */
- frame_addr = fi->bottom ?
- fi->bottom : read_sp ();
+ frame_addr = fi->extra_info->bottom ?
+ fi->extra_info->bottom : read_sp ();
for (regnum = L0_REGNUM; regnum < L0_REGNUM + 8; regnum++)
- saved_regs_addr->regs[regnum] =
+ saved_regs_addr[regnum] =
(frame_addr + (regnum - L0_REGNUM) * SPARC_INTREG_SIZE
+ FRAME_SAVED_L0);
for (regnum = I0_REGNUM; regnum < I0_REGNUM + 8; regnum++)
- saved_regs_addr->regs[regnum] =
+ saved_regs_addr[regnum] =
(frame_addr + (regnum - I0_REGNUM) * SPARC_INTREG_SIZE
+ FRAME_SAVED_I0);
}
if (fi->next)
{
- if (fi->flat)
+ if (fi->extra_info->flat)
{
- saved_regs_addr->regs[O7_REGNUM] = fi->pc_addr;
+ saved_regs_addr[O7_REGNUM] = fi->extra_info->pc_addr;
}
else
{
/* Pull off either the next frame pointer or the stack pointer */
CORE_ADDR next_next_frame_addr =
- (fi->next->bottom ?
- fi->next->bottom :
- read_sp ());
+ (fi->next->extra_info->bottom ?
+ fi->next->extra_info->bottom : read_sp ());
for (regnum = O0_REGNUM; regnum < O0_REGNUM + 8; regnum++)
- saved_regs_addr->regs[regnum] =
+ saved_regs_addr[regnum] =
(next_next_frame_addr
+ (regnum - O0_REGNUM) * SPARC_INTREG_SIZE
+ FRAME_SAVED_I0);
@@ -1067,7 +1165,7 @@ sparc_frame_find_saved_regs (fi, saved_regs_addr)
}
/* Otherwise, whatever we would get from ptrace(GETREGS) is accurate */
/* FIXME -- should this adjust for the sparc64 offset? */
- saved_regs_addr->regs[SP_REGNUM] = FRAME_FP (fi);
+ saved_regs_addr[SP_REGNUM] = FRAME_FP (fi);
}
/* Discard from the stack the innermost frame, restoring all saved registers.
@@ -1089,81 +1187,87 @@ sparc_pop_frame ()
{
register struct frame_info *frame = get_current_frame ();
register CORE_ADDR pc;
- struct frame_saved_regs fsr;
- char raw_buffer[REGISTER_BYTES];
+ CORE_ADDR *fsr;
+ char *raw_buffer;
int regnum;
- sparc_frame_find_saved_regs (frame, &fsr);
-#ifdef FP0_REGNUM
- if (fsr.regs[FP0_REGNUM])
- {
- read_memory (fsr.regs[FP0_REGNUM], raw_buffer, FP_REGISTER_BYTES);
- write_register_bytes (REGISTER_BYTE (FP0_REGNUM),
- raw_buffer, FP_REGISTER_BYTES);
- }
-#ifndef GDB_TARGET_IS_SPARC64
- if (fsr.regs[FPS_REGNUM])
+ fsr = alloca (NUM_REGS * sizeof (CORE_ADDR));
+ raw_buffer = alloca (REGISTER_BYTES);
+ sparc_frame_find_saved_regs (frame, &fsr[0]);
+ if (SPARC_HAS_FPU)
{
- read_memory (fsr.regs[FPS_REGNUM], raw_buffer, 4);
- write_register_bytes (REGISTER_BYTE (FPS_REGNUM), raw_buffer, 4);
- }
- if (fsr.regs[CPS_REGNUM])
- {
- read_memory (fsr.regs[CPS_REGNUM], raw_buffer, 4);
- write_register_bytes (REGISTER_BYTE (CPS_REGNUM), raw_buffer, 4);
+ if (fsr[FP0_REGNUM])
+ {
+ read_memory (fsr[FP0_REGNUM], raw_buffer, FP_REGISTER_BYTES);
+ write_register_bytes (REGISTER_BYTE (FP0_REGNUM),
+ raw_buffer, FP_REGISTER_BYTES);
+ }
+ if (!(GDB_TARGET_IS_SPARC64))
+ {
+ if (fsr[FPS_REGNUM])
+ {
+ read_memory (fsr[FPS_REGNUM], raw_buffer, SPARC_INTREG_SIZE);
+ write_register_gen (FPS_REGNUM, raw_buffer);
+ }
+ if (fsr[CPS_REGNUM])
+ {
+ read_memory (fsr[CPS_REGNUM], raw_buffer, SPARC_INTREG_SIZE);
+ write_register_gen (CPS_REGNUM, raw_buffer);
+ }
+ }
}
-#endif
-#endif /* FP0_REGNUM */
- if (fsr.regs[G1_REGNUM])
+ if (fsr[G1_REGNUM])
{
- read_memory (fsr.regs[G1_REGNUM], raw_buffer, 7 * SPARC_INTREG_SIZE);
+ read_memory (fsr[G1_REGNUM], raw_buffer, 7 * SPARC_INTREG_SIZE);
write_register_bytes (REGISTER_BYTE (G1_REGNUM), raw_buffer,
7 * SPARC_INTREG_SIZE);
}
- if (frame->flat)
+ if (frame->extra_info->flat)
{
/* Each register might or might not have been saved, need to test
individually. */
for (regnum = L0_REGNUM; regnum < L0_REGNUM + 8; ++regnum)
- if (fsr.regs[regnum])
- write_register (regnum, read_memory_integer (fsr.regs[regnum],
+ if (fsr[regnum])
+ write_register (regnum, read_memory_integer (fsr[regnum],
SPARC_INTREG_SIZE));
for (regnum = I0_REGNUM; regnum < I0_REGNUM + 8; ++regnum)
- if (fsr.regs[regnum])
- write_register (regnum, read_memory_integer (fsr.regs[regnum],
+ if (fsr[regnum])
+ write_register (regnum, read_memory_integer (fsr[regnum],
SPARC_INTREG_SIZE));
/* Handle all outs except stack pointer (o0-o5; o7). */
for (regnum = O0_REGNUM; regnum < O0_REGNUM + 6; ++regnum)
- if (fsr.regs[regnum])
- write_register (regnum, read_memory_integer (fsr.regs[regnum],
+ if (fsr[regnum])
+ write_register (regnum, read_memory_integer (fsr[regnum],
SPARC_INTREG_SIZE));
- if (fsr.regs[O0_REGNUM + 7])
+ if (fsr[O0_REGNUM + 7])
write_register (O0_REGNUM + 7,
- read_memory_integer (fsr.regs[O0_REGNUM + 7],
+ read_memory_integer (fsr[O0_REGNUM + 7],
SPARC_INTREG_SIZE));
write_sp (frame->frame);
}
- else if (fsr.regs[I0_REGNUM])
+ else if (fsr[I0_REGNUM])
{
CORE_ADDR sp;
- char reg_temp[REGISTER_BYTES];
+ char *reg_temp;
+
+ reg_temp = alloca (REGISTER_BYTES);
- read_memory (fsr.regs[I0_REGNUM], raw_buffer, 8 * SPARC_INTREG_SIZE);
+ read_memory (fsr[I0_REGNUM], raw_buffer, 8 * SPARC_INTREG_SIZE);
/* Get the ins and locals which we are about to restore. Just
moving the stack pointer is all that is really needed, except
store_inferior_registers is then going to write the ins and
locals from the registers array, so we need to muck with the
registers array. */
- sp = fsr.regs[SP_REGNUM];
-#ifdef GDB_TARGET_IS_SPARC64
- if (sp & 1)
+ sp = fsr[SP_REGNUM];
+
+ if (GDB_TARGET_IS_SPARC64 && (sp & 1))
sp += 2047;
-#endif
+
read_memory (sp, reg_temp, SPARC_INTREG_SIZE * 16);
/* Restore the out registers.
@@ -1174,34 +1278,42 @@ sparc_pop_frame ()
write_register_bytes (REGISTER_BYTE (L0_REGNUM), reg_temp,
SPARC_INTREG_SIZE * 16);
}
-#ifndef GDB_TARGET_IS_SPARC64
- if (fsr.regs[PS_REGNUM])
- write_register (PS_REGNUM, read_memory_integer (fsr.regs[PS_REGNUM], 4));
-#endif
- if (fsr.regs[Y_REGNUM])
- write_register (Y_REGNUM, read_memory_integer (fsr.regs[Y_REGNUM], REGISTER_RAW_SIZE (Y_REGNUM)));
- if (fsr.regs[PC_REGNUM])
+
+ if (!(GDB_TARGET_IS_SPARC64))
+ if (fsr[PS_REGNUM])
+ write_register (PS_REGNUM,
+ read_memory_integer (fsr[PS_REGNUM],
+ REGISTER_RAW_SIZE (PS_REGNUM)));
+
+ if (fsr[Y_REGNUM])
+ write_register (Y_REGNUM,
+ read_memory_integer (fsr[Y_REGNUM],
+ REGISTER_RAW_SIZE (Y_REGNUM)));
+ if (fsr[PC_REGNUM])
{
/* Explicitly specified PC (and maybe NPC) -- just restore them. */
- write_register (PC_REGNUM, read_memory_integer (fsr.regs[PC_REGNUM],
- REGISTER_RAW_SIZE (PC_REGNUM)));
- if (fsr.regs[NPC_REGNUM])
+ write_register (PC_REGNUM,
+ read_memory_integer (fsr[PC_REGNUM],
+ REGISTER_RAW_SIZE (PC_REGNUM)));
+ if (fsr[NPC_REGNUM])
write_register (NPC_REGNUM,
- read_memory_integer (fsr.regs[NPC_REGNUM],
- REGISTER_RAW_SIZE (NPC_REGNUM)));
+ read_memory_integer (fsr[NPC_REGNUM],
+ REGISTER_RAW_SIZE (NPC_REGNUM)));
}
- else if (frame->flat)
+ else if (frame->extra_info->flat)
{
- if (frame->pc_addr)
+ if (frame->extra_info->pc_addr)
pc = PC_ADJUST ((CORE_ADDR)
- read_memory_integer (frame->pc_addr,
+ read_memory_integer (frame->extra_info->pc_addr,
REGISTER_RAW_SIZE (PC_REGNUM)));
else
{
/* I think this happens only in the innermost frame, if so then
it is a complicated way of saying
"pc = read_register (O7_REGNUM);". */
- char buf[MAX_REGISTER_RAW_SIZE];
+ char *buf;
+
+ buf = alloca (MAX_REGISTER_RAW_SIZE);
get_saved_register (buf, 0, 0, frame, O7_REGNUM, 0);
pc = PC_ADJUST (extract_address
(buf, REGISTER_RAW_SIZE (O7_REGNUM)));
@@ -1210,10 +1322,10 @@ sparc_pop_frame ()
write_register (PC_REGNUM, pc);
write_register (NPC_REGNUM, pc + 4);
}
- else if (fsr.regs[I7_REGNUM])
+ else if (fsr[I7_REGNUM])
{
/* Return address in %i7 -- adjust it, then restore PC and NPC from it */
- pc = PC_ADJUST ((CORE_ADDR) read_memory_integer (fsr.regs[I7_REGNUM],
+ pc = PC_ADJUST ((CORE_ADDR) read_memory_integer (fsr[I7_REGNUM],
SPARC_INTREG_SIZE));
write_register (PC_REGNUM, pc);
write_register (NPC_REGNUM, pc + 4);
@@ -1322,108 +1434,265 @@ sunos4_skip_trampoline_code (pc)
*/
/* *INDENT-ON* */
-
-
/* Given a pointer to a general register set in /proc format (gregset_t *),
unpack the register contents and supply them as gdb's idea of the current
register values. */
void
supply_gregset (gregsetp)
- prgregset_t *gregsetp;
+ gdb_gregset_t *gregsetp;
{
- register int regi;
- register prgreg_t *regp = (prgreg_t *) gregsetp;
- static char zerobuf[MAX_REGISTER_RAW_SIZE] =
- {0};
+ prgreg_t *regp = (prgreg_t *) gregsetp;
+ int regi, offset = 0;
+
+ /* If the host is 64-bit sparc, but the target is 32-bit sparc,
+ then the gregset may contain 64-bit ints while supply_register
+ is expecting 32-bit ints. Compensate. */
+ if (sizeof (regp[0]) == 8 && SPARC_INTREG_SIZE == 4)
+ offset = 4;
/* GDB register numbers for Gn, On, Ln, In all match /proc reg numbers. */
+ /* FIXME MVS: assumes the order of the first 32 elements... */
for (regi = G0_REGNUM; regi <= I7_REGNUM; regi++)
{
- supply_register (regi, (char *) (regp + regi));
+ supply_register (regi, ((char *) (regp + regi)) + offset);
}
/* These require a bit more care. */
- supply_register (PS_REGNUM, (char *) (regp + R_PS));
- supply_register (PC_REGNUM, (char *) (regp + R_PC));
- supply_register (NPC_REGNUM, (char *) (regp + R_nPC));
- supply_register (Y_REGNUM, (char *) (regp + R_Y));
+ supply_register (PC_REGNUM, ((char *) (regp + R_PC)) + offset);
+ supply_register (NPC_REGNUM, ((char *) (regp + R_nPC)) + offset);
+ supply_register (Y_REGNUM, ((char *) (regp + R_Y)) + offset);
+
+ if (GDB_TARGET_IS_SPARC64)
+ {
+#ifdef R_CCR
+ supply_register (CCR_REGNUM, ((char *) (regp + R_CCR)) + offset);
+#else
+ supply_register (CCR_REGNUM, NULL);
+#endif
+#ifdef R_FPRS
+ supply_register (FPRS_REGNUM, ((char *) (regp + R_FPRS)) + offset);
+#else
+ supply_register (FPRS_REGNUM, NULL);
+#endif
+#ifdef R_ASI
+ supply_register (ASI_REGNUM, ((char *) (regp + R_ASI)) + offset);
+#else
+ supply_register (ASI_REGNUM, NULL);
+#endif
+ }
+ else /* sparc32 */
+ {
+#ifdef R_PS
+ supply_register (PS_REGNUM, ((char *) (regp + R_PS)) + offset);
+#else
+ supply_register (PS_REGNUM, NULL);
+#endif
+
+ /* For 64-bit hosts, R_WIM and R_TBR may not be defined.
+ Steal R_ASI and R_FPRS, and hope for the best! */
+
+#if !defined (R_WIM) && defined (R_ASI)
+#define R_WIM R_ASI
+#endif
+
+#if !defined (R_TBR) && defined (R_FPRS)
+#define R_TBR R_FPRS
+#endif
+
+#if defined (R_WIM)
+ supply_register (WIM_REGNUM, ((char *) (regp + R_WIM)) + offset);
+#else
+ supply_register (WIM_REGNUM, NULL);
+#endif
+
+#if defined (R_TBR)
+ supply_register (TBR_REGNUM, ((char *) (regp + R_TBR)) + offset);
+#else
+ supply_register (TBR_REGNUM, NULL);
+#endif
+ }
/* Fill inaccessible registers with zero. */
- supply_register (WIM_REGNUM, zerobuf);
- supply_register (TBR_REGNUM, zerobuf);
- supply_register (CPS_REGNUM, zerobuf);
+ if (GDB_TARGET_IS_SPARC64)
+ {
+ /*
+ * don't know how to get value of any of the following:
+ */
+ supply_register (VER_REGNUM, NULL);
+ supply_register (TICK_REGNUM, NULL);
+ supply_register (PIL_REGNUM, NULL);
+ supply_register (PSTATE_REGNUM, NULL);
+ supply_register (TSTATE_REGNUM, NULL);
+ supply_register (TBA_REGNUM, NULL);
+ supply_register (TL_REGNUM, NULL);
+ supply_register (TT_REGNUM, NULL);
+ supply_register (TPC_REGNUM, NULL);
+ supply_register (TNPC_REGNUM, NULL);
+ supply_register (WSTATE_REGNUM, NULL);
+ supply_register (CWP_REGNUM, NULL);
+ supply_register (CANSAVE_REGNUM, NULL);
+ supply_register (CANRESTORE_REGNUM, NULL);
+ supply_register (CLEANWIN_REGNUM, NULL);
+ supply_register (OTHERWIN_REGNUM, NULL);
+ supply_register (ASR16_REGNUM, NULL);
+ supply_register (ASR17_REGNUM, NULL);
+ supply_register (ASR18_REGNUM, NULL);
+ supply_register (ASR19_REGNUM, NULL);
+ supply_register (ASR20_REGNUM, NULL);
+ supply_register (ASR21_REGNUM, NULL);
+ supply_register (ASR22_REGNUM, NULL);
+ supply_register (ASR23_REGNUM, NULL);
+ supply_register (ASR24_REGNUM, NULL);
+ supply_register (ASR25_REGNUM, NULL);
+ supply_register (ASR26_REGNUM, NULL);
+ supply_register (ASR27_REGNUM, NULL);
+ supply_register (ASR28_REGNUM, NULL);
+ supply_register (ASR29_REGNUM, NULL);
+ supply_register (ASR30_REGNUM, NULL);
+ supply_register (ASR31_REGNUM, NULL);
+ supply_register (ICC_REGNUM, NULL);
+ supply_register (XCC_REGNUM, NULL);
+ }
+ else
+ {
+ supply_register (CPS_REGNUM, NULL);
+ }
}
void
fill_gregset (gregsetp, regno)
- prgregset_t *gregsetp;
+ gdb_gregset_t *gregsetp;
int regno;
{
- int regi;
- register prgreg_t *regp = (prgreg_t *) gregsetp;
+ prgreg_t *regp = (prgreg_t *) gregsetp;
+ int regi, offset = 0;
+
+ /* If the host is 64-bit sparc, but the target is 32-bit sparc,
+ then the gregset may contain 64-bit ints while supply_register
+ is expecting 32-bit ints. Compensate. */
+ if (sizeof (regp[0]) == 8 && SPARC_INTREG_SIZE == 4)
+ offset = 4;
for (regi = 0; regi <= R_I7; regi++)
- {
- if ((regno == -1) || (regno == regi))
- {
- *(regp + regi) = *(int *) &registers[REGISTER_BYTE (regi)];
- }
- }
- if ((regno == -1) || (regno == PS_REGNUM))
- {
- *(regp + R_PS) = *(int *) &registers[REGISTER_BYTE (PS_REGNUM)];
- }
+ if ((regno == -1) || (regno == regi))
+ read_register_gen (regi, (char *) (regp + regi) + offset);
+
if ((regno == -1) || (regno == PC_REGNUM))
- {
- *(regp + R_PC) = *(int *) &registers[REGISTER_BYTE (PC_REGNUM)];
- }
+ read_register_gen (PC_REGNUM, (char *) (regp + R_PC) + offset);
+
if ((regno == -1) || (regno == NPC_REGNUM))
+ read_register_gen (NPC_REGNUM, (char *) (regp + R_nPC) + offset);
+
+ if ((regno == -1) || (regno == Y_REGNUM))
+ read_register_gen (Y_REGNUM, (char *) (regp + R_Y) + offset);
+
+ if (GDB_TARGET_IS_SPARC64)
{
- *(regp + R_nPC) = *(int *) &registers[REGISTER_BYTE (NPC_REGNUM)];
+#ifdef R_CCR
+ if (regno == -1 || regno == CCR_REGNUM)
+ read_register_gen (CCR_REGNUM, ((char *) (regp + R_CCR)) + offset);
+#endif
+#ifdef R_FPRS
+ if (regno == -1 || regno == FPRS_REGNUM)
+ read_register_gen (FPRS_REGNUM, ((char *) (regp + R_FPRS)) + offset);
+#endif
+#ifdef R_ASI
+ if (regno == -1 || regno == ASI_REGNUM)
+ read_register_gen (ASI_REGNUM, ((char *) (regp + R_ASI)) + offset);
+#endif
}
- if ((regno == -1) || (regno == Y_REGNUM))
+ else /* sparc32 */
{
- *(regp + R_Y) = *(int *) &registers[REGISTER_BYTE (Y_REGNUM)];
+#ifdef R_PS
+ if (regno == -1 || regno == PS_REGNUM)
+ read_register_gen (PS_REGNUM, ((char *) (regp + R_PS)) + offset);
+#endif
+
+ /* For 64-bit hosts, R_WIM and R_TBR may not be defined.
+ Steal R_ASI and R_FPRS, and hope for the best! */
+
+#if !defined (R_WIM) && defined (R_ASI)
+#define R_WIM R_ASI
+#endif
+
+#if !defined (R_TBR) && defined (R_FPRS)
+#define R_TBR R_FPRS
+#endif
+
+#if defined (R_WIM)
+ if (regno == -1 || regno == WIM_REGNUM)
+ read_register_gen (WIM_REGNUM, ((char *) (regp + R_WIM)) + offset);
+#else
+ if (regno == -1 || regno == WIM_REGNUM)
+ read_register_gen (WIM_REGNUM, NULL);
+#endif
+
+#if defined (R_TBR)
+ if (regno == -1 || regno == TBR_REGNUM)
+ read_register_gen (TBR_REGNUM, ((char *) (regp + R_TBR)) + offset);
+#else
+ if (regno == -1 || regno == TBR_REGNUM)
+ read_register_gen (TBR_REGNUM, NULL);
+#endif
}
}
-#if defined (FP0_REGNUM)
-
/* Given a pointer to a floating point register set in /proc format
(fpregset_t *), unpack the register contents and supply them as gdb's
idea of the current floating point register values. */
void
supply_fpregset (fpregsetp)
- prfpregset_t *fpregsetp;
+ gdb_fpregset_t *fpregsetp;
{
register int regi;
char *from;
+ if (!SPARC_HAS_FPU)
+ return;
+
for (regi = FP0_REGNUM; regi < FP_MAX_REGNUM; regi++)
{
from = (char *) &fpregsetp->pr_fr.pr_regs[regi - FP0_REGNUM];
supply_register (regi, from);
}
- supply_register (FPS_REGNUM, (char *) &(fpregsetp->pr_fsr));
+
+ if (GDB_TARGET_IS_SPARC64)
+ {
+ /*
+ * don't know how to get value of the following.
+ */
+ supply_register (FSR_REGNUM, NULL); /* zero it out for now */
+ supply_register (FCC0_REGNUM, NULL);
+ supply_register (FCC1_REGNUM, NULL); /* don't know how to get value */
+ supply_register (FCC2_REGNUM, NULL); /* don't know how to get value */
+ supply_register (FCC3_REGNUM, NULL); /* don't know how to get value */
+ }
+ else
+ {
+ supply_register (FPS_REGNUM, (char *) &(fpregsetp->pr_fsr));
+ }
}
/* Given a pointer to a floating point register set in /proc format
(fpregset_t *), update the register specified by REGNO from gdb's idea
of the current floating point register set. If REGNO is -1, update
them all. */
-/* ??? This will probably need some changes for sparc64. */
+/* This will probably need some changes for sparc64. */
void
fill_fpregset (fpregsetp, regno)
- prfpregset_t *fpregsetp;
+ gdb_fpregset_t *fpregsetp;
int regno;
{
int regi;
char *to;
char *from;
+ if (!SPARC_HAS_FPU)
+ return;
+
for (regi = FP0_REGNUM; regi < FP_MAX_REGNUM; regi++)
{
if ((regno == -1) || (regno == regi))
@@ -1433,13 +1702,15 @@ fill_fpregset (fpregsetp, regno)
memcpy (to, from, REGISTER_RAW_SIZE (regi));
}
}
- if ((regno == -1) || (regno == FPS_REGNUM))
- {
- fpregsetp->pr_fsr = *(int *) &registers[REGISTER_BYTE (FPS_REGNUM)];
- }
-}
-#endif /* defined (FP0_REGNUM) */
+ if (!(GDB_TARGET_IS_SPARC64)) /* FIXME: does Sparc64 have this register? */
+ if ((regno == -1) || (regno == FPS_REGNUM))
+ {
+ from = (char *)&registers[REGISTER_BYTE (FPS_REGNUM)];
+ to = (char *) &fpregsetp->pr_fsr;
+ memcpy (to, from, REGISTER_RAW_SIZE (FPS_REGNUM));
+ }
+}
#endif /* USE_PROC_FS */
@@ -1502,7 +1773,7 @@ sunpro_static_transform_name (name)
/* Utilities for printing registers.
Page numbers refer to the SPARC Architecture Manual. */
-static void dump_ccreg PARAMS ((char *, int));
+static void dump_ccreg (char *, int);
static void
dump_ccreg (reg, val)
@@ -1514,8 +1785,7 @@ dump_ccreg (reg, val)
val & 8 ? "N" : "NN",
val & 4 ? "Z" : "NZ",
val & 2 ? "O" : "NO",
- val & 1 ? "C" : "NC"
- );
+ val & 1 ? "C" : "NC");
}
static char *
@@ -1621,111 +1891,116 @@ sparc_print_register_hook (regno)
val = read_register (regno);
/* pages 40 - 60 */
- switch (regno)
- {
-#ifdef GDB_TARGET_IS_SPARC64
- case CCR_REGNUM:
- printf_unfiltered ("\t");
- dump_ccreg ("xcc", val >> 4);
- printf_unfiltered (", ");
- dump_ccreg ("icc", val & 15);
- break;
- case FPRS_REGNUM:
- printf ("\tfef:%d, du:%d, dl:%d",
- BITS (2, 1), BITS (1, 1), BITS (0, 1));
- break;
- case FSR_REGNUM:
+ if (GDB_TARGET_IS_SPARC64)
+ switch (regno)
{
- static char *fcc[4] =
- {"=", "<", ">", "?"};
- static char *rd[4] =
- {"N", "0", "+", "-"};
- /* Long, yes, but I'd rather leave it as is and use a wide screen. */
- printf ("\t0:%s, 1:%s, 2:%s, 3:%s, rd:%s, tem:%d, ns:%d, ver:%d, ftt:%d, qne:%d, aexc:%d, cexc:%d",
- fcc[BITS (10, 3)], fcc[BITS (32, 3)],
- fcc[BITS (34, 3)], fcc[BITS (36, 3)],
- rd[BITS (30, 3)], BITS (23, 31), BITS (22, 1), BITS (17, 7),
- BITS (14, 7), BITS (13, 1), BITS (5, 31), BITS (0, 31));
+ case CCR_REGNUM:
+ printf_unfiltered ("\t");
+ dump_ccreg ("xcc", val >> 4);
+ printf_unfiltered (", ");
+ dump_ccreg ("icc", val & 15);
break;
- }
- case ASI_REGNUM:
- {
- char *asi = decode_asi (val);
- if (asi != NULL)
- printf ("\t%s", asi);
+ case FPRS_REGNUM:
+ printf ("\tfef:%d, du:%d, dl:%d",
+ BITS (2, 1), BITS (1, 1), BITS (0, 1));
break;
- }
- case VER_REGNUM:
- printf ("\tmanuf:%d, impl:%d, mask:%d, maxtl:%d, maxwin:%d",
- BITS (48, 0xffff), BITS (32, 0xffff),
- BITS (24, 0xff), BITS (8, 0xff), BITS (0, 31));
- break;
- case PSTATE_REGNUM:
- {
- static char *mm[4] =
- {"tso", "pso", "rso", "?"};
- printf ("\tcle:%d, tle:%d, mm:%s, red:%d, pef:%d, am:%d, priv:%d, ie:%d, ag:%d",
- BITS (9, 1), BITS (8, 1), mm[BITS (6, 3)], BITS (5, 1),
- BITS (4, 1), BITS (3, 1), BITS (2, 1), BITS (1, 1),
- BITS (0, 1));
+ case FSR_REGNUM:
+ {
+ static char *fcc[4] =
+ {"=", "<", ">", "?"};
+ static char *rd[4] =
+ {"N", "0", "+", "-"};
+ /* Long, but I'd rather leave it as is and use a wide screen. */
+ printf_filtered ("\t0:%s, 1:%s, 2:%s, 3:%s, rd:%s, tem:%d, ",
+ fcc[BITS (10, 3)], fcc[BITS (32, 3)],
+ fcc[BITS (34, 3)], fcc[BITS (36, 3)],
+ rd[BITS (30, 3)], BITS (23, 31));
+ printf_filtered ("ns:%d, ver:%d, ftt:%d, qne:%d, aexc:%d, cexc:%d",
+ BITS (22, 1), BITS (17, 7), BITS (14, 7),
+ BITS (13, 1), BITS (5, 31), BITS (0, 31));
+ break;
+ }
+ case ASI_REGNUM:
+ {
+ char *asi = decode_asi (val);
+ if (asi != NULL)
+ printf ("\t%s", asi);
+ break;
+ }
+ case VER_REGNUM:
+ printf ("\tmanuf:%d, impl:%d, mask:%d, maxtl:%d, maxwin:%d",
+ BITS (48, 0xffff), BITS (32, 0xffff),
+ BITS (24, 0xff), BITS (8, 0xff), BITS (0, 31));
+ break;
+ case PSTATE_REGNUM:
+ {
+ static char *mm[4] =
+ {"tso", "pso", "rso", "?"};
+ printf_filtered ("\tcle:%d, tle:%d, mm:%s, red:%d, ",
+ BITS (9, 1), BITS (8, 1),
+ mm[BITS (6, 3)], BITS (5, 1));
+ printf_filtered ("pef:%d, am:%d, priv:%d, ie:%d, ag:%d",
+ BITS (4, 1), BITS (3, 1), BITS (2, 1),
+ BITS (1, 1), BITS (0, 1));
+ break;
+ }
+ case TSTATE_REGNUM:
+ /* FIXME: print all 4? */
+ break;
+ case TT_REGNUM:
+ /* FIXME: print all 4? */
+ break;
+ case TPC_REGNUM:
+ /* FIXME: print all 4? */
+ break;
+ case TNPC_REGNUM:
+ /* FIXME: print all 4? */
+ break;
+ case WSTATE_REGNUM:
+ printf ("\tother:%d, normal:%d", BITS (3, 7), BITS (0, 7));
+ break;
+ case CWP_REGNUM:
+ printf ("\t%d", BITS (0, 31));
+ break;
+ case CANSAVE_REGNUM:
+ printf ("\t%-2d before spill", BITS (0, 31));
+ break;
+ case CANRESTORE_REGNUM:
+ printf ("\t%-2d before fill", BITS (0, 31));
+ break;
+ case CLEANWIN_REGNUM:
+ printf ("\t%-2d before clean", BITS (0, 31));
+ break;
+ case OTHERWIN_REGNUM:
+ printf ("\t%d", BITS (0, 31));
break;
}
- case TSTATE_REGNUM:
- /* FIXME: print all 4? */
- break;
- case TT_REGNUM:
- /* FIXME: print all 4? */
- break;
- case TPC_REGNUM:
- /* FIXME: print all 4? */
- break;
- case TNPC_REGNUM:
- /* FIXME: print all 4? */
- break;
- case WSTATE_REGNUM:
- printf ("\tother:%d, normal:%d", BITS (3, 7), BITS (0, 7));
- break;
- case CWP_REGNUM:
- printf ("\t%d", BITS (0, 31));
- break;
- case CANSAVE_REGNUM:
- printf ("\t%-2d before spill", BITS (0, 31));
- break;
- case CANRESTORE_REGNUM:
- printf ("\t%-2d before fill", BITS (0, 31));
- break;
- case CLEANWIN_REGNUM:
- printf ("\t%-2d before clean", BITS (0, 31));
- break;
- case OTHERWIN_REGNUM:
- printf ("\t%d", BITS (0, 31));
- break;
-#else
- case PS_REGNUM:
- printf ("\ticc:%c%c%c%c, pil:%d, s:%d, ps:%d, et:%d, cwp:%d",
- BITS (23, 1) ? 'N' : '-', BITS (22, 1) ? 'Z' : '-',
- BITS (21, 1) ? 'V' : '-', BITS (20, 1) ? 'C' : '-',
- BITS (8, 15), BITS (7, 1), BITS (6, 1), BITS (5, 1),
- BITS (0, 31));
- break;
- case FPS_REGNUM:
+ else /* Sparc32 */
+ switch (regno)
{
- static char *fcc[4] =
- {"=", "<", ">", "?"};
- static char *rd[4] =
- {"N", "0", "+", "-"};
- /* Long, yes, but I'd rather leave it as is and use a wide screen. */
- printf ("\trd:%s, tem:%d, ns:%d, ver:%d, ftt:%d, qne:%d, "
- "fcc:%s, aexc:%d, cexc:%d",
- rd[BITS (30, 3)], BITS (23, 31), BITS (22, 1), BITS (17, 7),
- BITS (14, 7), BITS (13, 1), fcc[BITS (10, 3)], BITS (5, 31),
+ case PS_REGNUM:
+ printf ("\ticc:%c%c%c%c, pil:%d, s:%d, ps:%d, et:%d, cwp:%d",
+ BITS (23, 1) ? 'N' : '-', BITS (22, 1) ? 'Z' : '-',
+ BITS (21, 1) ? 'V' : '-', BITS (20, 1) ? 'C' : '-',
+ BITS (8, 15), BITS (7, 1), BITS (6, 1), BITS (5, 1),
BITS (0, 31));
break;
+ case FPS_REGNUM:
+ {
+ static char *fcc[4] =
+ {"=", "<", ">", "?"};
+ static char *rd[4] =
+ {"N", "0", "+", "-"};
+ /* Long, but I'd rather leave it as is and use a wide screen. */
+ printf ("\trd:%s, tem:%d, ns:%d, ver:%d, ftt:%d, qne:%d, "
+ "fcc:%s, aexc:%d, cexc:%d",
+ rd[BITS (30, 3)], BITS (23, 31), BITS (22, 1), BITS (17, 7),
+ BITS (14, 7), BITS (13, 1), fcc[BITS (10, 3)], BITS (5, 31),
+ BITS (0, 31));
+ break;
+ }
}
-#endif /* GDB_TARGET_IS_SPARC64 */
- }
-
#undef BITS
}
@@ -1740,17 +2015,18 @@ gdb_print_insn_sparc (memaddr, info)
}
/* The SPARC passes the arguments on the stack; arguments smaller
- than an int are promoted to an int. */
+ than an int are promoted to an int. The first 6 words worth of
+ args are also passed in registers o0 - o5. */
CORE_ADDR
-sparc_push_arguments (nargs, args, sp, struct_return, struct_addr)
+sparc32_push_arguments (nargs, args, sp, struct_return, struct_addr)
int nargs;
value_ptr *args;
CORE_ADDR sp;
int struct_return;
CORE_ADDR struct_addr;
{
- int i;
+ int i, j, oregnum;
int accumulate_size = 0;
struct sparc_arg
{
@@ -1759,7 +2035,7 @@ sparc_push_arguments (nargs, args, sp, struct_return, struct_addr)
int offset;
};
struct sparc_arg *sparc_args =
- (struct sparc_arg *) alloca (nargs * sizeof (struct sparc_arg));
+ (struct sparc_arg *) alloca (nargs * sizeof (struct sparc_arg));
struct sparc_arg *m_arg;
/* Promote arguments if necessary, and calculate their stack offsets
@@ -1796,8 +2072,16 @@ sparc_push_arguments (nargs, args, sp, struct_return, struct_addr)
sp = ((sp - accumulate_size) & ~7) + CALL_DUMMY_STACK_ADJUST;
/* `Push' arguments on the stack. */
- for (i = nargs; m_arg--, --i >= 0;)
- write_memory (sp + m_arg->offset, m_arg->contents, m_arg->len);
+ for (i = 0, oregnum = 0, m_arg = sparc_args;
+ i < nargs;
+ i++, m_arg++)
+ {
+ write_memory (sp + m_arg->offset, m_arg->contents, m_arg->len);
+ for (j = 0;
+ j < m_arg->len && oregnum < 6;
+ j += SPARC_INTREG_SIZE, oregnum++)
+ write_register_gen (O0_REGNUM + oregnum, m_arg->contents + j);
+ }
return sp;
}
@@ -1808,7 +2092,7 @@ sparc_push_arguments (nargs, args, sp, struct_return, struct_addr)
into VALBUF. */
void
-sparc_extract_return_value (type, regbuf, valbuf)
+sparc32_extract_return_value (type, regbuf, valbuf)
struct type *type;
char *regbuf;
char *valbuf;
@@ -1839,7 +2123,9 @@ sparc_store_return_value (type, valbuf)
char *valbuf;
{
int regno;
- char buffer[MAX_REGISTER_RAW_SIZE];
+ char *buffer;
+
+ buffer = alloca(MAX_REGISTER_RAW_SIZE);
if (TYPE_CODE (type) == TYPE_CODE_FLT && SPARC_HAS_FPU)
/* Floating-point values are returned in the register pair */
@@ -1852,16 +2138,28 @@ sparc_store_return_value (type, valbuf)
/* Add leading zeros to the value. */
if (TYPE_LENGTH (type) < REGISTER_RAW_SIZE (regno))
{
- bzero (buffer, REGISTER_RAW_SIZE (regno));
+ memset (buffer, 0, REGISTER_RAW_SIZE (regno));
memcpy (buffer + REGISTER_RAW_SIZE (regno) - TYPE_LENGTH (type), valbuf,
TYPE_LENGTH (type));
- write_register_bytes (REGISTER_BYTE (regno), buffer,
- REGISTER_RAW_SIZE (regno));
+ write_register_gen (regno, buffer);
}
else
write_register_bytes (REGISTER_BYTE (regno), valbuf, TYPE_LENGTH (type));
}
+extern void
+sparclet_store_return_value (struct type *type, char *valbuf)
+{
+ /* Other values are returned in register %o0. */
+ write_register_bytes (REGISTER_BYTE (O0_REGNUM), valbuf,
+ TYPE_LENGTH (type));
+}
+
+
+#ifndef CALL_DUMMY_CALL_OFFSET
+#define CALL_DUMMY_CALL_OFFSET \
+ (gdbarch_tdep (current_gdbarch)->call_dummy_call_offset)
+#endif /* CALL_DUMMY_CALL_OFFSET */
/* Insert the function address into a call dummy instruction sequence
stored at DUMMY.
@@ -1897,17 +2195,19 @@ sparc_fix_call_dummy (dummy, pc, fun, value_type, using_gcc)
store_unsigned_integer (dummy + CALL_DUMMY_CALL_OFFSET + 8, 4,
TYPE_LENGTH (value_type) & 0x1fff);
-#ifndef GDB_TARGET_IS_SPARC64
- /* If this is not a simulator target, change the first four instructions
- of the call dummy to NOPs. Those instructions include a 'save'
- instruction and are designed to work around problems with register
- window flushing in the simulator. */
- if (strcmp (target_shortname, "sim") != 0)
+ if (!(GDB_TARGET_IS_SPARC64))
{
- for (i = 0; i < 4; i++)
- store_unsigned_integer (dummy + (i * 4), 4, 0x01000000);
+ /* If this is not a simulator target, change the first four
+ instructions of the call dummy to NOPs. Those instructions
+ include a 'save' instruction and are designed to work around
+ problems with register window flushing in the simulator. */
+
+ if (strcmp (target_shortname, "sim") != 0)
+ {
+ for (i = 0; i < 4; i++)
+ store_unsigned_integer (dummy + (i * 4), 4, 0x01000000);
+ }
}
-#endif
/* If this is a bi-endian target, GDB has written the call dummy
in little-endian order. We must byte-swap it back to big-endian. */
@@ -1952,21 +2252,29 @@ sparc_target_architecture_hook (ap)
}
+/*
+ * Module "constructor" function.
+ */
+
+static struct gdbarch * sparc_gdbarch_init (struct gdbarch_info info,
+ struct gdbarch_list *arches);
+
void
_initialize_sparc_tdep ()
{
+ /* Hook us into the gdbarch mechanism. */
+ register_gdbarch_init (bfd_arch_sparc, sparc_gdbarch_init);
+
tm_print_insn = gdb_print_insn_sparc;
tm_print_insn_info.mach = TM_PRINT_INSN_MACH; /* Selects sparc/sparclite */
target_architecture_hook = sparc_target_architecture_hook;
}
+/* Compensate for stack bias. Note that we currently don't handle
+ mixed 32/64 bit code. */
-#ifdef GDB_TARGET_IS_SPARC64
-
-/* Compensate for stack bias. Note that we currently don't handle mixed
- 32/64 bit code. */
CORE_ADDR
-sparc64_read_sp ()
+sparc64_read_sp (void)
{
CORE_ADDR sp = read_register (SP_REGNUM);
@@ -1976,7 +2284,7 @@ sparc64_read_sp ()
}
CORE_ADDR
-sparc64_read_fp ()
+sparc64_read_fp (void)
{
CORE_ADDR fp = read_register (FP_REGNUM);
@@ -2007,35 +2315,47 @@ sparc64_write_fp (val)
write_register (FP_REGNUM, val);
}
-/* The SPARC 64 ABI passes floating-point arguments in FP0-31. They are
- also copied onto the stack in the correct places. */
+/* The SPARC 64 ABI passes floating-point arguments in FP0 to FP31,
+ and all other arguments in O0 to O5. They are also copied onto
+ the stack in the correct places. Apparently (empirically),
+ structs of less than 16 bytes are passed member-by-member in
+ separate registers, but I am unable to figure out the algorithm.
+ Some members go in floating point regs, but I don't know which.
+
+ FIXME: Handle small structs (less than 16 bytes containing floats).
+
+ The counting regimen for using both integer and FP registers
+ for argument passing is rather odd -- a single counter is used
+ for both; this means that if the arguments alternate between
+ int and float, we will waste every other register of both types. */
CORE_ADDR
-sp64_push_arguments (nargs, args, sp, struct_return, struct_retaddr)
+sparc64_push_arguments (nargs, args, sp, struct_return, struct_retaddr)
int nargs;
value_ptr *args;
CORE_ADDR sp;
- unsigned char struct_return;
+ int struct_return;
CORE_ADDR struct_retaddr;
{
- int x;
- int regnum = 0;
+ int i, j, register_counter = 0;
CORE_ADDR tempsp;
+ struct type *sparc_intreg_type =
+ TYPE_LENGTH (builtin_type_long) == SPARC_INTREG_SIZE ?
+ builtin_type_long : builtin_type_long_long;
- sp = (sp & ~(((unsigned long) TYPE_LENGTH (builtin_type_long)) - 1UL));
+ sp = (sp & ~(((unsigned long) SPARC_INTREG_SIZE) - 1UL));
/* Figure out how much space we'll need. */
- for (x = nargs - 1; x >= 0; x--)
+ for (i = nargs - 1; i >= 0; i--)
{
- int len = TYPE_LENGTH (check_typedef (VALUE_TYPE (args[x])));
- value_ptr copyarg = args[x];
+ int len = TYPE_LENGTH (check_typedef (VALUE_TYPE (args[i])));
+ value_ptr copyarg = args[i];
int copylen = len;
- /* This code is, of course, no longer correct. */
- if (copylen < TYPE_LENGTH (builtin_type_long))
+ if (copylen < SPARC_INTREG_SIZE)
{
- copyarg = value_cast (builtin_type_long, copyarg);
- copylen = TYPE_LENGTH (builtin_type_long);
+ copyarg = value_cast (sparc_intreg_type, copyarg);
+ copylen = SPARC_INTREG_SIZE;
}
sp -= copylen;
}
@@ -2044,48 +2364,92 @@ sp64_push_arguments (nargs, args, sp, struct_return, struct_retaddr)
sp = sp & ~7;
tempsp = sp;
- /* Now write the arguments onto the stack, while writing FP arguments
- into the FP registers. */
- for (x = 0; x < nargs; x++)
+ /* if STRUCT_RETURN, then first argument is the struct return location. */
+ if (struct_return)
+ write_register (O0_REGNUM + register_counter++, struct_retaddr);
+
+ /* Now write the arguments onto the stack, while writing FP
+ arguments into the FP registers, and other arguments into the
+ first six 'O' registers. */
+
+ for (i = 0; i < nargs; i++)
{
- int len = TYPE_LENGTH (check_typedef (VALUE_TYPE (args[x])));
- value_ptr copyarg = args[x];
+ int len = TYPE_LENGTH (check_typedef (VALUE_TYPE (args[i])));
+ value_ptr copyarg = args[i];
+ enum type_code typecode = TYPE_CODE (VALUE_TYPE (args[i]));
int copylen = len;
- /* This code is, of course, no longer correct. */
- if (copylen < TYPE_LENGTH (builtin_type_long))
- {
- copyarg = value_cast (builtin_type_long, copyarg);
- copylen = TYPE_LENGTH (builtin_type_long);
- }
+ if (typecode == TYPE_CODE_INT ||
+ typecode == TYPE_CODE_BOOL ||
+ typecode == TYPE_CODE_CHAR ||
+ typecode == TYPE_CODE_RANGE ||
+ typecode == TYPE_CODE_ENUM)
+ if (len < SPARC_INTREG_SIZE)
+ {
+ /* Small ints will all take up the size of one intreg on
+ the stack. */
+ copyarg = value_cast (sparc_intreg_type, copyarg);
+ copylen = SPARC_INTREG_SIZE;
+ }
+
write_memory (tempsp, VALUE_CONTENTS (copyarg), copylen);
tempsp += copylen;
- if (TYPE_CODE (VALUE_TYPE (args[x])) == TYPE_CODE_FLT && regnum < 32)
+
+ /* Corner case: Structs consisting of a single float member are floats.
+ * FIXME! I don't know about structs containing multiple floats!
+ * Structs containing mixed floats and ints are even more weird.
+ */
+
+
+
+ /* Separate float args from all other args. */
+ if (typecode == TYPE_CODE_FLT && SPARC_HAS_FPU)
{
- /* This gets copied into a FP register. */
- int nextreg = regnum + 2;
- char *data = VALUE_CONTENTS (args[x]);
- /* Floats go into the lower half of a FP register pair; quads
- use 2 pairs. */
-
- if (len == 16)
- nextreg += 2;
- else if (len == 4)
- regnum++;
-
- write_register_bytes (REGISTER_BYTE (FP0_REGNUM + regnum),
- data,
- len);
- regnum = nextreg;
+ if (register_counter < 16)
+ {
+ /* This arg gets copied into a FP register. */
+ int fpreg;
+
+ switch (len) {
+ case 4: /* Single-precision (float) */
+ fpreg = FP0_REGNUM + 2 * register_counter + 1;
+ register_counter += 1;
+ break;
+ case 8: /* Double-precision (double) */
+ fpreg = FP0_REGNUM + 2 * register_counter;
+ register_counter += 1;
+ break;
+ case 16: /* Quad-precision (long double) */
+ fpreg = FP0_REGNUM + 2 * register_counter;
+ register_counter += 2;
+ break;
+ }
+ write_register_bytes (REGISTER_BYTE (fpreg),
+ VALUE_CONTENTS (args[i]),
+ len);
+ }
}
+ else /* all other args go into the first six 'o' registers */
+ {
+ for (j = 0;
+ j < len && register_counter < 6;
+ j += SPARC_INTREG_SIZE)
+ {
+ int oreg = O0_REGNUM + register_counter;
+
+ write_register_gen (oreg, VALUE_CONTENTS (copyarg) + j);
+ register_counter += 1;
+ }
+ }
}
return sp;
}
/* Values <= 32 bytes are returned in o0-o3 (floating-point values are
returned in f0-f3). */
+
void
-sparc64_extract_return_value (type, regbuf, valbuf, bitoffset)
+sp64_extract_return_value (type, regbuf, valbuf, bitoffset)
struct type *type;
char *regbuf;
char *valbuf;
@@ -2127,12 +2491,12 @@ sparc64_extract_return_value (type, regbuf, valbuf, bitoffset)
if (typecode == TYPE_CODE_STRUCT)
{
- sparc64_extract_return_value (f->type,
- regbuf,
- valbuf,
- bitoffset + f->loc.bitpos);
+ sp64_extract_return_value (f->type,
+ regbuf,
+ valbuf,
+ bitoffset + f->loc.bitpos);
}
- else if (typecode == TYPE_CODE_FLT)
+ else if (typecode == TYPE_CODE_FLT && SPARC_HAS_FPU)
{
memcpy (valbuf + where, &f0[whichreg * 4] + remainder, size);
}
@@ -2144,5 +2508,761 @@ sparc64_extract_return_value (type, regbuf, valbuf, bitoffset)
}
}
+extern void
+sparc64_extract_return_value (struct type *type, char *regbuf, char *valbuf)
+{
+ sp64_extract_return_value (type, regbuf, valbuf, 0);
+}
+
+extern void
+sparclet_extract_return_value (struct type *type,
+ char *regbuf,
+ char *valbuf)
+{
+ regbuf += REGISTER_RAW_SIZE (O0_REGNUM) * 8;
+ if (TYPE_LENGTH (type) < REGISTER_RAW_SIZE (O0_REGNUM))
+ regbuf += REGISTER_RAW_SIZE (O0_REGNUM) - TYPE_LENGTH (type);
+
+ memcpy ((void *) valbuf, regbuf, TYPE_LENGTH (type));
+}
+
+
+extern CORE_ADDR
+sparc32_stack_align (CORE_ADDR addr)
+{
+ return ((addr + 7) & -8);
+}
+
+extern CORE_ADDR
+sparc64_stack_align (CORE_ADDR addr)
+{
+ return ((addr + 15) & -16);
+}
+
+extern void
+sparc_print_extra_frame_info (struct frame_info *fi)
+{
+ if (fi && fi->extra_info && fi->extra_info->flat)
+ printf_filtered (" flat, pc saved at 0x%s, fp saved at 0x%s\n",
+ paddr_nz (fi->extra_info->pc_addr),
+ paddr_nz (fi->extra_info->fp_addr));
+}
+
+/* MULTI_ARCH support */
+
+static char *
+sparc32_register_name (int regno)
+{
+ static char *register_names[] =
+ { "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7",
+ "o0", "o1", "o2", "o3", "o4", "o5", "sp", "o7",
+ "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7",
+ "i0", "i1", "i2", "i3", "i4", "i5", "fp", "i7",
+
+ "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
+ "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
+ "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",
+ "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31",
+
+ "y", "psr", "wim", "tbr", "pc", "npc", "fpsr", "cpsr"
+ };
+
+ if (regno < 0 ||
+ regno >= (sizeof (register_names) / sizeof (register_names[0])))
+ return NULL;
+ else
+ return register_names[regno];
+}
+
+static char *
+sparc64_register_name (int regno)
+{
+ static char *register_names[] =
+ { "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7",
+ "o0", "o1", "o2", "o3", "o4", "o5", "sp", "o7",
+ "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7",
+ "i0", "i1", "i2", "i3", "i4", "i5", "fp", "i7",
+
+ "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
+ "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
+ "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",
+ "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31",
+ "f32", "f34", "f36", "f38", "f40", "f42", "f44", "f46",
+ "f48", "f50", "f52", "f54", "f56", "f58", "f60", "f62",
+
+ "pc", "npc", "ccr", "fsr", "fprs", "y", "asi", "ver",
+ "tick", "pil", "pstate", "tstate", "tba", "tl", "tt", "tpc",
+ "tnpc", "wstate", "cwp", "cansave", "canrestore", "cleanwin", "otherwin",
+ "asr16", "asr17", "asr18", "asr19", "asr20", "asr21", "asr22", "asr23",
+ "asr24", "asr25", "asr26", "asr27", "asr28", "asr29", "asr30", "asr31",
+ /* These are here at the end to simplify removing them if we have to. */
+ "icc", "xcc", "fcc0", "fcc1", "fcc2", "fcc3"
+ };
+
+ if (regno < 0 ||
+ regno >= (sizeof (register_names) / sizeof (register_names[0])))
+ return NULL;
+ else
+ return register_names[regno];
+}
+
+static char *
+sparclite_register_name (int regno)
+{
+ static char *register_names[] =
+ { "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7",
+ "o0", "o1", "o2", "o3", "o4", "o5", "sp", "o7",
+ "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7",
+ "i0", "i1", "i2", "i3", "i4", "i5", "fp", "i7",
+
+ "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
+ "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
+ "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",
+ "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31",
+
+ "y", "psr", "wim", "tbr", "pc", "npc", "fpsr", "cpsr",
+ "dia1", "dia2", "dda1", "dda2", "ddv1", "ddv2", "dcr", "dsr"
+ };
+
+ if (regno < 0 ||
+ regno >= (sizeof (register_names) / sizeof (register_names[0])))
+ return NULL;
+ else
+ return register_names[regno];
+}
+
+static char *
+sparclet_register_name (int regno)
+{
+ static char *register_names[] =
+ { "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7",
+ "o0", "o1", "o2", "o3", "o4", "o5", "sp", "o7",
+ "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7",
+ "i0", "i1", "i2", "i3", "i4", "i5", "fp", "i7",
+
+ "", "", "", "", "", "", "", "", /* no floating point registers */
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+
+ "y", "psr", "wim", "tbr", "pc", "npc", "", "", /* no FPSR or CPSR */
+ "ccsr", "ccpr", "cccrcr", "ccor", "ccobr", "ccibr", "ccir", "",
+
+ /* ASR15 ASR19 (don't display them) */
+ "asr1", "", "asr17", "asr18", "", "asr20", "asr21", "asr22"
+ /* None of the rest get displayed */
+#if 0
+ "awr0", "awr1", "awr2", "awr3", "awr4", "awr5", "awr6", "awr7",
+ "awr8", "awr9", "awr10", "awr11", "awr12", "awr13", "awr14", "awr15",
+ "awr16", "awr17", "awr18", "awr19", "awr20", "awr21", "awr22", "awr23",
+ "awr24", "awr25", "awr26", "awr27", "awr28", "awr29", "awr30", "awr31",
+ "apsr"
+#endif /* 0 */
+ };
+
+ if (regno < 0 ||
+ regno >= (sizeof (register_names) / sizeof (register_names[0])))
+ return NULL;
+ else
+ return register_names[regno];
+}
+
+CORE_ADDR
+sparc_push_return_address (CORE_ADDR pc_unused, CORE_ADDR sp)
+{
+ if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT)
+ {
+ /* The return PC of the dummy_frame is the former 'current' PC
+ (where we were before we made the target function call).
+ This is saved in %i7 by push_dummy_frame.
+
+ We will save the 'call dummy location' (ie. the address
+ to which the target function will return) in %o7.
+ This address will actually be the program's entry point.
+ There will be a special call_dummy breakpoint there. */
+
+ write_register (O7_REGNUM,
+ CALL_DUMMY_ADDRESS () - 8);
+ }
+
+ return sp;
+}
+
+/* Should call_function allocate stack space for a struct return? */
+
+static int
+sparc64_use_struct_convention (int gcc_p, struct type *type)
+{
+ return (TYPE_LENGTH (type) > 32);
+}
+
+/* Store the address of the place in which to copy the structure the
+ subroutine will return. This is called from call_function_by_hand.
+ The ultimate mystery is, tho, what is the value "16"?
+
+ MVS: That's the offset from where the sp is now, to where the
+ subroutine is gonna expect to find the struct return address. */
+
+static void
+sparc32_store_struct_return (CORE_ADDR addr, CORE_ADDR sp)
+{
+ char *val;
+ CORE_ADDR o7;
+
+ val = alloca (SPARC_INTREG_SIZE);
+ store_unsigned_integer (val, SPARC_INTREG_SIZE, addr);
+ write_memory (sp + (16 * SPARC_INTREG_SIZE), val, SPARC_INTREG_SIZE);
+
+ if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT)
+ {
+ /* Now adjust the value of the link register, which was previously
+ stored by push_return_address. Functions that return structs are
+ peculiar in that they return to link register + 12, rather than
+ link register + 8. */
+
+ o7 = read_register (O7_REGNUM);
+ write_register (O7_REGNUM, o7 - 4);
+ }
+}
+
+static void
+sparc64_store_struct_return (CORE_ADDR addr, CORE_ADDR sp)
+{
+ /* FIXME: V9 uses %o0 for this. */
+ /* FIXME MVS: Only for small enough structs!!! */
+
+ target_write_memory (sp + (16 * SPARC_INTREG_SIZE),
+ (char *) &addr, SPARC_INTREG_SIZE);
+#if 0
+ if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT)
+ {
+ /* Now adjust the value of the link register, which was previously
+ stored by push_return_address. Functions that return structs are
+ peculiar in that they return to link register + 12, rather than
+ link register + 8. */
+
+ write_register (O7_REGNUM, read_register (O7_REGNUM) - 4);
+ }
+#endif
+}
+
+/* Default target data type for register REGNO. */
+
+static struct type *
+sparc32_register_virtual_type (int regno)
+{
+ if (regno == PC_REGNUM ||
+ regno == FP_REGNUM ||
+ regno == SP_REGNUM)
+ return builtin_type_unsigned_int;
+ if (regno < 32)
+ return builtin_type_int;
+ if (regno < 64)
+ return builtin_type_float;
+ return builtin_type_int;
+}
+
+static struct type *
+sparc64_register_virtual_type (int regno)
+{
+ if (regno == PC_REGNUM ||
+ regno == FP_REGNUM ||
+ regno == SP_REGNUM)
+ return builtin_type_unsigned_long_long;
+ if (regno < 32)
+ return builtin_type_long_long;
+ if (regno < 64)
+ return builtin_type_float;
+ if (regno < 80)
+ return builtin_type_double;
+ return builtin_type_long_long;
+}
+
+/* Number of bytes of storage in the actual machine representation for
+ register REGNO. */
+
+static int
+sparc32_register_size (int regno)
+{
+ return 4;
+}
+
+static int
+sparc64_register_size (int regno)
+{
+ return (regno < 32 ? 8 : regno < 64 ? 4 : 8);
+}
+
+/* Index within the `registers' buffer of the first byte of the space
+ for register REGNO. */
+
+static int
+sparc32_register_byte (int regno)
+{
+ return (regno * 4);
+}
+
+static int
+sparc64_register_byte (int regno)
+{
+ if (regno < 32)
+ return regno * 8;
+ else if (regno < 64)
+ return 32 * 8 + (regno - 32) * 4;
+ else if (regno < 80)
+ return 32 * 8 + 32 * 4 + (regno - 64) * 8;
+ else
+ return 64 * 8 + (regno - 80) * 8;
+}
+
+/* Advance PC across any function entry prologue instructions to reach
+ some "real" code. SKIP_PROLOGUE_FRAMELESS_P advances the PC past
+ some of the prologue, but stops as soon as it knows that the
+ function has a frame. Its result is equal to its input PC if the
+ function is frameless, unequal otherwise. */
+
+static CORE_ADDR
+sparc_gdbarch_skip_prologue (CORE_ADDR ip)
+{
+ return examine_prologue (ip, 0, NULL, NULL);
+}
+
+/* Immediately after a function call, return the saved pc.
+ Can't go through the frames for this because on some machines
+ the new frame is not set up until the new function executes
+ some instructions. */
+
+static CORE_ADDR
+sparc_saved_pc_after_call (struct frame_info *fi)
+{
+ return sparc_pc_adjust (read_register (RP_REGNUM));
+}
+
+/* Convert registers between 'raw' and 'virtual' formats.
+ They are the same on sparc, so there's nothing to do. */
+
+static void
+sparc_convert_to_virtual (int regnum, struct type *type, char *from, char *to)
+{ /* do nothing (should never be called) */
+}
+
+static void
+sparc_convert_to_raw (struct type *type, int regnum, char *from, char *to)
+{ /* do nothing (should never be called) */
+}
+
+/* Init saved regs: nothing to do, just a place-holder function. */
+
+static void
+sparc_frame_init_saved_regs (struct frame_info *fi_ignored)
+{ /* no-op */
+}
+
+/* The frame address: stored in the 'frame' field of the frame_info. */
+
+static CORE_ADDR
+sparc_frame_address (struct frame_info *fi)
+{
+ return fi->frame;
+}
+
+/* gdbarch fix call dummy:
+ All this function does is rearrange the arguments before calling
+ sparc_fix_call_dummy (which does the real work). */
+
+static void
+sparc_gdbarch_fix_call_dummy (char *dummy,
+ CORE_ADDR pc,
+ CORE_ADDR fun,
+ int nargs,
+ struct value **args,
+ struct type *type,
+ int gcc_p)
+{
+ if (CALL_DUMMY_LOCATION == ON_STACK)
+ sparc_fix_call_dummy (dummy, pc, fun, type, gcc_p);
+}
+
+/* Coerce float to double: a no-op. */
+
+static int
+sparc_coerce_float_to_double (struct type *formal, struct type *actual)
+{
+ return 1;
+}
+
+/* CALL_DUMMY_ADDRESS: fetch the breakpoint address for a call dummy. */
+
+static CORE_ADDR
+sparc_call_dummy_address (void)
+{
+ return (CALL_DUMMY_START_OFFSET) + CALL_DUMMY_BREAKPOINT_OFFSET;
+}
+
+/* Supply the Y register number to those that need it. */
+int
+sparc_y_regnum (void)
+{
+ return gdbarch_tdep (current_gdbarch)->y_regnum;
+}
+
+int
+sparc_reg_struct_has_addr (int gcc_p, struct type *type)
+{
+ if (GDB_TARGET_IS_SPARC64)
+ return (TYPE_LENGTH (type) > 32);
+ else
+ return (gcc_p != 1);
+}
+
+int
+sparc_intreg_size (void)
+{
+ return SPARC_INTREG_SIZE;
+}
+
+static int
+sparc_return_value_on_stack (struct type *type)
+{
+ if (TYPE_CODE (type) == TYPE_CODE_FLT &&
+ TYPE_LENGTH (type) > 8)
+ return 1;
+ else
+ return 0;
+}
+
+/*
+ * Gdbarch "constructor" function.
+ */
+
+#define SPARC32_CALL_DUMMY_ON_STACK
+
+#define SPARC_SP_REGNUM 14
+#define SPARC_FP_REGNUM 30
+#define SPARC_FP0_REGNUM 32
+#define SPARC32_NPC_REGNUM 69
+#define SPARC32_PC_REGNUM 68
+#define SPARC32_Y_REGNUM 64
+#define SPARC64_PC_REGNUM 80
+#define SPARC64_NPC_REGNUM 81
+#define SPARC64_Y_REGNUM 85
+
+static struct gdbarch *
+sparc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
+{
+ struct gdbarch *gdbarch;
+ struct gdbarch_tdep *tdep;
+
+ static LONGEST call_dummy_32[] =
+ { 0xbc100001, 0x9de38000, 0xbc100002, 0xbe100003,
+ 0xda03a058, 0xd803a054, 0xd603a050, 0xd403a04c,
+ 0xd203a048, 0x40000000, 0xd003a044, 0x01000000,
+ 0x91d02001, 0x01000000
+ };
+ static LONGEST call_dummy_64[] =
+ { 0x9de3bec0fd3fa7f7LL, 0xf93fa7eff53fa7e7LL,
+ 0xf13fa7dfed3fa7d7LL, 0xe93fa7cfe53fa7c7LL,
+ 0xe13fa7bfdd3fa7b7LL, 0xd93fa7afd53fa7a7LL,
+ 0xd13fa79fcd3fa797LL, 0xc93fa78fc53fa787LL,
+ 0xc13fa77fcc3fa777LL, 0xc83fa76fc43fa767LL,
+ 0xc03fa75ffc3fa757LL, 0xf83fa74ff43fa747LL,
+ 0xf03fa73f01000000LL, 0x0100000001000000LL,
+ 0x0100000091580000LL, 0xd027a72b93500000LL,
+ 0xd027a72791480000LL, 0xd027a72391400000LL,
+ 0xd027a71fda5ba8a7LL, 0xd85ba89fd65ba897LL,
+ 0xd45ba88fd25ba887LL, 0x9fc02000d05ba87fLL,
+ 0x0100000091d02001LL, 0x0100000001000000LL
+ };
+ static LONGEST call_dummy_nil[] = {0};
+
+ /* First see if there is already a gdbarch that can satisfy the request. */
+ arches = gdbarch_list_lookup_by_info (arches, &info);
+ if (arches != NULL)
+ return arches->gdbarch;
+
+ /* None found: is the request for a sparc architecture? */
+ if (info.bfd_architecture != bfd_arch_sparc)
+ return NULL; /* No; then it's not for us. */
+
+ /* Yes: create a new gdbarch for the specified machine type. */
+ tdep = (struct gdbarch_tdep *) xmalloc (sizeof (struct gdbarch_tdep));
+ gdbarch = gdbarch_alloc (&info, tdep);
+
+ /* First set settings that are common for all sparc architectures. */
+ set_gdbarch_believe_pcc_promotion (gdbarch, 1);
+ set_gdbarch_breakpoint_from_pc (gdbarch, memory_breakpoint_from_pc);
+ set_gdbarch_coerce_float_to_double (gdbarch,
+ sparc_coerce_float_to_double);
+ set_gdbarch_call_dummy_breakpoint_offset_p (gdbarch, 1);
+ set_gdbarch_call_dummy_p (gdbarch, 1);
+ set_gdbarch_call_dummy_stack_adjust_p (gdbarch, 1);
+ set_gdbarch_decr_pc_after_break (gdbarch, 0);
+ set_gdbarch_double_bit (gdbarch, 8 * TARGET_CHAR_BIT);
+ set_gdbarch_extract_struct_value_address (gdbarch,
+ sparc_extract_struct_value_address);
+ set_gdbarch_fix_call_dummy (gdbarch, sparc_gdbarch_fix_call_dummy);
+ set_gdbarch_float_bit (gdbarch, 4 * TARGET_CHAR_BIT);
+ set_gdbarch_fp_regnum (gdbarch, SPARC_FP_REGNUM);
+ set_gdbarch_fp0_regnum (gdbarch, SPARC_FP0_REGNUM);
+ set_gdbarch_frame_args_address (gdbarch, sparc_frame_address);
+ set_gdbarch_frame_chain (gdbarch, sparc_frame_chain);
+ set_gdbarch_frame_init_saved_regs (gdbarch, sparc_frame_init_saved_regs);
+ set_gdbarch_frame_locals_address (gdbarch, sparc_frame_address);
+ set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
+ set_gdbarch_frame_saved_pc (gdbarch, sparc_frame_saved_pc);
+ set_gdbarch_frameless_function_invocation (gdbarch,
+ frameless_look_for_prologue);
+ set_gdbarch_get_saved_register (gdbarch, sparc_get_saved_register);
+ set_gdbarch_ieee_float (gdbarch, 1);
+ set_gdbarch_init_extra_frame_info (gdbarch, sparc_init_extra_frame_info);
+ set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
+ set_gdbarch_int_bit (gdbarch, 4 * TARGET_CHAR_BIT);
+ set_gdbarch_long_double_bit (gdbarch, 16 * TARGET_CHAR_BIT);
+ set_gdbarch_long_long_bit (gdbarch, 8 * TARGET_CHAR_BIT);
+ set_gdbarch_max_register_raw_size (gdbarch, 8);
+ set_gdbarch_max_register_virtual_size (gdbarch, 8);
+#ifdef DO_CALL_DUMMY_ON_STACK
+ set_gdbarch_pc_in_call_dummy (gdbarch, pc_in_call_dummy_on_stack);
+#else
+ set_gdbarch_pc_in_call_dummy (gdbarch, pc_in_call_dummy_at_entry_point);
#endif
+ set_gdbarch_pop_frame (gdbarch, sparc_pop_frame);
+ set_gdbarch_push_return_address (gdbarch, sparc_push_return_address);
+ set_gdbarch_push_dummy_frame (gdbarch, sparc_push_dummy_frame);
+ set_gdbarch_read_pc (gdbarch, generic_target_read_pc);
+ set_gdbarch_register_convert_to_raw (gdbarch, sparc_convert_to_raw);
+ set_gdbarch_register_convert_to_virtual (gdbarch,
+ sparc_convert_to_virtual);
+ set_gdbarch_register_convertible (gdbarch,
+ generic_register_convertible_not);
+ set_gdbarch_reg_struct_has_addr (gdbarch, sparc_reg_struct_has_addr);
+ set_gdbarch_return_value_on_stack (gdbarch, sparc_return_value_on_stack);
+ set_gdbarch_saved_pc_after_call (gdbarch, sparc_saved_pc_after_call);
+ set_gdbarch_short_bit (gdbarch, 2 * TARGET_CHAR_BIT);
+ set_gdbarch_skip_prologue (gdbarch, sparc_gdbarch_skip_prologue);
+ set_gdbarch_sp_regnum (gdbarch, SPARC_SP_REGNUM);
+ set_gdbarch_use_generic_dummy_frames (gdbarch, 0);
+ set_gdbarch_write_pc (gdbarch, generic_target_write_pc);
+
+ /*
+ * Settings that depend only on 32/64 bit word size
+ */
+
+ switch (info.bfd_arch_info->mach)
+ {
+ case bfd_mach_sparc:
+ case bfd_mach_sparc_sparclet:
+ case bfd_mach_sparc_sparclite:
+ case bfd_mach_sparc_v8plus:
+ case bfd_mach_sparc_v8plusa:
+ case bfd_mach_sparc_sparclite_le:
+ /* 32-bit machine types: */
+
+#ifdef SPARC32_CALL_DUMMY_ON_STACK
+ set_gdbarch_call_dummy_address (gdbarch, sparc_call_dummy_address);
+ set_gdbarch_call_dummy_breakpoint_offset (gdbarch, 0x30);
+ set_gdbarch_call_dummy_length (gdbarch, 0x38);
+ set_gdbarch_call_dummy_location (gdbarch, ON_STACK);
+ set_gdbarch_call_dummy_words (gdbarch, call_dummy_32);
+#else
+ set_gdbarch_call_dummy_address (gdbarch, entry_point_address);
+ set_gdbarch_call_dummy_breakpoint_offset (gdbarch, 0);
+ set_gdbarch_call_dummy_length (gdbarch, 0);
+ set_gdbarch_call_dummy_location (gdbarch, AT_ENTRY_POINT);
+ set_gdbarch_call_dummy_words (gdbarch, call_dummy_nil);
+#endif
+ set_gdbarch_call_dummy_stack_adjust (gdbarch, 68);
+ set_gdbarch_call_dummy_start_offset (gdbarch, 0);
+ set_gdbarch_frame_args_skip (gdbarch, 68);
+ set_gdbarch_function_start_offset (gdbarch, 0);
+ set_gdbarch_long_bit (gdbarch, 4 * TARGET_CHAR_BIT);
+ set_gdbarch_npc_regnum (gdbarch, SPARC32_NPC_REGNUM);
+ set_gdbarch_pc_regnum (gdbarch, SPARC32_PC_REGNUM);
+ set_gdbarch_ptr_bit (gdbarch, 4 * TARGET_CHAR_BIT);
+ set_gdbarch_push_arguments (gdbarch, sparc32_push_arguments);
+ set_gdbarch_read_fp (gdbarch, generic_target_read_fp);
+ set_gdbarch_read_sp (gdbarch, generic_target_read_sp);
+
+ set_gdbarch_register_byte (gdbarch, sparc32_register_byte);
+ set_gdbarch_register_raw_size (gdbarch, sparc32_register_size);
+ set_gdbarch_register_size (gdbarch, 4);
+ set_gdbarch_register_virtual_size (gdbarch, sparc32_register_size);
+ set_gdbarch_register_virtual_type (gdbarch,
+ sparc32_register_virtual_type);
+#ifdef SPARC32_CALL_DUMMY_ON_STACK
+ set_gdbarch_sizeof_call_dummy_words (gdbarch, sizeof (call_dummy_32));
+#else
+ set_gdbarch_sizeof_call_dummy_words (gdbarch, 0);
+#endif
+ set_gdbarch_stack_align (gdbarch, sparc32_stack_align);
+ set_gdbarch_store_struct_return (gdbarch, sparc32_store_struct_return);
+ set_gdbarch_use_struct_convention (gdbarch,
+ generic_use_struct_convention);
+ set_gdbarch_write_fp (gdbarch, generic_target_write_fp);
+ set_gdbarch_write_sp (gdbarch, generic_target_write_sp);
+ tdep->y_regnum = SPARC32_Y_REGNUM;
+ tdep->fp_max_regnum = SPARC_FP0_REGNUM + 32;
+ tdep->intreg_size = 4;
+ tdep->reg_save_offset = 0x60;
+ tdep->call_dummy_call_offset = 0x24;
+ break;
+
+ case bfd_mach_sparc_v9:
+ case bfd_mach_sparc_v9a:
+ /* 64-bit machine types: */
+ default: /* Any new machine type is likely to be 64-bit. */
+
+#ifdef SPARC64_CALL_DUMMY_ON_STACK
+ set_gdbarch_call_dummy_address (gdbarch, sparc_call_dummy_address);
+ set_gdbarch_call_dummy_breakpoint_offset (gdbarch, 8 * 4);
+ set_gdbarch_call_dummy_length (gdbarch, 192);
+ set_gdbarch_call_dummy_location (gdbarch, ON_STACK);
+ set_gdbarch_call_dummy_start_offset (gdbarch, 148);
+ set_gdbarch_call_dummy_words (gdbarch, call_dummy_64);
+#else
+ set_gdbarch_call_dummy_address (gdbarch, entry_point_address);
+ set_gdbarch_call_dummy_breakpoint_offset (gdbarch, 0);
+ set_gdbarch_call_dummy_length (gdbarch, 0);
+ set_gdbarch_call_dummy_location (gdbarch, AT_ENTRY_POINT);
+ set_gdbarch_call_dummy_start_offset (gdbarch, 0);
+ set_gdbarch_call_dummy_words (gdbarch, call_dummy_nil);
+#endif
+ set_gdbarch_call_dummy_stack_adjust (gdbarch, 128);
+ set_gdbarch_frame_args_skip (gdbarch, 136);
+ set_gdbarch_function_start_offset (gdbarch, 0);
+ set_gdbarch_long_bit (gdbarch, 8 * TARGET_CHAR_BIT);
+ set_gdbarch_npc_regnum (gdbarch, SPARC64_NPC_REGNUM);
+ set_gdbarch_pc_regnum (gdbarch, SPARC64_PC_REGNUM);
+ set_gdbarch_ptr_bit (gdbarch, 8 * TARGET_CHAR_BIT);
+ set_gdbarch_push_arguments (gdbarch, sparc64_push_arguments);
+ /* NOTE different for at_entry */
+ set_gdbarch_read_fp (gdbarch, sparc64_read_fp);
+ set_gdbarch_read_sp (gdbarch, sparc64_read_sp);
+ /* Some of the registers aren't 64 bits, but it's a lot simpler just
+ to assume they all are (since most of them are). */
+ set_gdbarch_register_byte (gdbarch, sparc64_register_byte);
+ set_gdbarch_register_raw_size (gdbarch, sparc64_register_size);
+ set_gdbarch_register_size (gdbarch, 8);
+ set_gdbarch_register_virtual_size (gdbarch, sparc64_register_size);
+ set_gdbarch_register_virtual_type (gdbarch,
+ sparc64_register_virtual_type);
+#ifdef SPARC64_CALL_DUMMY_ON_STACK
+ set_gdbarch_sizeof_call_dummy_words (gdbarch, sizeof (call_dummy_64));
+#else
+ set_gdbarch_sizeof_call_dummy_words (gdbarch, 0);
+#endif
+ set_gdbarch_stack_align (gdbarch, sparc64_stack_align);
+ set_gdbarch_store_struct_return (gdbarch, sparc64_store_struct_return);
+ set_gdbarch_use_struct_convention (gdbarch,
+ sparc64_use_struct_convention);
+ set_gdbarch_write_fp (gdbarch, sparc64_write_fp);
+ set_gdbarch_write_sp (gdbarch, sparc64_write_sp);
+ tdep->y_regnum = SPARC64_Y_REGNUM;
+ tdep->fp_max_regnum = SPARC_FP0_REGNUM + 48;
+ tdep->intreg_size = 8;
+ tdep->reg_save_offset = 0x90;
+ tdep->call_dummy_call_offset = 148 + 4 * 5;
+ break;
+ }
+
+ /*
+ * Settings that vary per-architecture:
+ */
+
+ switch (info.bfd_arch_info->mach)
+ {
+ case bfd_mach_sparc:
+ set_gdbarch_extract_return_value (gdbarch, sparc32_extract_return_value);
+ set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
+ set_gdbarch_num_regs (gdbarch, 72);
+ set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4);
+ set_gdbarch_register_name (gdbarch, sparc32_register_name);
+ set_gdbarch_store_return_value (gdbarch, sparc_store_return_value);
+ tdep->has_fpu = 1; /* (all but sparclet and sparclite) */
+ tdep->fp_register_bytes = 32 * 4;
+ tdep->print_insn_mach = bfd_mach_sparc;
+ break;
+ case bfd_mach_sparc_sparclet:
+ set_gdbarch_extract_return_value (gdbarch,
+ sparclet_extract_return_value);
+ set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
+ set_gdbarch_num_regs (gdbarch, 32 + 32 + 8 + 8 + 8);
+ set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4 + 8*4 + 8*4);
+ set_gdbarch_register_name (gdbarch, sparclet_register_name);
+ set_gdbarch_store_return_value (gdbarch, sparclet_store_return_value);
+ tdep->has_fpu = 0; /* (all but sparclet and sparclite) */
+ tdep->fp_register_bytes = 0;
+ tdep->print_insn_mach = bfd_mach_sparc_sparclet;
+ break;
+ case bfd_mach_sparc_sparclite:
+ set_gdbarch_extract_return_value (gdbarch, sparc32_extract_return_value);
+ set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
+ set_gdbarch_num_regs (gdbarch, 80);
+ set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4 + 8*4);
+ set_gdbarch_register_name (gdbarch, sparclite_register_name);
+ set_gdbarch_store_return_value (gdbarch, sparc_store_return_value);
+ tdep->has_fpu = 0; /* (all but sparclet and sparclite) */
+ tdep->fp_register_bytes = 0;
+ tdep->print_insn_mach = bfd_mach_sparc_sparclite;
+ break;
+ case bfd_mach_sparc_v8plus:
+ set_gdbarch_extract_return_value (gdbarch, sparc32_extract_return_value);
+ set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
+ set_gdbarch_num_regs (gdbarch, 72);
+ set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4);
+ set_gdbarch_register_name (gdbarch, sparc32_register_name);
+ set_gdbarch_store_return_value (gdbarch, sparc_store_return_value);
+ tdep->print_insn_mach = bfd_mach_sparc;
+ tdep->fp_register_bytes = 32 * 4;
+ tdep->has_fpu = 1; /* (all but sparclet and sparclite) */
+ break;
+ case bfd_mach_sparc_v8plusa:
+ set_gdbarch_extract_return_value (gdbarch, sparc32_extract_return_value);
+ set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
+ set_gdbarch_num_regs (gdbarch, 72);
+ set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4);
+ set_gdbarch_register_name (gdbarch, sparc32_register_name);
+ set_gdbarch_store_return_value (gdbarch, sparc_store_return_value);
+ tdep->has_fpu = 1; /* (all but sparclet and sparclite) */
+ tdep->fp_register_bytes = 32 * 4;
+ tdep->print_insn_mach = bfd_mach_sparc;
+ break;
+ case bfd_mach_sparc_sparclite_le:
+ set_gdbarch_extract_return_value (gdbarch, sparc32_extract_return_value);
+ set_gdbarch_frame_chain_valid (gdbarch, func_frame_chain_valid);
+ set_gdbarch_num_regs (gdbarch, 80);
+ set_gdbarch_register_bytes (gdbarch, 32*4 + 32*4 + 8*4 + 8*4);
+ set_gdbarch_register_name (gdbarch, sparclite_register_name);
+ set_gdbarch_store_return_value (gdbarch, sparc_store_return_value);
+ tdep->has_fpu = 0; /* (all but sparclet and sparclite) */
+ tdep->fp_register_bytes = 0;
+ tdep->print_insn_mach = bfd_mach_sparc_sparclite;
+ break;
+ case bfd_mach_sparc_v9:
+ set_gdbarch_extract_return_value (gdbarch, sparc64_extract_return_value);
+ set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
+ set_gdbarch_num_regs (gdbarch, 125);
+ set_gdbarch_register_bytes (gdbarch, 32*8 + 32*8 + 45*8);
+ set_gdbarch_register_name (gdbarch, sparc64_register_name);
+ set_gdbarch_store_return_value (gdbarch, sparc_store_return_value);
+ tdep->has_fpu = 1; /* (all but sparclet and sparclite) */
+ tdep->fp_register_bytes = 64 * 4;
+ tdep->print_insn_mach = bfd_mach_sparc_v9a;
+ break;
+ case bfd_mach_sparc_v9a:
+ set_gdbarch_extract_return_value (gdbarch, sparc64_extract_return_value);
+ set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
+ set_gdbarch_num_regs (gdbarch, 125);
+ set_gdbarch_register_bytes (gdbarch, 32*8 + 32*8 + 45*8);
+ set_gdbarch_register_name (gdbarch, sparc64_register_name);
+ set_gdbarch_store_return_value (gdbarch, sparc_store_return_value);
+ tdep->has_fpu = 1; /* (all but sparclet and sparclite) */
+ tdep->fp_register_bytes = 64 * 4;
+ tdep->print_insn_mach = bfd_mach_sparc_v9a;
+ break;
+ }
+
+ return gdbarch;
+}
+
diff --git a/gdb/sparcl-tdep.c b/gdb/sparcl-tdep.c
index b6ea064cf97..2e9e2950077 100644
--- a/gdb/sparcl-tdep.c
+++ b/gdb/sparcl-tdep.c
@@ -42,34 +42,33 @@ static int serial_flag;
static int udp_fd = -1;
#endif
-static serial_t open_tty PARAMS ((char *name));
-static int send_resp PARAMS ((serial_t desc, char c));
-static void close_tty PARAMS ((int ignore));
+static serial_t open_tty (char *name);
+static int send_resp (serial_t desc, char c);
+static void close_tty (void * ignore);
#ifdef HAVE_SOCKETS
-static int recv_udp_buf PARAMS ((int fd, unsigned char *buf, int len, int timeout));
-static int send_udp_buf PARAMS ((int fd, unsigned char *buf, int len));
+static int recv_udp_buf (int fd, unsigned char *buf, int len, int timeout);
+static int send_udp_buf (int fd, unsigned char *buf, int len);
#endif
-static void sparclite_open PARAMS ((char *name, int from_tty));
-static void sparclite_close PARAMS ((int quitting));
-static void download PARAMS ((char *target_name, char *args, int from_tty,
- void (*write_routine) (bfd * from_bfd,
- asection * from_sec,
- file_ptr from_addr,
- bfd_vma to_addr, int len),
- void (*start_routine) (bfd_vma entry)));
-static void sparclite_serial_start PARAMS ((bfd_vma entry));
-static void sparclite_serial_write PARAMS ((bfd * from_bfd, asection * from_sec,
- file_ptr from_addr,
- bfd_vma to_addr, int len));
+static void sparclite_open (char *name, int from_tty);
+static void sparclite_close (int quitting);
+static void download (char *target_name, char *args, int from_tty,
+ void (*write_routine) (bfd * from_bfd,
+ asection * from_sec,
+ file_ptr from_addr,
+ bfd_vma to_addr, int len),
+ void (*start_routine) (bfd_vma entry));
+static void sparclite_serial_start (bfd_vma entry);
+static void sparclite_serial_write (bfd * from_bfd, asection * from_sec,
+ file_ptr from_addr,
+ bfd_vma to_addr, int len);
#ifdef HAVE_SOCKETS
-static unsigned short calc_checksum PARAMS ((unsigned char *buffer,
- int count));
-static void sparclite_udp_start PARAMS ((bfd_vma entry));
-static void sparclite_udp_write PARAMS ((bfd * from_bfd, asection * from_sec,
- file_ptr from_addr, bfd_vma to_addr,
- int len));
+static unsigned short calc_checksum (unsigned char *buffer, int count);
+static void sparclite_udp_start (bfd_vma entry);
+static void sparclite_udp_write (bfd * from_bfd, asection * from_sec,
+ file_ptr from_addr, bfd_vma to_addr,
+ int len);
#endif
-static void sparclite_download PARAMS ((char *filename, int from_tty));
+static void sparclite_download (char *filename, int from_tty);
#define DDA2_SUP_ASI 0xb000000
#define DDA1_SUP_ASI 0xb0000
@@ -358,8 +357,7 @@ send_resp (desc, c)
}
static void
-close_tty (ignore)
- int ignore;
+close_tty (void *ignore)
{
if (!remote_desc)
return;
@@ -480,7 +478,7 @@ or: target sparclite udp host");
{
remote_desc = open_tty (p);
- old_chain = make_cleanup ((make_cleanup_func) close_tty, 0);
+ old_chain = make_cleanup (close_tty, 0 /*ignore*/);
c = send_resp (remote_desc, 0x00);
@@ -562,9 +560,9 @@ download (target_name, args, from_tty, write_routine, start_routine)
char *target_name;
char *args;
int from_tty;
- void (*write_routine) PARAMS ((bfd * from_bfd, asection * from_sec,
- file_ptr from_addr, bfd_vma to_addr, int len));
- void (*start_routine) PARAMS ((bfd_vma entry));
+ void (*write_routine) (bfd * from_bfd, asection * from_sec,
+ file_ptr from_addr, bfd_vma to_addr, int len);
+ void (*start_routine) (bfd_vma entry);
{
struct cleanup *old_chain;
asection *section;
@@ -614,7 +612,7 @@ download (target_name, args, from_tty, write_routine, start_routine)
perror_with_name (filename);
return;
}
- old_chain = make_cleanup ((make_cleanup_func) bfd_close, pbfd);
+ old_chain = make_cleanup_bfd_close (pbfd);
if (!bfd_check_format (pbfd, bfd_object))
error ("\"%s\" is not an object file: %s", filename,
diff --git a/gdb/sparclet-rom.c b/gdb/sparclet-rom.c
index bb11c972552..ebb249ca6ab 100644
--- a/gdb/sparclet-rom.c
+++ b/gdb/sparclet-rom.c
@@ -29,11 +29,11 @@
#include "symfile.h" /* for generic_load */
#include <time.h>
-extern void report_transfer_performance PARAMS ((unsigned long, time_t, time_t));
+extern void report_transfer_performance (unsigned long, time_t, time_t);
static struct target_ops sparclet_ops;
-static void sparclet_open PARAMS ((char *args, int from_tty));
+static void sparclet_open (char *args, int from_tty);
/* This array of registers need to match the indexes used by GDB.
This exists because the various ROM monitors use different strings
@@ -61,7 +61,32 @@ static void sparclet_open PARAMS ((char *args, int from_tty));
/* is wim part of psr?? */
/* monitor wants lower case */
-static char *sparclet_regnames[NUM_REGS] = REGISTER_NAMES;
+static char *sparclet_regnames[] = {
+ "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7",
+ "o0", "o1", "o2", "o3", "o4", "o5", "o6", "o7",
+ "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7",
+ "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7",
+
+ "", "", "", "", "", "", "", "", /* no FPU regs */
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ /* no CPSR, FPSR */
+ "y", "psr", "wim", "tbr", "pc", "npc", "", "",
+
+ "ccsr", "ccpr", "cccrcr", "ccor", "ccobr", "ccibr", "ccir", "",
+
+ /* ASR15 ASR19 (don't display them) */
+ "asr1", "", "asr17", "asr18", "", "asr20", "asr21", "asr22",
+/*
+ "awr0", "awr1", "awr2", "awr3", "awr4", "awr5", "awr6", "awr7",
+ "awr8", "awr9", "awr10", "awr11", "awr12", "awr13", "awr14", "awr15",
+ "awr16", "awr17", "awr18", "awr19", "awr20", "awr21", "awr22", "awr23",
+ "awr24", "awr25", "awr26", "awr27", "awr28", "awr29", "awr30", "awr31",
+ "apsr",
+ */
+};
+
/* Function: sparclet_supply_register
diff --git a/gdb/srec.h b/gdb/srec.h
index ac18e9f7ffe..7c86bd35379 100644
--- a/gdb/srec.h
+++ b/gdb/srec.h
@@ -18,9 +18,9 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-void load_srec PARAMS ((serial_t desc, const char *file, bfd_vma load_offset,
- int maxrecsize, int flags, int hashmark,
- int (*waitack) (void)));
+void load_srec (serial_t desc, const char *file, bfd_vma load_offset,
+ int maxrecsize, int flags, int hashmark,
+ int (*waitack) (void));
/* S-record capability flags */
diff --git a/gdb/stabsread.c b/gdb/stabsread.c
index 48eef6236c0..09f02ce1332 100644
--- a/gdb/stabsread.c
+++ b/gdb/stabsread.c
@@ -51,7 +51,7 @@
#include "stabsread.h" /* Our own declarations */
#undef EXTERN
-extern void _initialize_stabsread PARAMS ((void));
+extern void _initialize_stabsread (void);
/* The routines that read and process a complete stabs for a C struct or
C++ class pass lists of data member fields and lists of member function
@@ -82,119 +82,103 @@ struct field_info
};
static void
-read_one_struct_field PARAMS ((struct field_info *, char **, char *,
- struct type *, struct objfile *));
+read_one_struct_field (struct field_info *, char **, char *,
+ struct type *, struct objfile *);
-static char *
- get_substring PARAMS ((char **, int));
+static char *get_substring (char **, int);
-static struct type *
- dbx_alloc_type PARAMS ((int[2], struct objfile *));
+static struct type *dbx_alloc_type (int[2], struct objfile *);
-static long read_huge_number PARAMS ((char **, int, int *));
+static long read_huge_number (char **, int, int *);
-static struct type *error_type PARAMS ((char **, struct objfile *));
+static struct type *error_type (char **, struct objfile *);
static void
-patch_block_stabs PARAMS ((struct pending *, struct pending_stabs *,
- struct objfile *));
+patch_block_stabs (struct pending *, struct pending_stabs *,
+ struct objfile *);
-static void
-fix_common_block PARAMS ((struct symbol *, int));
+static void fix_common_block (struct symbol *, int);
-static int
-read_type_number PARAMS ((char **, int *));
+static int read_type_number (char **, int *);
-static struct type *
- read_range_type PARAMS ((char **, int[2], struct objfile *));
+static struct type *read_range_type (char **, int[2], struct objfile *);
-static struct type *
- read_sun_builtin_type PARAMS ((char **, int[2], struct objfile *));
+static struct type *read_sun_builtin_type (char **, int[2], struct objfile *);
-static struct type *
- read_sun_floating_type PARAMS ((char **, int[2], struct objfile *));
+static struct type *read_sun_floating_type (char **, int[2],
+ struct objfile *);
-static struct type *
- read_enum_type PARAMS ((char **, struct type *, struct objfile *));
+static struct type *read_enum_type (char **, struct type *, struct objfile *);
-static struct type *
- rs6000_builtin_type PARAMS ((int));
+static struct type *rs6000_builtin_type (int);
static int
-read_member_functions PARAMS ((struct field_info *, char **, struct type *,
- struct objfile *));
+read_member_functions (struct field_info *, char **, struct type *,
+ struct objfile *);
static int
-read_struct_fields PARAMS ((struct field_info *, char **, struct type *,
- struct objfile *));
+read_struct_fields (struct field_info *, char **, struct type *,
+ struct objfile *);
static int
-read_baseclasses PARAMS ((struct field_info *, char **, struct type *,
- struct objfile *));
+read_baseclasses (struct field_info *, char **, struct type *,
+ struct objfile *);
static int
-read_tilde_fields PARAMS ((struct field_info *, char **, struct type *,
- struct objfile *));
+read_tilde_fields (struct field_info *, char **, struct type *,
+ struct objfile *);
-static int
-attach_fn_fields_to_type PARAMS ((struct field_info *, struct type *));
+static int attach_fn_fields_to_type (struct field_info *, struct type *);
static int
-attach_fields_to_type PARAMS ((struct field_info *, struct type *,
- struct objfile *));
+attach_fields_to_type (struct field_info *, struct type *, struct objfile *);
-static struct type *
- read_struct_type PARAMS ((char **, struct type *, struct objfile *));
+static struct type *read_struct_type (char **, struct type *,
+ struct objfile *);
-static struct type *
- read_array_type PARAMS ((char **, struct type *, struct objfile *));
+static struct type *read_array_type (char **, struct type *,
+ struct objfile *);
-static struct type **
- read_args PARAMS ((char **, int, struct objfile *));
+static struct type **read_args (char **, int, struct objfile *);
static int
-read_cpp_abbrev PARAMS ((struct field_info *, char **, struct type *,
- struct objfile *));
+read_cpp_abbrev (struct field_info *, char **, struct type *,
+ struct objfile *);
/* new functions added for cfront support */
static int
-copy_cfront_struct_fields PARAMS ((struct field_info *, struct type *,
- struct objfile *));
+copy_cfront_struct_fields (struct field_info *, struct type *,
+ struct objfile *);
-static char *
- get_cfront_method_physname PARAMS ((char *));
+static char *get_cfront_method_physname (char *);
static int
-read_cfront_baseclasses PARAMS ((struct field_info *, char **,
- struct type *, struct objfile *));
+read_cfront_baseclasses (struct field_info *, char **,
+ struct type *, struct objfile *);
static int
-read_cfront_static_fields PARAMS ((struct field_info *, char **,
- struct type *, struct objfile *));
+read_cfront_static_fields (struct field_info *, char **,
+ struct type *, struct objfile *);
static int
-read_cfront_member_functions PARAMS ((struct field_info *, char **,
- struct type *, struct objfile *));
+read_cfront_member_functions (struct field_info *, char **,
+ struct type *, struct objfile *);
/* end new functions added for cfront support */
static void
-add_live_range PARAMS ((struct objfile *, struct symbol *,
- CORE_ADDR, CORE_ADDR));
+add_live_range (struct objfile *, struct symbol *, CORE_ADDR, CORE_ADDR);
-static int
-resolve_live_range PARAMS ((struct objfile *, struct symbol *, char *));
+static int resolve_live_range (struct objfile *, struct symbol *, char *);
-static int
-process_reference PARAMS ((char **string));
+static int process_reference (char **string);
-static CORE_ADDR
- ref_search_value PARAMS ((int refnum));
+static CORE_ADDR ref_search_value (int refnum);
static int
-resolve_symbol_reference PARAMS ((struct objfile *, struct symbol *, char *));
+resolve_symbol_reference (struct objfile *, struct symbol *, char *);
-void stabsread_clear_cache PARAMS ((void));
+void stabsread_clear_cache (void);
static const char vptr_name[] =
{'_', 'v', 'p', 't', 'r', CPLUS_MARKER, '\0'};
@@ -288,7 +272,7 @@ static struct type **os9k_type_vector[] =
&builtin_type_long_double
};
-static void os9k_init_type_vector PARAMS ((struct type **));
+static void os9k_init_type_vector (struct type **);
static void
os9k_init_type_vector (tv)
@@ -559,10 +543,6 @@ read_type_number (pp, typenums)
}
-#if !defined (REG_STRUCT_HAS_ADDR)
-#define REG_STRUCT_HAS_ADDR(gcc_p,type) 0
-#endif
-
#define VISIBILITY_PRIVATE '0' /* Stabs character for private field */
#define VISIBILITY_PROTECTED '1' /* Stabs character for protected fld */
#define VISIBILITY_PUBLIC '2' /* Stabs character for public field */
@@ -1355,13 +1335,13 @@ define_symbol (valu, string, desc, type, objfile)
switch (type & N_TYPE)
{
case N_TEXT:
- SYMBOL_SECTION (sym) = SECT_OFF_TEXT;
+ SYMBOL_SECTION (sym) = SECT_OFF_TEXT (objfile);
break;
case N_DATA:
- SYMBOL_SECTION (sym) = SECT_OFF_DATA;
+ SYMBOL_SECTION (sym) = SECT_OFF_DATA (objfile);
break;
case N_BSS:
- SYMBOL_SECTION (sym) = SECT_OFF_BSS;
+ SYMBOL_SECTION (sym) = SECT_OFF_BSS (objfile);
break;
}
@@ -1899,6 +1879,7 @@ define_symbol (valu, string, desc, type, objfile)
if (local_symbols
&& local_symbols->nsyms > 0
#ifndef USE_REGISTER_NOT_ARG
+ && REG_STRUCT_HAS_ADDR_P ()
&& REG_STRUCT_HAS_ADDR (processing_gcc_compilation,
SYMBOL_TYPE (sym))
&& (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT
@@ -2156,8 +2137,9 @@ define_symbol (valu, string, desc, type, objfile)
/* When passing structures to a function, some systems sometimes pass
the address in a register, not the structure itself. */
- if (REG_STRUCT_HAS_ADDR (processing_gcc_compilation, SYMBOL_TYPE (sym))
- && (SYMBOL_CLASS (sym) == LOC_REGPARM || SYMBOL_CLASS (sym) == LOC_ARG))
+ if (REG_STRUCT_HAS_ADDR_P ()
+ && REG_STRUCT_HAS_ADDR (processing_gcc_compilation, SYMBOL_TYPE (sym))
+ && (SYMBOL_CLASS (sym) == LOC_REGPARM || SYMBOL_CLASS (sym) == LOC_ARG))
{
struct type *symbol_type = check_typedef (SYMBOL_TYPE (sym));
diff --git a/gdb/stabsread.h b/gdb/stabsread.h
index c5e1ce75a82..6ae3d8bd4fe 100644
--- a/gdb/stabsread.h
+++ b/gdb/stabsread.h
@@ -46,8 +46,8 @@
EXTERN struct symbol *global_sym_chain[HASHSIZE];
-extern void common_block_start PARAMS ((char *, struct objfile *));
-extern void common_block_end PARAMS ((struct objfile *));
+extern void common_block_start (char *, struct objfile *);
+extern void common_block_end (struct objfile *);
/* Kludge for xcoffread.c */
@@ -136,38 +136,28 @@ EXTERN int n_allocated_this_object_header_files;
extern struct complaint unknown_symtype_complaint;
extern struct complaint unknown_symchar_complaint;
-extern struct type *
- read_type PARAMS ((char **, struct objfile *));
+extern struct type *read_type (char **, struct objfile *);
-extern void
-cleanup_undefined_types PARAMS ((void));
+extern void cleanup_undefined_types (void);
-extern struct type **
- dbx_lookup_type PARAMS ((int[2]));
+extern struct type **dbx_lookup_type (int[2]);
-extern long
-read_number PARAMS ((char **, int));
+extern long read_number (char **, int);
-extern void
-add_undefined_type PARAMS ((struct type *));
+extern void add_undefined_type (struct type *);
-extern struct symbol *
- define_symbol PARAMS ((CORE_ADDR, char *, int, int, struct objfile *));
+extern struct symbol *define_symbol (CORE_ADDR, char *, int, int,
+ struct objfile *);
-extern void
-stabsread_init PARAMS ((void));
+extern void stabsread_init (void);
-extern void
-stabsread_new_init PARAMS ((void));
+extern void stabsread_new_init (void);
-extern void
-start_stabs PARAMS ((void));
+extern void start_stabs (void);
-extern void
-end_stabs PARAMS ((void));
+extern void end_stabs (void);
-extern void
-finish_global_stabs PARAMS ((struct objfile * objfile));
+extern void finish_global_stabs (struct objfile *objfile);
EXTERN int os9k_stabs;
@@ -187,56 +177,51 @@ struct stab_section_list
/* Functions exported by dbxread.c. These are not in stabsread.c because
they are only used by some stabs readers. */
-extern struct partial_symtab *
- end_psymtab PARAMS ((struct partial_symtab * pst,
- char **include_list,
- int num_includes,
- int capping_symbol_offset,
- CORE_ADDR capping_text,
- struct partial_symtab ** dependency_list,
- int number_dependencies,
- int textlow_not_set));
+extern struct partial_symtab *end_psymtab (struct partial_symtab *pst,
+ char **include_list,
+ int num_includes,
+ int capping_symbol_offset,
+ CORE_ADDR capping_text,
+ struct partial_symtab
+ **dependency_list,
+ int number_dependencies,
+ int textlow_not_set);
extern void
-process_one_symbol PARAMS ((int, int, CORE_ADDR, char *,
- struct section_offsets *, struct objfile *));
+process_one_symbol (int, int, CORE_ADDR, char *,
+ struct section_offsets *, struct objfile *);
extern void elfstab_build_psymtabs
- PARAMS ((struct objfile * objfile,
- int mainline,
- file_ptr staboff, unsigned int stabsize,
- file_ptr stabstroffset,
- unsigned int stabstrsize));
+ (struct objfile *objfile,
+ int mainline,
+ file_ptr staboff, unsigned int stabsize,
+ file_ptr stabstroffset, unsigned int stabstrsize);
extern void coffstab_build_psymtabs
- PARAMS ((struct objfile * objfile,
- int mainline,
- CORE_ADDR textaddr, unsigned int textsize,
- struct stab_section_list * stabs,
- file_ptr stabstroffset,
- unsigned int stabstrsize));
+ (struct objfile *objfile,
+ int mainline,
+ CORE_ADDR textaddr, unsigned int textsize,
+ struct stab_section_list *stabs,
+ file_ptr stabstroffset, unsigned int stabstrsize);
extern void stabsect_build_psymtabs
- PARAMS ((struct objfile * objfile,
- int mainline,
- char *stab_name,
- char *stabstr_name,
- char *text_name));
+ (struct objfile *objfile,
+ int mainline, char *stab_name, char *stabstr_name, char *text_name);
-extern void elfstab_offset_sections PARAMS ((struct objfile *,
- struct partial_symtab *));
+extern void elfstab_offset_sections (struct objfile *,
+ struct partial_symtab *);
extern void process_later
- PARAMS ((struct symbol *, char *,
- int (*f) PARAMS ((struct objfile *, struct symbol *, char *))));
+ (struct symbol *, char *,
+ int (*f) (struct objfile *, struct symbol *, char *));
-extern int symbol_reference_defined PARAMS ((char **));
+extern int symbol_reference_defined (char **);
-extern void ref_add PARAMS ((int, struct symbol *, char *, CORE_ADDR));
+extern void ref_add (int, struct symbol *, char *, CORE_ADDR);
-extern struct symbol *ref_search PARAMS ((int));
+extern struct symbol *ref_search (int);
extern int resolve_cfront_continuation
- PARAMS ((struct objfile * objfile, struct symbol * sym, char *p));
+ (struct objfile *objfile, struct symbol *sym, char *p);
#undef EXTERN
diff --git a/gdb/stack.c b/gdb/stack.c
index 8684b7b7b9c..acd16b4094d 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -42,41 +42,41 @@
/* Prototypes for exported functions. */
-void args_info PARAMS ((char *, int));
+void args_info (char *, int);
-void locals_info PARAMS ((char *, int));
+void locals_info (char *, int);
-void (*selected_frame_level_changed_hook) PARAMS ((int));
+void (*selected_frame_level_changed_hook) (int);
-void _initialize_stack PARAMS ((void));
+void _initialize_stack (void);
/* Prototypes for local functions. */
-static void return_command PARAMS ((char *, int));
+static void return_command (char *, int);
-static void down_command PARAMS ((char *, int));
+static void down_command (char *, int);
-static void down_silently_base PARAMS ((char *));
+static void down_silently_base (char *);
-static void down_silently_command PARAMS ((char *, int));
+static void down_silently_command (char *, int);
-static void up_command PARAMS ((char *, int));
+static void up_command (char *, int);
-static void up_silently_base PARAMS ((char *));
+static void up_silently_base (char *);
-static void up_silently_command PARAMS ((char *, int));
+static void up_silently_command (char *, int);
-void frame_command PARAMS ((char *, int));
+void frame_command (char *, int);
-static void current_frame_command PARAMS ((char *, int));
+static void current_frame_command (char *, int);
-static void select_frame_command PARAMS ((char *, int));
+static void select_frame_command (char *, int);
static void print_frame_arg_vars (struct frame_info *, struct ui_file *);
-static void catch_info PARAMS ((char *, int));
+static void catch_info (char *, int);
-static void args_plus_locals_info PARAMS ((char *, int));
+static void args_plus_locals_info (char *, int);
static void print_frame_label_vars (struct frame_info *, int,
struct ui_file *);
@@ -98,15 +98,15 @@ static void print_frame (struct frame_info *fi,
int args,
struct symtab_and_line sal);
-static void print_frame_info_base PARAMS ((struct frame_info *, int, int, int));
+static void print_frame_info_base (struct frame_info *, int, int, int);
-static void print_stack_frame_base PARAMS ((struct frame_info *, int, int));
+static void print_stack_frame_base (struct frame_info *, int, int);
-static void backtrace_command PARAMS ((char *, int));
+static void backtrace_command (char *, int);
-struct frame_info *parse_frame_specification PARAMS ((char *));
+struct frame_info *parse_frame_specification (char *);
-static void frame_info PARAMS ((char *, int));
+static void frame_info (char *, int);
extern int addressprint; /* Print addresses, or stay symbolic only? */
extern int info_verbose; /* Verbosity of symbol reading msgs */
@@ -140,11 +140,11 @@ struct print_stack_frame_args
int args;
};
-static int print_stack_frame_base_stub PARAMS ((char *));
+static int print_stack_frame_base_stub (char *);
/* Show and print the frame arguments.
Pass the args the way catch_errors wants them. */
-static int show_and_print_stack_frame_stub PARAMS ((void *args));
+static int show_and_print_stack_frame_stub (void *args);
static int
show_and_print_stack_frame_stub (args)
void *args;
@@ -163,7 +163,7 @@ show_and_print_stack_frame_stub (args)
/* Show or print the frame arguments.
Pass the args the way catch_errors wants them. */
-static int print_stack_frame_stub PARAMS ((void *args));
+static int print_stack_frame_stub (void *args);
static int
print_stack_frame_stub (args)
void *args;
@@ -194,7 +194,7 @@ print_stack_frame_base_stub (args)
/* print the frame arguments to the terminal.
Pass the args the way catch_errors wants them. */
-static int print_only_stack_frame_stub PARAMS ((void *));
+static int print_only_stack_frame_stub (void *);
static int
print_only_stack_frame_stub (args)
void *args;
@@ -317,7 +317,7 @@ struct print_args_args
struct ui_file *stream;
};
-static int print_args_stub PARAMS ((PTR));
+static int print_args_stub (PTR);
/* Pass the args the way catch_errors wants them. */
@@ -471,7 +471,7 @@ print_frame (struct frame_info *fi,
struct cleanup *old_chain;
stb = ui_out_stream_new (uiout);
- old_chain = make_cleanup ((make_cleanup_func) ui_out_stream_delete, stb);
+ old_chain = make_cleanup_ui_out_stream_delete (stb);
#endif /* UI_OUT */
func = find_pc_function (fi->pc);
@@ -1090,7 +1090,8 @@ backtrace_limit_info (arg, from_tty)
/* Print briefly all stack frames or just the innermost COUNT frames. */
-static void backtrace_command_1 PARAMS ((char *count_exp, int show_locals, int from_tty));
+static void backtrace_command_1 (char *count_exp, int show_locals,
+ int from_tty);
static void
backtrace_command_1 (count_exp, show_locals, from_tty)
char *count_exp;
@@ -1258,7 +1259,7 @@ backtrace_command (arg, from_tty)
do_cleanups (old_chain);
}
-static void backtrace_full_command PARAMS ((char *arg, int from_tty));
+static void backtrace_full_command (char *arg, int from_tty);
static void
backtrace_full_command (arg, from_tty)
char *arg;
@@ -1995,7 +1996,7 @@ struct function_bounds
CORE_ADDR low, high;
};
-static void func_command PARAMS ((char *arg, int from_tty));
+static void func_command (char *arg, int from_tty);
static void
func_command (arg, from_tty)
char *arg;
diff --git a/gdb/sun3-nat.c b/gdb/sun3-nat.c
index 1e878caefd8..d608d5f8fb8 100644
--- a/gdb/sun3-nat.c
+++ b/gdb/sun3-nat.c
@@ -26,38 +26,36 @@
#define KERNEL /* To get floating point reg definitions */
#include <machine/reg.h>
-static void fetch_core_registers PARAMS ((char *, unsigned, int, CORE_ADDR));
+static void fetch_core_registers (char *, unsigned, int, CORE_ADDR);
void
fetch_inferior_registers (regno)
int regno;
{
struct regs inferior_registers;
-#ifdef FP0_REGNUM
struct fp_status inferior_fp_registers;
-#endif
registers_fetched ();
ptrace (PTRACE_GETREGS, inferior_pid,
(PTRACE_ARG3_TYPE) & inferior_registers);
-#ifdef FP0_REGNUM
- ptrace (PTRACE_GETFPREGS, inferior_pid,
- (PTRACE_ARG3_TYPE) & inferior_fp_registers);
-#endif
+
+ if (FP0_REGNUM >= 0)
+ ptrace (PTRACE_GETFPREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) & inferior_fp_registers);
memcpy (registers, &inferior_registers, 16 * 4);
-#ifdef FP0_REGNUM
- memcpy (&registers[REGISTER_BYTE (FP0_REGNUM)], &inferior_fp_registers,
- sizeof inferior_fp_registers.fps_regs);
-#endif
+ if (FP0_REGNUM >= 0)
+ memcpy (&registers[REGISTER_BYTE (FP0_REGNUM)], &inferior_fp_registers,
+ sizeof inferior_fp_registers.fps_regs);
+
*(int *) &registers[REGISTER_BYTE (PS_REGNUM)] = inferior_registers.r_ps;
*(int *) &registers[REGISTER_BYTE (PC_REGNUM)] = inferior_registers.r_pc;
-#ifdef FP0_REGNUM
- memcpy (&registers[REGISTER_BYTE (FPC_REGNUM)],
- &inferior_fp_registers.fps_control,
- sizeof inferior_fp_registers - sizeof inferior_fp_registers.fps_regs);
-#endif
+ if (FP0_REGNUM >= 0)
+ memcpy (&registers[REGISTER_BYTE (FPC_REGNUM)],
+ &inferior_fp_registers.fps_control,
+ sizeof inferior_fp_registers -
+ sizeof inferior_fp_registers.fps_regs);
}
/* Store our register values back into the inferior.
@@ -69,30 +67,27 @@ store_inferior_registers (regno)
int regno;
{
struct regs inferior_registers;
-#ifdef FP0_REGNUM
struct fp_status inferior_fp_registers;
-#endif
memcpy (&inferior_registers, registers, 16 * 4);
-#ifdef FP0_REGNUM
- memcpy (&inferior_fp_registers, &registers[REGISTER_BYTE (FP0_REGNUM)],
- sizeof inferior_fp_registers.fps_regs);
-#endif
+ if (FP0_REGNUM >= 0)
+ memcpy (&inferior_fp_registers, &registers[REGISTER_BYTE (FP0_REGNUM)],
+ sizeof inferior_fp_registers.fps_regs);
+
inferior_registers.r_ps = *(int *) &registers[REGISTER_BYTE (PS_REGNUM)];
inferior_registers.r_pc = *(int *) &registers[REGISTER_BYTE (PC_REGNUM)];
-#ifdef FP0_REGNUM
- memcpy (&inferior_fp_registers.fps_control,
- &registers[REGISTER_BYTE (FPC_REGNUM)],
- sizeof inferior_fp_registers - sizeof inferior_fp_registers.fps_regs);
-#endif
+ if (FP0_REGNUM >= 0)
+ memcpy (&inferior_fp_registers.fps_control,
+ &registers[REGISTER_BYTE (FPC_REGNUM)],
+ sizeof inferior_fp_registers -
+ sizeof inferior_fp_registers.fps_regs);
ptrace (PTRACE_SETREGS, inferior_pid,
(PTRACE_ARG3_TYPE) & inferior_registers);
-#if FP0_REGNUM
- ptrace (PTRACE_SETFPREGS, inferior_pid,
- (PTRACE_ARG3_TYPE) & inferior_fp_registers);
-#endif
+ if (FP0_REGNUM >= 0)
+ ptrace (PTRACE_SETFPREGS, inferior_pid,
+ (PTRACE_ARG3_TYPE) & inferior_fp_registers);
}
@@ -125,18 +120,20 @@ fetch_core_registers (core_reg_sect, core_reg_size, which, reg_addr)
if (core_reg_size >= sizeof (struct fpu))
{
-#ifdef FP0_REGNUM
- memcpy (&registers[REGISTER_BYTE (FP0_REGNUM)],
- fpustruct->f_fpstatus.fps_regs,
- sizeof fpustruct->f_fpstatus.fps_regs);
- memcpy (&registers[REGISTER_BYTE (FPC_REGNUM)],
- &fpustruct->f_fpstatus.fps_control,
- sizeof fpustruct->f_fpstatus -
- sizeof fpustruct->f_fpstatus.fps_regs);
-#endif
+ if (FP0_REGNUM >= 0)
+ {
+ memcpy (&registers[REGISTER_BYTE (FP0_REGNUM)],
+ fpustruct->f_fpstatus.fps_regs,
+ sizeof fpustruct->f_fpstatus.fps_regs);
+ memcpy (&registers[REGISTER_BYTE (FPC_REGNUM)],
+ &fpustruct->f_fpstatus.fps_control,
+ sizeof fpustruct->f_fpstatus -
+ sizeof fpustruct->f_fpstatus.fps_regs);
+ }
}
else
- fprintf_unfiltered (gdb_stderr, "Couldn't read float regs from core file\n");
+ fprintf_unfiltered (gdb_stderr,
+ "Couldn't read float regs from core file\n");
}
}
diff --git a/gdb/symfile.c b/gdb/symfile.c
index cb334149c7b..726bd245310 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -68,9 +68,11 @@ void (*show_load_progress) (const char *section,
unsigned long section_size,
unsigned long total_sent,
unsigned long total_size);
-void (*pre_add_symbol_hook) PARAMS ((char *));
-void (*post_add_symbol_hook) PARAMS ((void));
-void (*target_new_objfile_hook) PARAMS ((struct objfile *));
+void (*pre_add_symbol_hook) (char *);
+void (*post_add_symbol_hook) (void);
+void (*target_new_objfile_hook) (struct objfile *);
+
+static void clear_symtab_users_cleanup (void *ignore);
/* Global variables owned by this file */
int readnow_symbol_files; /* Read full symbols immediately */
@@ -94,73 +96,72 @@ struct complaint unknown_option_complaint =
extern int info_verbose;
-extern void report_transfer_performance PARAMS ((unsigned long,
- time_t, time_t));
+extern void report_transfer_performance (unsigned long, time_t, time_t);
/* Functions this file defines */
#if 0
-static int simple_read_overlay_region_table PARAMS ((void));
-static void simple_free_overlay_region_table PARAMS ((void));
+static int simple_read_overlay_region_table (void);
+static void simple_free_overlay_region_table (void);
#endif
-static void set_initial_language PARAMS ((void));
+static void set_initial_language (void);
-static void load_command PARAMS ((char *, int));
+static void load_command (char *, int);
-static void add_symbol_file_command PARAMS ((char *, int));
+static void add_symbol_file_command (char *, int);
-static void add_shared_symbol_files_command PARAMS ((char *, int));
+static void add_shared_symbol_files_command (char *, int);
-static void cashier_psymtab PARAMS ((struct partial_symtab *));
+static void cashier_psymtab (struct partial_symtab *);
-static int compare_psymbols PARAMS ((const void *, const void *));
+static int compare_psymbols (const void *, const void *);
-static int compare_symbols PARAMS ((const void *, const void *));
+static int compare_symbols (const void *, const void *);
-bfd *symfile_bfd_open PARAMS ((char *));
+bfd *symfile_bfd_open (char *);
-static void find_sym_fns PARAMS ((struct objfile *));
+static void find_sym_fns (struct objfile *);
-static void decrement_reading_symtab PARAMS ((void *));
+static void decrement_reading_symtab (void *);
-static void overlay_invalidate_all PARAMS ((void));
+static void overlay_invalidate_all (void);
-static int overlay_is_mapped PARAMS ((struct obj_section *));
+static int overlay_is_mapped (struct obj_section *);
-void list_overlays_command PARAMS ((char *, int));
+void list_overlays_command (char *, int);
-void map_overlay_command PARAMS ((char *, int));
+void map_overlay_command (char *, int);
-void unmap_overlay_command PARAMS ((char *, int));
+void unmap_overlay_command (char *, int);
-static void overlay_auto_command PARAMS ((char *, int));
+static void overlay_auto_command (char *, int);
-static void overlay_manual_command PARAMS ((char *, int));
+static void overlay_manual_command (char *, int);
-static void overlay_off_command PARAMS ((char *, int));
+static void overlay_off_command (char *, int);
-static void overlay_load_command PARAMS ((char *, int));
+static void overlay_load_command (char *, int);
-static void overlay_command PARAMS ((char *, int));
+static void overlay_command (char *, int);
-static void simple_free_overlay_table PARAMS ((void));
+static void simple_free_overlay_table (void);
-static void read_target_long_array PARAMS ((CORE_ADDR, unsigned int *, int));
+static void read_target_long_array (CORE_ADDR, unsigned int *, int);
-static int simple_read_overlay_table PARAMS ((void));
+static int simple_read_overlay_table (void);
-static int simple_overlay_update_1 PARAMS ((struct obj_section *));
+static int simple_overlay_update_1 (struct obj_section *);
-static void add_filename_language PARAMS ((char *ext, enum language lang));
+static void add_filename_language (char *ext, enum language lang);
-static void set_ext_lang_command PARAMS ((char *args, int from_tty));
+static void set_ext_lang_command (char *args, int from_tty);
-static void info_ext_lang_command PARAMS ((char *args, int from_tty));
+static void info_ext_lang_command (char *args, int from_tty);
-static void init_filename_language_table PARAMS ((void));
+static void init_filename_language_table (void);
-void _initialize_symfile PARAMS ((void));
+void _initialize_symfile (void);
/* List of all available sym_fns. On gdb startup, each object file reader
calls add_symtab_fns() to register information on each format it is
@@ -478,13 +479,6 @@ build_section_addr_info_from_section_table (const struct section_table *start,
for (stp = start, oidx = 0; stp != end; stp++)
{
- if (strcmp (stp->the_bfd_section->name, ".text") == 0)
- sap->text_addr = stp->addr;
- else if (strcmp (stp->the_bfd_section->name, ".data") == 0)
- sap->data_addr = stp->addr;
- else if (strcmp (stp->the_bfd_section->name, ".bss") == 0)
- sap->bss_addr = stp->addr;
-
if (stp->the_bfd_section->flags & (SEC_ALLOC | SEC_LOAD)
&& oidx < MAX_SECTIONS)
{
@@ -525,42 +519,49 @@ default_symfile_offsets (objfile, addrs)
struct section_addr_info *addrs;
{
int i;
+ asection *sect = NULL;
objfile->num_sections = SECT_OFF_MAX;
objfile->section_offsets = (struct section_offsets *)
obstack_alloc (&objfile->psymbol_obstack, SIZEOF_SECTION_OFFSETS);
memset (objfile->section_offsets, 0, SIZEOF_SECTION_OFFSETS);
- /* If user explicitly specified values for data and bss, set them here. */
-
- if (addrs->text_addr)
- ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT) = addrs->text_addr;
- if (addrs->data_addr)
- ANOFFSET (objfile->section_offsets, SECT_OFF_DATA) = addrs->data_addr;
- if (addrs->bss_addr)
- ANOFFSET (objfile->section_offsets, SECT_OFF_BSS) = addrs->bss_addr;
-
- /* Now calculate offsets for other sections. */
+ /* Now calculate offsets for section that were specified by the
+ caller. */
for (i = 0; i < MAX_SECTIONS && addrs->other[i].name; i++)
{
struct other_sections *osp ;
osp = &addrs->other[i] ;
- if (addrs->other[i].addr == 0)
+ if (osp->addr == 0)
continue;
-#if 0
- if (strcmp (".text", osp->name) == 0)
- SECT_OFF_TEXT = osp->sectindex ;
- else if (strcmp (".data", osp->name) == 0)
- SECT_OFF_DATA = osp->sectindex ;
- else if (strcmp (".bss", osp->name) == 0)
- SECT_OFF_BSS = osp->sectindex ;
-#endif
+
/* Record all sections in offsets */
+ /* The section_offsets in the objfile are here filled in using
+ the BFD index. */
ANOFFSET (objfile->section_offsets, osp->sectindex) = osp->addr;
}
-}
+ /* Remember the bfd indexes for the .text, .data, .bss and
+ .rodata sections. */
+
+ sect = bfd_get_section_by_name (objfile->obfd, ".text");
+ if (sect)
+ objfile->sect_index_text = sect->index;
+
+ sect = bfd_get_section_by_name (objfile->obfd, ".data");
+ if (sect)
+ objfile->sect_index_data = sect->index;
+
+ sect = bfd_get_section_by_name (objfile->obfd, ".bss");
+ if (sect)
+ objfile->sect_index_bss = sect->index;
+
+ sect = bfd_get_section_by_name (objfile->obfd, ".rodata");
+ if (sect)
+ objfile->sect_index_rodata = sect->index;
+
+}
/* Process a symbol file, as either the main file or as a dynamically
loaded file.
@@ -605,13 +606,13 @@ syms_from_objfile (objfile, addrs, mainline, verbo)
/* Make sure that partially constructed symbol tables will be cleaned up
if an error occurs during symbol reading. */
- old_chain = make_cleanup ((make_cleanup_func) free_objfile, objfile);
+ old_chain = make_cleanup_free_objfile (objfile);
if (mainline)
{
/* We will modify the main symbol table, make sure that all its users
will be cleaned up if an error occurs during symbol reading. */
- make_cleanup ((make_cleanup_func) clear_symtab_users, 0);
+ make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/);
/* Since no error yet, throw away the old symbol table. */
@@ -635,14 +636,7 @@ syms_from_objfile (objfile, addrs, mainline, verbo)
We no longer warn if the lowest section is not a text segment (as
happens for the PA64 port. */
- if (mainline)
- {
- /* No offset from objfile addresses. */
- addrs -> text_addr = 0;
- addrs -> data_addr = 0;
- addrs -> bss_addr = 0;
- }
- else
+ if (!mainline)
{
/* Find lowest loadable section to be used as starting point for
continguous sections. FIXME!! won't work without call to find
@@ -654,12 +648,12 @@ syms_from_objfile (objfile, addrs, mainline, verbo)
if (lower_sect == NULL)
warning ("no loadable sections found in added symbol-file %s",
objfile->name);
- else if ((bfd_get_section_flags (objfile->obfd, lower_sect) & SEC_CODE)
- == 0)
- warning ("Lowest section in %s is %s at %s",
- objfile->name,
- bfd_section_name (objfile->obfd, lower_sect),
- paddr (bfd_section_vma (objfile->obfd, lower_sect)));
+ else
+ if ((bfd_get_section_flags (objfile->obfd, lower_sect) & SEC_CODE) == 0)
+ warning ("Lowest section in %s is %s at %s",
+ objfile->name,
+ bfd_section_name (objfile->obfd, lower_sect),
+ paddr (bfd_section_vma (objfile->obfd, lower_sect)));
if (lower_sect != NULL)
lower_offset = bfd_section_vma (objfile->obfd, lower_sect);
else
@@ -675,57 +669,17 @@ syms_from_objfile (objfile, addrs, mainline, verbo)
(the loadable section directly below it in memory).
this_offset = lower_offset = lower_addr - lower_orig_addr */
- /* FIXME: These sections will not need special treatment because ALL
- sections are in the other sections table */
-
- if (addrs->text_addr != 0)
- {
- sect = bfd_get_section_by_name (objfile->obfd, ".text");
- if (sect)
- {
- addrs->text_addr -= bfd_section_vma (objfile->obfd, sect);
- lower_offset = addrs->text_addr;
- }
- }
- else
- /* ??? who's below me? */
- addrs->text_addr = lower_offset;
-
- if (addrs->data_addr != 0)
- {
- sect = bfd_get_section_by_name (objfile->obfd, ".data");
- if (sect)
- {
- addrs->data_addr -= bfd_section_vma (objfile->obfd, sect);
- lower_offset = addrs->data_addr;
- }
- }
- else
- addrs->data_addr = lower_offset;
-
- if (addrs->bss_addr != 0)
- {
- sect = bfd_get_section_by_name (objfile->obfd, ".bss");
- if (sect)
- {
- addrs->bss_addr -= bfd_section_vma (objfile->obfd, sect);
- lower_offset = addrs->bss_addr;
- }
- }
- else
- addrs->bss_addr = lower_offset;
-
- /* Now calculate offsets for other sections. */
+ /* Calculate offsets for sections. */
for (i=0 ; i < MAX_SECTIONS && addrs->other[i].name; i++)
{
-
- if (addrs->other[i].addr != 0)
+ if (addrs->other[i].addr != 0)
{
- sect=bfd_get_section_by_name(objfile->obfd, addrs->other[i].name);
+ sect = bfd_get_section_by_name (objfile->obfd, addrs->other[i].name);
if (sect)
{
addrs->other[i].addr -= bfd_section_vma (objfile->obfd, sect);
lower_offset = addrs->other[i].addr;
+ /* This is the index used by BFD. */
addrs->other[i].sectindex = sect->index ;
}
else
@@ -782,13 +736,6 @@ syms_from_objfile (objfile, addrs, mainline, verbo)
CORE_ADDR s_addr = 0;
int i;
- if (strcmp (s->the_bfd_section->name, ".text") == 0)
- s_addr = addrs->text_addr;
- else if (strcmp (s->the_bfd_section->name, ".data") == 0)
- s_addr = addrs->data_addr;
- else if (strcmp (s->the_bfd_section->name, ".bss") == 0)
- s_addr = addrs->bss_addr;
- else
for (i = 0;
!s_addr && i < MAX_SECTIONS && addrs->other[i].name;
i++)
@@ -993,6 +940,10 @@ symbol_file_add (name, from_tty, addrs, mainline, flags)
used in GDB (perhaps "set mapped on", "set readnow on" would be
better), (3) the order of options matters, which is contrary to GNU
conventions (because it is confusing and inconvenient). */
+/* Note: ezannoni 2000-04-17. This function used to have support for
+ rombug (see remote-os9k.c). It consisted of a call to target_link()
+ (target.c) to get the address of the text segment from the target,
+ and pass that to symbol_file_add(). This is no longer supported. */
void
symbol_file_command (args, from_tty)
@@ -1001,7 +952,6 @@ symbol_file_command (args, from_tty)
{
char **argv;
char *name = NULL;
- CORE_ADDR text_relocation = 0; /* text_relocation */
struct cleanup *cleanups;
int flags = OBJF_USERLOADED;
@@ -1026,9 +976,7 @@ symbol_file_command (args, from_tty)
symfile_objfile = NULL;
if (from_tty)
- {
printf_unfiltered ("No symbol file now.\n");
- }
#ifdef HPUXHPPA
RESET_HP_UX_GLOBALS ();
#endif
@@ -1043,56 +991,26 @@ symbol_file_command (args, from_tty)
while (*argv != NULL)
{
if (STREQ (*argv, "-mapped"))
- {
- flags |= OBJF_MAPPED;
- }
- else if (STREQ (*argv, "-readnow"))
- {
+ flags |= OBJF_MAPPED;
+ else
+ if (STREQ (*argv, "-readnow"))
flags |= OBJF_READNOW;
- }
- else if (**argv == '-')
- {
- error ("unknown option `%s'", *argv);
- }
- else
- {
- char *p;
-
- name = *argv;
-
- /* this is for rombug remote only, to get the text relocation by
- using link command */
- p = strrchr (name, '/');
- if (p != NULL)
- p++;
+ else
+ if (**argv == '-')
+ error ("unknown option `%s'", *argv);
else
- p = name;
-
- target_link (p, &text_relocation);
-
- if (text_relocation == (CORE_ADDR) 0)
- return;
- else if (text_relocation == (CORE_ADDR) -1)
{
+ name = *argv;
symbol_file_add (name, from_tty, NULL, 1, flags);
#ifdef HPUXHPPA
RESET_HP_UX_GLOBALS ();
#endif
- }
- else
- {
- struct section_addr_info section_addrs;
- memset (&section_addrs, 0, sizeof (section_addrs));
- section_addrs.text_addr = (CORE_ADDR) text_relocation;
- symbol_file_add (name, from_tty, &section_addrs, 0, flags);
- }
-
- /* Getting new symbols may change our opinion about what is
- frameless. */
- reinit_frame_cache ();
+ /* Getting new symbols may change our opinion about
+ what is frameless. */
+ reinit_frame_cache ();
- set_initial_language ();
- }
+ set_initial_language ();
+ }
argv++;
}
@@ -1313,7 +1231,7 @@ generic_load (char *args, int from_tty)
/* FIXME: should be checking for errors from bfd_close (for one thing,
on error it does not free all the storage associated with the
bfd). */
- make_cleanup ((make_cleanup_func) bfd_close, loadfile_bfd);
+ make_cleanup_bfd_close (loadfile_bfd);
if (!bfd_check_format (loadfile_bfd, bfd_object))
{
@@ -1505,6 +1423,12 @@ print_transfer_performance (struct ui_file *stream,
/* This function allows the addition of incrementally linked object files.
It does not modify any state in the target, only in the debugger. */
+/* Note: ezannoni 2000-04-13 This function/command used to have a
+ special case syntax for the rombug target (Rombug is the boot
+ monitor for Microware's OS-9 / OS-9000, see remote-os9k.c). In the
+ rombug case, the user doesn't need to supply a text address,
+ instead a call to target_link() (in target.c) would supply the
+ value to use. We are now discontinuing this type of ad hoc syntax. */
/* ARGSUSED */
static void
@@ -1512,198 +1436,157 @@ add_symbol_file_command (args, from_tty)
char *args;
int from_tty;
{
- char *name = NULL;
+ char *filename = NULL;
int flags = OBJF_USERLOADED;
char *arg;
int expecting_option = 0;
- int option_index = 0;
+ int section_index = 0;
int argcnt = 0;
int sec_num = 0;
int i;
+ int expecting_sec_name = 0;
+ int expecting_sec_addr = 0;
+
struct
{
- enum { OPT_SECTION } type;
char *name;
char *value;
- } opt[SECT_OFF_MAX];
+ } sect_opts[SECT_OFF_MAX];
+
struct section_addr_info section_addrs;
+ struct cleanup *my_cleanups;
dont_repeat ();
if (args == NULL)
- {
- error ("add-symbol-file takes a file name and an address");
- }
+ error ("add-symbol-file takes a file name and an address");
/* Make a copy of the string that we can safely write into. */
-
args = xstrdup (args);
- make_cleanup (free, args);
/* Ensure section_addrs is initialized */
memset (&section_addrs, 0, sizeof (section_addrs));
- /* Pick off any -option args and the file name. */
-
while (*args != '\000')
{
+ /* Any leading spaces? */
while (isspace (*args))
- {
- args++;
- }
+ args++;
+
+ /* Point arg to the beginning of the argument. */
arg = args;
+
+ /* Move args pointer over the argument. */
while ((*args != '\000') && !isspace (*args))
- {
- args++;
- }
+ args++;
+
+ /* If there are more arguments, terminate arg and
+ proceed past it. */
if (*args != '\000')
+ *args++ = '\000';
+
+ /* Now process the argument. */
+ if (argcnt == 0)
{
- *args++ = '\000';
- }
- if (*arg != '-')
- {
- if (expecting_option)
- {
- opt[option_index++].value = arg;
- expecting_option = 0;
- }
- else
- {
- switch (argcnt)
- {
- case 0:
- name = arg;
- break;
- case 1:
- opt[option_index].type = OPT_SECTION;
- opt[option_index].name = ".text";
- opt[option_index++].value = arg;
- break;
- case 2:
- opt[option_index].type = OPT_SECTION;
- opt[option_index].name = ".data";
- opt[option_index++].value = arg;
- break;
- case 3:
- opt[option_index].type = OPT_SECTION;
- opt[option_index].name = ".bss";
- opt[option_index++].value = arg;
- break;
- default:
- warning ("Too many arguments entered; see \"help add-symbol-file\" for command syntax.");
- }
- argcnt++;
- }
- }
- else if (STREQ (arg, "-mapped"))
- {
- flags |= OBJF_MAPPED;
- }
- else if (STREQ (arg, "-readnow"))
- {
- flags |= OBJF_READNOW;
+ /* The first argument is the file name. */
+ filename = tilde_expand (arg);
+ my_cleanups = make_cleanup (free, filename);
}
- else if (STREQN (arg, "-T", 2))
- {
- if (option_index >= SECT_OFF_MAX)
- {
- warning ("Number of options exceeds maximum allowed.");
- }
- else
- {
- expecting_option = 1;
- opt[option_index].type = OPT_SECTION;
- opt[option_index].name = arg + 2;
- }
- }
- else
- {
- error ("Unknown option `%s'", arg);
- }
- }
+ else
+ if (argcnt == 1)
+ {
+ /* The second argument is always the text address at which
+ to load the program. */
+ sect_opts[section_index].name = ".text";
+ sect_opts[section_index].value = arg;
+ section_index++;
+ }
+ else
+ {
+ /* It's an option (starting with '-') or it's an argument
+ to an option */
- if (name == NULL)
- {
- error ("add-symbol-file takes a file name");
+ if (*arg == '-')
+ {
+ if (strcmp (arg, "-mapped") == 0)
+ flags |= OBJF_MAPPED;
+ else
+ if (strcmp (arg, "-readnow") == 0)
+ flags |= OBJF_READNOW;
+ else
+ if (strcmp (arg, "-s") == 0)
+ {
+ if (section_index >= SECT_OFF_MAX)
+ error ("Too many sections specified.");
+ expecting_sec_name = 1;
+ expecting_sec_addr = 1;
+ }
+ }
+ else
+ {
+ if (expecting_sec_name)
+ {
+ sect_opts[section_index].name = arg;
+ expecting_sec_name = 0;
+ }
+ else
+ if (expecting_sec_addr)
+ {
+ sect_opts[section_index].value = arg;
+ expecting_sec_addr = 0;
+ section_index++;
+ }
+ else
+ error ("USAGE: add-symbol-file <filename> <textaddress> [-mapped] [-readnow] [-s <secname> <addr>]*");
+ }
+ }
+ argcnt++;
}
- name = tilde_expand (name);
- make_cleanup (free, name);
- if (option_index > 0)
- {
- /* Print the prompt for the query below.
- We have to split this up into 3 print statements because
- local_hex_string returns a local static string. */
-
- printf_filtered ("add symbol table from file \"%s\" at\n", name);
- for (i = 0; i < option_index; i++)
- {
- switch (opt[i].type)
- {
- case OPT_SECTION:
- {
- CORE_ADDR addr;
- char *val = opt[i].value;
- char *sec = opt[i].name;
-
- val = opt[i].value;
- if (val[0] == '0' && val[1] == 'x')
- addr = strtoul (val+2, NULL, 16);
- else
- addr = strtoul (val, NULL, 10);
-
- if (strcmp (sec, ".text") == 0)
- section_addrs.text_addr = addr;
- else if (strcmp (sec, ".data") == 0)
- section_addrs.data_addr = addr;
- else if (strcmp (sec, ".bss") == 0)
- section_addrs.bss_addr = addr;
- /* Add the section to the others even if it is a
- text data or bss section. This is redundent but
- eventually, none will be given special treatment */
- {
- section_addrs.other[sec_num].name = xstrdup (sec);
- make_cleanup (free, section_addrs.other[sec_num].name);
- section_addrs.other[sec_num++].addr = addr;
- printf_filtered ("\t%s_addr = %s\n",
- sec,
- local_hex_string ((unsigned long)addr));
- }
+ /* Print the prompt for the query below. And save the arguments into
+ a sect_addr_info structure to be passed around to other
+ functions. We have to split this up into separate print
+ statements because local_hex_string returns a local static
+ string. */
- /* The object's sections are initialized when a
- call is made to build_objfile_section_table (objfile).
- This happens in reread_symbols.
- At this point, we don't know what file type this is,
- so we can't determine what section names are valid. */
- }
- break;
- default:
- complain (&unknown_option_complaint, opt[i].name);
- }
- }
- /* Eventually, these hard coded names will be obsolete */
- /* All the addresses will be on the others section */
- }
- else
+ printf_filtered ("add symbol table from file \"%s\" at\n", filename);
+ for (i = 0; i < section_index; i++)
{
- CORE_ADDR text_addr;
- target_link (name, &text_addr);
- if (text_addr == (CORE_ADDR) -1)
- error("Don't know how to get text start location for this file");
- section_addrs.text_addr = text_addr;
- section_addrs.data_addr = 0;
- section_addrs.bss_addr = 0;
- printf_filtered("add symbol table from file \"%s\" at text_addr = %s?\n",
- name, local_hex_string ((unsigned long)text_addr));
+ CORE_ADDR addr;
+ char *val = sect_opts[i].value;
+ char *sec = sect_opts[i].name;
+
+ val = sect_opts[i].value;
+ if (val[0] == '0' && val[1] == 'x')
+ addr = strtoul (val+2, NULL, 16);
+ else
+ addr = strtoul (val, NULL, 10);
+
+ /* Here we store the section offsets in the order they were
+ entered on the command line. */
+ section_addrs.other[sec_num].name = sec;
+ section_addrs.other[sec_num].addr = addr;
+ printf_filtered ("\t%s_addr = %s\n",
+ sec,
+ local_hex_string ((unsigned long)addr));
+ sec_num++;
+
+ /* The object's sections are initialized when a
+ call is made to build_objfile_section_table (objfile).
+ This happens in reread_symbols.
+ At this point, we don't know what file type this is,
+ so we can't determine what section names are valid. */
}
+
if (from_tty && (!query ("%s", "")))
error ("Not confirmed.");
- symbol_file_add (name, from_tty, &section_addrs, 0, flags);
+ symbol_file_add (filename, from_tty, &section_addrs, 0, flags);
/* Getting new symbols may change our opinion about what is
frameless. */
reinit_frame_cache ();
+ do_cleanups (my_cleanups);
}
static void
@@ -1775,10 +1658,9 @@ reread_symbols ()
/* If we get an error, blow away this objfile (not sure if
that is the correct response for things like shared
libraries). */
- old_cleanups = make_cleanup ((make_cleanup_func) free_objfile,
- objfile);
+ old_cleanups = make_cleanup_free_objfile (objfile);
/* We need to do this whenever any symbols go away. */
- make_cleanup ((make_cleanup_func) clear_symtab_users, 0);
+ make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/);
/* Clean up any state BFD has sitting around. We don't need
to close the descriptor but BFD lacks a way of closing the
@@ -2206,6 +2088,12 @@ clear_symtab_users ()
target_new_objfile_hook (NULL);
}
+static void
+clear_symtab_users_cleanup (void *ignore)
+{
+ clear_symtab_users ();
+}
+
/* clear_symtab_users_once:
This function is run after symbol reading, or from a cleanup.
@@ -2234,8 +2122,7 @@ clear_symtab_users ()
#if 0
/* FIXME: As free_named_symtabs is currently a big noop this function
is no longer needed. */
-static void
-clear_symtab_users_once PARAMS ((void));
+static void clear_symtab_users_once (void);
static int clear_symtab_users_queued;
static int clear_symtab_users_done;
@@ -2666,9 +2553,8 @@ int overlay_debugging = 0; /* 0 == off, 1 == manual, -1 == auto */
int overlay_cache_invalid = 0; /* True if need to refresh mapped state */
/* Target vector for refreshing overlay mapped state */
-static void simple_overlay_update PARAMS ((struct obj_section *));
-void (*target_overlay_update) PARAMS ((struct obj_section *))
-= simple_overlay_update;
+static void simple_overlay_update (struct obj_section *);
+void (*target_overlay_update) (struct obj_section *) = simple_overlay_update;
/* Function: section_is_overlay (SECTION)
Returns true if SECTION has VMA not equal to LMA, ie.
@@ -3370,13 +3256,12 @@ to execute.", &cmdlist);
c->completer = filename_completer;
c = add_cmd ("add-symbol-file", class_files, add_symbol_file_command,
- "Usage: add-symbol-file FILE ADDR [DATA_ADDR [BSS_ADDR]]\n\
-or: add-symbol-file FILE -T<SECT> <SECT_ADDR> -T<SECT> <SECT_ADDR> ...\n\
+ "Usage: add-symbol-file FILE ADDR [-s <SECT> <SECT_ADDR> -s <SECT> <SECT_ADDR> ...]\n\
Load the symbols from FILE, assuming FILE has been dynamically loaded.\n\
ADDR is the starting address of the file's text.\n\
-The optional arguments, DATA_ADDR and BSS_ADDR, should be specified\n\
-if the data and bss segments are not contiguous with the text.\n\
-For complicated cases, SECT is a section name to be loaded at SECT_ADDR.",
+The optional arguments are section-name section-address pairs and\n\
+should be specified if the data and bss segments are not contiguous\n\
+with the text. SECT is a section name to be loaded at SECT_ADDR.",
&cmdlist);
c->completer = filename_completer;
diff --git a/gdb/symfile.h b/gdb/symfile.h
index 5d3ee1de785..56cf4653850 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -64,10 +64,6 @@ struct psymbol_allocation_list
#define MAX_SECTIONS 40
struct section_addr_info
{
- /* Sections whose names are always known to gdb. */
- CORE_ADDR text_addr;
- CORE_ADDR data_addr;
- CORE_ADDR bss_addr;
/* Sections whose names are file format dependant. */
struct other_sections
{
@@ -92,13 +88,13 @@ struct sym_fns
called during symbol_file_add, when we begin debugging an entirely new
program. */
- void (*sym_new_init) PARAMS ((struct objfile *));
+ void (*sym_new_init) (struct objfile *);
/* Reads any initial information from a symbol file, and initializes the
struct sym_fns SF in preparation for sym_read(). It is called every
time we read a symbol file for any reason. */
- void (*sym_init) PARAMS ((struct objfile *));
+ void (*sym_init) (struct objfile *);
/* sym_read (objfile, mainline)
Reads a symbol file into a psymtab (or possibly a symtab).
@@ -108,12 +104,12 @@ struct sym_fns
symbol file (e.g. shared library or dynamically loaded file)
is being read. */
- void (*sym_read) PARAMS ((struct objfile *, int));
+ void (*sym_read) (struct objfile *, int);
/* Called when we are finished with an objfile. Should do all cleanup
that is specific to the object file format for the particular objfile. */
- void (*sym_finish) PARAMS ((struct objfile *));
+ void (*sym_finish) (struct objfile *);
/* This function produces a file-dependent section_offsets structure,
allocated in the objfile's storage, and based on the parameter.
@@ -122,7 +118,7 @@ struct sym_fns
a string, where NULL means the default, and others are parsed in a file
dependent way. */
- void (*sym_offsets) PARAMS ((struct objfile *, struct section_addr_info *));
+ void (*sym_offsets) (struct objfile *, struct section_addr_info *);
/* Finds the next struct sym_fns. They are allocated and initialized
in whatever module implements the functions pointed to; an
@@ -136,58 +132,50 @@ struct sym_fns
do anything special. */
extern void
-default_symfile_offsets PARAMS ((struct objfile * objfile, struct section_addr_info *));
+default_symfile_offsets (struct objfile *objfile, struct section_addr_info *);
extern void
-extend_psymbol_list PARAMS ((struct psymbol_allocation_list *,
- struct objfile *));
+extend_psymbol_list (struct psymbol_allocation_list *, struct objfile *);
/* Add any kind of symbol to a psymbol_allocation_list. */
/* #include "demangle.h" */
extern void
-add_psymbol_to_list PARAMS ((char *, int, namespace_enum, enum address_class,
- struct psymbol_allocation_list *, long, CORE_ADDR,
- enum language, struct objfile *));
+add_psymbol_to_list (char *, int, namespace_enum, enum address_class,
+ struct psymbol_allocation_list *, long, CORE_ADDR,
+ enum language, struct objfile *);
extern void
-add_psymbol_with_dem_name_to_list PARAMS ((char *, int, char *, int, namespace_enum,
- enum address_class,
- struct psymbol_allocation_list *,
- long, CORE_ADDR,
- enum language, struct objfile *));
+add_psymbol_with_dem_name_to_list (char *, int, char *, int, namespace_enum,
+ enum address_class,
+ struct psymbol_allocation_list *,
+ long, CORE_ADDR,
+ enum language, struct objfile *);
-extern void init_psymbol_list PARAMS ((struct objfile *, int));
+extern void init_psymbol_list (struct objfile *, int);
-extern void
-sort_pst_symbols PARAMS ((struct partial_symtab *));
+extern void sort_pst_symbols (struct partial_symtab *);
-extern struct symtab *
- allocate_symtab PARAMS ((char *, struct objfile *));
+extern struct symtab *allocate_symtab (char *, struct objfile *);
-extern int
-free_named_symtabs PARAMS ((char *));
+extern int free_named_symtabs (char *);
-extern void
-fill_in_vptr_fieldno PARAMS ((struct type *));
+extern void fill_in_vptr_fieldno (struct type *);
-extern void
-add_symtab_fns PARAMS ((struct sym_fns *));
+extern void add_symtab_fns (struct sym_fns *);
-extern void
-init_entry_point_info PARAMS ((struct objfile *));
+extern void init_entry_point_info (struct objfile *);
extern void
-syms_from_objfile PARAMS ((struct objfile *, struct section_addr_info *, int, int));
+syms_from_objfile (struct objfile *, struct section_addr_info *, int, int);
-extern void
-new_symfile_objfile PARAMS ((struct objfile *, int, int));
+extern void new_symfile_objfile (struct objfile *, int, int);
-extern struct objfile *
-symbol_file_add PARAMS ((char *, int, struct section_addr_info *, int, int));
+extern struct objfile *symbol_file_add (char *, int,
+ struct section_addr_info *, int, int);
/* Build (allocate and populate) a section_addr_info struct from
an existing section table. */
@@ -203,33 +191,29 @@ extern void
free_section_addr_info (struct section_addr_info *);
-extern struct partial_symtab *
- start_psymtab_common PARAMS ((struct objfile *, struct section_offsets *,
- char *, CORE_ADDR,
- struct partial_symbol **,
- struct partial_symbol **));
+extern struct partial_symtab *start_psymtab_common (struct objfile *,
+ struct section_offsets *,
+ char *, CORE_ADDR,
+ struct partial_symbol **,
+ struct partial_symbol **);
/* Sorting your symbols for fast lookup or alphabetical printing. */
-extern void
-sort_block_syms PARAMS ((struct block *));
+extern void sort_block_syms (struct block *);
-extern void
-sort_symtab_syms PARAMS ((struct symtab *));
+extern void sort_symtab_syms (struct symtab *);
/* Make a copy of the string at PTR with SIZE characters in the symbol obstack
(and add a null character at the end in the copy).
Returns the address of the copy. */
-extern char *
- obsavestring PARAMS ((char *, int, struct obstack *));
+extern char *obsavestring (char *, int, struct obstack *);
/* Concatenate strings S1, S2 and S3; return the new string.
Space is found in the symbol_obstack. */
-extern char *
- obconcat PARAMS ((struct obstack * obstackp, const char *, const char *,
- const char *));
+extern char *obconcat (struct obstack *obstackp, const char *, const char *,
+ const char *);
/* Variables */
@@ -248,70 +232,58 @@ extern int auto_solib_add;
/* From symfile.c */
-extern CORE_ADDR
- entry_point_address PARAMS ((void));
+extern CORE_ADDR entry_point_address (void);
-extern struct partial_symtab *
- allocate_psymtab PARAMS ((char *, struct objfile *));
+extern struct partial_symtab *allocate_psymtab (char *, struct objfile *);
-extern void
-discard_psymtab PARAMS ((struct partial_symtab *));
+extern void discard_psymtab (struct partial_symtab *);
-extern void find_lowest_section PARAMS ((bfd *, asection *, PTR));
+extern void find_lowest_section (bfd *, asection *, PTR);
-extern bfd *symfile_bfd_open PARAMS ((char *));
+extern bfd *symfile_bfd_open (char *);
/* Utility functions for overlay sections: */
extern int overlay_debugging;
extern int overlay_cache_invalid;
/* return the "mapped" overlay section containing the PC */
-extern asection *
- find_pc_mapped_section PARAMS ((CORE_ADDR));
+extern asection *find_pc_mapped_section (CORE_ADDR);
/* return any overlay section containing the PC (even in its LMA region) */
-extern asection *
- find_pc_overlay PARAMS ((CORE_ADDR));
+extern asection *find_pc_overlay (CORE_ADDR);
/* return true if the section is an overlay */
-extern int
-section_is_overlay PARAMS ((asection *));
+extern int section_is_overlay (asection *);
/* return true if the overlay section is currently "mapped" */
-extern int
-section_is_mapped PARAMS ((asection *));
+extern int section_is_mapped (asection *);
/* return true if pc belongs to section's VMA */
-extern CORE_ADDR
- pc_in_mapped_range PARAMS ((CORE_ADDR, asection *));
+extern CORE_ADDR pc_in_mapped_range (CORE_ADDR, asection *);
/* return true if pc belongs to section's LMA */
-extern CORE_ADDR
- pc_in_unmapped_range PARAMS ((CORE_ADDR, asection *));
+extern CORE_ADDR pc_in_unmapped_range (CORE_ADDR, asection *);
/* map an address from a section's LMA to its VMA */
-extern CORE_ADDR
- overlay_mapped_address PARAMS ((CORE_ADDR, asection *));
+extern CORE_ADDR overlay_mapped_address (CORE_ADDR, asection *);
/* map an address from a section's VMA to its LMA */
-extern CORE_ADDR
- overlay_unmapped_address PARAMS ((CORE_ADDR, asection *));
+extern CORE_ADDR overlay_unmapped_address (CORE_ADDR, asection *);
/* convert an address in an overlay section (force into VMA range) */
-extern CORE_ADDR
- symbol_overlayed_address PARAMS ((CORE_ADDR, asection *));
+extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *);
/* From dwarfread.c */
extern void
-dwarf_build_psymtabs PARAMS ((struct objfile *, int, file_ptr, unsigned int,
- file_ptr, unsigned int));
+dwarf_build_psymtabs (struct objfile *, int, file_ptr, unsigned int,
+ file_ptr, unsigned int);
/* From dwarf2read.c */
-extern int dwarf2_has_info PARAMS ((bfd * abfd));
+extern int dwarf2_has_info (bfd * abfd);
-extern void dwarf2_build_psymtabs PARAMS ((struct objfile *, int));
+extern void dwarf2_build_psymtabs (struct objfile *, int);
/* From mdebugread.c */
@@ -322,13 +294,12 @@ struct ecoff_debug_hack
struct ecoff_debug_info *b;
};
extern void
-mdebug_build_psymtabs PARAMS ((struct objfile *,
- const struct ecoff_debug_swap *,
- struct ecoff_debug_info *));
+mdebug_build_psymtabs (struct objfile *,
+ const struct ecoff_debug_swap *,
+ struct ecoff_debug_info *);
extern void
-elfmdebug_build_psymtabs PARAMS ((struct objfile *,
- const struct ecoff_debug_swap *,
- asection *));
+elfmdebug_build_psymtabs (struct objfile *,
+ const struct ecoff_debug_swap *, asection *);
#endif /* !defined(SYMFILE_H) */
diff --git a/gdb/symmisc.c b/gdb/symmisc.c
index 1a806ccff6a..1f46bc79112 100644
--- a/gdb/symmisc.c
+++ b/gdb/symmisc.c
@@ -56,16 +56,16 @@ static void dump_psymtab (struct objfile *, struct partial_symtab *,
static void dump_msymbols (struct objfile *, struct ui_file *);
-static void dump_objfile PARAMS ((struct objfile *));
+static void dump_objfile (struct objfile *);
-static int block_depth PARAMS ((struct block *));
+static int block_depth (struct block *);
static void print_partial_symbols (struct partial_symbol **, int,
char *, struct ui_file *);
-static void free_symtab_block PARAMS ((struct objfile *, struct block *));
+static void free_symtab_block (struct objfile *, struct block *);
-void _initialize_symmisc PARAMS ((void));
+void _initialize_symmisc (void);
struct print_symbol_args
{
@@ -74,10 +74,9 @@ struct print_symbol_args
struct ui_file *outfile;
};
-static int print_symbol PARAMS ((PTR));
+static int print_symbol (PTR);
-static void
-free_symtab_block PARAMS ((struct objfile *, struct block *));
+static void free_symtab_block (struct objfile *, struct block *);
/* Free a struct block <- B and all the symbols defined in that block. */
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 51313525c05..5f0e84aeefe 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -47,72 +47,68 @@
/* Prototype for one function in parser-defs.h,
instead of including that entire file. */
-extern char *find_template_name_end PARAMS ((char *));
+extern char *find_template_name_end (char *);
/* Prototypes for local functions */
-static int find_methods PARAMS ((struct type *, char *, struct symbol **));
+static int find_methods (struct type *, char *, struct symbol **);
-static void completion_list_add_name PARAMS ((char *, char *, int, char *,
- char *));
+static void completion_list_add_name (char *, char *, int, char *, char *);
-static void build_canonical_line_spec PARAMS ((struct symtab_and_line *,
- char *, char ***));
+static void build_canonical_line_spec (struct symtab_and_line *,
+ char *, char ***);
-static struct symtabs_and_lines decode_line_2 PARAMS ((struct symbol *[],
- int, int, char ***));
+static struct symtabs_and_lines decode_line_2 (struct symbol *[],
+ int, int, char ***);
-static void rbreak_command PARAMS ((char *, int));
+static void rbreak_command (char *, int);
-static void types_info PARAMS ((char *, int));
+static void types_info (char *, int);
-static void functions_info PARAMS ((char *, int));
+static void functions_info (char *, int);
-static void variables_info PARAMS ((char *, int));
+static void variables_info (char *, int);
-static void sources_info PARAMS ((char *, int));
+static void sources_info (char *, int);
-static void output_source_filename PARAMS ((char *, int *));
+static void output_source_filename (char *, int *);
-char *operator_chars PARAMS ((char *, char **));
+char *operator_chars (char *, char **);
-static int find_line_common PARAMS ((struct linetable *, int, int *));
+static int find_line_common (struct linetable *, int, int *);
static struct partial_symbol *lookup_partial_symbol PARAMS
((struct partial_symtab *, const char *,
int, namespace_enum));
-static struct partial_symbol *fixup_psymbol_section PARAMS ((struct
- partial_symbol *, struct objfile *));
+static struct partial_symbol *fixup_psymbol_section (struct
+ partial_symbol *,
+ struct objfile *);
-static struct symtab *lookup_symtab_1 PARAMS ((char *));
+static struct symtab *lookup_symtab_1 (char *);
-static void cplusplus_hint PARAMS ((char *));
+static void cplusplus_hint (char *);
-static struct symbol *find_active_alias PARAMS ((struct symbol * sym,
- CORE_ADDR addr));
+static struct symbol *find_active_alias (struct symbol *sym, CORE_ADDR addr);
/* This flag is used in hppa-tdep.c, and set in hp-symtab-read.c */
/* Signals the presence of objects compiled by HP compilers */
int hp_som_som_object_present = 0;
-static void fixup_section PARAMS ((struct general_symbol_info *,
- struct objfile *));
+static void fixup_section (struct general_symbol_info *, struct objfile *);
-static int file_matches PARAMS ((char *, char **, int));
+static int file_matches (char *, char **, int);
-static void print_symbol_info PARAMS ((namespace_enum,
- struct symtab *, struct symbol *,
- int, char *));
+static void print_symbol_info (namespace_enum,
+ struct symtab *, struct symbol *, int, char *);
-static void print_msymbol_info PARAMS ((struct minimal_symbol *));
+static void print_msymbol_info (struct minimal_symbol *);
-static void symtab_symbol_info PARAMS ((char *, namespace_enum, int));
+static void symtab_symbol_info (char *, namespace_enum, int);
-static void overload_list_add_symbol PARAMS ((struct symbol * sym,
- char *oload_name));
+static void overload_list_add_symbol (struct symbol *sym, char *oload_name);
-void _initialize_symtab PARAMS ((void));
+void _initialize_symtab (void);
/* */
@@ -958,7 +954,7 @@ lookup_symbol (name, block, namespace, is_a_field_of_this, symtab)
*symtab = NULL;
return 0;
}
-
+
/* Look, in partial_symtab PST, for symbol NAME. Check the global
symbols if GLOBAL, the static symbols if not */
@@ -969,20 +965,20 @@ lookup_partial_symbol (pst, name, global, namespace)
int global;
namespace_enum namespace;
{
+ struct partial_symbol *temp;
struct partial_symbol **start, **psym;
struct partial_symbol **top, **bottom, **center;
int length = (global ? pst->n_global_syms : pst->n_static_syms);
int do_linear_search = 1;
-
+
if (length == 0)
{
return (NULL);
}
-
start = (global ?
pst->objfile->global_psymbols.list + pst->globals_offset :
pst->objfile->static_psymbols.list + pst->statics_offset);
-
+
if (global) /* This means we can use a binary search. */
{
do_linear_search = 0;
@@ -1000,9 +996,7 @@ lookup_partial_symbol (pst, name, global, namespace)
if (!(center < top))
abort ();
if (!do_linear_search
- && (SYMBOL_LANGUAGE (*center) == language_cplus
- || SYMBOL_LANGUAGE (*center) == language_java
- ))
+ && (SYMBOL_LANGUAGE (*center) == language_java))
{
do_linear_search = 1;
}
@@ -1017,11 +1011,15 @@ lookup_partial_symbol (pst, name, global, namespace)
}
if (!(top == bottom))
abort ();
- while (STREQ (SYMBOL_NAME (*top), name))
+
+ /* djb - 2000-06-03 - Use SYMBOL_MATCHES_NAME, not a strcmp, so
+ we don't have to force a linear search on C++. Probably holds true
+ for JAVA as well, no way to check.*/
+ while (SYMBOL_MATCHES_NAME (*top,name))
{
if (SYMBOL_NAMESPACE (*top) == namespace)
{
- return (*top);
+ return (*top);
}
top++;
}
@@ -1031,7 +1029,7 @@ lookup_partial_symbol (pst, name, global, namespace)
we should also do a linear search. */
if (do_linear_search)
- {
+ {
for (psym = start; psym < start + length; psym++)
{
if (namespace == SYMBOL_NAMESPACE (*psym))
@@ -1844,8 +1842,7 @@ find_pc_line (pc, notcurrent)
}
-static struct symtab *find_line_symtab PARAMS ((struct symtab *, int,
- int *, int *));
+static struct symtab *find_line_symtab (struct symtab *, int, int *, int *);
/* Find line number LINE in any symtab whose name is the same as
SYMTAB.
@@ -2077,7 +2074,7 @@ find_pc_line_pc_range (pc, startptr, endptr)
of real code inside the function. */
static struct symtab_and_line
-find_function_start_sal PARAMS ((struct symbol * sym, int));
+find_function_start_sal (struct symbol *sym, int);
static struct symtab_and_line
find_function_start_sal (sym, funfirstline)
@@ -2217,7 +2214,7 @@ operator_chars (p, end)
reader because the type of the baseclass might still be stubbed
when the definition of the derived class is parsed. */
-static int total_number_of_methods PARAMS ((struct type * type));
+static int total_number_of_methods (struct type *type);
static int
total_number_of_methods (type)
@@ -3569,6 +3566,19 @@ free_search_symbols (symbols)
}
}
+static void
+do_free_search_symbols_cleanup (void *symbols)
+{
+ free_search_symbols (symbols);
+}
+
+struct cleanup *
+make_cleanup_free_search_symbols (struct symbol_search *symbols)
+{
+ return make_cleanup (do_free_search_symbols_cleanup, symbols);
+}
+
+
/* Search the symbol table for matches to the regular expression REGEXP,
returning the results in *MATCHES.
@@ -3801,8 +3811,7 @@ search_symbols (regexp, kind, nfiles, files, matches)
if (tail == NULL)
{
sr = psr;
- old_chain = make_cleanup ((make_cleanup_func)
- free_search_symbols, sr);
+ old_chain = make_cleanup_free_search_symbols (sr);
}
else
tail->next = psr;
@@ -3846,8 +3855,7 @@ search_symbols (regexp, kind, nfiles, files, matches)
if (tail == NULL)
{
sr = psr;
- old_chain = make_cleanup ((make_cleanup_func)
- free_search_symbols, &sr);
+ old_chain = make_cleanup_free_search_symbols (sr);
}
else
tail->next = psr;
@@ -3962,7 +3970,7 @@ symtab_symbol_info (regexp, kind, from_tty)
/* must make sure that if we're interrupted, symbols gets freed */
search_symbols (regexp, kind, 0, (char **) NULL, &symbols);
- old_chain = make_cleanup ((make_cleanup_func) free_search_symbols, symbols);
+ old_chain = make_cleanup_free_search_symbols (symbols);
printf_filtered (regexp
? "All %ss matching regular expression \"%s\":\n"
@@ -4012,6 +4020,7 @@ functions_info (regexp, from_tty)
symtab_symbol_info (regexp, FUNCTIONS_NAMESPACE, from_tty);
}
+
static void
types_info (regexp, from_tty)
char *regexp;
@@ -4050,7 +4059,7 @@ rbreak_command (regexp, from_tty)
struct cleanup *old_chain;
search_symbols (regexp, FUNCTIONS_NAMESPACE, 0, (char **) NULL, &ss);
- old_chain = make_cleanup ((make_cleanup_func) free_search_symbols, ss);
+ old_chain = make_cleanup_free_search_symbols (ss);
for (p = ss; p != NULL; p = p->next)
{
@@ -4402,43 +4411,64 @@ in_prologue (pc, func_start)
struct symtab_and_line sal;
CORE_ADDR func_addr, func_end;
- if (!find_pc_partial_function (pc, NULL, &func_addr, &func_end))
- goto nosyms; /* Might be in prologue */
-
- sal = find_pc_line (func_addr, 0);
-
- if (sal.line == 0)
- goto nosyms;
-
- /* sal.end is the address of the first instruction past sal.line. */
- if (sal.end > func_addr
- && sal.end <= func_end) /* Is prologue in function? */
- return pc < sal.end; /* Yes, is pc in prologue? */
-
- /* The line after the prologue seems to be outside the function. In this
- case, tell the caller to find the prologue the hard way. */
-
- return 1;
+ /* We have several sources of information we can consult to figure
+ this out.
+ - Compilers usually emit line number info that marks the prologue
+ as its own "source line". So the ending address of that "line"
+ is the end of the prologue. If available, this is the most
+ reliable method.
+ - The minimal symbols and partial symbols, which can usually tell
+ us the starting and ending addresses of a function.
+ - If we know the function's start address, we can call the
+ architecture-defined SKIP_PROLOGUE function to analyze the
+ instruction stream and guess where the prologue ends.
+ - Our `func_start' argument; if non-zero, this is the caller's
+ best guess as to the function's entry point. At the time of
+ this writing, handle_inferior_event doesn't get this right, so
+ it should be our last resort. */
+
+ /* Consult the partial symbol table, to find which function
+ the PC is in. */
+ if (! find_pc_partial_function (pc, NULL, &func_addr, &func_end))
+ {
+ CORE_ADDR prologue_end;
-/* Come here when symtabs don't contain line # info. In this case, it is
- likely that the user has stepped into a library function w/o symbols, or
- is doing a stepi/nexti through code without symbols. */
+ /* We don't even have minsym information, so fall back to using
+ func_start, if given. */
+ if (! func_start)
+ return 1; /* We *might* be in a prologue. */
-nosyms:
+ prologue_end = SKIP_PROLOGUE (func_start);
-/* If func_start is zero (meaning unknown) then we don't know whether pc is
- in the prologue or not. I.E. it might be. */
+ return func_start <= pc && pc < prologue_end;
+ }
- if (!func_start)
- return 1;
+ /* If we have line number information for the function, that's
+ usually pretty reliable. */
+ sal = find_pc_line (func_addr, 0);
-/* We need to call the target-specific prologue skipping functions with the
- function's start address because PC may be pointing at an instruction that
- could be mistakenly considered part of the prologue. */
+ /* Now sal describes the source line at the function's entry point,
+ which (by convention) is the prologue. The end of that "line",
+ sal.end, is the end of the prologue.
+
+ Note that, for functions whose source code is all on a single
+ line, the line number information doesn't always end up this way.
+ So we must verify that our purported end-of-prologue address is
+ *within* the function, not at its start or end. */
+ if (sal.line == 0
+ || sal.end <= func_addr
+ || func_end <= sal.end)
+ {
+ /* We don't have any good line number info, so use the minsym
+ information, together with the architecture-specific prologue
+ scanning code. */
+ CORE_ADDR prologue_end = SKIP_PROLOGUE (func_addr);
- func_start = SKIP_PROLOGUE (func_start);
+ return func_addr <= pc && pc < prologue_end;
+ }
- return pc < func_start;
+ /* We have line number info, and it looks good. */
+ return func_addr <= pc && pc < sal.end;
}
@@ -4637,6 +4667,7 @@ _initialize_symtab ()
add_info ("functions", functions_info,
"All function names, or those matching REGEXP.");
+
/* FIXME: This command has at least the following problems:
1. It prints builtin types (in a very strange and confusing fashion).
2. It doesn't print right, e.g. with
diff --git a/gdb/symtab.h b/gdb/symtab.h
index dffb26ae068..7fb78db3ea7 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -120,7 +120,7 @@ struct general_symbol_info
asection *bfd_section;
};
-extern CORE_ADDR symbol_overlayed_address PARAMS ((CORE_ADDR, asection *));
+extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *);
#define SYMBOL_NAME(symbol) (symbol)->ginfo.name
#define SYMBOL_VALUE(symbol) (symbol)->ginfo.value.ivalue
@@ -1011,7 +1011,7 @@ struct partial_symtab
/* Pointer to function which will read in the symtab corresponding to
this psymtab. */
- void (*read_symtab) PARAMS ((struct partial_symtab *));
+ void (*read_symtab) (struct partial_symtab *);
/* Information that lets read_symtab() locate the part of the symbol table
that this psymtab corresponds to. This information is private to the
@@ -1059,10 +1059,11 @@ struct partial_symtab
style, using thunks (where '$' is really CPLUS_MARKER). */
#define VTBL_PREFIX_P(NAME) \
- ((NAME)[0] == '_' \
+ (((NAME)[0] == '_' \
&& (((NAME)[1] == 'V' && (NAME)[2] == 'T') \
|| ((NAME)[1] == 'v' && (NAME)[2] == 't')) \
- && is_cplus_marker ((NAME)[3]))
+ && is_cplus_marker ((NAME)[3])) || ((NAME)[0]=='_' && (NAME)[1]=='_' \
+ && (NAME)[2]=='v' && (NAME)[3]=='t' && (NAME)[4]=='_'))
/* Macro that yields non-zero value iff NAME is the prefix for C++ destructor
names. Note that this macro is g++ specific (FIXME). */
@@ -1097,110 +1098,91 @@ extern int asm_demangle;
/* lookup a symbol table by source file name */
-extern struct symtab *
- lookup_symtab PARAMS ((char *));
+extern struct symtab *lookup_symtab (char *);
/* lookup a symbol by name (optional block, optional symtab) */
-extern struct symbol *
- lookup_symbol PARAMS ((const char *, const struct block *,
- const namespace_enum, int *, struct symtab **));
+extern struct symbol *lookup_symbol (const char *, const struct block *,
+ const namespace_enum, int *,
+ struct symtab **);
/* lookup a symbol by name, within a specified block */
-extern struct symbol *
- lookup_block_symbol PARAMS ((const struct block *, const char *,
- const namespace_enum));
+extern struct symbol *lookup_block_symbol (const struct block *, const char *,
+ const namespace_enum);
/* lookup a [struct, union, enum] by name, within a specified block */
-extern struct type *
- lookup_struct PARAMS ((char *, struct block *));
+extern struct type *lookup_struct (char *, struct block *);
-extern struct type *
- lookup_union PARAMS ((char *, struct block *));
+extern struct type *lookup_union (char *, struct block *);
-extern struct type *
- lookup_enum PARAMS ((char *, struct block *));
+extern struct type *lookup_enum (char *, struct block *);
/* lookup the function corresponding to the block */
-extern struct symbol *
- block_function PARAMS ((struct block *));
+extern struct symbol *block_function (struct block *);
/* from blockframe.c: */
/* lookup the function symbol corresponding to the address */
-extern struct symbol *
- find_pc_function PARAMS ((CORE_ADDR));
+extern struct symbol *find_pc_function (CORE_ADDR);
/* lookup the function corresponding to the address and section */
-extern struct symbol *
- find_pc_sect_function PARAMS ((CORE_ADDR, asection *));
+extern struct symbol *find_pc_sect_function (CORE_ADDR, asection *);
/* lookup function from address, return name, start addr and end addr */
extern int
-find_pc_partial_function PARAMS ((CORE_ADDR, char **,
- CORE_ADDR *, CORE_ADDR *));
+find_pc_partial_function (CORE_ADDR, char **, CORE_ADDR *, CORE_ADDR *);
-extern void
-clear_pc_function_cache PARAMS ((void));
+extern void clear_pc_function_cache (void);
extern int
-find_pc_sect_partial_function PARAMS ((CORE_ADDR, asection *,
- char **, CORE_ADDR *, CORE_ADDR *));
+find_pc_sect_partial_function (CORE_ADDR, asection *,
+ char **, CORE_ADDR *, CORE_ADDR *);
/* from symtab.c: */
/* lookup partial symbol table by filename */
-extern struct partial_symtab *
- lookup_partial_symtab PARAMS ((char *));
+extern struct partial_symtab *lookup_partial_symtab (char *);
/* lookup partial symbol table by address */
-extern struct partial_symtab *
- find_pc_psymtab PARAMS ((CORE_ADDR));
+extern struct partial_symtab *find_pc_psymtab (CORE_ADDR);
/* lookup partial symbol table by address and section */
-extern struct partial_symtab *
- find_pc_sect_psymtab PARAMS ((CORE_ADDR, asection *));
+extern struct partial_symtab *find_pc_sect_psymtab (CORE_ADDR, asection *);
/* lookup full symbol table by address */
-extern struct symtab *
- find_pc_symtab PARAMS ((CORE_ADDR));
+extern struct symtab *find_pc_symtab (CORE_ADDR);
/* lookup full symbol table by address and section */
-extern struct symtab *
- find_pc_sect_symtab PARAMS ((CORE_ADDR, asection *));
+extern struct symtab *find_pc_sect_symtab (CORE_ADDR, asection *);
/* lookup partial symbol by address */
-extern struct partial_symbol *
- find_pc_psymbol PARAMS ((struct partial_symtab *, CORE_ADDR));
+extern struct partial_symbol *find_pc_psymbol (struct partial_symtab *,
+ CORE_ADDR);
/* lookup partial symbol by address and section */
-extern struct partial_symbol *
- find_pc_sect_psymbol PARAMS ((struct partial_symtab *, CORE_ADDR, asection *));
+extern struct partial_symbol *find_pc_sect_psymbol (struct partial_symtab *,
+ CORE_ADDR, asection *);
-extern int
-find_pc_line_pc_range PARAMS ((CORE_ADDR, CORE_ADDR *, CORE_ADDR *));
+extern int find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *);
-extern int
-contained_in PARAMS ((struct block *, struct block *));
+extern int contained_in (struct block *, struct block *);
-extern void
-reread_symbols PARAMS ((void));
+extern void reread_symbols (void);
-extern struct type *
- lookup_transparent_type PARAMS ((const char *));
+extern struct type *lookup_transparent_type (const char *);
/* Macro for name of symbol to indicate a file compiled with gcc. */
@@ -1216,66 +1198,60 @@ extern struct type *
/* Functions for dealing with the minimal symbol table, really a misc
address<->symbol mapping for things we don't have debug symbols for. */
-extern void prim_record_minimal_symbol PARAMS ((const char *, CORE_ADDR,
- enum minimal_symbol_type,
- struct objfile *));
+extern void prim_record_minimal_symbol (const char *, CORE_ADDR,
+ enum minimal_symbol_type,
+ struct objfile *);
extern struct minimal_symbol *prim_record_minimal_symbol_and_info
- PARAMS ((const char *, CORE_ADDR,
- enum minimal_symbol_type,
- char *info, int section,
- asection * bfd_section,
- struct objfile *));
+ (const char *, CORE_ADDR,
+ enum minimal_symbol_type,
+ char *info, int section, asection * bfd_section, struct objfile *);
#ifdef SOFUN_ADDRESS_MAYBE_MISSING
-extern CORE_ADDR find_stab_function_addr PARAMS ((char *,
- char *,
- struct objfile *));
+extern CORE_ADDR find_stab_function_addr (char *, char *, struct objfile *);
#endif
-extern unsigned int msymbol_hash_iw PARAMS ((const char *));
+extern unsigned int msymbol_hash_iw (const char *);
-extern unsigned int msymbol_hash PARAMS ((const char *));
+extern unsigned int msymbol_hash (const char *);
extern void
add_minsym_to_hash_table (struct minimal_symbol *sym,
struct minimal_symbol **table);
-extern struct minimal_symbol *
- lookup_minimal_symbol PARAMS ((const char *, const char *, struct objfile *));
+extern struct minimal_symbol *lookup_minimal_symbol (const char *,
+ const char *,
+ struct objfile *);
-extern struct minimal_symbol *
- lookup_minimal_symbol_text PARAMS ((const char *, const char *, struct objfile *));
+extern struct minimal_symbol *lookup_minimal_symbol_text (const char *,
+ const char *,
+ struct objfile *);
-struct minimal_symbol *
- lookup_minimal_symbol_solib_trampoline PARAMS ((const char *,
- const char *,
- struct objfile *));
+struct minimal_symbol *lookup_minimal_symbol_solib_trampoline (const char *,
+ const char *,
+ struct objfile
+ *);
-extern struct minimal_symbol *
- lookup_minimal_symbol_by_pc PARAMS ((CORE_ADDR));
+extern struct minimal_symbol *lookup_minimal_symbol_by_pc (CORE_ADDR);
-extern struct minimal_symbol *
- lookup_minimal_symbol_by_pc_section PARAMS ((CORE_ADDR, asection *));
+extern struct minimal_symbol *lookup_minimal_symbol_by_pc_section (CORE_ADDR,
+ asection
+ *);
-extern struct minimal_symbol *
- lookup_solib_trampoline_symbol_by_pc PARAMS ((CORE_ADDR));
+extern struct minimal_symbol
+ *lookup_solib_trampoline_symbol_by_pc (CORE_ADDR);
-extern CORE_ADDR
- find_solib_trampoline_target PARAMS ((CORE_ADDR));
+extern CORE_ADDR find_solib_trampoline_target (CORE_ADDR);
-extern void
-init_minimal_symbol_collection PARAMS ((void));
+extern void init_minimal_symbol_collection (void);
-extern void
-discard_minimal_symbols PARAMS ((int));
+extern struct cleanup *make_cleanup_discard_minimal_symbols (void);
-extern void
-install_minimal_symbols PARAMS ((struct objfile *));
+extern void install_minimal_symbols (struct objfile *);
/* Sort all the minimal symbols in OBJFILE. */
-extern void msymbols_sort PARAMS ((struct objfile * objfile));
+extern void msymbols_sort (struct objfile *objfile);
struct symtab_and_line
{
@@ -1344,126 +1320,99 @@ struct exception_event_record
/* Given a pc value, return line number it is in. Second arg nonzero means
if pc is on the boundary use the previous statement's line number. */
-extern struct symtab_and_line
-find_pc_line PARAMS ((CORE_ADDR, int));
+extern struct symtab_and_line find_pc_line (CORE_ADDR, int);
/* Same function, but specify a section as well as an address */
-extern struct symtab_and_line
-find_pc_sect_line PARAMS ((CORE_ADDR, asection *, int));
+extern struct symtab_and_line find_pc_sect_line (CORE_ADDR, asection *, int);
/* Given an address, return the nearest symbol at or below it in memory.
Optionally return the symtab it's from through 2nd arg, and the
address in inferior memory of the symbol through 3rd arg. */
-extern struct symbol *
- find_addr_symbol PARAMS ((CORE_ADDR, struct symtab **, CORE_ADDR *));
+extern struct symbol *find_addr_symbol (CORE_ADDR, struct symtab **,
+ CORE_ADDR *);
/* Given a symtab and line number, return the pc there. */
-extern int
-find_line_pc PARAMS ((struct symtab *, int, CORE_ADDR *));
+extern int find_line_pc (struct symtab *, int, CORE_ADDR *);
extern int
-find_line_pc_range PARAMS ((struct symtab_and_line,
- CORE_ADDR *, CORE_ADDR *));
+find_line_pc_range (struct symtab_and_line, CORE_ADDR *, CORE_ADDR *);
-extern void
-resolve_sal_pc PARAMS ((struct symtab_and_line *));
+extern void resolve_sal_pc (struct symtab_and_line *);
/* Given a string, return the line specified by it. For commands like "list"
and "breakpoint". */
-extern struct symtabs_and_lines
-decode_line_spec PARAMS ((char *, int));
+extern struct symtabs_and_lines decode_line_spec (char *, int);
-extern struct symtabs_and_lines
-decode_line_spec_1 PARAMS ((char *, int));
+extern struct symtabs_and_lines decode_line_spec_1 (char *, int);
extern struct symtabs_and_lines
-decode_line_1 PARAMS ((char **, int, struct symtab *, int, char ***));
+decode_line_1 (char **, int, struct symtab *, int, char ***);
/* Symmisc.c */
-void
-maintenance_print_symbols PARAMS ((char *, int));
+void maintenance_print_symbols (char *, int);
-void
-maintenance_print_psymbols PARAMS ((char *, int));
+void maintenance_print_psymbols (char *, int);
-void
-maintenance_print_msymbols PARAMS ((char *, int));
+void maintenance_print_msymbols (char *, int);
-void
-maintenance_print_objfiles PARAMS ((char *, int));
+void maintenance_print_objfiles (char *, int);
-void
-maintenance_check_symtabs PARAMS ((char *, int));
+void maintenance_check_symtabs (char *, int);
/* maint.c */
-void
-maintenance_print_statistics PARAMS ((char *, int));
+void maintenance_print_statistics (char *, int);
-extern void
-free_symtab PARAMS ((struct symtab *));
+extern void free_symtab (struct symtab *);
/* Symbol-reading stuff in symfile.c and solib.c. */
-extern struct symtab *
- psymtab_to_symtab PARAMS ((struct partial_symtab *));
+extern struct symtab *psymtab_to_symtab (struct partial_symtab *);
-extern void
-clear_solib PARAMS ((void));
+extern void clear_solib (void);
/* source.c */
-extern int
-identify_source_line PARAMS ((struct symtab *, int, int, CORE_ADDR));
+extern int identify_source_line (struct symtab *, int, int, CORE_ADDR);
-extern void
-print_source_lines PARAMS ((struct symtab *, int, int, int));
+extern void print_source_lines (struct symtab *, int, int, int);
-extern void
-forget_cached_source_info PARAMS ((void));
+extern void forget_cached_source_info (void);
-extern void
-select_source_symtab PARAMS ((struct symtab *));
+extern void select_source_symtab (struct symtab *);
-extern char **make_symbol_completion_list PARAMS ((char *, char *));
+extern char **make_symbol_completion_list (char *, char *);
-extern struct symbol **
- make_symbol_overload_list PARAMS ((struct symbol *));
+extern struct symbol **make_symbol_overload_list (struct symbol *);
/* symtab.c */
-extern struct partial_symtab *
- find_main_psymtab PARAMS ((void));
+extern struct partial_symtab *find_main_psymtab (void);
/* blockframe.c */
-extern struct blockvector *
- blockvector_for_pc PARAMS ((CORE_ADDR, int *));
+extern struct blockvector *blockvector_for_pc (CORE_ADDR, int *);
-extern struct blockvector *
- blockvector_for_pc_sect PARAMS ((CORE_ADDR, asection *, int *,
- struct symtab *));
+extern struct blockvector *blockvector_for_pc_sect (CORE_ADDR, asection *,
+ int *, struct symtab *);
/* symfile.c */
-extern void
-clear_symtab_users PARAMS ((void));
+extern void clear_symtab_users (void);
-extern enum language
-deduce_language_from_filename PARAMS ((char *));
+extern enum language deduce_language_from_filename (char *);
/* symtab.c */
-extern int
-in_prologue PARAMS ((CORE_ADDR pc, CORE_ADDR func_start));
+extern int in_prologue (CORE_ADDR pc, CORE_ADDR func_start);
-extern struct symbol *
- fixup_symbol_section PARAMS ((struct symbol *, struct objfile *));
+extern struct symbol *fixup_symbol_section (struct symbol *,
+ struct objfile *);
/* Symbol searching */
@@ -1490,7 +1439,9 @@ struct symbol_search
struct symbol_search *next;
};
-extern void search_symbols PARAMS ((char *, namespace_enum, int, char **, struct symbol_search **));
-extern void free_search_symbols PARAMS ((struct symbol_search *));
+extern void search_symbols (char *, namespace_enum, int, char **,
+ struct symbol_search **);
+extern void free_search_symbols (struct symbol_search *);
+extern struct cleanup *make_cleanup_free_search_symbols (struct symbol_search *);
#endif /* !defined(SYMTAB_H) */
diff --git a/gdb/target.c b/gdb/target.c
index a755f330376..b99055dd513 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -35,57 +35,41 @@
extern int errno;
-static void
-target_info PARAMS ((char *, int));
+static void target_info (char *, int);
-static void
-cleanup_target PARAMS ((struct target_ops *));
+static void cleanup_target (struct target_ops *);
-static void
-maybe_kill_then_create_inferior PARAMS ((char *, char *, char **));
+static void maybe_kill_then_create_inferior (char *, char *, char **);
-static void
-default_clone_and_follow_inferior PARAMS ((int, int *));
+static void default_clone_and_follow_inferior (int, int *);
-static void
-maybe_kill_then_attach PARAMS ((char *, int));
+static void maybe_kill_then_attach (char *, int);
-static void
-kill_or_be_killed PARAMS ((int));
+static void kill_or_be_killed (int);
-static void
-default_terminal_info PARAMS ((char *, int));
+static void default_terminal_info (char *, int);
-static int
-nosymbol PARAMS ((char *, CORE_ADDR *));
+static int nosymbol (char *, CORE_ADDR *);
-static void
-tcomplain PARAMS ((void));
+static void tcomplain (void);
-static int
-nomemory PARAMS ((CORE_ADDR, char *, int, int, struct target_ops *));
+static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *);
-static int
-return_zero PARAMS ((void));
+static int return_zero (void);
-static int
-return_one PARAMS ((void));
+static int return_one (void);
-void
-target_ignore PARAMS ((void));
+void target_ignore (void);
-static void
-target_command PARAMS ((char *, int));
+static void target_command (char *, int);
-static struct target_ops *
-find_default_run_target PARAMS ((char *));
+static struct target_ops *find_default_run_target (char *);
-static void
-update_current_target PARAMS ((void));
+static void update_current_target (void);
-static void nosupport_runtime PARAMS ((void));
+static void nosupport_runtime (void);
-static void normal_target_post_startup_inferior PARAMS ((int pid));
+static void normal_target_post_startup_inferior (int pid);
/* Transfer LEN bytes between target address MEMADDR and GDB address
MYADDR. Returns 0 for success, errno code for failure (which
@@ -94,93 +78,66 @@ static void normal_target_post_startup_inferior PARAMS ((int pid));
target_write_memory_partial). */
static int
-target_xfer_memory PARAMS ((CORE_ADDR memaddr, char *myaddr, int len,
- int write, asection * bfd_section));
+target_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int write);
-static void init_dummy_target PARAMS ((void));
+static void init_dummy_target (void);
-static void
-debug_to_open PARAMS ((char *, int));
+static void debug_to_open (char *, int);
-static void
-debug_to_close PARAMS ((int));
+static void debug_to_close (int);
-static void
-debug_to_attach PARAMS ((char *, int));
+static void debug_to_attach (char *, int);
-static void
-debug_to_detach PARAMS ((char *, int));
+static void debug_to_detach (char *, int);
-static void
-debug_to_resume PARAMS ((int, int, enum target_signal));
+static void debug_to_resume (int, int, enum target_signal);
-static int
-debug_to_wait PARAMS ((int, struct target_waitstatus *));
+static int debug_to_wait (int, struct target_waitstatus *);
-static void
-debug_to_fetch_registers PARAMS ((int));
+static void debug_to_fetch_registers (int);
-static void
-debug_to_store_registers PARAMS ((int));
+static void debug_to_store_registers (int);
-static void
-debug_to_prepare_to_store PARAMS ((void));
+static void debug_to_prepare_to_store (void);
static int
-debug_to_xfer_memory PARAMS ((CORE_ADDR, char *, int, int, struct target_ops *));
+debug_to_xfer_memory (CORE_ADDR, char *, int, int, struct target_ops *);
-static void
-debug_to_files_info PARAMS ((struct target_ops *));
+static void debug_to_files_info (struct target_ops *);
-static int
-debug_to_insert_breakpoint PARAMS ((CORE_ADDR, char *));
+static int debug_to_insert_breakpoint (CORE_ADDR, char *);
-static int
-debug_to_remove_breakpoint PARAMS ((CORE_ADDR, char *));
+static int debug_to_remove_breakpoint (CORE_ADDR, char *);
-static void
-debug_to_terminal_init PARAMS ((void));
+static void debug_to_terminal_init (void);
-static void
-debug_to_terminal_inferior PARAMS ((void));
+static void debug_to_terminal_inferior (void);
-static void
-debug_to_terminal_ours_for_output PARAMS ((void));
+static void debug_to_terminal_ours_for_output (void);
-static void
-debug_to_terminal_ours PARAMS ((void));
+static void debug_to_terminal_ours (void);
-static void
-debug_to_terminal_info PARAMS ((char *, int));
+static void debug_to_terminal_info (char *, int);
-static void
-debug_to_kill PARAMS ((void));
+static void debug_to_kill (void);
-static void
-debug_to_load PARAMS ((char *, int));
+static void debug_to_load (char *, int);
-static int
-debug_to_lookup_symbol PARAMS ((char *, CORE_ADDR *));
+static int debug_to_lookup_symbol (char *, CORE_ADDR *);
-static void
-debug_to_create_inferior PARAMS ((char *, char *, char **));
+static void debug_to_create_inferior (char *, char *, char **);
-static void
-debug_to_mourn_inferior PARAMS ((void));
+static void debug_to_mourn_inferior (void);
-static int
-debug_to_can_run PARAMS ((void));
+static int debug_to_can_run (void);
-static void
-debug_to_notice_signals PARAMS ((int));
+static void debug_to_notice_signals (int);
-static int
-debug_to_thread_alive PARAMS ((int));
+static int debug_to_thread_alive (int);
-static void
-debug_to_stop PARAMS ((void));
+static void debug_to_stop (void);
-static int debug_to_query PARAMS ((int /*char */ , char *, char *, int *));
+static int debug_to_query (int /*char */ , char *, char *, int *);
/* Pointer to array of target architecture structures; the size of the
array; the current index into the array; the allocated size of the
@@ -218,7 +175,7 @@ int attach_flag;
static int targetdebug = 0;
-static void setup_target_debug PARAMS ((void));
+static void setup_target_debug (void);
/* The user just typed 'target' without the name of a target. */
@@ -836,7 +793,7 @@ target_read_string (memaddr, string, len, errnop)
tlen = MIN (len, 4 - (memaddr & 3));
offset = memaddr & 3;
- errcode = target_xfer_memory (memaddr & ~3, buf, 4, 0, NULL);
+ errcode = target_xfer_memory (memaddr & ~3, buf, 4, 0);
if (errcode != 0)
{
/* The transfer request might have crossed the boundary to an
@@ -844,7 +801,7 @@ target_read_string (memaddr, string, len, errnop)
a single byte. */
tlen = 1;
offset = 0;
- errcode = target_xfer_memory (memaddr, buf, 1, 0, NULL);
+ errcode = target_xfer_memory (memaddr, buf, 1, 0);
if (errcode != 0)
goto done;
}
@@ -896,17 +853,7 @@ target_read_memory (memaddr, myaddr, len)
char *myaddr;
int len;
{
- return target_xfer_memory (memaddr, myaddr, len, 0, NULL);
-}
-
-int
-target_read_memory_section (memaddr, myaddr, len, bfd_section)
- CORE_ADDR memaddr;
- char *myaddr;
- int len;
- asection *bfd_section;
-{
- return target_xfer_memory (memaddr, myaddr, len, 0, bfd_section);
+ return target_xfer_memory (memaddr, myaddr, len, 0);
}
int
@@ -915,15 +862,9 @@ target_write_memory (memaddr, myaddr, len)
char *myaddr;
int len;
{
- return target_xfer_memory (memaddr, myaddr, len, 1, NULL);
+ return target_xfer_memory (memaddr, myaddr, len, 1);
}
-/* This variable is used to pass section information down to targets. This
- *should* be done by adding an argument to the target_xfer_memory function
- of all the targets, but I didn't feel like changing 50+ files. */
-
-asection *target_memory_bfd_section = NULL;
-
/* Move memory to or from the targets. Iterate until all of it has
been moved, if necessary. The top target gets priority; anything
it doesn't want, is offered to the next one down, etc. Note the
@@ -935,12 +876,11 @@ asection *target_memory_bfd_section = NULL;
Result is 0 or errno value. */
static int
-target_xfer_memory (memaddr, myaddr, len, write, bfd_section)
+target_xfer_memory (memaddr, myaddr, len, write)
CORE_ADDR memaddr;
char *myaddr;
int len;
int write;
- asection *bfd_section;
{
int curlen;
int res;
@@ -951,8 +891,6 @@ target_xfer_memory (memaddr, myaddr, len, write, bfd_section)
if (len == 0)
return 0;
- target_memory_bfd_section = bfd_section;
-
/* to_xfer_memory is not guaranteed to set errno, even when it returns
0. */
errno = 0;
@@ -2188,7 +2126,7 @@ Use \"info signals\" for a list of symbolic signals.");
}
/* Returns zero to leave the inferior alone, one to interrupt it. */
-int (*target_activity_function) PARAMS ((void));
+int (*target_activity_function) (void);
int target_activity_fd;
/* Convert a normal process ID to a string. Returns the string in a static
@@ -3063,9 +3001,11 @@ static void
do_monitor_command (char *cmd,
int from_tty)
{
- if ((current_target.to_rcmd == (void*) tcomplain)
+ if ((current_target.to_rcmd
+ == (void (*) (char *, struct ui_file *)) tcomplain)
|| (current_target.to_rcmd == debug_to_rcmd
- && (debug_target.to_rcmd == (void*) tcomplain)))
+ && (debug_target.to_rcmd
+ == (void (*) (char *, struct ui_file *)) tcomplain)))
{
error ("\"monitor\" command not supported by this target.\n");
}
diff --git a/gdb/target.h b/gdb/target.h
index 07a94c06c32..5c651496f74 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -301,13 +301,13 @@ enum inferior_event_type
};
/* Return the string for a signal. */
-extern char *target_signal_to_string PARAMS ((enum target_signal));
+extern char *target_signal_to_string (enum target_signal);
/* Return the name (SIGHUP, etc.) for a signal. */
-extern char *target_signal_to_name PARAMS ((enum target_signal));
+extern char *target_signal_to_name (enum target_signal);
/* Given a name (SIGHUP, etc.), return its signal. */
-enum target_signal target_signal_from_name PARAMS ((char *));
+enum target_signal target_signal_from_name (char *);
/* If certain kinds of activity happen, target_wait should perform
@@ -316,7 +316,7 @@ enum target_signal target_signal_from_name PARAMS ((char *));
on TARGET_ACTIVITY_FD. */
extern int target_activity_fd;
/* Returns zero to leave the inferior alone, one to interrupt it. */
-extern int (*target_activity_function) PARAMS ((void));
+extern int (*target_activity_function) (void);
struct thread_info; /* fwd decl for parameter list below: */
@@ -327,19 +327,19 @@ struct target_ops
char *to_doc; /* Documentation. Does not include trailing
newline, and starts with a one-line descrip-
tion (probably similar to to_longname). */
- void (*to_open) PARAMS ((char *, int));
- void (*to_close) PARAMS ((int));
- void (*to_attach) PARAMS ((char *, int));
- void (*to_post_attach) PARAMS ((int));
- void (*to_require_attach) PARAMS ((char *, int));
- void (*to_detach) PARAMS ((char *, int));
- void (*to_require_detach) PARAMS ((int, char *, int));
- void (*to_resume) PARAMS ((int, int, enum target_signal));
- int (*to_wait) PARAMS ((int, struct target_waitstatus *));
- void (*to_post_wait) PARAMS ((int, int));
- void (*to_fetch_registers) PARAMS ((int));
- void (*to_store_registers) PARAMS ((int));
- void (*to_prepare_to_store) PARAMS ((void));
+ void (*to_open) (char *, int);
+ void (*to_close) (int);
+ void (*to_attach) (char *, int);
+ void (*to_post_attach) (int);
+ void (*to_require_attach) (char *, int);
+ void (*to_detach) (char *, int);
+ void (*to_require_detach) (int, char *, int);
+ void (*to_resume) (int, int, enum target_signal);
+ int (*to_wait) (int, struct target_waitstatus *);
+ void (*to_post_wait) (int, int);
+ void (*to_fetch_registers) (int);
+ void (*to_store_registers) (int);
+ void (*to_prepare_to_store) (void);
/* Transfer LEN bytes of memory between GDB address MYADDR and
target address MEMADDR. If WRITE, transfer them to the target, else
@@ -359,9 +359,8 @@ struct target_ops
transfer right at MEMADDR, but we could transfer at least
something at MEMADDR + N. */
- int (*to_xfer_memory) PARAMS ((CORE_ADDR memaddr, char *myaddr,
- int len, int write,
- struct target_ops * target));
+ int (*to_xfer_memory) (CORE_ADDR memaddr, char *myaddr,
+ int len, int write, struct target_ops * target);
#if 0
/* Enable this after 4.12. */
@@ -376,60 +375,62 @@ struct target_ops
If we don't find anything, set *ADDR_FOUND to (CORE_ADDR)0 and
return. */
- void (*to_search) PARAMS ((int len, char *data, char *mask,
- CORE_ADDR startaddr, int increment,
- CORE_ADDR lorange, CORE_ADDR hirange,
- CORE_ADDR * addr_found, char *data_found));
+ void (*to_search) (int len, char *data, char *mask,
+ CORE_ADDR startaddr, int increment,
+ CORE_ADDR lorange, CORE_ADDR hirange,
+ CORE_ADDR * addr_found, char *data_found);
#define target_search(len, data, mask, startaddr, increment, lorange, hirange, addr_found, data_found) \
(*current_target.to_search) (len, data, mask, startaddr, increment, \
lorange, hirange, addr_found, data_found)
#endif /* 0 */
- void (*to_files_info) PARAMS ((struct target_ops *));
- int (*to_insert_breakpoint) PARAMS ((CORE_ADDR, char *));
- int (*to_remove_breakpoint) PARAMS ((CORE_ADDR, char *));
- void (*to_terminal_init) PARAMS ((void));
- void (*to_terminal_inferior) PARAMS ((void));
- void (*to_terminal_ours_for_output) PARAMS ((void));
- void (*to_terminal_ours) PARAMS ((void));
- void (*to_terminal_info) PARAMS ((char *, int));
- void (*to_kill) PARAMS ((void));
- void (*to_load) PARAMS ((char *, int));
- int (*to_lookup_symbol) PARAMS ((char *, CORE_ADDR *));
- void (*to_create_inferior) PARAMS ((char *, char *, char **));
- void (*to_post_startup_inferior) PARAMS ((int));
- void (*to_acknowledge_created_inferior) PARAMS ((int));
- void (*to_clone_and_follow_inferior) PARAMS ((int, int *));
- void (*to_post_follow_inferior_by_clone) PARAMS ((void));
- int (*to_insert_fork_catchpoint) PARAMS ((int));
- int (*to_remove_fork_catchpoint) PARAMS ((int));
- int (*to_insert_vfork_catchpoint) PARAMS ((int));
- int (*to_remove_vfork_catchpoint) PARAMS ((int));
- int (*to_has_forked) PARAMS ((int, int *));
- int (*to_has_vforked) PARAMS ((int, int *));
- int (*to_can_follow_vfork_prior_to_exec) PARAMS ((void));
- void (*to_post_follow_vfork) PARAMS ((int, int, int, int));
- int (*to_insert_exec_catchpoint) PARAMS ((int));
- int (*to_remove_exec_catchpoint) PARAMS ((int));
- int (*to_has_execd) PARAMS ((int, char **));
- int (*to_reported_exec_events_per_exec_call) PARAMS ((void));
- int (*to_has_syscall_event) PARAMS ((int, enum target_waitkind *, int *));
- int (*to_has_exited) PARAMS ((int, int, int *));
- void (*to_mourn_inferior) PARAMS ((void));
- int (*to_can_run) PARAMS ((void));
- void (*to_notice_signals) PARAMS ((int pid));
- int (*to_thread_alive) PARAMS ((int pid));
- void (*to_find_new_threads) PARAMS ((void));
- char *(*to_pid_to_str) PARAMS ((int));
- char *(*to_extra_thread_info) PARAMS ((struct thread_info *));
- void (*to_stop) PARAMS ((void));
- int (*to_query) PARAMS ((int /*char */ , char *, char *, int *));
+ void (*to_files_info) (struct target_ops *);
+ int (*to_insert_breakpoint) (CORE_ADDR, char *);
+ int (*to_remove_breakpoint) (CORE_ADDR, char *);
+ void (*to_terminal_init) (void);
+ void (*to_terminal_inferior) (void);
+ void (*to_terminal_ours_for_output) (void);
+ void (*to_terminal_ours) (void);
+ void (*to_terminal_info) (char *, int);
+ void (*to_kill) (void);
+ void (*to_load) (char *, int);
+ int (*to_lookup_symbol) (char *, CORE_ADDR *);
+ void (*to_create_inferior) (char *, char *, char **);
+ void (*to_post_startup_inferior) (int);
+ void (*to_acknowledge_created_inferior) (int);
+ void (*to_clone_and_follow_inferior) (int, int *);
+ void (*to_post_follow_inferior_by_clone) (void);
+ int (*to_insert_fork_catchpoint) (int);
+ int (*to_remove_fork_catchpoint) (int);
+ int (*to_insert_vfork_catchpoint) (int);
+ int (*to_remove_vfork_catchpoint) (int);
+ int (*to_has_forked) (int, int *);
+ int (*to_has_vforked) (int, int *);
+ int (*to_can_follow_vfork_prior_to_exec) (void);
+ void (*to_post_follow_vfork) (int, int, int, int);
+ int (*to_insert_exec_catchpoint) (int);
+ int (*to_remove_exec_catchpoint) (int);
+ int (*to_has_execd) (int, char **);
+ int (*to_reported_exec_events_per_exec_call) (void);
+ int (*to_has_syscall_event) (int, enum target_waitkind *, int *);
+ int (*to_has_exited) (int, int, int *);
+ void (*to_mourn_inferior) (void);
+ int (*to_can_run) (void);
+ void (*to_notice_signals) (int pid);
+ int (*to_thread_alive) (int pid);
+ void (*to_find_new_threads) (void);
+ char *(*to_pid_to_str) (int);
+ char *(*to_extra_thread_info) (struct thread_info *);
+ void (*to_stop) (void);
+ int (*to_query) (int /*char */ , char *, char *, int *);
void (*to_rcmd) (char *command, struct ui_file *output);
- struct symtab_and_line *(*to_enable_exception_callback) PARAMS ((enum exception_event_kind, int));
- struct exception_event_record *(*to_get_current_exception_event) PARAMS ((void));
- char *(*to_pid_to_exec_file) PARAMS ((int pid));
- char *(*to_core_file_to_sym_file) PARAMS ((char *));
+ struct symtab_and_line *(*to_enable_exception_callback) (enum
+ exception_event_kind,
+ int);
+ struct exception_event_record *(*to_get_current_exception_event) (void);
+ char *(*to_pid_to_exec_file) (int pid);
+ char *(*to_core_file_to_sym_file) (char *);
enum strata to_stratum;
struct target_ops
*DONT_USE; /* formerly to_next */
@@ -537,8 +538,7 @@ extern struct target_stack_item *target_stack;
typed by the user (e.g. a signal to send the process). FROM_TTY
says whether to be verbose or not. */
-extern void
-target_detach PARAMS ((char *, int));
+extern void target_detach (char *, int);
/* Detaches from a process on the target side, if not already dettached.
(If already detached, takes no action.)
@@ -608,24 +608,16 @@ target_detach PARAMS ((char *, int));
#define target_prepare_to_store() \
(*current_target.to_prepare_to_store) ()
-extern int
-target_read_string PARAMS ((CORE_ADDR, char **, int, int *));
-
-extern int
-target_read_memory PARAMS ((CORE_ADDR memaddr, char *myaddr, int len));
+extern int target_read_string (CORE_ADDR, char **, int, int *);
-extern int
-target_read_memory_section PARAMS ((CORE_ADDR memaddr, char *myaddr, int len,
- asection * bfd_section));
+extern int target_read_memory (CORE_ADDR memaddr, char *myaddr, int len);
-extern int
-target_write_memory PARAMS ((CORE_ADDR, char *, int));
+extern int target_write_memory (CORE_ADDR, char *, int);
-extern int
-xfer_memory PARAMS ((CORE_ADDR, char *, int, int, struct target_ops *));
+extern int xfer_memory (CORE_ADDR, char *, int, int, struct target_ops *);
extern int
-child_xfer_memory PARAMS ((CORE_ADDR, char *, int, int, struct target_ops *));
+child_xfer_memory (CORE_ADDR, char *, int, int, struct target_ops *);
/* Make a single attempt at transfering LEN bytes. On a successful
transfer, the number of bytes actually transfered is returned and
@@ -639,84 +631,59 @@ target_read_memory_partial (CORE_ADDR addr, char *buf, int len, int *err);
extern int
target_write_memory_partial (CORE_ADDR addr, char *buf, int len, int *err);
-extern char *
-child_pid_to_exec_file PARAMS ((int));
+extern char *child_pid_to_exec_file (int);
-extern char *
-child_core_file_to_sym_file PARAMS ((char *));
+extern char *child_core_file_to_sym_file (char *);
#if defined(CHILD_POST_ATTACH)
-extern void
-child_post_attach PARAMS ((int));
+extern void child_post_attach (int);
#endif
-extern void
-child_post_wait PARAMS ((int, int));
+extern void child_post_wait (int, int);
-extern void
-child_post_startup_inferior PARAMS ((int));
+extern void child_post_startup_inferior (int);
-extern void
-child_acknowledge_created_inferior PARAMS ((int));
+extern void child_acknowledge_created_inferior (int);
-extern void
-child_clone_and_follow_inferior PARAMS ((int, int *));
+extern void child_clone_and_follow_inferior (int, int *);
-extern void
-child_post_follow_inferior_by_clone PARAMS ((void));
+extern void child_post_follow_inferior_by_clone (void);
-extern int
-child_insert_fork_catchpoint PARAMS ((int));
+extern int child_insert_fork_catchpoint (int);
-extern int
-child_remove_fork_catchpoint PARAMS ((int));
+extern int child_remove_fork_catchpoint (int);
-extern int
-child_insert_vfork_catchpoint PARAMS ((int));
+extern int child_insert_vfork_catchpoint (int);
-extern int
-child_remove_vfork_catchpoint PARAMS ((int));
+extern int child_remove_vfork_catchpoint (int);
-extern int
-child_has_forked PARAMS ((int, int *));
+extern int child_has_forked (int, int *);
-extern int
-child_has_vforked PARAMS ((int, int *));
+extern int child_has_vforked (int, int *);
-extern void
-child_acknowledge_created_inferior PARAMS ((int));
+extern void child_acknowledge_created_inferior (int);
-extern int
-child_can_follow_vfork_prior_to_exec PARAMS ((void));
+extern int child_can_follow_vfork_prior_to_exec (void);
-extern void
-child_post_follow_vfork PARAMS ((int, int, int, int));
+extern void child_post_follow_vfork (int, int, int, int);
-extern int
-child_insert_exec_catchpoint PARAMS ((int));
+extern int child_insert_exec_catchpoint (int);
-extern int
-child_remove_exec_catchpoint PARAMS ((int));
+extern int child_remove_exec_catchpoint (int);
-extern int
-child_has_execd PARAMS ((int, char **));
+extern int child_has_execd (int, char **);
-extern int
-child_reported_exec_events_per_exec_call PARAMS ((void));
+extern int child_reported_exec_events_per_exec_call (void);
-extern int
-child_has_syscall_event PARAMS ((int, enum target_waitkind *, int *));
+extern int child_has_syscall_event (int, enum target_waitkind *, int *);
-extern int
-child_has_exited PARAMS ((int, int, int *));
+extern int child_has_exited (int, int, int *);
-extern int
-child_thread_alive PARAMS ((int));
+extern int child_thread_alive (int);
/* From exec.c */
-extern void
-print_section_info PARAMS ((struct target_ops *, bfd *));
+extern void print_section_info (struct target_ops *, bfd *);
/* Print a line about the current target. */
@@ -1090,7 +1057,7 @@ extern void target_load (char *arg, int from_tty);
extern int target_async_mask (int mask);
-extern void target_link PARAMS ((char *, CORE_ADDR *));
+extern void target_link (char *, CORE_ADDR *);
/* Converts a process id to a string. Usually, the string just contains
`process xyz', but on some systems it may contain
@@ -1102,7 +1069,7 @@ extern void target_link PARAMS ((char *, CORE_ADDR *));
#ifndef target_tid_to_str
#define target_tid_to_str(PID) \
target_pid_to_str (PID)
-extern char *normal_pid_to_str PARAMS ((int pid));
+extern char *normal_pid_to_str (int pid);
#endif
/* Return a short string describing extra information about PID,
@@ -1135,7 +1102,7 @@ extern char *normal_pid_to_str PARAMS ((int pid));
* can receive this notification (something like with signal handlers).
*/
-extern void (*target_new_objfile_hook) PARAMS ((struct objfile *));
+extern void (*target_new_objfile_hook) (struct objfile *);
#ifndef target_pid_or_tid_to_str
#define target_pid_or_tid_to_str(ID) \
@@ -1290,20 +1257,15 @@ extern void (*target_new_objfile_hook) PARAMS ((struct objfile *));
pop_target: Remove the top thing on the stack of current targets. */
-extern void
-add_target PARAMS ((struct target_ops *));
+extern void add_target (struct target_ops *);
-extern int
-push_target PARAMS ((struct target_ops *));
+extern int push_target (struct target_ops *);
-extern int
-unpush_target PARAMS ((struct target_ops *));
+extern int unpush_target (struct target_ops *);
-extern void
-target_preopen PARAMS ((int));
+extern void target_preopen (int);
-extern void
-pop_target PARAMS ((void));
+extern void pop_target (void);
/* Struct section_table maps address ranges to file sections. It is
mostly used with BFD files, but can be used without (e.g. for handling
@@ -1323,60 +1285,45 @@ struct section_table
Returns 0 if OK, 1 on error. */
extern int
-build_section_table PARAMS ((bfd *, struct section_table **,
- struct section_table **));
+build_section_table (bfd *, struct section_table **, struct section_table **);
/* From mem-break.c */
-extern int memory_remove_breakpoint PARAMS ((CORE_ADDR, char *));
+extern int memory_remove_breakpoint (CORE_ADDR, char *);
-extern int memory_insert_breakpoint PARAMS ((CORE_ADDR, char *));
+extern int memory_insert_breakpoint (CORE_ADDR, char *);
-extern int default_memory_remove_breakpoint PARAMS ((CORE_ADDR, char *));
+extern int default_memory_remove_breakpoint (CORE_ADDR, char *);
-extern int default_memory_insert_breakpoint PARAMS ((CORE_ADDR, char *));
+extern int default_memory_insert_breakpoint (CORE_ADDR, char *);
extern breakpoint_from_pc_fn memory_breakpoint_from_pc;
-#ifndef BREAKPOINT_FROM_PC
-#define BREAKPOINT_FROM_PC(pcptr, lenptr) \
- memory_breakpoint_from_pc (pcptr, lenptr)
-#endif
/* From target.c */
-extern void
-initialize_targets PARAMS ((void));
+extern void initialize_targets (void);
-extern void
-noprocess PARAMS ((void));
+extern void noprocess (void);
-extern void
-find_default_attach PARAMS ((char *, int));
+extern void find_default_attach (char *, int);
-extern void
-find_default_require_attach PARAMS ((char *, int));
+extern void find_default_require_attach (char *, int);
-extern void
-find_default_require_detach PARAMS ((int, char *, int));
+extern void find_default_require_detach (int, char *, int);
-extern void
-find_default_create_inferior PARAMS ((char *, char *, char **));
+extern void find_default_create_inferior (char *, char *, char **);
-extern void
-find_default_clone_and_follow_inferior PARAMS ((int, int *));
+extern void find_default_clone_and_follow_inferior (int, int *);
-extern struct target_ops *
-find_run_target PARAMS ((void));
+extern struct target_ops *find_run_target (void);
-extern struct target_ops *
-find_core_target PARAMS ((void));
+extern struct target_ops *find_core_target (void);
-extern struct target_ops *
-find_target_beneath PARAMS ((struct target_ops *));
+extern struct target_ops *find_target_beneath (struct target_ops *);
extern int
-target_resize_to_sections PARAMS ((struct target_ops *target, int num_added));
+target_resize_to_sections (struct target_ops *target, int num_added);
extern void remove_target_sections (bfd *abfd);
@@ -1392,12 +1339,11 @@ extern int baud_rate;
/* Timeout limit for response from target. */
extern int remote_timeout;
-extern asection *target_memory_bfd_section;
/* Functions for helping to write a native target. */
/* This is for native targets which use a unix/POSIX-style waitstatus. */
-extern void store_waitstatus PARAMS ((struct target_waitstatus *, int));
+extern void store_waitstatus (struct target_waitstatus *, int);
/* Predicate to target_signal_to_host(). Return non-zero if the enum
targ_signal SIGNO has an equivalent ``host'' representation. */
@@ -1418,14 +1364,14 @@ extern int target_signal_to_host_p (enum target_signal signo);
gdb_signal'' would probably be better as it is refering to GDB's
internal representation of a target operating system's signal. */
-extern enum target_signal target_signal_from_host PARAMS ((int));
-extern int target_signal_to_host PARAMS ((enum target_signal));
+extern enum target_signal target_signal_from_host (int);
+extern int target_signal_to_host (enum target_signal);
/* Convert from a number used in a GDB command to an enum target_signal. */
-extern enum target_signal target_signal_from_command PARAMS ((int));
+extern enum target_signal target_signal_from_command (int);
/* Any target can call this to switch to remote protocol (in remote.c). */
-extern void push_remote_target PARAMS ((char *name, int from_tty));
+extern void push_remote_target (char *name, int from_tty);
/* Imported from machine dependent code */
@@ -1436,7 +1382,7 @@ extern void push_remote_target PARAMS ((char *name, int from_tty));
#endif /* SOFTWARE_SINGLE_STEP_P */
/* Blank target vector entries are initialized to target_ignore. */
-void target_ignore PARAMS ((void));
+void target_ignore (void);
/* Macro for getting target's idea of a frame pointer.
FIXME: GDB's whole scheme for dealing with "frames" and
diff --git a/gdb/terminal.h b/gdb/terminal.h
index b7644375f08..7bdf84fd86d 100644
--- a/gdb/terminal.h
+++ b/gdb/terminal.h
@@ -77,7 +77,7 @@
#endif /* sgtty */
#endif
-extern void new_tty PARAMS ((void));
+extern void new_tty (void);
/* Do we have job control? Can be assumed to always be the same within
a given run of GDB. In inflow.c. */
@@ -85,6 +85,6 @@ extern int job_control;
/* Set the process group of the caller to its own pid, or do nothing if
we lack job control. */
-extern int gdb_setpgid PARAMS ((void));
+extern int gdb_setpgid (void);
#endif /* !defined (TERMINAL_H) */
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 2617a2dd07c..cfe54cedf6c 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,80 @@
+2000-06-03 Daniel Berlin <dan@cgsoftware.com>
+
+ * gdb.c++/templates.exp (do_tests): Make all of these work under
+ g++, and stop skipping them.
+
+ * gdb.c++/namespace.exp: Move from gdb.hp/gdb.aCC to here, make it
+ work under g++.
+
+ * gdb.c++/misc.cc: Fix ambiguous initialization with correct initialization.
+
+
+2000-05-18 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * gdb.base/annota1.exp (annotate-signal-handler-caller):
+ Relax the regular expression a little, make it pass on Solaris 8.
+
+2000-05-12 Kevin Buettner <kevinb@redhat.com>
+
+ * gdb.base/step-test.exp: On IA-64 targets, when stepping out of
+ a call, do not require that gdb stop on the line after the call.
+ Instead, it is permissible for gdb to stop on the line of the
+ call itself.
+
+2000-05-12 Michael Snyder <msnyder@.cygnus.com>
+
+ * gdb.base/break.exp (bp on small function, optimized file):
+ Add a second pass pattern. The behavior differs here between stabs
+ and dwarf for one-line functions. Stabs preserves two line symbols
+ (one before the prologue and one after) with the same line number,
+ but dwarf regards these as duplicates and discards one of them.
+ Therefore the address after the prologue (where the breakpoint is)
+ has no exactly matching line symbol, and GDB reports the breakpoint
+ as if it were in the middle of a line rather than at the beginning.
+
+2000-05-08 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * gdb.base/interrupt.exp: Make "pass" message say "send"
+ rather than "send_gdb" (for consistancy).
+
+Mon May 1 15:37:58 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ From 2000-04-28 Andreas Jaeger <aj@suse.de>:
+ * gdb.c++/templates.cc: Properly check for GCC version number.
+ * lib/compiler.cc: Likewise
+
+2000-04-28 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * gdb.base/break.exp: When compiled with -O2 optimization,
+ gdb may not stop at the first line of main, due to code motion.
+
+2000-04-26 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * gdb.base/call-ar-st.exp: Bail out if target is sparclet.
+ This test depends on parsing the printf output from the target.
+ Since the sparclet stub doesn't do stdio, this will never work.
+ * gdb.base/call-rt-st.exp: ditto.
+ * gdb.base/call-strs: ditto.
+
+2000-04-24 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * gdb.base/miscexprs.exp: make sizeof long array test portable.
+
+ * gdb.base/ending-run.exp: After connecting to a remote target,
+ but before running, the target will appear to be in a random
+ location. Specify both a file and a line for breakpoints.
+ Also, the function that calls main may be called 'init'
+ rather than 'start'.
+
+2000-04-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
+
+ * gdb.base/help.exp: Update output for add-symbol-file command.
+
+2000-04-10 Fernando Nasser <fnasser@cygnus.com>
+
+ From Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+ * gdb.base/structs2.c: Support platforms defaulting to a unsigned char.
+
2000-04-07 J.T. Conklin <jtc@redback.com>
* gdb.base/call-ar-st.exp: Relax patterns matching tab characters.
diff --git a/gdb/testsuite/gdb.base/annota1.exp b/gdb/testsuite/gdb.base/annota1.exp
index 9791a9c4e27..d38858d0044 100644
--- a/gdb/testsuite/gdb.base/annota1.exp
+++ b/gdb/testsuite/gdb.base/annota1.exp
@@ -277,10 +277,11 @@ match_max 3000
verbose "match_max now is: [match_max]"
send_gdb "backtrace\n"
gdb_expect {
- -re "frame-begin 0 $hex.*0.*frame-end.*frame-begin 1 $hex.*1.*(\032\032signal-handler-caller\r\n.signal handler called.\r\n\r\n)*\032\032frame-end\r\n\r\n\032\032frame-begin 2 $hex.*2.*(frame-begin 3 $hex.*3.*)*frame-end.*$gdb_prompt$" \
- { pass "backtrace @ signal handler" }
- -re ".*$gdb_prompt$" { fail "backtrace @ signal handler" }
- timeout { fail "backtrace @ signal handler (timeout)" }
+ -re "frame-begin 0 $hex\r\n#0.*frame-end.*frame-begin 1 $hex\r\n#1.*(\032\032signal-handler-caller\r\n.signal handler called.\r\n\r\n)*\032\032frame-end\r\n\r\n\032\032frame-begin 2 $hex\r\n#2.*(frame-begin 3 $hex\r\n#3.*)*frame-end.*$gdb_prompt$" {
+ pass "backtrace @ signal handler"
+ }
+ -re ".*$gdb_prompt$" { fail "backtrace @ signal handler" }
+ timeout { fail "backtrace @ signal handler (timeout)" }
}
#
diff --git a/gdb/testsuite/gdb.base/break.exp b/gdb/testsuite/gdb.base/break.exp
index ce36c21bccd..aa9fba55716 100644
--- a/gdb/testsuite/gdb.base/break.exp
+++ b/gdb/testsuite/gdb.base/break.exp
@@ -858,6 +858,8 @@ if ![target_info exists use_gdb_stub] {
}
-re "Starting program.*Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$srcfile:75.*75\[\t \]+if .argc.* \{.*$gdb_prompt $"\
{ pass "run until function breakpoint, optimized file" }
+ -re "Starting program.*Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$gdb_prompt $"\
+ { pass "run until function breakpoint, optimized file (code motion)" }
-re ".*$gdb_prompt $" { fail "run until function breakpoint, optimized file" }
timeout { fail "run until function breakpoint, optimized file (timeout)" }
}
@@ -870,8 +872,31 @@ if ![target_info exists use_gdb_stub] {
#
# run until the breakpoint at a small function
#
-gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, marker4 \\(d=177601976\\) at .*$srcfile:51.*51\[\t \]+void.*marker4.*" \
- "run until breakpoint set at small function, optimized file"
+
+#
+# Add a second pass pattern. The behavior differs here between stabs
+# and dwarf for one-line functions. Stabs preserves two line symbols
+# (one before the prologue and one after) with the same line number,
+# but dwarf regards these as duplicates and discards one of them.
+# Therefore the address after the prologue (where the breakpoint is)
+# has no exactly matching line symbol, and GDB reports the breakpoint
+# as if it were in the middle of a line rather than at the beginning.
+
+send_gdb "continue\n"
+gdb_expect {
+ -re "Breakpoint $decimal, marker4 \\(d=177601976\\) at .*$srcfile:51\[\r\n\]+51\[\t \]+void marker4.*" {
+ pass "run until breakpoint set at small function, optimized file"
+ }
+ -re "Breakpoint $decimal, $hex in marker4 \\(d=177601976\\) at .*$srcfile:51\[\r\n\]+51\[\t \]+void marker4.*" {
+ pass "run until breakpoint set at small function, optimized file"
+ }
+ -re ".*$gdb_prompt " {
+ fail "run until breakpoint set at small function, optimized file"
+ }
+ timeout {
+ fail "run until breakpoint set at small function, optimized file (timeout)"
+ }
+}
# Reset the default arguments for VxWorks
diff --git a/gdb/testsuite/gdb.base/call-ar-st.exp b/gdb/testsuite/gdb.base/call-ar-st.exp
index 6e90ecde24f..3744528db8d 100644
--- a/gdb/testsuite/gdb.base/call-ar-st.exp
+++ b/gdb/testsuite/gdb.base/call-ar-st.exp
@@ -32,6 +32,10 @@ set testfile "call-ar-st"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
+# Test depends on printf, which the sparclet stub doesn't support.
+if { [istarget "sparclet-*-*"] } {
+ return 0;
+}
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."
@@ -568,4 +572,4 @@ gdb_expect {
return
-~
+
diff --git a/gdb/testsuite/gdb.base/call-rt-st.exp b/gdb/testsuite/gdb.base/call-rt-st.exp
index a1cca708c50..3838269191f 100644
--- a/gdb/testsuite/gdb.base/call-rt-st.exp
+++ b/gdb/testsuite/gdb.base/call-rt-st.exp
@@ -36,6 +36,11 @@ set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
+# Test depends on printf, which the sparclet stub doesn't support.
+if { [istarget "sparclet-*-*"] } {
+ return 0;
+}
+
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } {
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
diff --git a/gdb/testsuite/gdb.base/call-strs.exp b/gdb/testsuite/gdb.base/call-strs.exp
index 84c1ef5c5b7..5e6cbff6ecd 100644
--- a/gdb/testsuite/gdb.base/call-strs.exp
+++ b/gdb/testsuite/gdb.base/call-strs.exp
@@ -37,6 +37,11 @@ set testfile "call-strs"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
+# Test depends on printf, which the sparclet stub doesn't support.
+if { [istarget "sparclet-*-*"] } {
+ return 0;
+}
+
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."
}
@@ -91,6 +96,7 @@ send_gdb "set print sevenbit-strings\n" ; gdb_expect -re "$gdb_prompt $"
send_gdb "set print address off\n" ; gdb_expect -re "$gdb_prompt $"
send_gdb "set width 0\n" ; gdb_expect -re "$gdb_prompt $"
+set timeout 120
if ![runto_main] then {
perror "couldn't run to breakpoint"
diff --git a/gdb/testsuite/gdb.base/ending-run.exp b/gdb/testsuite/gdb.base/ending-run.exp
index ec0ea644e9d..089a8a51058 100644
--- a/gdb/testsuite/gdb.base/ending-run.exp
+++ b/gdb/testsuite/gdb.base/ending-run.exp
@@ -51,12 +51,16 @@ gdb_load ${binfile}
# first line in the routine, which turns out to correspond
# to the prolog--that's another bug...)
#
-gdb_test "b 1" ".*Breakpoint.*line 1.*" "bpt at line before routine"
-gdb_test "b 13" ".*Note.*also.*Breakpoint.*2.*"
+
+gdb_test "b ending-run.c:1" ".*Breakpoint.*ending-run.c, line 1.*" \
+ "bpt at line before routine"
+
+gdb_test "b ending-run.c:13" \
+ ".*Note.*also.*Breakpoint 2.*ending-run.c, line 13.*"
# Set up to go to the next-to-last line of the program
#
-gdb_test "b 31" ".*Breakpoint.*3.*"
+gdb_test "b ending-run.c:31" ".*Breakpoint 3.*ending-run.c, line 31.*"
# Expect to hit the bp at line "1", but symbolize this
# as line "13". Then try to clear it--this should work.
@@ -76,11 +80,12 @@ gdb_expect {
# Test some other "clear" combinations
#
-gdb_test "b 1" ".*Breakpoint.*4.*"
-gdb_test "b 13" ".*Note.*also.*Breakpoint.*5.*"
-gdb_test "cle 13" ".*Deleted breakpoint 5.*" "Only cleared 1 by line"
+gdb_test "b ending-run.c:1" ".*Breakpoint.*4.*"
+gdb_test "b ending-run.c:13" ".*Note.*also.*Breakpoint.*5.*"
+gdb_test "cle ending-run.c:13" \
+ ".*Deleted breakpoint 5.*" "Only cleared 1 by line"
-send_gdb "inf line 13\n"
+send_gdb "inf line ending-run.c:13\n"
gdb_expect {
-re ".*address (0x\[0-9a-fA-F]*).*$gdb_prompt $" {
set line_eight $expect_out(1,string)
@@ -92,12 +97,12 @@ gdb_expect {
}
}
-send_gdb "inf line 14\n"
+send_gdb "inf line ending-run.c:14\n"
gdb_expect {
-re ".*address (0x\[0-9a-fA-F]*).*$gdb_prompt $" {
set line_nine $expect_out(1,string)
- gdb_test "b 14" ".*Breakpoint.*7.*"
- gdb_test "b *$line_nine" ".*Note.*also.*Breakpoint.*8.*"
+ gdb_test "b ending-run.c:14" ".*Breakpoint 7.*ending-run.c, line 14.*"
+ gdb_test "b *$line_nine" ".*Note.*also.*Breakpoint 8.*"
gdb_test "c" ".*Breakpoint.*7.*callee.*14.*"
gdb_test "cle" ".*Deleted breakpoints 8 7.*" "Clear 2 by default"
}
@@ -141,6 +146,10 @@ gdb_expect {
-re ".*in.*start.*$gdb_prompt $" {
pass "step out of main"
}
+ -re ".*in.*init.*$gdb_prompt $" {
+ # This is what happens on sparc64-elf ultra.
+ pass "step out of main"
+ }
-re ".*in .nope ().*$gdb_prompt $" {
# This is what happens on Solaris currently -sts 1999-08-25
pass "step out of main on Solaris"
diff --git a/gdb/testsuite/gdb.base/help.exp b/gdb/testsuite/gdb.base/help.exp
index 9515132daed..f92923f29b2 100644
--- a/gdb/testsuite/gdb.base/help.exp
+++ b/gdb/testsuite/gdb.base/help.exp
@@ -34,7 +34,7 @@ gdb_test "set height 400" "" "test set height"
# use a larger expect input buffer for long help outputs.
# test help add-symbol-file
-gdb_test "help add-symbol-file" "Usage: add-symbol-file FILE ADDR .*DATA_ADDR .*BSS_ADDR.*\[\r\n\]+or: add-symbol-file FILE -T<SECT> <SECT_ADDR> -T<SECT> <SECT_ADDR> ....*\[\r\n\]+Load the symbols from FILE, assuming FILE has been dynamically loaded..*\[\r\n\]+ADDR is the starting address of the file's text..*\[\r\n\]+The optional arguments, DATA_ADDR and BSS_ADDR, should be specified.*\[\r\n\]+if the data and bss segments are not contiguous with the text..*\[\r\n\]+For complicated cases, SECT is a section name to be loaded at SECT_ADDR." "help add-symbol-file"
+gdb_test "help add-symbol-file" "Usage: add-symbol-file FILE ADDR .-s <SECT> <SECT_ADDR> -s <SECT> <SECT_ADDR> ....*\[\r\n\]+Load the symbols from FILE, assuming FILE has been dynamically loaded..*\[\r\n\]+ADDR is the starting address of the file's text..*\[\r\n\]+The optional arguments are section-name section-address pairs and.*\[\r\n\]+should be specified if the data and bss segments are not contiguous.*\[\r\n\]+with the text. SECT is a section name to be loaded at SECT_ADDR." "help add-symbol-file"
# test help aliases
gdb_test "help aliases" "Aliases of other commands..*\[\r\n\]+List of commands\:.*\[\r\n\]+Type \"help\" followed by command name for full documentation..*\[\r\n\]+Command name abbreviations are allowed if unambiguous." "help aliases"
gdb_test "help attach" "Attach to a process or file outside of GDB..*\[\r\n\]+This command attaches to another target, of the same type as your last.*\[\r\n\]+\"target\" command .\"info files\" will show your target stack.*\[\r\n\]+The command may take as argument a process id or a device file..*\[\r\n\]+For a process id, you must have permission to send the process a signal,.*\[\r\n\]+and it must have the same effective uid as the debugger..*\[\r\n\]+When using \"attach\" with a process id, the debugger finds the.*\[\r\n\]+program running in the process, looking first in the current working.*\[\r\n\]+directory, or .if not found there. using the source file search path.*\[\r\n\]+\\(see the \"directory\" command\\). You can also use the \"file\" command.*\[\r\n\]+to specify the program, and to load its symbol table." "help attach"
diff --git a/gdb/testsuite/gdb.base/interrupt.exp b/gdb/testsuite/gdb.base/interrupt.exp
index c2ad284f8e3..7923c4a4004 100644
--- a/gdb/testsuite/gdb.base/interrupt.exp
+++ b/gdb/testsuite/gdb.base/interrupt.exp
@@ -173,7 +173,7 @@ if ![file exists $binfile] then {
send_gdb "\004"
gdb_expect {
-re "end of file.*Program exited normally.*$gdb_prompt $" {
- pass "send_gdb end of file"
+ pass "send end of file"
}
-re "$gdb_prompt $" { fail "send end of file" }
timeout { fail "send end of file (timeout)" }
diff --git a/gdb/testsuite/gdb.base/miscexprs.exp b/gdb/testsuite/gdb.base/miscexprs.exp
index 97784232c4d..f7a5fd26a6e 100644
--- a/gdb/testsuite/gdb.base/miscexprs.exp
+++ b/gdb/testsuite/gdb.base/miscexprs.exp
@@ -258,27 +258,14 @@ gdb_expect {
}
-if [istarget "hppa2.0w*-*-*"] then {
-send_gdb "print sizeof(lbig)\n"
+send_gdb "print sizeof(lbig)/sizeof(long)\n"
gdb_expect {
- -re ".\[0-9\]* = 7200.*$gdb_prompt $" {
- pass "print value of sizeof(lbig)"
+ -re ".\[0-9\]* = 900.*$gdb_prompt $" {
+ pass "print value of sizeof(lbig)/sizeof(long)"
}
- -re ".*$gdb_prompt $" { fail "print value of sizeof(lbig)" }
- timeout { fail "(timeout) print value of sizeof(lbig)" }
+ -re ".*$gdb_prompt $" { fail "print value of sizeof(lbig)/sizeof(long)" }
+ timeout { fail "(timeout) print value of sizeof(lbig)/sizeof(long)" }
}
-}
-
-if ![istarget "hppa2.0w*-*-*"] then {
-send_gdb "print sizeof(lbig)\n"
-gdb_expect {
- -re ".\[0-9\]* = 3600.*$gdb_prompt $" {
- pass "print value of sizeof(lbig)"
- }
- -re ".*$gdb_prompt $" { fail "print value of sizeof(lbig)" }
- timeout { fail "(timeout) print value of sizeof(lbig)" }
- }
-}
send_gdb "print ibig.i\[100\] << 2\n"
gdb_expect {
diff --git a/gdb/testsuite/gdb.base/step-test.exp b/gdb/testsuite/gdb.base/step-test.exp
index 47d4572e91a..652192a490c 100644
--- a/gdb/testsuite/gdb.base/step-test.exp
+++ b/gdb/testsuite/gdb.base/step-test.exp
@@ -75,8 +75,10 @@ gdb_test "step" ".*${decimal}.*myglob.*" "step into"
# instruction, which is attributed to the line containing the function
# call?
-# On PA64 we end up at a different instruction than PA32
-if { [istarget "hppa2.0w-hp-hpux*"] } {
+# On PA64, we end up at a different instruction than PA32.
+# On IA-64, we also end up on callee instead of on the next line due
+# to the restoration of the global pointer (which is a caller-save).
+if { [istarget "hppa2.0w-hp-hpux*"] || [istarget "ia64-*-*"]} {
send_gdb "finish\n"
gdb_expect {
-re ".*${decimal}.*a.*5.*= a.*3.*$gdb_prompt $" { pass "step out 1" }
@@ -171,8 +173,10 @@ gdb_expect {
pass "stepi: finish call"
}
-re ".*${decimal}.*callee.*STEPI.*$gdb_prompt $" {
- # On PA64 we end up at a different instruction than PA32
- if { [istarget "hppa2.0w-hp-hpux*"] } {
+ # On PA64, we end up at a different instruction than PA32.
+ # On IA-64, we end up on callee instead of on the following line due
+ # to the restoration of the global pointer.
+ if { [istarget "hppa2.0w-hp-hpux*"] || [istarget "ia64-*-*"] } {
pass "stepi: finish call 2"
} else {
fail "stepi: finish call 2"
diff --git a/gdb/testsuite/gdb.base/structs2.c b/gdb/testsuite/gdb.base/structs2.c
index f9f59e91421..f1eeab1adc2 100644
--- a/gdb/testsuite/gdb.base/structs2.c
+++ b/gdb/testsuite/gdb.base/structs2.c
@@ -1,6 +1,6 @@
/* pr 13536 */
-static void param_reg (register char pr_char,
+static void param_reg (register signed char pr_char,
register unsigned char pr_uchar,
register short pr_short,
register unsigned short pr_ushort);
@@ -25,7 +25,7 @@ main ()
static void dummy () {}
static void
-param_reg(register char pr_char,
+param_reg(register signed char pr_char,
register unsigned char pr_uchar,
register short pr_short,
register unsigned short pr_ushort)
diff --git a/gdb/testsuite/gdb.c++/Makefile.in b/gdb/testsuite/gdb.c++/Makefile.in
index 58ef94bf233..ee8e2635cbf 100644
--- a/gdb/testsuite/gdb.c++/Makefile.in
+++ b/gdb/testsuite/gdb.c++/Makefile.in
@@ -3,7 +3,7 @@ srcdir = @srcdir@
EXECUTABLES = ambiguous annota2 anon-union cplusfuncs cttiadd \
derivation inherit local member-ptr method misc \
- overload ovldbreak ref-typ ref-typ2 templates userdef virtfunc
+ overload ovldbreak ref-typ ref-typ2 templates userdef virtfunc namespace
all:
@echo "Nothing to be done for all..."
diff --git a/gdb/testsuite/gdb.c++/ctti.exp b/gdb/testsuite/gdb.c++/ctti.exp
index 135dcf45538..fb16b2292a4 100644
--- a/gdb/testsuite/gdb.c++/ctti.exp
+++ b/gdb/testsuite/gdb.c++/ctti.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+`# Copyright (C) 1998, 1999 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -42,15 +42,14 @@ if [get_compiler_info ${binfile} "c++"] {
return -1;
}
-if { $gcc_compiled } then { continue }
-#if { [gdb_compile "${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile1} ${srcdir}/${subdir}/${srcfile2} ${srcdir}/${subdir}/${srcfile3}" "${binfile}" executable {debug c++}] != "" } {
-# gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-#}
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile1} ${srcdir}/${subdir}/${srcfile2} ${srcdir}/${subdir}/${srcfile3}" "${binfile}" executable {debug c++}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
-set cmdline "$CXX_FOR_TARGET ${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile1} ${srcdir}/${subdir}/${srcfile2} ${srcdir}/${subdir}/${srcfile3} -g -o ${binfile}"
+#set cmdline "$CXX_FOR_TARGET ${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile1} ${srcdir}/${subdir}/${srcfile2} ${srcdir}/${subdir}/${srcfile3} -g -o ${binfile}"
-remote_exec build $cmdline
+#remote_exec build $cmdline
gdb_exit
gdb_start
diff --git a/gdb/testsuite/gdb.c++/misc.cc b/gdb/testsuite/gdb.c++/misc.cc
index 7c212cc5f1c..3090800c7d6 100644
--- a/gdb/testsuite/gdb.c++/misc.cc
+++ b/gdb/testsuite/gdb.c++/misc.cc
@@ -215,6 +215,16 @@ void inheritance1 (void)
// ????? = 11; (g_D.A::a = 11; is ambiguous)
// ????? = 12; (g_D.A::x = 12; is ambiguous)
+/* djb 6-3-2000
+
+ This should take care of it. Rather than try to initialize using an ambiguous
+ construct, use 2 unambiguous ones for each. Since the ambiguous a/x member is
+ coming from C, and B, initialize D's C::a, and B::a, and D's C::x and B::x.
+ */
+ g_D.C::a = 15;
+ g_D.C::x = 12;
+ g_D.B::a = 11;
+ g_D.B::x = 12;
g_D.B::b = 13;
g_D.B::x = 14;
// ????? = 15;
diff --git a/gdb/testsuite/gdb.c++/namespace.exp b/gdb/testsuite/gdb.c++/namespace.exp
new file mode 100644
index 00000000000..9298c90e79e
--- /dev/null
+++ b/gdb/testsuite/gdb.c++/namespace.exp
@@ -0,0 +1,191 @@
+# Copyright (C) 1997, 1998 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
+
+# tests for namespaces
+# Written by Satish Pai <pai@apollo.hp.com> 1997-07-23
+
+# This file is part of the gdb testsuite
+
+# Note: These tests are geared to the HP aCC compiler,
+# which has an idiosyncratic way of emitting debug info
+# for namespaces.
+# Note: As of 2000-06-03, these pass under g++ - djb
+
+
+if $tracelevel then {
+ strace $tracelevel
+ }
+
+set prms_id 0
+set bug_id 0
+
+
+set testfile "namespace"
+set srcfile ${testfile}.cc
+set binfile ${objdir}/${subdir}/${testfile}
+
+if [get_compiler_info ${binfile}] {
+ return -1;
+}
+
+
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will a
+utomatically fail."
+}
+
+
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+
+#
+# set it up at a breakpoint so we can play with the variable values
+#
+if ![runto_main] then {
+ perror "couldn't run to breakpoint"
+ continue
+}
+
+send_gdb "break marker1\n" ; gdb_expect -re ".*$gdb_prompt $"
+ send_gdb "cont\n"
+ gdb_expect {
+ -re "Break.* marker1 \\(\\) at .*:$decimal.*$gdb_prompt $" {
+ send_gdb "up\n"
+ gdb_expect {
+ -re ".*$gdb_prompt $" { pass "up from marker1" }
+ timeout { fail "up from marker1" }
+ }
+ }
+ -re "$gdb_prompt $" { fail "continue to marker1" }
+ timeout { fail "(timeout) continue to marker1" }
+ }
+
+# Access a data item inside a namespace using colons and
+# single quotes :-(
+
+send_gdb "print 'AAA::c'\n"
+gdb_expect {
+ -re "\\$\[0-9\]* = 0 '\\\\000'\r\n$gdb_prompt $" { pass "print 'AAA::c'" }
+ -re ".*$gdb_prompt $" { fail "print 'AAA::c'" }
+ timeout { fail "(timeout) print 'AAA::c'" }
+}
+
+# An object declared using "using".
+
+send_gdb "print ina\n"
+gdb_expect {
+ -re "\\$\[0-9\]+ = {xx = 33}.*$gdb_prompt $" {
+ pass "print ina"
+ }
+ -re ".*$gdb_prompt $" { fail "print ina" }
+ timeout { fail "(timeout) print ina" }
+}
+
+send_gdb "ptype ina\n"
+gdb_expect {
+ -re "type = class (AAA::|)inA \{\r\n\[ \]*public:\r\n\[ \]*int xx;\r\n\[ \]*\r\n\[ \]*.*int fum\\(int\\);\r\n\}\r\n$gdb_prompt $" {
+ pass "ptype ina"
+ }
+ -re ".*$gdb_prompt $" { fail "ptype ina" }
+ timeout { fail "(timeout) ptype ina" }
+}
+
+# Check all functions are known to GDB
+
+setup_xfail hppa*-*-*11* CLLbs14869
+send_gdb "info func xyzq\n"
+gdb_expect {
+ -re "All functions.*File.*namespace.cc:\r\nint AAA::A_xyzq\\(int\\);\r\nint BBB::B_xyzq\\(int\\);\r\nchar AAA::xyzq\\(char\\);\r\nchar BBB::xyzq\\(char\\);\r\nchar BBB::CCC::xyzq\\(char\\);\r\nchar BBB::Class::xyzq\\(char\\);\r\n$gdb_prompt $" {
+ pass "info func xyzq"
+ }
+ -re ".*$gdb_prompt $" { fail "info func xyzq" }
+ timeout { fail "(timeout) info func xyzq" }
+}
+
+# Call a function in a namespace
+
+send_gdb "print 'AAA::xyzq'('x')\n"
+gdb_expect {
+ -re "\\$\[0-9\]* = 97 'a'\r\n$gdb_prompt $" {
+ pass "print 'AAA::xyzq'('x')"
+ }
+ -re ".*$gdb_prompt $" { fail "print 'AAA::xyzq'('x')" }
+ timeout { fail "(timeout) print 'AAA::xyzq'('x')" }
+}
+
+# Break on a function in a namespace
+
+send_gdb "break AAA::xyzq\n"
+gdb_expect {
+ -re "Breakpoint.*at $hex: file.*namespace.cc, line 42\\.\r\n$gdb_prompt $" {
+ pass "break AAA::xyzq"
+ }
+ -re ".*$gdb_prompt $" { fail "break AAA::xyzq" }
+ timeout { fail "(timeout) break AAA::xyzq" }
+}
+
+# Call a function in a nested namespace
+
+send_gdb "print 'BBB::CCC::xyzq'('x')\n"
+gdb_expect {
+ -re "\\$\[0-9\]* = 122 'z'\r\n$gdb_prompt $" {
+ pass "print 'BBB::CCC::xyzq'('x')"
+ }
+ -re ".*$gdb_prompt $" { fail "print 'BBB::CCC::xyzq'('x')" }
+ timeout { fail "(timeout) print 'BBB::CCC::xyzq'('x')" }
+}
+
+# Break on a function in a nested namespace
+
+send_gdb "break BBB::CCC::xyzq\n"
+gdb_expect {
+ -re "Breakpoint.*at $hex: file.*namespace.cc, line 58\\.\r\n$gdb_prompt $" {
+ pass "break BBB::CCC::xyzq"
+ }
+ -re ".*$gdb_prompt $" { fail "break BBB::CCC::xyzq" }
+ timeout { fail "(timeout) break BBB::CCC::xyzq" }
+}
+
+# Print address of a function in a class in a namespace
+
+send_gdb "print 'BBB::Class::xyzq'\n"
+gdb_expect {
+ -re "\\$\[0-9\]* = \{char \\((BBB::|)Class \\*, (char|int)\\)\} $hex <BBB::Class::xyzq\\(char\\)>\r\n$gdb_prompt $" {
+ pass "print 'BBB::Class'::xyzq"
+ }
+ -re ".*$gdb_prompt $" { fail "print 'BBB::Class'::xyzq" }
+ timeout { fail "(timeout) print 'BBB::Class'::xyzq" }
+}
+
+# Break on a function in a class in a namespace
+
+send_gdb "break BBB::Class::xyzq\n"
+gdb_expect {
+ -re "Breakpoint.*at $hex: file.*namespace.cc, line 63\\.\r\n$gdb_prompt $" {
+ pass "break BBB::Class::xyzq"
+ }
+ -re ".*$gdb_prompt $" { fail "break BBB::Class::xyzq" }
+ timeout { fail "(timeout) break BBB::Class::xyzq" }
+}
+
diff --git a/gdb/testsuite/gdb.c++/templates.cc b/gdb/testsuite/gdb.c++/templates.cc
index e1d6810930d..ce4481a2fb4 100644
--- a/gdb/testsuite/gdb.c++/templates.cc
+++ b/gdb/testsuite/gdb.c++/templates.cc
@@ -523,7 +523,7 @@ public:
};
T5<x> t5x(5);
-#if !defined(__GNUC__) || (__GNUC__ >= 2 && __GNUC_MINOR__ >= 6)
+#if !defined(__GNUC__) || (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6)
template class T5<char>;
template class T5<int>;
template class T5<int (*)(char, void *)>;
@@ -714,8 +714,8 @@ int main()
// New tests added here
- Foo<int> fint;
- Foo<char> fchar;
+ Foo<int> fint={0,0};
+ Foo<char> fchar={0,0};
Foo<volatile char *> fvpchar = {0, 0};
Bar<int, 33> bint;
diff --git a/gdb/testsuite/gdb.c++/templates.exp b/gdb/testsuite/gdb.c++/templates.exp
index 5b8875eb8e7..91acc822250 100644
--- a/gdb/testsuite/gdb.c++/templates.exp
+++ b/gdb/testsuite/gdb.c++/templates.exp
@@ -209,7 +209,6 @@ proc do_tests {} {
do_tests
-if {!$hp_aCC_compiler} {continue}
# More tests for different kinds of template parameters,
# templates with partial specializations, nested templates, etc.
@@ -217,7 +216,21 @@ if {!$hp_aCC_compiler} {continue}
# work with other compilers because of differences in mangling
# schemes.
# Added by Satish Pai <pai@apollo.hp.com> 1997-09-25
+# As of 2000-06-03, C++ support has been improved to the point that g++ can
+# pass all of theses, excluding what appears to be one that exposes a stabs bug. - djb
+# I don't know how HP could be passing these tests without this. They
+# weren't breakpointing past a point where the below expressions were
+# initialized in the actual source. - djb
+
+send_gdb "b 770\n"
+gdb_expect {
+ -re ".*$gdb_prompt $"
+}
+send_gdb "c\n"
+gdb_expect {
+ -re ".*$gdb_prompt $"
+}
send_gdb "print fint\n"
gdb_expect {
-re "\\$\[0-9\]* = \\{x = 0, t = 0\\}\r\n$gdb_prompt $" { pass "print fint" }
@@ -235,6 +248,9 @@ gdb_expect {
# Template Foo<T>
setup_xfail hppa2.0w-*-* CLLbs16092
+# g++ can't do the template instantiation in debug info trick, so we
+# fail this because it's not a real type.
+if {!$hp_aCC_compiler} { setup_xfail *-*-* }
send_gdb "ptype Foo\n"
gdb_expect {
-re "type = template <(class |)T> (class |)Foo \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Foo<volatile char \\*>\r\n\[ \t\]*(class |)Foo<char>\r\n\[ \t\]*(class |)Foo<int>\r\n$gdb_prompt $" { pass "ptype Foo" }
@@ -247,7 +263,7 @@ gdb_expect {
send_gdb "ptype fint\n"
gdb_expect {
- -re "type = (class |)Foo<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int foo\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fint" }
+ -re "type = (class |)Foo<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int foo\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fint" }
-re "$gdb_prompt $" { fail "ptype fint" }
timeout { fail "(timeout) ptype fint" }
}
@@ -256,7 +272,7 @@ gdb_expect {
send_gdb "ptype fchar\n"
gdb_expect {
- -re "type = (class |)Foo<char> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char foo\\(int, char\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fchar" }
+ -re "type = (class |)Foo<char> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*.*char foo\\(int, char\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fchar" }
-re "$gdb_prompt $" { fail "ptype fchar" }
timeout { fail "(timeout) ptype fchar" }
}
@@ -265,7 +281,7 @@ gdb_expect {
send_gdb "ptype fvpchar\n"
gdb_expect {
- -re "type = (class |)Foo<volatile char \\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*volatile char \\*t;\r\n\r\n\[ \t\]*volatile char \\* foo\\(int, volatile char \\*\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fvpchar" }
+ -re "type = (class |)Foo<volatile char \\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char \\* foo\\(int,.*char.*\\*\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fvpchar" }
-re "$gdb_prompt $" { fail "ptype fvpchar" }
timeout { fail "(timeout) ptype fvpchar" }
}
@@ -274,7 +290,7 @@ gdb_expect {
send_gdb "print Foo<volatile char *>::foo\n"
gdb_expect {
- -re "\\$\[0-9\]* = \\{volatile char \\*\\((class |)Foo<volatile char \\*> \\*, int, volatile char \\*\\)\\} $hex <Foo<volatile char \\*>::foo\\(int, volatile char \\*\\)>\r\n$gdb_prompt $" { pass "print Foo<volatile char *>::foo" }
+ -re "\\$\[0-9\]* = \\{.*char \\*\\((class |)Foo<volatile char \\*> \\*, int, .*char \\*\\)\\} $hex <Foo<.*char.*\\*>::foo\\(int, .*char.*\\*\\)>\r\n$gdb_prompt $" { pass "print Foo<volatile char *>::foo" }
-re "$gdb_prompt $" { fail "print Foo<volatile char *>::foo" }
timeout { fail "(timeout) print Foo<volatile char *>::foo" }
}
@@ -282,6 +298,8 @@ gdb_expect {
# Template Bar<T, int>
setup_xfail hppa2.0w-*-* CLLbs16092
+# same as Foo for g++
+if {!$hp_aCC_compiler} { setup_xfail *-*-* }
send_gdb "ptype Bar\n"
gdb_expect {
-re "type = template <(class |)T, (class |)sz> (class |)Bar \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Bar<int,(\\(int\\)|)1>\r\n\[ \t\]*(class |)Bar<int,(\\(int\\)|)33>\r\n$gdb_prompt $" { pass "ptype Bar" }
@@ -292,10 +310,14 @@ gdb_expect {
# ptype Bar<int,33>
-
+# stabs screws this test royally.
+# It thinks it has a badly mangled name.
+# I blame stabs, the other formats get it right. -djb
+get_debug_format
+setup_xfail_format "stabs"
send_gdb "ptype bint\n"
gdb_expect {
- -re "type = (class |)Bar<int,(\\(int\\)|)33> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int bar\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint" }
+ -re "type = (class |)Bar<int,(\\(int\\)|)33> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int bar\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint" }
-re "$gdb_prompt $" { fail "ptype bint" }
timeout { fail "(timeout) ptype bint" }
}
@@ -304,7 +326,7 @@ gdb_expect {
send_gdb "ptype bint2\n"
gdb_expect {
- -re "type = (class |)Bar<int,(\\(int\\)|)1> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int bar\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint2" }
+ -re "type = (class |)Bar<int,(\\(int\\)|)1> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int bar\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bint2" }
-re "$gdb_prompt $" { fail "ptype bint2" }
timeout { fail "(timeout) ptype bint2" }
}
@@ -312,6 +334,8 @@ gdb_expect {
# Template Baz<T, char>
setup_xfail hppa2.0w-*-* CLLbs16092
+# Same as Foo, for g++
+if {!$hp_aCC_compiler} { setup_xfail *-*-* }
send_gdb "ptype Baz\n"
gdb_expect {
-re "type = template <(class |)T, (class |)sz> (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Baz<char,(\\(char\\)|)97>\r\n\[ \t\]*(class |)Baz<int,(\\(char\\)|)115>\r\n$gdb_prompt $" { pass "ptype Baz" }
@@ -325,7 +349,7 @@ gdb_expect {
send_gdb "ptype bazint\n"
gdb_expect {
- -re "type = (class |)Baz<int,(\\(char\\)|)115> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int baz\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint" }
+ -re "type = (class |)Baz<int,(\\(char\\)|)(115|\\'s\\')> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int baz\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint" }
-re "$gdb_prompt $" { fail "ptype bazint" }
timeout { fail "(timeout) ptype bazint" }
}
@@ -334,13 +358,14 @@ gdb_expect {
send_gdb "ptype bazint2\n"
gdb_expect {
- -re "type = (class |)Baz<char,(\\(char\\)|)97> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char baz\\(int, char\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint2" }
+ -re "type = (class |)Baz<char,(\\(char\\)|)(97|\\'a\\')> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*.*char baz\\(int, char\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype bazint2" }
-re "$gdb_prompt $" { fail "ptype bazint2" }
timeout { fail "(timeout) ptype bazint2" }
}
# Template Qux<T, int (*f)(int) >
-
+# Same as Foo for g++
+if {!$hp_aCC_compiler} {setup_xfail *-*-*}
send_gdb "ptype Qux\n"
gdb_expect {
-re "type = template <(class |)T, (class |)sz> (class |)Qux \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Qux<int,&string>\r\n\[ \t\]*(class |)Qux<char,&string>\r\n$gdb_prompt $" { pass "ptype Qux" }
@@ -353,7 +378,7 @@ gdb_expect {
send_gdb "ptype quxint\n"
gdb_expect {
- -re "type = class Qux<int,&string> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int qux\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype quxint" }
+ -re "type = class Qux<int,&string> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int qux\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype quxint" }
-re "$gdb_prompt $" { fail "ptype quxint" }
timeout { fail "(timeout) ptype quxint" }
}
@@ -372,6 +397,8 @@ gdb_expect {
# Template Spec<T1, T2>
setup_xfail hppa2.0w-*-* CLLbs16092
+# Same as Foo for g++
+if {!$hp_aCC_compiler} { setup_xfail *-*-* }
send_gdb "ptype Spec\n"
gdb_expect {
-re "type = template <(class |)T1, (class |)T2> (class |)Spec \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\\}\r\ntemplate instantiations:\r\n\[ \t\]*(class |)Spec<int,int \\*>\r\n\[ \t\]*(class |)Spec<int,char>\r\n$gdb_prompt $" { pass "ptype Spec" }
@@ -384,7 +411,7 @@ gdb_expect {
send_gdb "ptype siip\n"
gdb_expect {
- -re "type = class Spec<int,int \\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\r\n\[ \t\]*int spec\\(int \\*\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype siip" }
+ -re "type = class Spec<int,int \\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\r\n\[ \t\]*.*int spec\\(int \\*\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype siip" }
-re "$gdb_prompt $" { fail "ptype siip" }
timeout { fail "(timeout) ptype siip" }
}
@@ -393,7 +420,7 @@ gdb_expect {
send_gdb "ptype Garply<int>\n"
gdb_expect {
- -re "type = class Garply<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*int garply\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype Garply<int>" }
+ -re "type = class Garply<int> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*int t;\r\n\r\n\[ \t\]*.*int garply\\(int, int\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype Garply<int>" }
-re "$gdb_prompt $" { fail "ptype Garply<int>" }
timeout { fail "(timeout) ptype Garply<int>" }
}
@@ -402,7 +429,7 @@ gdb_expect {
send_gdb "ptype Garply<Garply<char> >\n"
gdb_expect {
- -re "type = (class |)Garply<Garply<char> > \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*(class |)Garply<char> t;\r\n\r\n\[ \t\]*(class |)Garply<char> garply\\(int, (class |)Garply<char>\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype Garply<Garply<char> >" }
+ -re "type = (class |)Garply<Garply<char> > \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*(class |)Garply<char> t;\r\n\r\n\[ \t\]*.*(class |)Garply<char> garply\\(int, (class |)Garply<char>\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype Garply<Garply<char> >" }
-re "$gdb_prompt $" { fail "ptype Garply<Garply<char> >" }
timeout { fail "(timeout) ptype Garply<Garply<char> >" }
}
@@ -411,16 +438,16 @@ gdb_expect {
send_gdb "print Garply<Garply<char> >::garply\n"
gdb_expect {
- -re "\\$\[0-9\]* = \\{(class |)Garply<char> \\((class |)Garply<Garply<char> > \\*, int, (class |)Garply<char>\\)\\} $hex <Garply<Garply<char>>::garply\\(int, (class |)Garply<char>\\)>\r\n$gdb_prompt $" { pass "print Garply<Garply<char> >::garply" }
+ -re "\\$\[0-9\]* = \\{(class |)Garply<char> \\((class |)Garply<Garply<char> > \\*, int, (class |)Garply<char>\\)\\} $hex <Garply<Garply<char>\[ \t\]*>::garply\\(int, (class |)Garply<char>\\)>\r\n$gdb_prompt $" { pass "print Garply<Garply<char> >::garply" }
-re ".*$gdb_prompt $" { fail "print Garply<Garply<char> >::garply" }
timeout { fail "print Garply<Garply<char> >::garply (timeout)" }
}
-# UNFORTUNATELY, "break Garply<Garply<char> >::garply" doesn't yet work.
-
-#send_gdb "break Garply<Garply<char> >::garply
-#gdb_expect {
-# -re "Breakpoint \[0-9\]* at $hex: file .*templates.cc, line.*\r\n$gdb_prompt $" { pass "break Garply<Garply<char> >::garply" }
-# -re ".*$gdb_prompt $" { fail "break Garply<Garply<char> >::garply" }
-# timeout { fail "break Garply<Garply<char> >::garply (timeout)" }
-#}
+# djb - 06-03-2000
+# Now should work fine
+send_gdb "break Garply<Garply<char> >::garply\n"
+gdb_expect {
+ -re "Breakpoint \[0-9\]* at $hex: file .*templates.cc, line.*\r\n$gdb_prompt $" { pass "break Garply<Garply<char> >::garply" }
+ -re ".*$gdb_prompt $" { fail "break Garply<Garply<char> >::garply" }
+ timeout { fail "break Garply<Garply<char> >::garply (timeout)" }
+}
diff --git a/gdb/testsuite/gdb.mi/ChangeLog-mi b/gdb/testsuite/gdb.mi/ChangeLog-mi
index a0cb0412c7c..0802adf27a3 100644
--- a/gdb/testsuite/gdb.mi/ChangeLog-mi
+++ b/gdb/testsuite/gdb.mi/ChangeLog-mi
@@ -1,3 +1,7 @@
+Tue Apr 18 15:36:07 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * Makefile.in (clean mostlyclean): Do not delete $(MISCELLANEOUS).
+
Tue Mar 14 15:54:57 2000 Andrew Cagney <cagney@b1.cygnus.com>
* basics.c: Add EMACS local variable pointing change-log at this
diff --git a/gdb/testsuite/gdb.mi/Makefile.in b/gdb/testsuite/gdb.mi/Makefile.in
index 92a0a73e0db..67a0f5d39b5 100644
--- a/gdb/testsuite/gdb.mi/Makefile.in
+++ b/gdb/testsuite/gdb.mi/Makefile.in
@@ -11,7 +11,7 @@ all:
#### host, target, and site specific Makefile frags come in here.
clean mostlyclean:
- -rm -f *.ci *.o $(OBJS) $(PROGS) $(MISCELLANEOUS) *~ core
+ -rm -f *.ci *.o $(OBJS) $(PROGS) *~ core
distclean maintainer-clean realclean: clean
-rm -f Makefile config.status config.log
diff --git a/gdb/testsuite/lib/compiler.cc b/gdb/testsuite/lib/compiler.cc
index aa35c7510ff..5cb00f6685a 100644
--- a/gdb/testsuite/lib/compiler.cc
+++ b/gdb/testsuite/lib/compiler.cc
@@ -13,7 +13,7 @@
definition made with 'set" to see if one already exists, and if so
warn about conflicts if it is being set to something else. */
-#if defined(__GNUC__) && __GNUC__ >= 2 && __GNUC_MINOR__ >= 6
+#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6))
set supports_template_debugging 1
#else
set supports_template_debugging 0
diff --git a/gdb/thread.c b/gdb/thread.c
index c910dbb05f8..2c874703e32 100644
--- a/gdb/thread.c
+++ b/gdb/thread.c
@@ -45,23 +45,23 @@
/* Prototypes for exported functions. */
-void _initialize_thread PARAMS ((void));
+void _initialize_thread (void);
/* Prototypes for local functions. */
static struct thread_info *thread_list = NULL;
static int highest_thread_num;
-static struct thread_info *find_thread_id PARAMS ((int num));
+static struct thread_info *find_thread_id (int num);
-static void thread_command PARAMS ((char *tidstr, int from_tty));
-static void thread_apply_all_command PARAMS ((char *, int));
-static int thread_alive PARAMS ((struct thread_info *));
-static void info_threads_command PARAMS ((char *, int));
-static void thread_apply_command PARAMS ((char *, int));
-static void restore_current_thread PARAMS ((int));
-static void switch_to_thread PARAMS ((int pid));
-static void prune_threads PARAMS ((void));
+static void thread_command (char *tidstr, int from_tty);
+static void thread_apply_all_command (char *, int);
+static int thread_alive (struct thread_info *);
+static void info_threads_command (char *, int);
+static void thread_apply_command (char *, int);
+static void restore_current_thread (int);
+static void switch_to_thread (int pid);
+static void prune_threads (void);
void
init_thread_list ()
diff --git a/gdb/top.c b/gdb/top.c
index 7c996499db7..3bc55f9ab3e 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -57,107 +57,108 @@
/* Prototypes for local functions */
-static void dont_repeat_command PARAMS ((char *, int));
+static void dont_repeat_command (char *, int);
-static void source_cleanup_lines PARAMS ((PTR));
+static void source_cleanup_lines (PTR);
-static void user_defined_command PARAMS ((char *, int));
+static void user_defined_command (char *, int);
-static void init_signals PARAMS ((void));
+static void init_signals (void);
#ifdef STOP_SIGNAL
-static void stop_sig PARAMS ((int));
+static void stop_sig (int);
#endif
-static char *line_completion_function PARAMS ((char *, int, char *, int));
+static char *line_completion_function (char *, int, char *, int);
-static char *readline_line_completion_function PARAMS ((char *, int));
+static char *readline_line_completion_function (char *, int);
/* NOTE 1999-04-29: this function will be static again, after we make the
event loop be the default command loop for gdb, and we merge
event-top.c into this file, top.c */
-/* static */ void command_loop_marker PARAMS ((int));
+/* static */ void command_loop_marker (void *);
-static void while_command PARAMS ((char *, int));
+static void while_command (char *, int);
-static void if_command PARAMS ((char *, int));
+static void if_command (char *, int);
-static struct command_line *
- build_command_line PARAMS ((enum command_control_type, char *));
+static struct command_line *build_command_line (enum command_control_type,
+ char *);
-static struct command_line *
- get_command_line PARAMS ((enum command_control_type, char *));
+static struct command_line *get_command_line (enum command_control_type,
+ char *);
-static void realloc_body_list PARAMS ((struct command_line *, int));
+static void realloc_body_list (struct command_line *, int);
-static enum misc_command_type read_next_line PARAMS ((struct command_line **));
+static enum misc_command_type read_next_line (struct command_line **);
static enum command_control_type
-recurse_read_control_structure PARAMS ((struct command_line *));
+recurse_read_control_structure (struct command_line *);
-static struct cleanup *setup_user_args PARAMS ((char *));
+static struct cleanup *setup_user_args (char *);
-static char *locate_arg PARAMS ((char *));
+static char *locate_arg (char *);
-static char *insert_args PARAMS ((char *));
+static char *insert_args (char *);
-static void arg_cleanup PARAMS ((void));
+static void arg_cleanup (void *);
-static void init_main PARAMS ((void));
+static void init_main (void);
-static void init_cmd_lists PARAMS ((void));
+static void init_cmd_lists (void);
-static void float_handler PARAMS ((int));
+static void float_handler (int);
-static void init_signals PARAMS ((void));
+static void init_signals (void);
-static void set_verbose PARAMS ((char *, int, struct cmd_list_element *));
+static void set_verbose (char *, int, struct cmd_list_element *);
-static void show_history PARAMS ((char *, int));
+static void show_history (char *, int);
-static void set_history PARAMS ((char *, int));
+static void set_history (char *, int);
-static void set_history_size_command PARAMS ((char *, int,
- struct cmd_list_element *));
+static void set_history_size_command (char *, int, struct cmd_list_element *);
-static void show_commands PARAMS ((char *, int));
+static void show_commands (char *, int);
-static void echo_command PARAMS ((char *, int));
+static void echo_command (char *, int);
-static void pwd_command PARAMS ((char *, int));
+static void pwd_command (char *, int);
-static void show_version PARAMS ((char *, int));
+static void show_version (char *, int);
-static void document_command PARAMS ((char *, int));
+static void document_command (char *, int);
-static void define_command PARAMS ((char *, int));
+static void define_command (char *, int);
-static void validate_comname PARAMS ((char *));
+static void validate_comname (char *);
-static void help_command PARAMS ((char *, int));
+static void help_command (char *, int);
-static void show_command PARAMS ((char *, int));
+static void show_command (char *, int);
-static void info_command PARAMS ((char *, int));
+static void info_command (char *, int);
-static void complete_command PARAMS ((char *, int));
+static void complete_command (char *, int);
-static void do_nothing PARAMS ((int));
+static void do_nothing (int);
-static void show_debug PARAMS ((char *, int));
+static void show_debug (char *, int);
-static void set_debug PARAMS ((char *, int));
+static void set_debug (char *, int);
#ifdef SIGHUP
/* NOTE 1999-04-29: This function will be static again, once we modify
gdb to use the event loop as the default command loop and we merge
event-top.c into this file, top.c */
-/* static */ int quit_cover PARAMS ((PTR));
+/* static */ int quit_cover (PTR);
-static void disconnect PARAMS ((int));
+static void disconnect (int);
#endif
-static void source_cleanup PARAMS ((FILE *));
+static void do_restore_instream_cleanup (void *stream);
+
+static struct cleanup *make_cleanup_free_command_lines (struct command_line **);
/* Default command line prompt. This is overriden in some configs. */
@@ -284,14 +285,14 @@ char gdb_dirbuf[1024];
The function receives two args: an input stream,
and a prompt string. */
-void (*window_hook) PARAMS ((FILE *, char *));
+void (*window_hook) (FILE *, char *);
int epoch_interface;
int xgdb_verbose;
/* gdb prints this when reading a command interactively */
static char *gdb_prompt_string; /* the global prompt string */
-extern char *get_prompt PARAMS ((void)); /* access function for prompt string */
+extern char *get_prompt (void); /* access function for prompt string */
/* Buffer used for reading command lines, and the size
allocated for it so far. */
@@ -369,7 +370,7 @@ struct user_args
#ifndef STOP_SIGNAL
#ifdef SIGTSTP
#define STOP_SIGNAL SIGTSTP
-static void stop_sig PARAMS ((int));
+static void stop_sig (int);
#endif
#endif
@@ -391,31 +392,31 @@ static void stop_sig PARAMS ((int));
/* Called after most modules have been initialized, but before taking users
command file. */
-void (*init_ui_hook) PARAMS ((char *argv0));
+void (*init_ui_hook) (char *argv0);
/* This hook is called from within gdb's many mini-event loops which could
steal control from a real user interface's event loop. It returns
non-zero if the user is requesting a detach, zero otherwise. */
-int (*ui_loop_hook) PARAMS ((int));
+int (*ui_loop_hook) (int);
/* Called instead of command_loop at top level. Can be invoked via
return_to_top_level. */
-void (*command_loop_hook) PARAMS ((void));
+void (*command_loop_hook) (void);
/* Called from print_frame_info to list the line we stopped in. */
-void (*print_frame_info_listing_hook) PARAMS ((struct symtab * s, int line,
- int stopline, int noerror));
+void (*print_frame_info_listing_hook) (struct symtab * s, int line,
+ int stopline, int noerror);
/* Replaces most of query. */
-int (*query_hook) PARAMS ((const char *, va_list));
+int (*query_hook) (const char *, va_list);
/* Replaces most of warning. */
-void (*warning_hook) PARAMS ((const char *, va_list));
+void (*warning_hook) (const char *, va_list);
/* These three functions support getting lines of text from the user. They
are used in sequence. First readline_begin_hook is called with a text
@@ -428,51 +429,51 @@ void (*warning_hook) PARAMS ((const char *, va_list));
to notify the GUI that we are done with the interaction window and it
can close it. */
-void (*readline_begin_hook) PARAMS ((char *,...));
-char *(*readline_hook) PARAMS ((char *));
-void (*readline_end_hook) PARAMS ((void));
+void (*readline_begin_hook) (char *, ...);
+char *(*readline_hook) (char *);
+void (*readline_end_hook) (void);
/* Called as appropriate to notify the interface of the specified breakpoint
conditions. */
-void (*create_breakpoint_hook) PARAMS ((struct breakpoint * bpt));
-void (*delete_breakpoint_hook) PARAMS ((struct breakpoint * bpt));
-void (*modify_breakpoint_hook) PARAMS ((struct breakpoint * bpt));
+void (*create_breakpoint_hook) (struct breakpoint * bpt);
+void (*delete_breakpoint_hook) (struct breakpoint * bpt);
+void (*modify_breakpoint_hook) (struct breakpoint * bpt);
/* Called as appropriate to notify the interface that we have attached
to or detached from an already running process. */
-void (*attach_hook) PARAMS ((void));
-void (*detach_hook) PARAMS ((void));
+void (*attach_hook) (void);
+void (*detach_hook) (void);
/* Called during long calculations to allow GUI to repair window damage, and to
check for stop buttons, etc... */
-void (*interactive_hook) PARAMS ((void));
+void (*interactive_hook) (void);
/* Called when the registers have changed, as a hint to a GUI
to minimize window update. */
-void (*registers_changed_hook) PARAMS ((void));
+void (*registers_changed_hook) (void);
/* Tell the GUI someone changed the register REGNO. -1 means
that the caller does not know which register changed or
that several registers have changed (see value_assign). */
-void (*register_changed_hook) PARAMS ((int regno));
+void (*register_changed_hook) (int regno);
/* Tell the GUI someone changed LEN bytes of memory at ADDR */
-void (*memory_changed_hook) PARAMS ((CORE_ADDR addr, int len));
+void (*memory_changed_hook) (CORE_ADDR addr, int len);
/* Called when going to wait for the target. Usually allows the GUI to run
while waiting for target events. */
-int (*target_wait_hook) PARAMS ((int pid, struct target_waitstatus * status));
+int (*target_wait_hook) (int pid, struct target_waitstatus * status);
/* Used by UI as a wrapper around command execution. May do various things
like enabling/disabling buttons, etc... */
-void (*call_command_hook) PARAMS ((struct cmd_list_element * c, char *cmd,
- int from_tty));
+void (*call_command_hook) (struct cmd_list_element * c, char *cmd,
+ int from_tty);
/* Called after a `set' command has finished. Is only run if the
`set' command succeeded. */
@@ -481,7 +482,7 @@ void (*set_hook) (struct cmd_list_element * c);
/* Called when the current thread changes. Argument is thread id. */
-void (*context_hook) PARAMS ((int id));
+void (*context_hook) (int id);
/* Takes control from error (). Typically used to prevent longjmps out of the
middle of the GUI. Usually used in conjunction with a catch routine. */
@@ -760,8 +761,7 @@ static int source_error_allocated;
user-defined command). */
static void
-source_cleanup (stream)
- FILE *stream;
+do_restore_instream_cleanup (void *stream)
{
/* Restore the previous input stream. */
instream = stream;
@@ -774,15 +774,24 @@ read_command_file (stream)
{
struct cleanup *cleanups;
- cleanups = make_cleanup ((make_cleanup_func) source_cleanup, instream);
+ cleanups = make_cleanup (do_restore_instream_cleanup, instream);
instream = stream;
command_loop ();
do_cleanups (cleanups);
}
-extern void init_proc PARAMS ((void));
+extern void init_proc (void);
+
+void (*pre_init_ui_hook) (void);
-void (*pre_init_ui_hook) PARAMS ((void));
+#ifdef __MSDOS__
+void
+do_chdir_cleanup (void *old_dir)
+{
+ chdir (old_dir);
+ free (old_dir);
+}
+#endif
void
gdb_init (argv0)
@@ -799,7 +808,7 @@ gdb_init (argv0)
#ifdef __MSDOS__
/* Make sure we return to the original directory upon exit, come
what may, since the OS doesn't do that for us. */
- make_final_cleanup ((make_cleanup_func) chdir, strsave (current_directory));
+ make_final_cleanup (do_chdir_cleanup, xstrdup (current_directory));
#endif
init_cmd_lists (); /* This needs to be done first */
@@ -884,7 +893,7 @@ get_command_line (type, arg)
/* Allocate and build a new command line structure. */
cmd = build_command_line (type, arg);
- old_chain = make_cleanup ((make_cleanup_func) free_command_lines, &cmd);
+ old_chain = make_cleanup_free_command_lines (&cmd);
/* Read in the body of this command. */
if (recurse_read_control_structure (cmd) == invalid_control)
@@ -1094,8 +1103,7 @@ execute_control_command (cmd)
new_line = insert_args (cmd->line);
if (!new_line)
return invalid_control;
- old_chain = make_cleanup ((make_cleanup_func) free_current_contents,
- &new_line);
+ old_chain = make_cleanup (free_current_contents, &new_line);
execute_command (new_line, 0);
ret = cmd->control_type;
break;
@@ -1113,10 +1121,9 @@ execute_control_command (cmd)
new_line = insert_args (cmd->line);
if (!new_line)
return invalid_control;
- old_chain = make_cleanup ((make_cleanup_func) free_current_contents,
- &new_line);
+ old_chain = make_cleanup (free_current_contents, &new_line);
expr = parse_expression (new_line);
- make_cleanup ((make_cleanup_func) free_current_contents, &expr);
+ make_cleanup (free_current_contents, &expr);
ret = simple_control;
loop = 1;
@@ -1174,11 +1181,10 @@ execute_control_command (cmd)
new_line = insert_args (cmd->line);
if (!new_line)
return invalid_control;
- old_chain = make_cleanup ((make_cleanup_func) free_current_contents,
- &new_line);
+ old_chain = make_cleanup (free_current_contents, &new_line);
/* Parse the conditional for the if statement. */
expr = parse_expression (new_line);
- make_cleanup ((make_cleanup_func) free_current_contents, &expr);
+ make_cleanup (free_current_contents, &expr);
current = NULL;
ret = simple_control;
@@ -1264,7 +1270,7 @@ if_command (arg, from_tty)
/* Cleanup */
static void
-arg_cleanup ()
+arg_cleanup (void *ignore)
{
struct user_args *oargs = user_args;
if (!user_args)
@@ -1291,7 +1297,7 @@ setup_user_args (p)
args->next = user_args;
user_args = args;
- old_chain = make_cleanup ((make_cleanup_func) arg_cleanup, 0);
+ old_chain = make_cleanup (arg_cleanup, 0/*ignored*/);
if (p == NULL)
return old_chain;
@@ -1455,7 +1461,7 @@ execute_user_command (c, args)
/* Set the instream to 0, indicating execution of a
user-defined function. */
- old_chain = make_cleanup ((make_cleanup_func) source_cleanup, instream);
+ old_chain = make_cleanup (do_restore_instream_cleanup, instream);
instream = (FILE *) 0;
while (cmdlines)
{
@@ -1483,7 +1489,7 @@ execute_command (p, from_tty)
static int warned = 0;
char *line;
/* FIXME: These should really be in an appropriate header file */
- extern void serial_log_command PARAMS ((const char *));
+extern void serial_log_command (const char *);
free_all_values ();
@@ -1580,8 +1586,7 @@ execute_command (p, from_tty)
gdb to use the event loop as the default command loop and we merge
event-top.c into this file, top.c */
/* static */ void
-command_loop_marker (foo)
- int foo;
+command_loop_marker (void *foo)
{
}
@@ -1612,7 +1617,7 @@ command_loop ()
quit_flag = 0;
if (instream == stdin && stdin_is_tty)
reinitialize_more_filter ();
- old_chain = make_cleanup ((make_cleanup_func) command_loop_marker, 0);
+ old_chain = make_cleanup (command_loop_marker, 0);
#if defined(TUI)
/* A bit of paranoia: I want to make sure the "insert_mode" global
@@ -1693,7 +1698,7 @@ simplified_command_loop (read_input_func, execute_command_func)
quit_flag = 0;
if (instream == stdin && stdin_is_tty)
reinitialize_more_filter ();
- old_chain = make_cleanup ((make_cleanup_func) command_loop_marker, 0);
+ old_chain = make_cleanup (command_loop_marker, 0);
/* Get a command-line. */
command = (*read_input_func) (instream == stdin ?
@@ -1833,6 +1838,12 @@ char *gdb_completer_word_break_characters =
char *gdb_completer_command_word_break_characters =
" \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,";
+/* When completing on file names, we remove from the list of word
+ break characters any characters that are commonly used in file
+ names, such as '-', '+', '~', etc. Otherwise, readline displays
+ incorrect completion candidates. */
+char *gdb_completer_file_name_break_characters = " \t\n*|\"';:?/><";
+
/* Characters that can be used to quote completion strings. Note that we
can't include '"' because the gdb C parser treats such quoted sequences
as strings. */
@@ -1859,7 +1870,7 @@ filename_completer (text, word)
char *word;
{
/* From readline. */
- extern char *filename_completion_function PARAMS ((char *, int));
+extern char *filename_completion_function (char *, int);
int subsequent_name;
char **return_val;
int return_val_used;
@@ -2122,6 +2133,9 @@ line_completion_function (text, matches, line_buffer, point)
/* It is a normal command; what comes after it is
completed by the command's completer function. */
list = (*c->completer) (p, word);
+ if (c->completer == filename_completer)
+ rl_completer_word_break_characters =
+ gdb_completer_file_name_break_characters;
}
}
else
@@ -2168,6 +2182,9 @@ line_completion_function (text, matches, line_buffer, point)
{
/* It is a normal command. */
list = (*c->completer) (p, word);
+ if (c->completer == filename_completer)
+ rl_completer_word_break_characters =
+ gdb_completer_file_name_break_characters;
}
}
}
@@ -2855,8 +2872,7 @@ read_command_lines (prompt_arg, from_tty)
else
{
head = next;
- old_chain = make_cleanup ((make_cleanup_func) free_command_lines,
- &head);
+ old_chain = make_cleanup_free_command_lines (&head);
}
tail = next;
}
@@ -2905,13 +2921,25 @@ free_command_lines (lptr)
l = next;
}
}
+
+static void
+do_free_command_lines_cleanup (void *arg)
+{
+ free_command_lines (arg);
+}
+
+static struct cleanup *
+make_cleanup_free_command_lines (struct command_line **arg)
+{
+ return make_cleanup (do_free_command_lines_cleanup, arg);
+}
/* Add an element to the list of info subcommands. */
struct cmd_list_element *
add_info (name, fun, doc)
char *name;
- void (*fun) PARAMS ((char *, int));
+ void (*fun) (char *, int);
char *doc;
{
return add_cmd (name, no_class, fun, doc, &infolist);
@@ -2985,7 +3013,7 @@ struct cmd_list_element *
add_com (name, class, fun, doc)
char *name;
enum command_class class;
- void (*fun) PARAMS ((char *, int));
+ void (*fun) (char *, int);
char *doc;
{
return add_cmd (name, class, fun, doc, &cmdlist);
@@ -3739,6 +3767,12 @@ source_cleanup_lines (args)
}
/* ARGSUSED */
+static void
+do_fclose_cleanup (void *stream)
+{
+ fclose (stream);
+}
+
void
source_command (args, from_tty)
char *args;
@@ -3767,7 +3801,7 @@ source_command (args, from_tty)
return;
}
- make_cleanup ((make_cleanup_func) fclose, stream);
+ make_cleanup (do_fclose_cleanup, stream);
old_lines.old_line = source_line_number;
old_lines.old_file = source_file_name;
@@ -3862,7 +3896,7 @@ show_commands (args, from_tty)
than the number of the last command). Relative to history_base. */
int hist_len;
- extern HIST_ENTRY *history_get PARAMS ((int));
+extern HIST_ENTRY *history_get (int);
/* Print out some of the commands from the command history. */
/* First determine the length of the history list. */
diff --git a/gdb/top.h b/gdb/top.h
index 42ee7126836..d5c601151a8 100644
--- a/gdb/top.h
+++ b/gdb/top.h
@@ -29,34 +29,35 @@ extern char gdbinit[];
extern void print_gdb_version (struct ui_file *);
-extern void source_command PARAMS ((char *, int));
-extern void cd_command PARAMS ((char *, int));
-extern void read_command_file PARAMS ((FILE *));
-extern void init_history PARAMS ((void));
-extern void command_loop PARAMS ((void));
-extern void simplified_command_loop PARAMS ((char *(*read_input_func) (char *),
- void (*execute_command_func) (char *, int)));
-extern int quit_confirm PARAMS ((void));
-extern void quit_force PARAMS ((char *, int));
-extern void quit_command PARAMS ((char *, int));
-extern void command_loop_marker PARAMS ((int));
-extern int quit_cover PARAMS ((PTR));
-extern void execute_command PARAMS ((char *, int));
+extern void source_command (char *, int);
+extern void cd_command (char *, int);
+extern void read_command_file (FILE *);
+extern void init_history (void);
+extern void command_loop (void);
+extern void simplified_command_loop (char *(*read_input_func) (char *),
+ void (*execute_command_func) (char *,
+ int));
+extern int quit_confirm (void);
+extern void quit_force (char *, int);
+extern void quit_command (char *, int);
+extern void command_loop_marker (void *);
+extern int quit_cover (PTR);
+extern void execute_command (char *, int);
/* This function returns a pointer to the string that is used
by gdb for its command prompt. */
-extern char *get_prompt PARAMS ((void));
+extern char *get_prompt (void);
/* This function copies the specified string into the string that
is used by gdb for its command prompt. */
-extern void set_prompt PARAMS ((char *));
+extern void set_prompt (char *);
/* From random places. */
extern int mapped_symbol_files;
extern int readnow_symbol_files;
/* Perform _initialize initialization */
-extern void gdb_init PARAMS ((char *));
+extern void gdb_init (char *);
/* For use by event-top.c */
/* Variables from top.c. */
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index 245f1d07f8f..a7a3888db11 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -58,19 +58,19 @@
extern int info_verbose;
-extern void (*readline_begin_hook) PARAMS ((char *,...));
-extern char *(*readline_hook) PARAMS ((char *));
-extern void (*readline_end_hook) PARAMS ((void));
-extern void x_command PARAMS ((char *, int));
+extern void (*readline_begin_hook) (char *, ...);
+extern char *(*readline_hook) (char *);
+extern void (*readline_end_hook) (void);
+extern void x_command (char *, int);
extern int addressprint; /* Print machine addresses? */
/* GDB commands implemented in other modules:
*/
-extern void output_command PARAMS ((char *, int));
-extern void registers_info PARAMS ((char *, int));
-extern void args_info PARAMS ((char *, int));
-extern void locals_info PARAMS ((char *, int));
+extern void output_command (char *, int);
+extern void registers_info (char *, int);
+extern void args_info (char *, int);
+extern void locals_info (char *, int);
/* If this definition isn't overridden by the header files, assume
@@ -129,37 +129,38 @@ static struct symtab_and_line traceframe_sal;
static struct cmd_list_element *tfindlist;
/* ======= Important command functions: ======= */
-static void trace_command PARAMS ((char *, int));
-static void tracepoints_info PARAMS ((char *, int));
-static void delete_trace_command PARAMS ((char *, int));
-static void enable_trace_command PARAMS ((char *, int));
-static void disable_trace_command PARAMS ((char *, int));
-static void trace_pass_command PARAMS ((char *, int));
-static void trace_actions_command PARAMS ((char *, int));
-static void trace_start_command PARAMS ((char *, int));
-static void trace_stop_command PARAMS ((char *, int));
-static void trace_status_command PARAMS ((char *, int));
-static void trace_find_command PARAMS ((char *, int));
-static void trace_find_pc_command PARAMS ((char *, int));
-static void trace_find_tracepoint_command PARAMS ((char *, int));
-static void trace_find_line_command PARAMS ((char *, int));
-static void trace_find_range_command PARAMS ((char *, int));
-static void trace_find_outside_command PARAMS ((char *, int));
-static void tracepoint_save_command PARAMS ((char *, int));
-static void trace_dump_command PARAMS ((char *, int));
+static void trace_command (char *, int);
+static void tracepoints_info (char *, int);
+static void delete_trace_command (char *, int);
+static void enable_trace_command (char *, int);
+static void disable_trace_command (char *, int);
+static void trace_pass_command (char *, int);
+static void trace_actions_command (char *, int);
+static void trace_start_command (char *, int);
+static void trace_stop_command (char *, int);
+static void trace_status_command (char *, int);
+static void trace_find_command (char *, int);
+static void trace_find_pc_command (char *, int);
+static void trace_find_tracepoint_command (char *, int);
+static void trace_find_line_command (char *, int);
+static void trace_find_range_command (char *, int);
+static void trace_find_outside_command (char *, int);
+static void tracepoint_save_command (char *, int);
+static void trace_dump_command (char *, int);
/* support routines */
-static void trace_mention PARAMS ((struct tracepoint *));
+static void trace_mention (struct tracepoint *);
struct collection_list;
-static void add_aexpr PARAMS ((struct collection_list *, struct agent_expr *));
+static void add_aexpr (struct collection_list *, struct agent_expr *);
static unsigned char *mem2hex (unsigned char *, unsigned char *, int);
-static void add_register PARAMS ((struct collection_list * collection,
- unsigned int regno));
-static void free_actions_list PARAMS ((char **actions_list));
-static void free_actions_list_cleanup_wrapper PARAMS ((void *));
+static void add_register (struct collection_list *collection,
+ unsigned int regno);
+static struct cleanup *make_cleanup_free_actions (struct tracepoint *t);
+static void free_actions_list (char **actions_list);
+static void free_actions_list_cleanup_wrapper (void *);
-extern void _initialize_tracepoint PARAMS ((void));
+extern void _initialize_tracepoint (void);
/* Utility: returns true if "target remote" */
static int
@@ -268,11 +269,11 @@ set_traceframe_context (trace_pc)
traceframe_sal.pc = traceframe_sal.line = 0;
traceframe_sal.symtab = NULL;
set_internalvar (lookup_internalvar ("trace_func"),
- value_from_longest (charstar, (LONGEST) 0));
+ value_from_pointer (charstar, (LONGEST) 0));
set_internalvar (lookup_internalvar ("trace_file"),
- value_from_longest (charstar, (LONGEST) 0));
+ value_from_pointer (charstar, (LONGEST) 0));
set_internalvar (lookup_internalvar ("trace_line"),
- value_from_longest (builtin_type_int, (LONGEST) - 1));
+ value_from_pointer (builtin_type_int, (LONGEST) - 1));
return;
}
@@ -289,7 +290,7 @@ set_traceframe_context (trace_pc)
if (traceframe_fun == NULL ||
SYMBOL_NAME (traceframe_fun) == NULL)
set_internalvar (lookup_internalvar ("trace_func"),
- value_from_longest (charstar, (LONGEST) 0));
+ value_from_pointer (charstar, (LONGEST) 0));
else
{
len = strlen (SYMBOL_NAME (traceframe_fun));
@@ -310,7 +311,7 @@ set_traceframe_context (trace_pc)
if (traceframe_sal.symtab == NULL ||
traceframe_sal.symtab->filename == NULL)
set_internalvar (lookup_internalvar ("trace_file"),
- value_from_longest (charstar, (LONGEST) 0));
+ value_from_pointer (charstar, (LONGEST) 0));
else
{
len = strlen (traceframe_sal.symtab->filename);
@@ -759,7 +760,7 @@ trace_pass_command (args, from_tty)
/* ACTIONS functions: */
/* Prototypes for action-parsing utility commands */
-static void read_actions PARAMS ((struct tracepoint *));
+static void read_actions (struct tracepoint *);
/* The three functions:
collect_pseudocommand,
@@ -854,7 +855,7 @@ read_actions (t)
signal (STOP_SIGNAL, stop_sig);
}
#endif
- old_chain = make_cleanup ((make_cleanup_func) free_actions, (void *) t);
+ old_chain = make_cleanup_free_actions (t);
while (1)
{
/* Make sure that all output has been output. Some machines may let
@@ -977,8 +978,7 @@ validate_actionline (line, t)
/* else fall thru, treat p as an expression and parse it! */
}
exp = parse_exp_1 (&p, block_for_pc (t->address), 1);
- old_chain = make_cleanup ((make_cleanup_func) free_current_contents,
- &exp);
+ old_chain = make_cleanup (free_current_contents, &exp);
if (exp->elts[0].opcode == OP_VAR_VALUE)
{
@@ -1000,7 +1000,7 @@ validate_actionline (line, t)
/* we have something to collect, make sure that the expr to
bytecode translator can handle it and that it's not too long */
aexpr = gen_trace_for_expr (t->address, exp);
- (void) make_cleanup ((make_cleanup_func) free_agent_expr, aexpr);
+ make_cleanup_free_agent_expr (aexpr);
if (aexpr->len > MAX_AGENT_EXPR_LEN)
error ("expression too complicated, try simplifying");
@@ -1064,6 +1064,18 @@ free_actions (t)
t->actions = NULL;
}
+static void
+do_free_actions_cleanup (void *t)
+{
+ free_actions (t);
+}
+
+static struct cleanup *
+make_cleanup_free_actions (struct tracepoint *t)
+{
+ return make_cleanup (do_free_actions_cleanup, t);
+}
+
struct memrange
{
int type; /* 0 for absolute memory range, else basereg number */
@@ -1086,7 +1098,7 @@ tracepoint_list, stepping_list;
/* MEMRANGE functions: */
-static int memrange_cmp PARAMS ((const void *, const void *));
+static int memrange_cmp (const void *, const void *);
/* compare memranges for qsort */
static int
@@ -1588,8 +1600,7 @@ encode_actions (t, tdp_actions, stepping_actions)
struct agent_reqs areqs;
exp = parse_exp_1 (&action_exp, block_for_pc (t->address), 1);
- old_chain = make_cleanup ((make_cleanup_func)
- free_current_contents, &exp);
+ old_chain = make_cleanup (free_current_contents, &exp);
switch (exp->elts[0].opcode)
{
@@ -1618,8 +1629,7 @@ encode_actions (t, tdp_actions, stepping_actions)
default: /* full-fledged expression */
aexpr = gen_trace_for_expr (t->address, exp);
- old_chain1 = make_cleanup ((make_cleanup_func)
- free_agent_expr, aexpr);
+ old_chain1 = make_cleanup_free_agent_expr (aexpr);
ax_reqs (aexpr, &areqs);
if (areqs.flaw != agent_flaw_none)
diff --git a/gdb/tracepoint.h b/gdb/tracepoint.h
index c97b367d839..6f50f19ffbf 100644
--- a/gdb/tracepoint.h
+++ b/gdb/tracepoint.h
@@ -115,17 +115,16 @@ extern unsigned long trace_running_p;
/* A hook used to notify the UI of tracepoint operations */
-void (*create_tracepoint_hook) PARAMS ((struct tracepoint *));
-void (*delete_tracepoint_hook) PARAMS ((struct tracepoint *));
-void (*modify_tracepoint_hook) PARAMS ((struct tracepoint *));
-void (*trace_find_hook) PARAMS ((char *arg, int from_tty));
-void (*trace_start_stop_hook) PARAMS ((int start, int from_tty));
-
-struct tracepoint *get_tracepoint_by_number PARAMS ((char **, int, int));
-int get_traceframe_number PARAMS ((void));
-void free_actions PARAMS ((struct tracepoint *));
-enum actionline_type validate_actionline PARAMS ((char **,
- struct tracepoint *));
+void (*create_tracepoint_hook) (struct tracepoint *);
+void (*delete_tracepoint_hook) (struct tracepoint *);
+void (*modify_tracepoint_hook) (struct tracepoint *);
+void (*trace_find_hook) (char *arg, int from_tty);
+void (*trace_start_stop_hook) (int start, int from_tty);
+
+struct tracepoint *get_tracepoint_by_number (char **, int, int);
+int get_traceframe_number (void);
+void free_actions (struct tracepoint *);
+enum actionline_type validate_actionline (char **, struct tracepoint *);
/* Walk the following statement or block through all tracepoints.
diff --git a/gdb/tui/ChangeLog b/gdb/tui/ChangeLog
index 642b7cb71a1..d492a9d4966 100644
--- a/gdb/tui/ChangeLog
+++ b/gdb/tui/ChangeLog
@@ -1,3 +1,24 @@
+Thu May 25 14:46:20 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * tui-file.c: Include "tui.h", "tuiData.h", "tuiIO.h" and
+ "tuiCommand.h".
+ (tui_file_fputs): Pass ``file'' and not ``stream'' to
+ tui_file_adjust_strbuf.
+
+Thu May 25 16:58:01 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * tui.h: Include <ncurses.h> when available.
+ * tui.c, tuiGeneralWin.c: Do not include <curses.h>.
+
+Mon May 15 17:16:10 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * Makefile.in: Delete.
+
+Tue Apr 18 15:32:15 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * Makefile.in (distclean, maintainer-clean, realclean,
+ mostlyclean): New targets.
+
Tue Feb 1 00:17:12 2000 Andrew Cagney <cagney@b1.cygnus.com>
* tui-file.c, tui-file.h, tuiDisassem.c, tuiIO.c, tuiIO.h,
diff --git a/gdb/tui/Makefile.in b/gdb/tui/Makefile.in
deleted file mode 100644
index 256464b5bc5..00000000000
--- a/gdb/tui/Makefile.in
+++ /dev/null
@@ -1,168 +0,0 @@
-# Copyright 1998 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.
-
-all: libtui.a
-
-srcdir=@srcdir@
-VPATH = @srcdir@
-
-SHELL = @SHELL@
-
-CC=@CC@
-CFLAGS=@CFLAGS@
-AR=@AR@
-RANLIB=@RANLIB@
-
-# Host and target-dependent makefile fragments come in here.
-@host_makefile_frag@
-@target_makefile_frag@
-# End of host and target-dependent makefile fragments
-
-# Where is our "include" directory? Typically $(srcdir)/../include.
-# This is essentially the header file directory for the library
-# routines in libiberty.
-INCLUDE_DIR = $(srcdir)/../../include
-INCLUDE_CFLAGS = -I$(INCLUDE_DIR)
-
-# Configured by the --with-mmalloc option to configure.
-MMALLOC = @MMALLOC@
-MMALLOC_CFLAGS = @MMALLOC_CFLAGS@
-
-# Where is the BFD library? Typically in ../bfd.
-BFD_DIR = ../../bfd
-BFD_SRC = $(srcdir)/$(BFD_DIR)
-BFD_CFLAGS = -I$(BFD_DIR) -I$(BFD_SRC)
-
-# Where is the READLINE library? Typically in ../readline.
-READLINE_DIR = ../../readline
-READLINE_SRC = $(srcdir)/$(READLINE_DIR)
-READLINE_CFLAGS = -I$(READLINE_SRC)
-
-# Where is the INTL library? Typically in ../intl.
-INTL_DIR = ../../intl
-INTL_SRC = $(srcdir)/$(INTL_DIR)
-INTL_CFLAGS = -I$(INTL_DIR) -I$(INTL_SRC)
-
-# Where is the TCL library? Typically in ../tcl.
-TCL_CFLAGS = @TCLHDIR@
-
-# Where is the TK library? Typically in ../tk.
-TK_CFLAGS = @TKHDIR@ @TK_BUILD_INCLUDES@
-
-# Where is Itcl? Typically in ../itcl.
-ITCL_CFLAGS = @ITCLHDIR@
-
-# Where is Tix? Typically in ../tix.
-TIX_CFLAGS = @TIXHDIR@
-
-X11_CFLAGS = @TK_XINCLUDES@
-
-ENABLE_IDE= @ENABLE_IDE@
-
-GUI_CFLAGS_X = -I$(srcdir)/../../libgui/src
-
-IDE_CFLAGS_X = -I$(srcdir)/../../libidetcl/src -I$(srcdir)/../../libide/src \
- `if [ x"$(ENABLE_IDE)" != x ] ; then \
- echo -DIDE -I$(srcdir)/../../ilu/runtime/mainloop;\
- fi`
-
-IDE_CFLAGS=$(GUI_CFLAGS_X) $(IDE_CFLAGS_X)
-
-ENABLE_CFLAGS= @ENABLE_CFLAGS@
-
-# -I. for config files.
-# -I$(srcdir) for gdb internal headers and possibly for gnu-regex.h also.
-# -I$(srcdir)/config for more generic config files.
-
-# It is also possible that you will need to add -I/usr/include/sys if
-# your system doesn't have fcntl.h in /usr/include (which is where it
-# should be according to Posix).
-DEFS = @DEFS@
-GDB_CFLAGS = -I. -I.. -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../config $(DEFS)
-
-# M{H,T}_CFLAGS, if defined, have host- and target-dependent CFLAGS
-# from the config directory.
-GLOBAL_CFLAGS = $(MT_CFLAGS) $(MH_CFLAGS)
-#PROFILE_CFLAGS = -pg
-
-# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
-INTERNAL_CFLAGS = $(CFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \
- $(GDB_CFLAGS) $(READLINE_CFLAGS) $(BFD_CFLAGS) \
- $(MMALLOC_CFLAGS) $(INCLUDE_CFLAGS) $(INTL_CFLAGS) \
- $(ENABLE_CFLAGS)
-
-HEADERS = tuiIO.h tuiData.h tuiGeneralWin.h tuiLayout.h tuiStack.h \
- tuiSource.h tuiCommand.h tuiWin.h tuiDisassem.h \
- tuiSourceWin.h tuiRegs.h tuiDataWin.h
-
-SOURCES = tui.c tuiData.c tuiSource.c tuiStack.c tuiIO.c \
- tuiGeneralWin.c tuiLayout.c tuiWin.c tuiCommand.c \
- tuiDisassem.c tuiSourceWin.c tuiRegs.c tuiDataWin.c
-
-OBJECTS = tui.o tuiData.o tuiSource.o tuiStack.o tuiIO.o \
- tuiGeneralWin.o tuiLayout.o tuiWin.o tuiCommand.o \
- tuiDisassem.o tuiSourceWin.o tuiRegs.o tuiDataWin.o \
- tuiInit.o
-
-
-# Prevent Sun make from putting in the machine type. Setting
-# TARGET_ARCH to nothing works for SunOS 3, 4.0, but not for 4.1.
-.c.o:
- $(CC) -c $(INTERNAL_CFLAGS) $<
-.SUFFIXES: .cpp
-.c.cpp:
- $(CC) -E $(INTERNAL_CFLAGS) $< > $@
-
-libtui.a: $(OBJECTS)
- rm -f libtui.a
- $(AR) rc libtui.a $(OBJECTS)
- $(RANLIB) libtui.a
-
-tui.o: tui.c tui.h tuiData.h tuiLayout.h tuiIO.h tuiRegs.h tuiWin.h
-tuiCommand.o: tui.h tuiData.h tuiWin.h tuiIO.h
-tuiData.o: tui.h tuiData.h
-tuiDataWin.o: tui.h tuiData.h tuiRegs.h
-tuiDisassem.o: tui.h tuiData.h tuiLayout.h tuiSourceWin.h tuiStack.h
-tuiGeneralWin.o: tui.h tuiData.h tuiGeneralWin.h
-tuiIO.o: tui.h tuiData.h tuiIO.h tuiCommand.h tuiWin.h
-tuiLayout.o: tui.h tuiData.h tuiGeneralWin.h tuiStack.h tuiRegs.h \
- tuiDisassem.h
-tuiRegs.o: tui.h tuiData.h tuiLayout.h tuiWin.h
-tuiSource.o: tui.h tuiData.h tuiStack.h tuiSourceWin.h tuiSource.h
-tuiSourceWin.o: tui.h tuiData.h tuiStack.h tuiSourceWin.h tuiSource.h \
- tuiDisassem.h
-tuiStack.o: tui.h tuiData.h tuiStack.h tuiSourceWin.h
-tuiWin.o: tui.h tuiData.h tuiGeneralWin.h tuiStack.h tuiSourceWin.h \
- tuiDataWin.h
-
-tuiInit.o: tuiInit.c
-tuiInit.c: $(SOURCES)
- @echo Making tuiInit.c
- @rm -f init.c-tmp
- @echo '/* Do not modify this file. */' >init.c-tmp
- @echo '/* It is created automatically by the Makefile. */'>>init.c-tmp
- @echo '#include "ansidecl.h"' >>init.c-tmp
- @echo 'extern void initialize_tui_files PARAMS ((void));' >>init.c-tmp
- @echo 'void initialize_tui_files PARAMS ((void)) {' >>init.c-tmp
- @-( cd $(srcdir) ; grep '^_initialize_[a-z_0-9A-Z]* *(' $(SOURCES) ) 2>/dev/null \
- | sed -e 's/^.*://' -e 's/^\([a-z_0-9A-Z]*\).*/ {extern void \1 PARAMS ((void)); \1 ();}/' >>init.c-tmp
- @echo '}' >>init.c-tmp
- @mv init.c-tmp tuiInit.c
-
-clean:
- rm -f *.o *.a
diff --git a/gdb/tui/tui-file.c b/gdb/tui/tui-file.c
index 7822108de8a..1702db39d46 100644
--- a/gdb/tui/tui-file.c
+++ b/gdb/tui/tui-file.c
@@ -22,6 +22,13 @@
#include "ui-file.h"
#include "tui/tui-file.h"
+#ifdef TUI
+#include "tui.h"
+#include "tuiData.h"
+#include "tuiIO.h"
+#include "tuiCommand.h"
+#endif
+
#include <string.h>
/* Called instead of fputs for all TUI_FILE output. */
@@ -55,7 +62,7 @@ static ui_file_isatty_ftype tui_file_isatty;
static ui_file_rewind_ftype tui_file_rewind;
static ui_file_put_ftype tui_file_put;
static ui_file_delete_ftype tui_file_delete;
-static struct ui_file *tui_file_new PARAMS ((void));
+static struct ui_file *tui_file_new (void);
static int tui_file_magic;
static struct ui_file *
@@ -196,7 +203,7 @@ tui_file_fputs (linebuffer, file)
if (stream->ts_streamtype == astring)
{
- tui_file_adjust_strbuf (strlen (linebuffer), stream);
+ tui_file_adjust_strbuf (strlen (linebuffer), file);
strcat (stream->ts_strbuf, linebuffer);
}
else
@@ -215,7 +222,7 @@ tui_file_fputs (linebuffer, file)
/* The normal case - just do a fputs() */
if (stream->ts_streamtype == astring)
{
- tui_file_adjust_strbuf (strlen (linebuffer), stream);
+ tui_file_adjust_strbuf (strlen (linebuffer), file);
strcat (stream->ts_strbuf, linebuffer);
}
else
diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c
index 1e5593c10f8..67c31147e53 100644
--- a/gdb/tui/tui.c
+++ b/gdb/tui/tui.c
@@ -7,7 +7,6 @@
#include <stdlib.h>
#include <ctype.h>
#include <malloc.h>
-#include <curses.h>
#ifdef HAVE_TERM_H
#include <term.h>
#endif
@@ -45,10 +44,10 @@ extern char *tgoto ();
/*****************************
** Local static forward decls
******************************/
-static void _tuiReset PARAMS ((void));
-static void _toggle_command PARAMS ((char *, int));
-static void _tui_vToggle_command PARAMS ((va_list));
-static Opaque _tui_vDo PARAMS ((TuiOpaqueFuncPtr, va_list));
+static void _tuiReset (void);
+static void _toggle_command (char *, int);
+static void _tui_vToggle_command (va_list);
+static Opaque _tui_vDo (TuiOpaqueFuncPtr, va_list);
@@ -68,7 +67,7 @@ tuiInit (argv0)
#endif
{
extern void init_page_info ();
- extern void initialize_tui_files PARAMS ((void));
+extern void initialize_tui_files (void);
initialize_tui_files ();
initializeStaticData ();
diff --git a/gdb/tui/tui.h b/gdb/tui/tui.h
index b80b0e9fd35..695d70782ff 100644
--- a/gdb/tui/tui.h
+++ b/gdb/tui/tui.h
@@ -2,7 +2,11 @@
#ifndef TUI_H
#define TUI_H
+#if defined (HAVE_NCURSES_H)
+#include <ncurses.h>
+#elif defined (HAVE_CURSES_H)
#include <curses.h>
+#endif
#ifdef ANSI_PROTOTYPES
#include <stdarg.h>
@@ -22,23 +26,23 @@
/* Opaque data type */
typedef char *Opaque;
typedef
-Opaque (*OpaqueFuncPtr) PARAMS ((va_list));
+Opaque (*OpaqueFuncPtr) (va_list);
typedef char **OpaqueList;
typedef OpaqueList OpaquePtr;
/* Generic function pointer */
- typedef void (*TuiVoidFuncPtr) PARAMS ((va_list));
- typedef int (*TuiIntFuncPtr) PARAMS ((va_list));
+ typedef void (*TuiVoidFuncPtr) (va_list);
+ typedef int (*TuiIntFuncPtr) (va_list);
/*
- typedef Opaque (*TuiOpaqueFuncPtr) PARAMS ((va_list));
+ typedef Opaque (*TuiOpaqueFuncPtr) (va_list);
*/
typedef OpaqueFuncPtr TuiOpaqueFuncPtr;
- extern Opaque vcatch_errors PARAMS ((OpaqueFuncPtr,...));
- extern Opaque va_catch_errors PARAMS ((OpaqueFuncPtr, va_list));
+extern Opaque vcatch_errors (OpaqueFuncPtr, ...);
+extern Opaque va_catch_errors (OpaqueFuncPtr, va_list);
- extern void strcat_to_buf PARAMS ((char *, int, char *));
- extern void strcat_to_buf_with_fmt PARAMS ((char *, int, char *,...));
+extern void strcat_to_buf (char *, int, char *);
+extern void strcat_to_buf_with_fmt (char *, int, char *, ...);
/* Types of error returns */
typedef enum
@@ -93,37 +97,37 @@ TuiGenWinInfo, *TuiGenWinInfoPtr;
/* GENERAL TUI FUNCTIONS */
/* tui.c */
- extern void tuiInit PARAMS ((char *argv0));
- extern void tuiInitWindows PARAMS ((void));
- extern void tuiResetScreen PARAMS ((void));
- extern void tuiCleanUp PARAMS ((void));
- extern void tuiError PARAMS ((char *, int));
- extern void tui_vError PARAMS ((va_list));
- extern void tuiFree PARAMS ((char *));
- extern Opaque tuiDo PARAMS ((TuiOpaqueFuncPtr,...));
- extern Opaque tuiDoAndReturnToTop PARAMS ((TuiOpaqueFuncPtr,...));
- extern Opaque tuiGetLowDisassemblyAddress PARAMS ((Opaque, Opaque));
- extern Opaque tui_vGetLowDisassemblyAddress PARAMS ((va_list));
- extern void tui_vSelectSourceSymtab PARAMS ((va_list));
+extern void tuiInit (char *argv0);
+extern void tuiInitWindows (void);
+extern void tuiResetScreen (void);
+extern void tuiCleanUp (void);
+extern void tuiError (char *, int);
+extern void tui_vError (va_list);
+extern void tuiFree (char *);
+extern Opaque tuiDo (TuiOpaqueFuncPtr, ...);
+extern Opaque tuiDoAndReturnToTop (TuiOpaqueFuncPtr, ...);
+extern Opaque tuiGetLowDisassemblyAddress (Opaque, Opaque);
+extern Opaque tui_vGetLowDisassemblyAddress (va_list);
+extern void tui_vSelectSourceSymtab (va_list);
/* tuiDataWin.c */
- extern void tui_vCheckDataValues PARAMS ((va_list));
+extern void tui_vCheckDataValues (va_list);
/* tuiIO.c */
- extern void tui_vStartNewLines PARAMS ((va_list));
+extern void tui_vStartNewLines (va_list);
/* tuiLayout.c */
- extern void tui_vAddWinToLayout PARAMS ((va_list));
- extern TuiStatus tui_vSetLayoutTo PARAMS ((va_list));
+extern void tui_vAddWinToLayout (va_list);
+extern TuiStatus tui_vSetLayoutTo (va_list);
/* tuiSourceWin.c */
- extern void tuiDisplayMainFunction PARAMS ((void));
- extern void tuiUpdateAllExecInfos PARAMS ((void));
- extern void tuiUpdateOnEnd PARAMS ((void));
- extern void tui_vAllSetHasBreakAt PARAMS ((va_list));
- extern void tui_vUpdateSourceWindowsWithAddr PARAMS ((va_list));
+extern void tuiDisplayMainFunction (void);
+extern void tuiUpdateAllExecInfos (void);
+extern void tuiUpdateOnEnd (void);
+extern void tui_vAllSetHasBreakAt (va_list);
+extern void tui_vUpdateSourceWindowsWithAddr (va_list);
/* tuiStack.c */
- extern void tui_vShowFrameInfo PARAMS ((va_list));
- extern void tui_vUpdateLocatorFilename PARAMS ((va_list));
+extern void tui_vShowFrameInfo (va_list);
+extern void tui_vUpdateLocatorFilename (va_list);
#endif /* TUI_H */
diff --git a/gdb/tui/tuiCommand.h b/gdb/tui/tuiCommand.h
index 68b12e02b46..7d6a99f7f9e 100644
--- a/gdb/tui/tuiCommand.h
+++ b/gdb/tui/tuiCommand.h
@@ -15,11 +15,11 @@
** PUBLIC FUNCTION EXTERNAL DECLS **
******************************************/
-extern unsigned int tuiDispatchCtrlChar PARAMS ((unsigned int));
-extern int tuiIncrCommandCharCountBy PARAMS ((int));
-extern int tuiDecrCommandCharCountBy PARAMS ((int));
-extern int tuiSetCommandCharCountTo PARAMS ((int));
-extern int tuiClearCommandCharCount PARAMS ((void));
+extern unsigned int tuiDispatchCtrlChar (unsigned int);
+extern int tuiIncrCommandCharCountBy (int);
+extern int tuiDecrCommandCharCountBy (int);
+extern int tuiSetCommandCharCountTo (int);
+extern int tuiClearCommandCharCount (void);
#endif
/*_TUI_COMMAND_H*/
diff --git a/gdb/tui/tuiData.c b/gdb/tui/tuiData.c
index a4e38f3971d..50fa4a75c11 100644
--- a/gdb/tui/tuiData.c
+++ b/gdb/tui/tuiData.c
@@ -50,8 +50,8 @@ static int _winResized = FALSE;
/*********************************
** Static function forward decls
**********************************/
-static void freeContent PARAMS ((TuiWinContent, int, TuiWinType));
-static void freeContentElements PARAMS ((TuiWinContent, int, TuiWinType));
+static void freeContent (TuiWinContent, int, TuiWinType);
+static void freeContentElements (TuiWinContent, int, TuiWinType);
diff --git a/gdb/tui/tuiData.h b/gdb/tui/tuiData.h
index dc9c69179cd..a87835dad8f 100644
--- a/gdb/tui/tuiData.h
+++ b/gdb/tui/tuiData.h
@@ -269,64 +269,59 @@ extern int tui_version;
#define cmdWin winList[CMD_WIN]
/* Data Manipulation Functions */
-extern void initializeStaticData PARAMS ((void));
-extern TuiGenWinInfoPtr allocGenericWinInfo PARAMS ((void));
-extern TuiWinInfoPtr allocWinInfo PARAMS ((TuiWinType));
-extern void initGenericPart PARAMS ((TuiGenWinInfoPtr));
-extern void initWinInfo PARAMS ((TuiWinInfoPtr));
-extern TuiWinContent allocContent PARAMS ((int, TuiWinType));
-extern int addContentElements
- PARAMS ((TuiGenWinInfoPtr, int));
-extern void initContentElement
- PARAMS ((TuiWinElementPtr, TuiWinType));
-extern void freeWindow PARAMS ((TuiWinInfoPtr));
-extern void freeAllWindows PARAMS ((void));
-extern void freeWinContent PARAMS ((TuiGenWinInfoPtr));
-extern void freeDataContent PARAMS ((TuiWinContent, int));
-extern void freeAllSourceWinsContent PARAMS ((void));
-extern void tuiDelWindow PARAMS ((TuiWinInfoPtr));
-extern void tuiDelDataWindows PARAMS ((TuiWinContent, int));
-extern TuiWinInfoPtr winByName PARAMS ((char *));
-extern TuiWinInfoPtr partialWinByName PARAMS ((char *));
-extern char *winName PARAMS ((TuiGenWinInfoPtr));
-extern char *displayableWinContentOf
- PARAMS ((TuiGenWinInfoPtr, TuiWinElementPtr));
-extern char *displayableWinContentAt
- PARAMS ((TuiGenWinInfoPtr, int));
-extern int winElementHeight
- PARAMS ((TuiGenWinInfoPtr, TuiWinElementPtr));
-extern TuiLayoutType currentLayout PARAMS ((void));
-extern void setCurrentLayoutTo PARAMS ((TuiLayoutType));
-extern int termHeight PARAMS ((void));
-extern void setTermHeight PARAMS ((int));
-extern int termWidth PARAMS ((void));
-extern void setTermWidth PARAMS ((int));
-extern int historyLimit PARAMS ((void));
-extern void setHistoryLimit PARAMS ((int));
-extern void setGenWinOrigin PARAMS ((TuiGenWinInfoPtr, int, int));
-extern TuiGenWinInfoPtr locatorWinInfoPtr PARAMS ((void));
-extern TuiGenWinInfoPtr sourceExecInfoWinPtr PARAMS ((void));
-extern TuiGenWinInfoPtr disassemExecInfoWinPtr PARAMS ((void));
-extern char *nullStr PARAMS ((void));
-extern char *blankStr PARAMS ((void));
-extern char *locationStr PARAMS ((void));
-extern char *breakStr PARAMS ((void));
-extern char *breakLocationStr PARAMS ((void));
-extern TuiListPtr sourceWindows PARAMS ((void));
-extern void clearSourceWindows PARAMS ((void));
-extern void clearSourceWindowsDetail PARAMS ((void));
-extern void clearWinDetail PARAMS ((TuiWinInfoPtr winInfo));
-extern void tuiAddToSourceWindows PARAMS ((TuiWinInfoPtr));
-extern int tuiDefaultTabLen PARAMS ((void));
-extern void tuiSetDefaultTabLen PARAMS ((int));
-extern TuiWinInfoPtr tuiWinWithFocus PARAMS ((void));
-extern void tuiSetWinWithFocus PARAMS ((TuiWinInfoPtr));
-extern TuiLayoutDefPtr tuiLayoutDef PARAMS ((void));
-extern int tuiWinResized PARAMS ((void));
-extern void tuiSetWinResizedTo PARAMS ((int));
-
-extern TuiWinInfoPtr tuiNextWin PARAMS ((TuiWinInfoPtr));
-extern TuiWinInfoPtr tuiPrevWin PARAMS ((TuiWinInfoPtr));
+extern void initializeStaticData (void);
+extern TuiGenWinInfoPtr allocGenericWinInfo (void);
+extern TuiWinInfoPtr allocWinInfo (TuiWinType);
+extern void initGenericPart (TuiGenWinInfoPtr);
+extern void initWinInfo (TuiWinInfoPtr);
+extern TuiWinContent allocContent (int, TuiWinType);
+extern int addContentElements (TuiGenWinInfoPtr, int);
+extern void initContentElement (TuiWinElementPtr, TuiWinType);
+extern void freeWindow (TuiWinInfoPtr);
+extern void freeAllWindows (void);
+extern void freeWinContent (TuiGenWinInfoPtr);
+extern void freeDataContent (TuiWinContent, int);
+extern void freeAllSourceWinsContent (void);
+extern void tuiDelWindow (TuiWinInfoPtr);
+extern void tuiDelDataWindows (TuiWinContent, int);
+extern TuiWinInfoPtr winByName (char *);
+extern TuiWinInfoPtr partialWinByName (char *);
+extern char *winName (TuiGenWinInfoPtr);
+extern char *displayableWinContentOf (TuiGenWinInfoPtr, TuiWinElementPtr);
+extern char *displayableWinContentAt (TuiGenWinInfoPtr, int);
+extern int winElementHeight (TuiGenWinInfoPtr, TuiWinElementPtr);
+extern TuiLayoutType currentLayout (void);
+extern void setCurrentLayoutTo (TuiLayoutType);
+extern int termHeight (void);
+extern void setTermHeight (int);
+extern int termWidth (void);
+extern void setTermWidth (int);
+extern int historyLimit (void);
+extern void setHistoryLimit (int);
+extern void setGenWinOrigin (TuiGenWinInfoPtr, int, int);
+extern TuiGenWinInfoPtr locatorWinInfoPtr (void);
+extern TuiGenWinInfoPtr sourceExecInfoWinPtr (void);
+extern TuiGenWinInfoPtr disassemExecInfoWinPtr (void);
+extern char *nullStr (void);
+extern char *blankStr (void);
+extern char *locationStr (void);
+extern char *breakStr (void);
+extern char *breakLocationStr (void);
+extern TuiListPtr sourceWindows (void);
+extern void clearSourceWindows (void);
+extern void clearSourceWindowsDetail (void);
+extern void clearWinDetail (TuiWinInfoPtr winInfo);
+extern void tuiAddToSourceWindows (TuiWinInfoPtr);
+extern int tuiDefaultTabLen (void);
+extern void tuiSetDefaultTabLen (int);
+extern TuiWinInfoPtr tuiWinWithFocus (void);
+extern void tuiSetWinWithFocus (TuiWinInfoPtr);
+extern TuiLayoutDefPtr tuiLayoutDef (void);
+extern int tuiWinResized (void);
+extern void tuiSetWinResizedTo (int);
+
+extern TuiWinInfoPtr tuiNextWin (TuiWinInfoPtr);
+extern TuiWinInfoPtr tuiPrevWin (TuiWinInfoPtr);
#endif /* TUI_DATA_H */
diff --git a/gdb/tui/tuiDataWin.h b/gdb/tui/tuiDataWin.h
index 91ba9ec1b2a..2468736bf0b 100644
--- a/gdb/tui/tuiDataWin.h
+++ b/gdb/tui/tuiDataWin.h
@@ -14,17 +14,17 @@
/*****************************************
** PUBLIC FUNCTION EXTERNAL DECLS **
******************************************/
-extern void tuiEraseDataContent PARAMS ((char *));
-extern void tuiDisplayAllData PARAMS ((void));
-extern void tuiCheckDataValues PARAMS ((struct frame_info *));
-extern void tui_vCheckDataValues PARAMS ((va_list));
-extern void tuiDisplayDataFromLine PARAMS ((int));
-extern int tuiFirstDataItemDisplayed PARAMS ((void));
-extern int tuiFirstDataElementNoInLine PARAMS ((int));
-extern void tuiDeleteDataContentWindows PARAMS ((void));
-extern void tuiRefreshDataWin PARAMS ((void));
-extern void tuiDisplayDataFrom PARAMS ((int, int));
-extern void tuiVerticalDataScroll PARAMS ((TuiScrollDirection, int));
+extern void tuiEraseDataContent (char *);
+extern void tuiDisplayAllData (void);
+extern void tuiCheckDataValues (struct frame_info *);
+extern void tui_vCheckDataValues (va_list);
+extern void tuiDisplayDataFromLine (int);
+extern int tuiFirstDataItemDisplayed (void);
+extern int tuiFirstDataElementNoInLine (int);
+extern void tuiDeleteDataContentWindows (void);
+extern void tuiRefreshDataWin (void);
+extern void tuiDisplayDataFrom (int, int);
+extern void tuiVerticalDataScroll (TuiScrollDirection, int);
#endif
/*_TUI_DATAWIN_H*/
diff --git a/gdb/tui/tuiDisassem.c b/gdb/tui/tuiDisassem.c
index a6df69432f5..0f106a7fb33 100644
--- a/gdb/tui/tuiDisassem.c
+++ b/gdb/tui/tuiDisassem.c
@@ -20,7 +20,7 @@
** STATIC LOCAL FUNCTIONS FORWARD DECLS **
******************************************/
-static struct breakpoint *_hasBreak PARAMS ((CORE_ADDR));
+static struct breakpoint *_hasBreak (CORE_ADDR);
/*****************************************
@@ -56,8 +56,8 @@ tuiSetDisassemContent (s, startAddr)
CORE_ADDR newpc, pc;
disassemble_info asmInfo;
TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
- extern void strcat_address PARAMS ((CORE_ADDR, char *, int));
- extern void strcat_address_numeric PARAMS ((CORE_ADDR, int, char *, int));
+extern void strcat_address (CORE_ADDR, char *, int);
+extern void strcat_address_numeric (CORE_ADDR, int, char *, int);
int curLen = 0;
int tab_len = tuiDefaultTabLen ();
diff --git a/gdb/tui/tuiDisassem.h b/gdb/tui/tuiDisassem.h
index 404b2f44fa2..3e9566066e1 100644
--- a/gdb/tui/tuiDisassem.h
+++ b/gdb/tui/tuiDisassem.h
@@ -13,11 +13,11 @@
/*****************************************
** PUBLIC FUNCTION EXTERNAL DECLS **
******************************************/
-extern TuiStatus tuiSetDisassemContent PARAMS ((struct symtab *, Opaque));
-extern void tuiShowDisassem PARAMS ((Opaque));
-extern void tuiShowDisassemAndUpdateSource PARAMS ((Opaque));
-extern void tuiVerticalDisassemScroll PARAMS ((TuiScrollDirection, int));
-extern Opaque tuiGetBeginAsmAddress PARAMS ((void));
+extern TuiStatus tuiSetDisassemContent (struct symtab *, Opaque);
+extern void tuiShowDisassem (Opaque);
+extern void tuiShowDisassemAndUpdateSource (Opaque);
+extern void tuiVerticalDisassemScroll (TuiScrollDirection, int);
+extern Opaque tuiGetBeginAsmAddress (void);
#endif
/*_TUI_DISASSEM_H*/
diff --git a/gdb/tui/tuiGeneralWin.c b/gdb/tui/tuiGeneralWin.c
index b1caf690f75..061ecc1564f 100644
--- a/gdb/tui/tuiGeneralWin.c
+++ b/gdb/tui/tuiGeneralWin.c
@@ -3,7 +3,6 @@
** This module supports general window behavior
*/
-#include <curses.h>
#include "defs.h"
#include "tui.h"
#include "tuiData.h"
@@ -13,7 +12,7 @@
/*
** local support functions
*/
-static void _winResize PARAMS ((void));
+static void _winResize (void);
/***********************
diff --git a/gdb/tui/tuiGeneralWin.h b/gdb/tui/tuiGeneralWin.h
index 2c843ef9269..3bd0f163924 100644
--- a/gdb/tui/tuiGeneralWin.h
+++ b/gdb/tui/tuiGeneralWin.h
@@ -4,20 +4,20 @@
/*
** Functions
*/
-extern void tuiClearWin PARAMS ((TuiGenWinInfoPtr));
-extern void unhighlightWin PARAMS ((TuiWinInfoPtr));
-extern void makeVisible PARAMS ((TuiGenWinInfoPtr, int));
-extern void makeAllVisible PARAMS ((int));
-extern void scrollWinForward PARAMS ((TuiGenWinInfoPtr, int));
-extern void scrollWinBackward PARAMS ((TuiGenWinInfoPtr, int));
-extern void makeWindow PARAMS ((TuiGenWinInfoPtr, int));
-extern TuiWinInfoPtr copyWin PARAMS ((TuiWinInfoPtr));
-extern void boxWin PARAMS ((TuiGenWinInfoPtr, int));
-extern void highlightWin PARAMS ((TuiWinInfoPtr));
-extern void checkAndDisplayHighlightIfNeeded PARAMS ((TuiWinInfoPtr));
-extern void refreshAll PARAMS ((TuiWinInfoPtr *));
-extern void tuiDelwin PARAMS ((WINDOW * window));
-extern void tuiRefreshWin PARAMS ((TuiGenWinInfoPtr));
+extern void tuiClearWin (TuiGenWinInfoPtr);
+extern void unhighlightWin (TuiWinInfoPtr);
+extern void makeVisible (TuiGenWinInfoPtr, int);
+extern void makeAllVisible (int);
+extern void scrollWinForward (TuiGenWinInfoPtr, int);
+extern void scrollWinBackward (TuiGenWinInfoPtr, int);
+extern void makeWindow (TuiGenWinInfoPtr, int);
+extern TuiWinInfoPtr copyWin (TuiWinInfoPtr);
+extern void boxWin (TuiGenWinInfoPtr, int);
+extern void highlightWin (TuiWinInfoPtr);
+extern void checkAndDisplayHighlightIfNeeded (TuiWinInfoPtr);
+extern void refreshAll (TuiWinInfoPtr *);
+extern void tuiDelwin (WINDOW * window);
+extern void tuiRefreshWin (TuiGenWinInfoPtr);
/*
** Macros
diff --git a/gdb/tui/tuiIO.c b/gdb/tui/tuiIO.c
index 60a296526f8..c8427c00f3c 100644
--- a/gdb/tui/tuiIO.c
+++ b/gdb/tui/tuiIO.c
@@ -29,8 +29,8 @@ int insert_mode = 0;
/********************************************
** LOCAL STATIC FORWARD DECLS **
********************************************/
-static void _updateCommandInfo PARAMS ((int));
-static unsigned int _tuiHandleResizeDuringIO PARAMS ((unsigned int));
+static void _updateCommandInfo (int);
+static unsigned int _tuiHandleResizeDuringIO (unsigned int);
/*********************************************************************************
@@ -112,7 +112,7 @@ void
tui_tputs (str, affcnt, putfunc)
char *str;
int affcnt;
- int (*putfunc) PARAMS ((int));
+ int (*putfunc) (int);
{
extern char *rl_prompt; /* the prompt string */
diff --git a/gdb/tui/tuiIO.h b/gdb/tui/tuiIO.h
index a1fe6a098ef..11af44e03ea 100644
--- a/gdb/tui/tuiIO.h
+++ b/gdb/tui/tuiIO.h
@@ -8,14 +8,14 @@
#include <stdio.h>
extern void tuiPuts_unfiltered (const char *, struct ui_file *);
-extern unsigned int tuiGetc PARAMS ((void));
-extern unsigned int tuiBufferGetc PARAMS ((void));
-extern int tuiRead PARAMS ((int, char *, int));
-extern void tuiStartNewLines PARAMS ((int));
-extern void tui_vStartNewLines PARAMS ((va_list));
-extern unsigned int tui_vwgetch PARAMS ((va_list));
-extern void tuiTermSetup PARAMS ((int));
-extern void tuiTermUnsetup PARAMS ((int, int));
+extern unsigned int tuiGetc (void);
+extern unsigned int tuiBufferGetc (void);
+extern int tuiRead (int, char *, int);
+extern void tuiStartNewLines (int);
+extern void tui_vStartNewLines (va_list);
+extern unsigned int tui_vwgetch (va_list);
+extern void tuiTermSetup (int);
+extern void tuiTermUnsetup (int, int);
diff --git a/gdb/tui/tuiLayout.c b/gdb/tui/tuiLayout.c
index 23cd7d6a1b2..337665ea111 100644
--- a/gdb/tui/tuiLayout.c
+++ b/gdb/tui/tuiLayout.c
@@ -28,25 +28,25 @@ static void _showSourceOrDisassemAndCommand PARAMS
((TuiLayoutType));
static void _makeSourceOrDisassemWindow PARAMS
((TuiWinInfoPtr *, TuiWinType, int, int));
-static void _makeCommandWindow PARAMS ((TuiWinInfoPtr *, int, int));
-static void _makeSourceWindow PARAMS ((TuiWinInfoPtr *, int, int));
+static void _makeCommandWindow (TuiWinInfoPtr *, int, int);
+static void _makeSourceWindow (TuiWinInfoPtr *, int, int);
static void _makeDisassemWindow PARAMS
((TuiWinInfoPtr *, int, int));
-static void _makeDataWindow PARAMS ((TuiWinInfoPtr *, int, int));
-static void _showSourceCommand PARAMS ((void));
-static void _showDisassemCommand PARAMS ((void));
-static void _showSourceDisassemCommand PARAMS ((void));
-static void _showData PARAMS ((TuiLayoutType));
-static TuiLayoutType _nextLayout PARAMS ((void));
-static TuiLayoutType _prevLayout PARAMS ((void));
-static void _tuiLayout_command PARAMS ((char *, int));
-static void _tuiToggleLayout_command PARAMS ((char *, int));
-static void _tui_vToggleLayout_command PARAMS ((va_list));
-static void _tuiToggleSplitLayout_command PARAMS ((char *, int));
-static void _tui_vToggleSplitLayout_command PARAMS ((va_list));
-static Opaque _extractDisplayStartAddr PARAMS ((void));
-static void _tuiHandleXDBLayout PARAMS ((TuiLayoutDefPtr));
-static TuiStatus _tuiSetLayoutTo PARAMS ((char *));
+static void _makeDataWindow (TuiWinInfoPtr *, int, int);
+static void _showSourceCommand (void);
+static void _showDisassemCommand (void);
+static void _showSourceDisassemCommand (void);
+static void _showData (TuiLayoutType);
+static TuiLayoutType _nextLayout (void);
+static TuiLayoutType _prevLayout (void);
+static void _tuiLayout_command (char *, int);
+static void _tuiToggleLayout_command (char *, int);
+static void _tui_vToggleLayout_command (va_list);
+static void _tuiToggleSplitLayout_command (char *, int);
+static void _tui_vToggleSplitLayout_command (va_list);
+static Opaque _extractDisplayStartAddr (void);
+static void _tuiHandleXDBLayout (TuiLayoutDefPtr);
+static TuiStatus _tuiSetLayoutTo (char *);
/***************************************
diff --git a/gdb/tui/tuiLayout.h b/gdb/tui/tuiLayout.h
index 81d69158098..1c6774dee05 100644
--- a/gdb/tui/tuiLayout.h
+++ b/gdb/tui/tuiLayout.h
@@ -1,15 +1,12 @@
#ifndef TUI_LAYOUT_H
#define TUI_LAYOUT_H
-extern void showLayout PARAMS ((TuiLayoutType));
-extern void tuiAddWinToLayout PARAMS ((TuiWinType));
-extern void tui_vAddWinToLayout PARAMS ((va_list));
-extern int tuiDefaultWinHeight
- PARAMS ((TuiWinType, TuiLayoutType));
-extern int tuiDefaultWinViewportHeight
- PARAMS ((TuiWinType, TuiLayoutType));
-extern TuiStatus tuiSetLayout
- PARAMS ((TuiLayoutType, TuiRegisterDisplayType));
-extern TuiStatus tui_vSetLayoutTo PARAMS ((va_list));
+extern void showLayout (TuiLayoutType);
+extern void tuiAddWinToLayout (TuiWinType);
+extern void tui_vAddWinToLayout (va_list);
+extern int tuiDefaultWinHeight (TuiWinType, TuiLayoutType);
+extern int tuiDefaultWinViewportHeight (TuiWinType, TuiLayoutType);
+extern TuiStatus tuiSetLayout (TuiLayoutType, TuiRegisterDisplayType);
+extern TuiStatus tui_vSetLayoutTo (va_list);
#endif /*TUI_LAYOUT_H */
diff --git a/gdb/tui/tuiRegs.c b/gdb/tui/tuiRegs.c
index 30dd906da9c..1efadd065c9 100644
--- a/gdb/tui/tuiRegs.c
+++ b/gdb/tui/tuiRegs.c
@@ -50,34 +50,28 @@
** STATIC LOCAL FUNCTIONS FORWARD DECLS **
******************************************/
static TuiStatus _tuiSetRegsContent
- PARAMS ((int, int, struct frame_info *,
- TuiRegisterDisplayType, int));
-static char *_tuiRegisterName PARAMS ((int));
-static TuiStatus _tuiGetRegisterRawValue
- PARAMS ((int, char *, struct frame_info *));
+ (int, int, struct frame_info *, TuiRegisterDisplayType, int);
+static char *_tuiRegisterName (int);
+static TuiStatus _tuiGetRegisterRawValue (int, char *, struct frame_info *);
static void _tuiSetRegisterElement
- PARAMS ((int, struct frame_info *,
- TuiDataElementPtr, int));
-static void _tuiDisplayRegister
- PARAMS ((int, TuiGenWinInfoPtr, enum precision_type));
+ (int, struct frame_info *, TuiDataElementPtr, int);
+static void _tuiDisplayRegister (int, TuiGenWinInfoPtr, enum precision_type);
static void _tuiRegisterFormat
- PARAMS ((char *, int, int, TuiDataElementPtr,
- enum precision_type));
-static TuiStatus _tuiSetGeneralRegsContent PARAMS ((int));
-static TuiStatus _tuiSetSpecialRegsContent PARAMS ((int));
-static TuiStatus _tuiSetGeneralAndSpecialRegsContent PARAMS ((int));
-static TuiStatus _tuiSetFloatRegsContent PARAMS ((TuiRegisterDisplayType, int));
+ (char *, int, int, TuiDataElementPtr, enum precision_type);
+static TuiStatus _tuiSetGeneralRegsContent (int);
+static TuiStatus _tuiSetSpecialRegsContent (int);
+static TuiStatus _tuiSetGeneralAndSpecialRegsContent (int);
+static TuiStatus _tuiSetFloatRegsContent (TuiRegisterDisplayType, int);
static int _tuiRegValueHasChanged
- PARAMS ((TuiDataElementPtr, struct frame_info *,
- char *));
-static void _tuiShowFloat_command PARAMS ((char *, int));
-static void _tuiShowGeneral_command PARAMS ((char *, int));
-static void _tuiShowSpecial_command PARAMS ((char *, int));
-static void _tui_vShowRegisters_commandSupport PARAMS ((va_list));
-static void _tuiToggleFloatRegs_command PARAMS ((char *, int));
-static void _tuiScrollRegsForward_command PARAMS ((char *, int));
-static void _tuiScrollRegsBackward_command PARAMS ((char *, int));
-static void _tui_vShowRegisters_commandSupport PARAMS ((va_list));
+ (TuiDataElementPtr, struct frame_info *, char *);
+static void _tuiShowFloat_command (char *, int);
+static void _tuiShowGeneral_command (char *, int);
+static void _tuiShowSpecial_command (char *, int);
+static void _tui_vShowRegisters_commandSupport (va_list);
+static void _tuiToggleFloatRegs_command (char *, int);
+static void _tuiScrollRegsForward_command (char *, int);
+static void _tuiScrollRegsBackward_command (char *, int);
+static void _tui_vShowRegisters_commandSupport (va_list);
diff --git a/gdb/tui/tuiRegs.h b/gdb/tui/tuiRegs.h
index a9f077d1860..65d163bc23c 100644
--- a/gdb/tui/tuiRegs.h
+++ b/gdb/tui/tuiRegs.h
@@ -13,16 +13,16 @@
/*****************************************
** PUBLIC FUNCTION EXTERNAL DECLS **
******************************************/
-extern void tuiCheckRegisterValues PARAMS ((struct frame_info *));
-extern void tuiShowRegisters PARAMS ((TuiRegisterDisplayType));
-extern void tuiDisplayRegistersFrom PARAMS ((int));
-extern int tuiDisplayRegistersFromLine PARAMS ((int, int));
-extern int tuiLastRegsLineNo PARAMS ((void));
-extern int tuiFirstRegElementInLine PARAMS ((int));
-extern int tuiLastRegElementInLine PARAMS ((int));
-extern int tuiLineFromRegElementNo PARAMS ((int));
-extern void tuiToggleFloatRegs PARAMS ((void));
-extern int tuiCalculateRegsColumnCount PARAMS ((TuiRegisterDisplayType));
+extern void tuiCheckRegisterValues (struct frame_info *);
+extern void tuiShowRegisters (TuiRegisterDisplayType);
+extern void tuiDisplayRegistersFrom (int);
+extern int tuiDisplayRegistersFromLine (int, int);
+extern int tuiLastRegsLineNo (void);
+extern int tuiFirstRegElementInLine (int);
+extern int tuiLastRegElementInLine (int);
+extern int tuiLineFromRegElementNo (int);
+extern void tuiToggleFloatRegs (void);
+extern int tuiCalculateRegsColumnCount (TuiRegisterDisplayType);
#endif
diff --git a/gdb/tui/tuiSource.c b/gdb/tui/tuiSource.c
index 356b0140a3b..83cc06742dc 100644
--- a/gdb/tui/tuiSource.c
+++ b/gdb/tui/tuiSource.c
@@ -28,7 +28,7 @@ extern struct symtab *current_source_symtab;
** STATIC LOCAL FUNCTIONS FORWARD DECLS **
******************************************/
-static struct breakpoint *_hasBreak PARAMS ((char *, int));
+static struct breakpoint *_hasBreak (char *, int);
/*****************************************
diff --git a/gdb/tui/tuiSource.h b/gdb/tui/tuiSource.h
index 8545c1fa3c9..3f590e5b9c8 100644
--- a/gdb/tui/tuiSource.h
+++ b/gdb/tui/tuiSource.h
@@ -11,11 +11,11 @@
#include "breakpoint.h"
#endif
-extern TuiStatus tuiSetSourceContent PARAMS ((struct symtab *, int, int));
-extern void tuiShowSource PARAMS ((struct symtab *, Opaque, int));
-extern void tuiShowSourceAsIs PARAMS ((struct symtab *, Opaque, int));
-extern int tuiSourceIsDisplayed PARAMS ((char *));
-extern void tuiVerticalSourceScroll PARAMS ((TuiScrollDirection, int));
+extern TuiStatus tuiSetSourceContent (struct symtab *, int, int);
+extern void tuiShowSource (struct symtab *, Opaque, int);
+extern void tuiShowSourceAsIs (struct symtab *, Opaque, int);
+extern int tuiSourceIsDisplayed (char *);
+extern void tuiVerticalSourceScroll (TuiScrollDirection, int);
/*******************
diff --git a/gdb/tui/tuiSourceWin.h b/gdb/tui/tuiSourceWin.h
index 2da01910a5e..fb6cd81ba40 100644
--- a/gdb/tui/tuiSourceWin.h
+++ b/gdb/tui/tuiSourceWin.h
@@ -5,42 +5,43 @@
*/
-extern void tuiDisplayMainFunction PARAMS ((void));
+extern void tuiDisplayMainFunction (void);
extern void tuiUpdateSourceWindow PARAMS
((TuiWinInfoPtr, struct symtab *, Opaque, int));
extern void tuiUpdateSourceWindowAsIs PARAMS
((TuiWinInfoPtr, struct symtab *, Opaque, int));
-extern void tuiUpdateSourceWindowsWithAddr PARAMS ((Opaque));
-extern void tui_vUpdateSourceWindowsWithAddr PARAMS ((va_list));
-extern void tuiUpdateSourceWindowsWithLine PARAMS ((struct symtab *, int));
-extern void tui_vUpdateSourceWindowsWithLine PARAMS ((va_list));
-extern void tuiUpdateSourceWindowsFromLocator PARAMS ((void));
-extern void tuiClearSourceContent PARAMS ((TuiWinInfoPtr, int));
-extern void tuiClearAllSourceWinsContent PARAMS ((int));
-extern void tuiEraseSourceContent PARAMS ((TuiWinInfoPtr, int));
-extern void tuiEraseAllSourceWinsContent PARAMS ((int));
-extern void tuiSetSourceContentNil PARAMS ((TuiWinInfoPtr, char *));
-extern void tuiShowSourceContent PARAMS ((TuiWinInfoPtr));
-extern void tuiShowAllSourceWinsContent PARAMS ((void));
-extern void tuiHorizontalSourceScroll PARAMS ((TuiWinInfoPtr, TuiScrollDirection, int));
-extern void tuiUpdateOnEnd PARAMS ((void));
+extern void tuiUpdateSourceWindowsWithAddr (Opaque);
+extern void tui_vUpdateSourceWindowsWithAddr (va_list);
+extern void tuiUpdateSourceWindowsWithLine (struct symtab *, int);
+extern void tui_vUpdateSourceWindowsWithLine (va_list);
+extern void tuiUpdateSourceWindowsFromLocator (void);
+extern void tuiClearSourceContent (TuiWinInfoPtr, int);
+extern void tuiClearAllSourceWinsContent (int);
+extern void tuiEraseSourceContent (TuiWinInfoPtr, int);
+extern void tuiEraseAllSourceWinsContent (int);
+extern void tuiSetSourceContentNil (TuiWinInfoPtr, char *);
+extern void tuiShowSourceContent (TuiWinInfoPtr);
+extern void tuiShowAllSourceWinsContent (void);
+extern void tuiHorizontalSourceScroll (TuiWinInfoPtr, TuiScrollDirection,
+ int);
+extern void tuiUpdateOnEnd (void);
-extern TuiStatus tuiSetExecInfoContent PARAMS ((TuiWinInfoPtr));
-extern void tuiShowExecInfoContent PARAMS ((TuiWinInfoPtr));
-extern void tuiShowAllExecInfosContent PARAMS ((void));
-extern void tuiEraseExecInfoContent PARAMS ((TuiWinInfoPtr));
-extern void tuiEraseAllExecInfosContent PARAMS ((void));
-extern void tuiClearExecInfoContent PARAMS ((TuiWinInfoPtr));
-extern void tuiClearAllExecInfosContent PARAMS ((void));
-extern void tuiUpdateExecInfo PARAMS ((TuiWinInfoPtr));
-extern void tuiUpdateAllExecInfos PARAMS ((void));
+extern TuiStatus tuiSetExecInfoContent (TuiWinInfoPtr);
+extern void tuiShowExecInfoContent (TuiWinInfoPtr);
+extern void tuiShowAllExecInfosContent (void);
+extern void tuiEraseExecInfoContent (TuiWinInfoPtr);
+extern void tuiEraseAllExecInfosContent (void);
+extern void tuiClearExecInfoContent (TuiWinInfoPtr);
+extern void tuiClearAllExecInfosContent (void);
+extern void tuiUpdateExecInfo (TuiWinInfoPtr);
+extern void tuiUpdateAllExecInfos (void);
-extern void tuiSetIsExecPointAt PARAMS ((Opaque, TuiWinInfoPtr));
-extern void tuiSetHasBreakAt PARAMS ((struct breakpoint *, TuiWinInfoPtr, int));
-extern void tuiAllSetHasBreakAt PARAMS ((struct breakpoint *, int));
-extern void tui_vAllSetHasBreakAt PARAMS ((va_list));
-extern TuiStatus tuiAllocSourceBuffer PARAMS ((TuiWinInfoPtr));
-extern int tuiLineIsDisplayed PARAMS ((Opaque, TuiWinInfoPtr, int));
+extern void tuiSetIsExecPointAt (Opaque, TuiWinInfoPtr);
+extern void tuiSetHasBreakAt (struct breakpoint *, TuiWinInfoPtr, int);
+extern void tuiAllSetHasBreakAt (struct breakpoint *, int);
+extern void tui_vAllSetHasBreakAt (va_list);
+extern TuiStatus tuiAllocSourceBuffer (TuiWinInfoPtr);
+extern int tuiLineIsDisplayed (Opaque, TuiWinInfoPtr, int);
/*
diff --git a/gdb/tui/tuiStack.c b/gdb/tui/tuiStack.c
index c9c95d2766d..c0f51eff75e 100644
--- a/gdb/tui/tuiStack.c
+++ b/gdb/tui/tuiStack.c
@@ -17,8 +17,8 @@
** STATIC LOCAL FUNCTIONS FORWARD DECLS **
******************************************/
-static char *_getFuncNameFromFrame PARAMS ((struct frame_info *));
-static void _tuiUpdateLocation_command PARAMS ((char *, int));
+static char *_getFuncNameFromFrame (struct frame_info *);
+static void _tuiUpdateLocation_command (char *, int);
@@ -529,7 +529,7 @@ _tuiUpdateLocation_command (arg, fromTTY)
#endif
{
#ifndef TRY
- extern void frame_command PARAMS ((char *, int));
+extern void frame_command (char *, int);
frame_command ("0", FALSE);
#else
struct frame_info *curFrame;
diff --git a/gdb/tui/tuiStack.h b/gdb/tui/tuiStack.h
index 4d7f2f0a5b4..d0bc6134344 100644
--- a/gdb/tui/tuiStack.h
+++ b/gdb/tui/tuiStack.h
@@ -4,19 +4,20 @@
** This header file supports
*/
-extern void tuiSetLocatorInfo PARAMS ((char *, char *, int, Opaque, TuiLocatorElementPtr));
-extern void tuiUpdateLocatorFilename PARAMS ((char *));
-extern void tui_vUpdateLocatorFilename PARAMS ((va_list));
+extern void tuiSetLocatorInfo (char *, char *, int, Opaque,
+ TuiLocatorElementPtr);
+extern void tuiUpdateLocatorFilename (char *);
+extern void tui_vUpdateLocatorFilename (va_list);
extern void tuiUpdateLocatorInfoFromFrame
- PARAMS ((struct frame_info *, TuiLocatorElementPtr));
-extern void tuiUpdateLocatorDisplay PARAMS ((struct frame_info *));
-extern void tuiSetLocatorContent PARAMS ((struct frame_info *));
-extern void tuiShowLocatorContent PARAMS ((void));
-extern void tuiClearLocatorContent PARAMS ((void));
-extern void tuiSwitchFilename PARAMS ((char *));
-extern void tuiShowFrameInfo PARAMS ((struct frame_info *));
-extern void tui_vShowFrameInfo PARAMS ((va_list));
-extern void tuiGetLocatorFilename PARAMS ((TuiGenWinInfoPtr, char **));
+ (struct frame_info *, TuiLocatorElementPtr);
+extern void tuiUpdateLocatorDisplay (struct frame_info *);
+extern void tuiSetLocatorContent (struct frame_info *);
+extern void tuiShowLocatorContent (void);
+extern void tuiClearLocatorContent (void);
+extern void tuiSwitchFilename (char *);
+extern void tuiShowFrameInfo (struct frame_info *);
+extern void tui_vShowFrameInfo (va_list);
+extern void tuiGetLocatorFilename (TuiGenWinInfoPtr, char **);
#endif
diff --git a/gdb/tui/tuiWin.c b/gdb/tui/tuiWin.c
index 9e09911cd89..669576e0e6a 100644
--- a/gdb/tui/tuiWin.c
+++ b/gdb/tui/tuiWin.c
@@ -29,21 +29,21 @@ extern void init_page_info ();
/*******************************
** Static Local Decls
********************************/
-static void _makeVisibleWithNewHeight PARAMS ((TuiWinInfoPtr));
-static void _makeInvisibleAndSetNewHeight PARAMS ((TuiWinInfoPtr, int));
-static TuiStatus _tuiAdjustWinHeights PARAMS ((TuiWinInfoPtr, int));
-static int _newHeightOk PARAMS ((TuiWinInfoPtr, int));
-static void _tuiSetTabWidth_command PARAMS ((char *, int));
-static void _tuiRefreshAll_command PARAMS ((char *, int));
-static void _tuiSetWinHeight_command PARAMS ((char *, int));
-static void _tuiXDBsetWinHeight_command PARAMS ((char *, int));
-static void _tuiAllWindowsInfo PARAMS ((char *, int));
-static void _tuiSetFocus_command PARAMS ((char *, int));
-static void _tuiScrollForward_command PARAMS ((char *, int));
-static void _tuiScrollBackward_command PARAMS ((char *, int));
-static void _tuiScrollLeft_command PARAMS ((char *, int));
-static void _tuiScrollRight_command PARAMS ((char *, int));
-static void _parseScrollingArgs PARAMS ((char *, TuiWinInfoPtr *, int *));
+static void _makeVisibleWithNewHeight (TuiWinInfoPtr);
+static void _makeInvisibleAndSetNewHeight (TuiWinInfoPtr, int);
+static TuiStatus _tuiAdjustWinHeights (TuiWinInfoPtr, int);
+static int _newHeightOk (TuiWinInfoPtr, int);
+static void _tuiSetTabWidth_command (char *, int);
+static void _tuiRefreshAll_command (char *, int);
+static void _tuiSetWinHeight_command (char *, int);
+static void _tuiXDBsetWinHeight_command (char *, int);
+static void _tuiAllWindowsInfo (char *, int);
+static void _tuiSetFocus_command (char *, int);
+static void _tuiScrollForward_command (char *, int);
+static void _tuiScrollBackward_command (char *, int);
+static void _tuiScrollLeft_command (char *, int);
+static void _tuiScrollRight_command (char *, int);
+static void _parseScrollingArgs (char *, TuiWinInfoPtr *, int *);
/***************************************
diff --git a/gdb/tui/tuiWin.h b/gdb/tui/tuiWin.h
index 70bf68b2218..d5ab572f3d6 100644
--- a/gdb/tui/tuiWin.h
+++ b/gdb/tui/tuiWin.h
@@ -13,17 +13,17 @@
/*****************************************
** PUBLIC FUNCTION EXTERNAL DECLS **
******************************************/
-extern void tuiScrollForward PARAMS ((TuiWinInfoPtr, int));
-extern void tuiScrollBackward PARAMS ((TuiWinInfoPtr, int));
-extern void tuiScrollLeft PARAMS ((TuiWinInfoPtr, int));
-extern void tuiScrollRight PARAMS ((TuiWinInfoPtr, int));
-extern void tui_vScroll PARAMS ((va_list));
-extern void tuiSetWinFocusTo PARAMS ((TuiWinInfoPtr));
-extern void tuiClearWinFocusFrom PARAMS ((TuiWinInfoPtr));
-extern void tuiClearWinFocus PARAMS ((void));
-extern void tuiResizeAll PARAMS ((void));
-extern void tuiRefreshAll PARAMS ((void));
-extern void tuiSigwinchHandler PARAMS ((int));
+extern void tuiScrollForward (TuiWinInfoPtr, int);
+extern void tuiScrollBackward (TuiWinInfoPtr, int);
+extern void tuiScrollLeft (TuiWinInfoPtr, int);
+extern void tuiScrollRight (TuiWinInfoPtr, int);
+extern void tui_vScroll (va_list);
+extern void tuiSetWinFocusTo (TuiWinInfoPtr);
+extern void tuiClearWinFocusFrom (TuiWinInfoPtr);
+extern void tuiClearWinFocus (void);
+extern void tuiResizeAll (void);
+extern void tuiRefreshAll (void);
+extern void tuiSigwinchHandler (int);
#endif
/*_TUI_WIN_H*/
diff --git a/gdb/typeprint.c b/gdb/typeprint.c
index 5b46cba2464..249f213794e 100644
--- a/gdb/typeprint.c
+++ b/gdb/typeprint.c
@@ -39,19 +39,15 @@
extern int objectprint; /* Controls looking up an object's derived type
using what we find in its vtables. */
-extern void _initialize_typeprint PARAMS ((void));
+extern void _initialize_typeprint (void);
-static void
-ptype_command PARAMS ((char *, int));
+static void ptype_command (char *, int);
-static struct type *
- ptype_eval PARAMS ((struct expression *));
+static struct type *ptype_eval (struct expression *);
-static void
-whatis_command PARAMS ((char *, int));
+static void whatis_command (char *, int);
-static void
-whatis_exp PARAMS ((char *, int));
+static void whatis_exp (char *, int);
/* Print a description of a type TYPE in the form of a declaration of a
variable named VARSTRING. (VARSTRING is demangled if necessary.)
@@ -90,8 +86,7 @@ whatis_exp (exp, show)
if (exp)
{
expr = parse_expression (exp);
- old_chain = make_cleanup ((make_cleanup_func) free_current_contents,
- &expr);
+ old_chain = make_cleanup (free_current_contents, &expr);
val = evaluate_type (expr);
}
else
@@ -185,8 +180,7 @@ ptype_command (typename, from_tty)
else
{
expr = parse_expression (typename);
- old_chain = make_cleanup ((make_cleanup_func) free_current_contents,
- &expr);
+ old_chain = make_cleanup (free_current_contents, &expr);
type = ptype_eval (expr);
if (type != NULL)
{
@@ -306,7 +300,7 @@ maintenance_print_type (typename, from_tty)
if (typename != NULL)
{
expr = parse_expression (typename);
- old_chain = make_cleanup ((make_cleanup_func) free_current_contents, &expr);
+ old_chain = make_cleanup (free_current_contents, &expr);
if (expr->elts[0].opcode == OP_TYPE)
{
/* The user expression names a type directly, just use that type. */
diff --git a/gdb/ui-file.c b/gdb/ui-file.c
index f9d5331ba6e..2861e03f8a6 100644
--- a/gdb/ui-file.c
+++ b/gdb/ui-file.c
@@ -315,7 +315,7 @@ static ui_file_rewind_ftype mem_file_rewind;
static ui_file_put_ftype mem_file_put;
static ui_file_write_ftype mem_file_write;
static ui_file_delete_ftype mem_file_delete;
-static struct ui_file *mem_file_new PARAMS ((void));
+static struct ui_file *mem_file_new (void);
static int mem_file_magic;
static struct ui_file *
@@ -407,7 +407,7 @@ static ui_file_write_ftype stdio_file_write;
static ui_file_fputs_ftype stdio_file_fputs;
static ui_file_isatty_ftype stdio_file_isatty;
static ui_file_delete_ftype stdio_file_delete;
-static struct ui_file *stdio_file_new PARAMS ((FILE * file, int close_p));
+static struct ui_file *stdio_file_new (FILE * file, int close_p);
static ui_file_flush_ftype stdio_file_flush;
static int stdio_file_magic;
diff --git a/gdb/ui-out.c b/gdb/ui-out.c
index 80dee5305f4..f94cd6025b2 100644
--- a/gdb/ui-out.c
+++ b/gdb/ui-out.c
@@ -490,7 +490,7 @@ ui_out_set_flags (uiout, mask)
struct ui_out *uiout;
int mask;
{
- int oldflags;
+ int oldflags = uiout->flags;
uiout->flags |= mask;
@@ -503,7 +503,7 @@ ui_out_clear_flags (uiout, mask)
struct ui_out *uiout;
int mask;
{
- int oldflags;
+ int oldflags = uiout->flags;
uiout->flags &= ~mask;
diff --git a/gdb/ui-out.h b/gdb/ui-out.h
index d8db5885457..4a45dc85a4b 100644
--- a/gdb/ui-out.h
+++ b/gdb/ui-out.h
@@ -67,88 +67,85 @@ struct ui_stream
/* Prototypes for ui-out API. */
-extern void ui_out_table_begin PARAMS ((struct ui_out * uiout, int nbrofcols,
- char *tblid));
+extern void ui_out_table_begin (struct ui_out *uiout, int nbrofcols,
+ char *tblid);
-extern void ui_out_table_header PARAMS ((struct ui_out * uiout, int width,
- enum ui_align align, char *colhdr));
+extern void ui_out_table_header (struct ui_out *uiout, int width,
+ enum ui_align align, char *colhdr);
-extern void ui_out_table_body PARAMS ((struct ui_out * uiout));
+extern void ui_out_table_body (struct ui_out *uiout);
-extern void ui_out_table_end PARAMS ((struct ui_out * uiout));
+extern void ui_out_table_end (struct ui_out *uiout);
-extern void ui_out_list_begin PARAMS ((struct ui_out * uiout, char *lstid));
+extern void ui_out_list_begin (struct ui_out *uiout, char *lstid);
-extern void ui_out_list_end PARAMS ((struct ui_out * uiout));
+extern void ui_out_list_end (struct ui_out *uiout);
-extern void ui_out_field_int PARAMS ((struct ui_out * uiout, char *fldname,
- int value));
+extern void ui_out_field_int (struct ui_out *uiout, char *fldname, int value);
-extern void ui_out_field_core_addr PARAMS ((struct ui_out * uiout, char *fldname,
- CORE_ADDR address));
+extern void ui_out_field_core_addr (struct ui_out *uiout, char *fldname,
+ CORE_ADDR address);
extern void ui_out_field_string (struct ui_out * uiout, char *fldname,
const char *string);
-extern void ui_out_field_stream PARAMS ((struct ui_out * uiout, char *fldname,
- struct ui_stream * buf));
+extern void ui_out_field_stream (struct ui_out *uiout, char *fldname,
+ struct ui_stream *buf);
-extern void ui_out_field_fmt PARAMS ((struct ui_out * uiout, char *fldname,
- char *format,...));
+extern void ui_out_field_fmt (struct ui_out *uiout, char *fldname,
+ char *format, ...);
-extern void ui_out_field_skip PARAMS ((struct ui_out * uiout, char *fldname));
+extern void ui_out_field_skip (struct ui_out *uiout, char *fldname);
-extern void ui_out_spaces PARAMS ((struct ui_out * uiout, int numspaces));
+extern void ui_out_spaces (struct ui_out *uiout, int numspaces);
-extern void ui_out_text PARAMS ((struct ui_out * uiout, char *string));
+extern void ui_out_text (struct ui_out *uiout, char *string);
-extern void ui_out_message PARAMS ((struct ui_out * uiout, int verbosity,
- char *format,...));
+extern void ui_out_message (struct ui_out *uiout, int verbosity,
+ char *format, ...);
-extern struct ui_stream *ui_out_stream_new PARAMS ((struct ui_out * uiout));
+extern struct ui_stream *ui_out_stream_new (struct ui_out *uiout);
-extern void ui_out_stream_delete PARAMS ((struct ui_stream * buf));
+extern void ui_out_stream_delete (struct ui_stream *buf);
struct cleanup *make_cleanup_ui_out_stream_delete (struct ui_stream *buf);
-extern void ui_out_wrap_hint PARAMS ((struct ui_out * uiout, char *identstring));
+extern void ui_out_wrap_hint (struct ui_out *uiout, char *identstring);
-extern void ui_out_flush PARAMS ((struct ui_out * uiout));
+extern void ui_out_flush (struct ui_out *uiout);
-extern void ui_out_get_field_separator PARAMS ((struct ui_out * uiout));
+extern void ui_out_get_field_separator (struct ui_out *uiout);
-extern int ui_out_set_flags PARAMS ((struct ui_out * uiout, int mask));
+extern int ui_out_set_flags (struct ui_out *uiout, int mask);
-extern int ui_out_clear_flags PARAMS ((struct ui_out * uiout, int mask));
+extern int ui_out_clear_flags (struct ui_out *uiout, int mask);
-extern int ui_out_get_verblvl PARAMS ((struct ui_out * uiout));
+extern int ui_out_get_verblvl (struct ui_out *uiout);
extern int ui_out_test_flags (struct ui_out *uiout, int mask);
#if 0
-extern void ui_out_result_begin PARAMS ((struct ui_out * uiout, char *class));
+extern void ui_out_result_begin (struct ui_out *uiout, char *class);
-extern void ui_out_result_end PARAMS ((struct ui_out * uiout));
+extern void ui_out_result_end (struct ui_out *uiout);
-extern void ui_out_info_begin PARAMS ((struct ui_out * uiout, char *class));
+extern void ui_out_info_begin (struct ui_out *uiout, char *class);
-extern void ui_out_info_end PARAMS ((struct ui_out * uiout));
+extern void ui_out_info_end (struct ui_out *uiout);
-extern void ui_out_notify_begin PARAMS ((struct ui_out * uiout, char *class));
+extern void ui_out_notify_begin (struct ui_out *uiout, char *class);
-extern void ui_out_notify_end PARAMS ((struct ui_out * uiout));
+extern void ui_out_notify_end (struct ui_out *uiout);
-extern void ui_out_error_begin PARAMS ((struct ui_out * uiout, char *class));
+extern void ui_out_error_begin (struct ui_out *uiout, char *class);
-extern void ui_out_error_end PARAMS ((struct ui_out * uiout));
+extern void ui_out_error_end (struct ui_out *uiout);
#endif
#if 0
-extern void gdb_error PARAMS ((struct ui_out * uiout, int severity,
- char *format,...));
+extern void gdb_error (struct ui_out *uiout, int severity, char *format, ...);
-extern void gdb_query PARAMS ((struct ui_out * uiout,
- int qflags, char *qprompt));
+extern void gdb_query (struct ui_out *uiout, int qflags, char *qprompt);
#endif
/* From here on we have things that are only needed by implementation
diff --git a/gdb/ultra3-nat.c b/gdb/ultra3-nat.c
index fea7d6fade3..f70e26a381e 100644
--- a/gdb/ultra3-nat.c
+++ b/gdb/ultra3-nat.c
@@ -37,7 +37,7 @@
#include <sys/file.h>
#include "gdb_stat.h"
-static void fetch_core_registers PARAMS ((char *, unsigned, int, CORE_ADDR));
+static void fetch_core_registers (char *, unsigned, int, CORE_ADDR);
/* Assumes support for AMD's Binary Compatibility Standard
for ptrace(). If you define ULTRA3, the ultra3 extensions to
diff --git a/gdb/utils.c b/gdb/utils.c
index 1e081552f07..b3a3ad9866d 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -50,6 +50,8 @@
#include "language.h"
#include "annotate.h"
+#include "inferior.h" /* for signed_pointer_to_address */
+
#include <readline/readline.h>
#undef XMALLOC
@@ -58,7 +60,7 @@
/* readline defines this. */
#undef savestring
-void (*error_begin_hook) PARAMS ((void));
+void (*error_begin_hook) (void);
/* Holds the last error message issued by gdb */
@@ -72,17 +74,14 @@ static void vfprintf_maybe_filtered (struct ui_file *, const char *,
static void fputs_maybe_filtered (const char *, struct ui_file *, int);
#if defined (USE_MMALLOC) && !defined (NO_MMCHECK)
-static void malloc_botch PARAMS ((void));
+static void malloc_botch (void);
#endif
-static void
-prompt_for_continue PARAMS ((void));
+static void prompt_for_continue (void);
-static void
-set_width_command PARAMS ((char *, int, struct cmd_list_element *));
+static void set_width_command (char *, int, struct cmd_list_element *);
-static void
-set_width PARAMS ((void));
+static void set_width (void);
/* Chain of cleanup actions established with make_cleanup,
to be executed if an error happens. */
@@ -204,6 +203,31 @@ make_cleanup_freeargv (arg)
}
static void
+do_bfd_close_cleanup (void *arg)
+{
+ bfd_close (arg);
+}
+
+struct cleanup *
+make_cleanup_bfd_close (bfd *abfd)
+{
+ return make_cleanup (do_bfd_close_cleanup, abfd);
+}
+
+static void
+do_close_cleanup (void *arg)
+{
+ close ((int) arg);
+}
+
+struct cleanup *
+make_cleanup_close (int fd)
+{
+ /* int into void*. Outch!! */
+ return make_cleanup (do_close_cleanup, (void *) fd);
+}
+
+static void
do_ui_file_delete (void *arg)
{
ui_file_delete (arg);
@@ -375,10 +399,16 @@ restore_my_cleanups (pmy_chain, chain)
to arrange to free the object thus allocated. */
void
-free_current_contents (location)
- char **location;
+free_current_contents (void *ptr)
{
- free (*location);
+ void **location = ptr;
+ if (location == NULL)
+ internal_error ("free_current_contents: NULL pointer");
+ if (*location != NULL)
+ {
+ free (*location);
+ *location = NULL;
+ }
}
/* Provide a known function that does nothing, to use as a base for
@@ -398,7 +428,7 @@ null_cleanup (void *arg)
cmd_continuation. The new continuation will be added at the front.*/
void
add_continuation (continuation_hook, arg_list)
- void (*continuation_hook) PARAMS ((struct continuation_arg *));
+ void (*continuation_hook) (struct continuation_arg *);
struct continuation_arg *arg_list;
{
struct continuation *continuation_ptr;
@@ -460,7 +490,7 @@ discard_all_continuations ()
intermediate_continuation. The new continuation will be added at the front.*/
void
add_intermediate_continuation (continuation_hook, arg_list)
- void (*continuation_hook) PARAMS ((struct continuation_arg *));
+ void (*continuation_hook) (struct continuation_arg *);
struct continuation_arg *arg_list;
{
struct continuation *continuation_ptr;
@@ -679,6 +709,7 @@ internal_verror (const char *fmt, va_list ap)
}
/* Try to get the message out */
+ target_terminal_ours ();
fputs_unfiltered ("gdb-internal-error: ", gdb_stderr);
vfprintf_unfiltered (gdb_stderr, fmt, ap);
fputs_unfiltered ("\n", gdb_stderr);
@@ -719,6 +750,7 @@ internal_error (char *string, ...)
{
va_list ap;
va_start (ap, string);
+
internal_verror (string, ap);
va_end (ap);
}
@@ -742,26 +774,6 @@ safe_strerror (errnum)
return (msg);
}
-/* The strsignal() function can return NULL for signal values that are
- out of range. Provide a "safe" version that always returns a
- printable string. */
-
-char *
-safe_strsignal (signo)
- int signo;
-{
- char *msg;
- static char buf[32];
-
- if ((msg = strsignal (signo)) == NULL)
- {
- sprintf (buf, "(undocumented signal %d)", signo);
- msg = buf;
- }
- return (msg);
-}
-
-
/* Print the system error message for errno, and also mention STRING
as the file name for which the error was encountered.
Then return to command level. */
@@ -1391,8 +1403,8 @@ static void printchar (int c, void (*do_fputs) (const char *, struct ui_file*),
static void
printchar (c, do_fputs, do_fprintf, stream, quoter)
int c;
- void (*do_fputs) PARAMS ((const char *, struct ui_file*));
- void (*do_fprintf) PARAMS ((struct ui_file*, const char *, ...));
+ void (*do_fputs) (const char *, struct ui_file *);
+ void (*do_fprintf) (struct ui_file *, const char *, ...);
struct ui_file *stream;
int quoter;
{
@@ -2306,7 +2318,7 @@ subset_compare (string_to_compare, template_string)
}
-static void pagination_on_command PARAMS ((char *arg, int from_tty));
+static void pagination_on_command (char *arg, int from_tty);
static void
pagination_on_command (arg, from_tty)
char *arg;
@@ -2315,7 +2327,7 @@ pagination_on_command (arg, from_tty)
pagination_enabled = 1;
}
-static void pagination_on_command PARAMS ((char *arg, int from_tty));
+static void pagination_on_command (char *arg, int from_tty);
static void
pagination_off_command (arg, from_tty)
char *arg;
@@ -2363,6 +2375,7 @@ initialize_utils ()
var_boolean, (char *) &pagination_enabled,
"Set state of pagination.", &setlist),
&showlist);
+
if (xdb_commands)
{
add_com ("am", class_support, pagination_on_command,
@@ -2406,11 +2419,9 @@ SIGWINCH_HANDLER_BODY
a system header, what we do if not, etc. */
#define FLOATFORMAT_CHAR_BIT 8
-static unsigned long get_field PARAMS ((unsigned char *,
- enum floatformat_byteorders,
- unsigned int,
- unsigned int,
- unsigned int));
+static unsigned long get_field (unsigned char *,
+ enum floatformat_byteorders,
+ unsigned int, unsigned int, unsigned int);
/* Extract a field which starts at START and is LEN bytes long. DATA and
TOTAL_LEN are the thing we are extracting it from, in byteorder ORDER. */
@@ -2586,11 +2597,9 @@ floatformat_to_doublest (fmt, from, to)
*to = dto;
}
-static void put_field PARAMS ((unsigned char *, enum floatformat_byteorders,
- unsigned int,
- unsigned int,
- unsigned int,
- unsigned long));
+static void put_field (unsigned char *, enum floatformat_byteorders,
+ unsigned int,
+ unsigned int, unsigned int, unsigned long);
/* Set a field which starts at START and is LEN bytes long. DATA and
TOTAL_LEN are the thing we are extracting it from, in byteorder ORDER. */
@@ -2661,7 +2670,7 @@ put_field (data, order, total_len, start, len, stuff_to_put)
The range of the returned value is >= 0.5 and < 1.0. This is equivalent to
frexp, but operates on the long double data type. */
-static long double ldfrexp PARAMS ((long double value, int *eptr));
+static long double ldfrexp (long double value, int *eptr);
static long double
ldfrexp (value, eptr)
@@ -2815,6 +2824,8 @@ floatformat_from_doublest (fmt, from, to)
}
}
+/* print routines to handle variable size regs, etc. */
+
/* temporary storage using circular buffer */
#define NUMCELLS 16
#define CELLSIZE 32
@@ -2828,79 +2839,22 @@ get_cell ()
return buf[cell];
}
-/* print routines to handle variable size regs, etc.
-
- FIXME: Note that t_addr is a bfd_vma, which is currently either an
- unsigned long or unsigned long long, determined at configure time.
- If t_addr is an unsigned long long and sizeof (unsigned long long)
- is greater than sizeof (unsigned long), then I believe this code will
- probably lose, at least for little endian machines. I believe that
- it would also be better to eliminate the switch on the absolute size
- of t_addr and replace it with a sequence of if statements that compare
- sizeof t_addr with sizeof the various types and do the right thing,
- which includes knowing whether or not the host supports long long.
- -fnf
-
- */
-
int
strlen_paddr (void)
{
return (TARGET_PTR_BIT / 8 * 2);
}
-
-/* eliminate warning from compiler on 32-bit systems */
-static int thirty_two = 32;
-
char *
paddr (CORE_ADDR addr)
{
- char *paddr_str = get_cell ();
- switch (TARGET_PTR_BIT / 8)
- {
- case 8:
- sprintf (paddr_str, "%08lx%08lx",
- (unsigned long) (addr >> thirty_two), (unsigned long) (addr & 0xffffffff));
- break;
- case 4:
- sprintf (paddr_str, "%08lx", (unsigned long) addr);
- break;
- case 2:
- sprintf (paddr_str, "%04x", (unsigned short) (addr & 0xffff));
- break;
- default:
- sprintf (paddr_str, "%lx", (unsigned long) addr);
- }
- return paddr_str;
+ return phex (addr, TARGET_PTR_BIT / 8);
}
char *
paddr_nz (CORE_ADDR addr)
{
- char *paddr_str = get_cell ();
- switch (TARGET_PTR_BIT / 8)
- {
- case 8:
- {
- unsigned long high = (unsigned long) (addr >> thirty_two);
- if (high == 0)
- sprintf (paddr_str, "%lx", (unsigned long) (addr & 0xffffffff));
- else
- sprintf (paddr_str, "%lx%08lx",
- high, (unsigned long) (addr & 0xffffffff));
- break;
- }
- case 4:
- sprintf (paddr_str, "%lx", (unsigned long) addr);
- break;
- case 2:
- sprintf (paddr_str, "%x", (unsigned short) (addr & 0xffff));
- break;
- default:
- sprintf (paddr_str, "%lx", (unsigned long) addr);
- }
- return paddr_str;
+ return phex_nz (addr, TARGET_PTR_BIT / 8);
}
static void
@@ -2955,71 +2909,79 @@ paddr_d (LONGEST addr)
return paddr_str;
}
+/* eliminate warning from compiler on 32-bit systems */
+static int thirty_two = 32;
+
char *
-preg (reg)
- t_reg reg;
+phex (ULONGEST l, int sizeof_l)
{
- char *preg_str = get_cell ();
- switch (sizeof (t_reg))
+ char *str = get_cell ();
+ switch (sizeof_l)
{
case 8:
- sprintf (preg_str, "%08lx%08lx",
- (unsigned long) (reg >> thirty_two), (unsigned long) (reg & 0xffffffff));
+ sprintf (str, "%08lx%08lx",
+ (unsigned long) (l >> thirty_two),
+ (unsigned long) (l & 0xffffffff));
break;
case 4:
- sprintf (preg_str, "%08lx", (unsigned long) reg);
+ sprintf (str, "%08lx", (unsigned long) l);
break;
case 2:
- sprintf (preg_str, "%04x", (unsigned short) (reg & 0xffff));
+ sprintf (str, "%04x", (unsigned short) (l & 0xffff));
break;
default:
- sprintf (preg_str, "%lx", (unsigned long) reg);
+ phex (l, sizeof (l));
+ break;
}
- return preg_str;
+ return str;
}
char *
-preg_nz (reg)
- t_reg reg;
+phex_nz (ULONGEST l, int sizeof_l)
{
- char *preg_str = get_cell ();
- switch (sizeof (t_reg))
+ char *str = get_cell ();
+ switch (sizeof_l)
{
case 8:
{
- unsigned long high = (unsigned long) (reg >> thirty_two);
+ unsigned long high = (unsigned long) (l >> thirty_two);
if (high == 0)
- sprintf (preg_str, "%lx", (unsigned long) (reg & 0xffffffff));
+ sprintf (str, "%lx", (unsigned long) (l & 0xffffffff));
else
- sprintf (preg_str, "%lx%08lx",
- high, (unsigned long) (reg & 0xffffffff));
+ sprintf (str, "%lx%08lx",
+ high, (unsigned long) (l & 0xffffffff));
break;
}
case 4:
- sprintf (preg_str, "%lx", (unsigned long) reg);
+ sprintf (str, "%lx", (unsigned long) l);
break;
case 2:
- sprintf (preg_str, "%x", (unsigned short) (reg & 0xffff));
+ sprintf (str, "%x", (unsigned short) (l & 0xffff));
break;
default:
- sprintf (preg_str, "%lx", (unsigned long) reg);
+ phex_nz (l, sizeof (l));
+ break;
}
- return preg_str;
+ return str;
}
-/* Helper functions for INNER_THAN */
-int
-core_addr_lessthan (lhs, rhs)
- CORE_ADDR lhs;
- CORE_ADDR rhs;
+
+/* Convert to / from the hosts pointer to GDB's internal CORE_ADDR
+ using the target's conversion routines. */
+CORE_ADDR
+host_pointer_to_address (void *ptr)
{
- return (lhs < rhs);
+ if (sizeof (ptr) != TYPE_LENGTH (builtin_type_ptr))
+ internal_error ("core_addr_to_void_ptr: bad cast");
+ return POINTER_TO_ADDRESS (builtin_type_ptr, &ptr);
}
-int
-core_addr_greaterthan (lhs, rhs)
- CORE_ADDR lhs;
- CORE_ADDR rhs;
+void *
+address_to_host_pointer (CORE_ADDR addr)
{
- return (lhs > rhs);
+ void *ptr;
+ if (sizeof (ptr) != TYPE_LENGTH (builtin_type_ptr))
+ internal_error ("core_addr_to_void_ptr: bad cast");
+ ADDRESS_TO_POINTER (builtin_type_ptr, &ptr, addr);
+ return ptr;
}
diff --git a/gdb/uw-thread.c b/gdb/uw-thread.c
index e3650a93b51..17e98fd3d62 100644
--- a/gdb/uw-thread.c
+++ b/gdb/uw-thread.c
@@ -112,6 +112,8 @@
#include <synch.h> /* for UnixWare 2.x */
+/* Prototypes for supply_gregset etc. */
+#include "gregset.h"
/* Whether to emit debugging output. */
diff --git a/gdb/v850-tdep.c b/gdb/v850-tdep.c
index 5f71b5e19d6..0501760b4f6 100644
--- a/gdb/v850-tdep.c
+++ b/gdb/v850-tdep.c
@@ -89,8 +89,7 @@ struct prologue_info
struct pifsr *pifsrs;
};
-static CORE_ADDR v850_scan_prologue PARAMS ((CORE_ADDR pc,
- struct prologue_info * fs));
+static CORE_ADDR v850_scan_prologue (CORE_ADDR pc, struct prologue_info *fs);
/* Should call_function allocate stack space for a struct return? */
diff --git a/gdb/v850ice.c b/gdb/v850ice.c
index dba9514db6d..2364d2a9481 100644
--- a/gdb/v850ice.c
+++ b/gdb/v850ice.c
@@ -46,81 +46,80 @@ struct MessageIO
};
/* Prototypes for functions located in other files */
-extern void break_command PARAMS ((char *, int));
+extern void break_command (char *, int);
-extern void stepi_command PARAMS ((char *, int));
+extern void stepi_command (char *, int);
-extern void nexti_command PARAMS ((char *, int));
+extern void nexti_command (char *, int);
-extern void continue_command PARAMS ((char *, int));
+extern void continue_command (char *, int);
-extern int (*ui_loop_hook) PARAMS ((int));
+extern int (*ui_loop_hook) (int);
/* Prototypes for local functions */
-static int init_hidden_window PARAMS ((void));
+static int init_hidden_window (void);
-static LRESULT CALLBACK v850ice_wndproc PARAMS ((HWND, UINT, WPARAM, LPARAM));
+static LRESULT CALLBACK v850ice_wndproc (HWND, UINT, WPARAM, LPARAM);
-static void v850ice_files_info PARAMS ((struct target_ops * ignore));
+static void v850ice_files_info (struct target_ops *ignore);
-static int v850ice_xfer_memory PARAMS ((CORE_ADDR memaddr, char *myaddr,
- int len, int should_write,
- struct target_ops * target));
+static int v850ice_xfer_memory (CORE_ADDR memaddr, char *myaddr,
+ int len, int should_write,
+ struct target_ops *target);
-static void v850ice_prepare_to_store PARAMS ((void));
+static void v850ice_prepare_to_store (void);
-static void v850ice_fetch_registers PARAMS ((int regno));
+static void v850ice_fetch_registers (int regno);
-static void v850ice_resume PARAMS ((int pid, int step,
- enum target_signal siggnal));
+static void v850ice_resume (int pid, int step, enum target_signal siggnal);
-static void v850ice_open PARAMS ((char *name, int from_tty));
+static void v850ice_open (char *name, int from_tty);
-static void v850ice_close PARAMS ((int quitting));
+static void v850ice_close (int quitting);
-static void v850ice_stop PARAMS ((void));
+static void v850ice_stop (void);
-static void v850ice_store_registers PARAMS ((int regno));
+static void v850ice_store_registers (int regno);
-static void v850ice_mourn PARAMS ((void));
+static void v850ice_mourn (void);
-static int v850ice_wait PARAMS ((int pid, struct target_waitstatus * status));
+static int v850ice_wait (int pid, struct target_waitstatus *status);
-static void v850ice_kill PARAMS ((void));
+static void v850ice_kill (void);
-static void v850ice_detach PARAMS ((char *args, int from_tty));
+static void v850ice_detach (char *args, int from_tty);
-static int v850ice_insert_breakpoint PARAMS ((CORE_ADDR, char *));
+static int v850ice_insert_breakpoint (CORE_ADDR, char *);
-static int v850ice_remove_breakpoint PARAMS ((CORE_ADDR, char *));
+static int v850ice_remove_breakpoint (CORE_ADDR, char *);
-static void v850ice_command PARAMS ((char *, int));
+static void v850ice_command (char *, int);
-static int ice_disassemble PARAMS ((unsigned long, int, char *));
+static int ice_disassemble (unsigned long, int, char *);
-static int ice_lookup_addr PARAMS ((unsigned long *, char *, char *));
+static int ice_lookup_addr (unsigned long *, char *, char *);
-static int ice_lookup_symbol PARAMS ((unsigned long, char *));
+static int ice_lookup_symbol (unsigned long, char *);
-static void ice_SimulateDisassemble PARAMS ((char *, int));
+static void ice_SimulateDisassemble (char *, int);
-static void ice_SimulateAddrLookup PARAMS ((char *, int));
+static void ice_SimulateAddrLookup (char *, int);
-static void ice_Simulate_SymLookup PARAMS ((char *, int));
+static void ice_Simulate_SymLookup (char *, int);
static void ice_fputs (const char *, struct ui_file *);
-static int ice_file PARAMS ((char *));
+static int ice_file (char *);
-static int ice_cont PARAMS ((char *));
+static int ice_cont (char *);
-static int ice_stepi PARAMS ((char *));
+static int ice_stepi (char *);
-static int ice_nexti PARAMS ((char *));
+static int ice_nexti (char *);
-static void togdb_force_update PARAMS ((void));
+static void togdb_force_update (void);
-static void view_source PARAMS ((CORE_ADDR));
+static void view_source (CORE_ADDR);
static void do_gdb (char *, char *, void (*func) PARAMS ((char *, int)), int);
@@ -856,7 +855,7 @@ static void
do_gdb (cmd, str, func, count)
char *cmd;
char *str;
- void (*func) PARAMS ((char *, int));
+ void (*func) (char *, int);
int count;
{
ReplyMessage ((LRESULT) 1);
diff --git a/gdb/valarith.c b/gdb/valarith.c
index 97c3ca7736c..2db71fdc938 100644
--- a/gdb/valarith.c
+++ b/gdb/valarith.c
@@ -37,9 +37,9 @@
#define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
#endif
-static value_ptr value_subscripted_rvalue PARAMS ((value_ptr, value_ptr, int));
+static value_ptr value_subscripted_rvalue (value_ptr, value_ptr, int);
-void _initialize_valarith PARAMS ((void));
+void _initialize_valarith (void);
value_ptr
@@ -79,8 +79,8 @@ value_add (arg1, arg2)
len = TYPE_LENGTH (check_typedef (TYPE_TARGET_TYPE (valptrtype)));
if (len == 0)
len = 1; /* For (void *) */
- retval = value_from_longest (valptrtype,
- value_as_long (valptr)
+ retval = value_from_pointer (valptrtype,
+ value_as_pointer (valptr)
+ (len * value_as_long (valint)));
VALUE_BFD_SECTION (retval) = VALUE_BFD_SECTION (valptr);
return retval;
@@ -105,9 +105,9 @@ value_sub (arg1, arg2)
{
/* pointer - integer. */
LONGEST sz = TYPE_LENGTH (check_typedef (TYPE_TARGET_TYPE (type1)));
- return value_from_longest
- (VALUE_TYPE (arg1),
- value_as_long (arg1) - (sz * value_as_long (arg2)));
+ return value_from_pointer (VALUE_TYPE (arg1),
+ (value_as_pointer (arg1)
+ - (sz * value_as_long (arg2))));
}
else if (TYPE_CODE (type2) == TYPE_CODE_PTR
&& TYPE_LENGTH (TYPE_TARGET_TYPE (type1))
diff --git a/gdb/valops.c b/gdb/valops.c
index a99ad1c8f8d..c84e7a7c6d6 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -41,30 +41,34 @@ extern int hp_som_som_object_present;
extern int overload_debug;
/* Local functions. */
-static int typecmp PARAMS ((int staticp, struct type * t1[], value_ptr t2[]));
+static int typecmp (int staticp, struct type *t1[], value_ptr t2[]);
-static CORE_ADDR find_function_addr PARAMS ((value_ptr, struct type **));
-static value_ptr value_arg_coerce PARAMS ((value_ptr, struct type *, int));
+static CORE_ADDR find_function_addr (value_ptr, struct type **);
+static value_ptr value_arg_coerce (value_ptr, struct type *, int);
-static CORE_ADDR value_push PARAMS ((CORE_ADDR, value_ptr));
+static CORE_ADDR value_push (CORE_ADDR, value_ptr);
-static value_ptr search_struct_field PARAMS ((char *, value_ptr, int,
- struct type *, int));
+static value_ptr search_struct_field (char *, value_ptr, int,
+ struct type *, int);
-static value_ptr search_struct_method PARAMS ((char *, value_ptr *,
- value_ptr *,
- int, int *, struct type *));
+static value_ptr search_struct_method (char *, value_ptr *,
+ value_ptr *,
+ int, int *, struct type *);
-static int check_field_in PARAMS ((struct type *, const char *));
+static int check_field_in (struct type *, const char *);
-static CORE_ADDR allocate_space_in_inferior PARAMS ((int));
+static CORE_ADDR allocate_space_in_inferior (int);
-static value_ptr cast_into_complex PARAMS ((struct type *, value_ptr));
+static value_ptr cast_into_complex (struct type *, value_ptr);
-static struct fn_field *find_method_list PARAMS ((value_ptr * argp, char *method, int offset, int *static_memfuncp, struct type * type, int *num_fns, struct type ** basetype, int *boffset));
+static struct fn_field *find_method_list (value_ptr * argp, char *method,
+ int offset, int *static_memfuncp,
+ struct type *type, int *num_fns,
+ struct type **basetype,
+ int *boffset);
-void _initialize_valops PARAMS ((void));
+void _initialize_valops (void);
#define VALUE_SUBSTRING_START(VAL) VALUE_FRAME(VAL)
@@ -108,12 +112,12 @@ find_function_in_inferior (name)
if (msymbol != NULL)
{
struct type *type;
- LONGEST maddr;
+ CORE_ADDR maddr;
type = lookup_pointer_type (builtin_type_char);
type = lookup_function_type (type);
type = lookup_pointer_type (type);
- maddr = (LONGEST) SYMBOL_VALUE_ADDRESS (msymbol);
- return value_from_longest (type, maddr);
+ maddr = SYMBOL_VALUE_ADDRESS (msymbol);
+ return value_from_pointer (type, maddr);
}
else
{
@@ -465,7 +469,7 @@ value_at (type, addr, sect)
store_address (VALUE_CONTENTS_RAW (val), 4, num);
}
else
- read_memory_section (addr, VALUE_CONTENTS_ALL_RAW (val), TYPE_LENGTH (type), sect);
+ read_memory (addr, VALUE_CONTENTS_ALL_RAW (val), TYPE_LENGTH (type));
VALUE_LVAL (val) = lval_memory;
VALUE_ADDRESS (val) = addr;
@@ -540,8 +544,8 @@ value_fetch_lazy (val)
store_address (VALUE_CONTENTS_RAW (val), 4, num);
}
else if (length)
- read_memory_section (addr, VALUE_CONTENTS_ALL_RAW (val), length,
- VALUE_BFD_SECTION (val));
+ read_memory (addr, VALUE_CONTENTS_ALL_RAW (val), length);
+
VALUE_LAZY (val) = 0;
return 0;
}
@@ -901,8 +905,8 @@ value_coerce_array (arg1)
if (VALUE_LVAL (arg1) != lval_memory)
error ("Attempt to take address of value not located in memory.");
- return value_from_longest (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
- (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
+ return value_from_pointer (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
+ (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
}
/* Given a value which is a function, return a value which is a pointer
@@ -917,8 +921,8 @@ value_coerce_function (arg1)
if (VALUE_LVAL (arg1) != lval_memory)
error ("Attempt to take address of value not located in memory.");
- retval = value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
- (LONGEST) (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
+ retval = value_from_pointer (lookup_pointer_type (VALUE_TYPE (arg1)),
+ (VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1)));
VALUE_BFD_SECTION (retval) = VALUE_BFD_SECTION (arg1);
return retval;
}
@@ -948,10 +952,10 @@ value_addr (arg1)
error ("Attempt to take address of value not located in memory.");
/* Get target memory address */
- arg2 = value_from_longest (lookup_pointer_type (VALUE_TYPE (arg1)),
- (LONGEST) (VALUE_ADDRESS (arg1)
- + VALUE_OFFSET (arg1)
- + VALUE_EMBEDDED_OFFSET (arg1)));
+ arg2 = value_from_pointer (lookup_pointer_type (VALUE_TYPE (arg1)),
+ (VALUE_ADDRESS (arg1)
+ + VALUE_OFFSET (arg1)
+ + VALUE_EMBEDDED_OFFSET (arg1)));
/* This may be a pointer to a base subobject; so remember the
full derived object's type ... */
@@ -1128,18 +1132,6 @@ default_push_arguments (nargs, args, sp, struct_return, struct_addr)
}
-/* If we're calling a function declared without a prototype, should we
- promote floats to doubles? FORMAL and ACTUAL are the types of the
- arguments; FORMAL may be NULL.
-
- If we have no definition for this macro, either from the target or
- from gdbarch, provide a default. */
-#ifndef COERCE_FLOAT_TO_DOUBLE
-#define COERCE_FLOAT_TO_DOUBLE(formal, actual) \
- (default_coerce_float_to_double ((formal), (actual)))
-#endif
-
-
/* A default function for COERCE_FLOAT_TO_DOUBLE: do the coercion only
when we don't have any type for the argument at hand. This occurs
when we have no debug info, or when passing varargs.
@@ -1327,7 +1319,8 @@ find_function_addr (function, retval_type)
ARGS is modified to contain coerced values. */
-static value_ptr hand_function_call PARAMS ((value_ptr function, int nargs, value_ptr * args));
+static value_ptr hand_function_call (value_ptr function, int nargs,
+ value_ptr * args);
static value_ptr
hand_function_call (function, nargs, args)
value_ptr function;
@@ -1376,8 +1369,7 @@ hand_function_call (function, nargs, args)
noprocess ();
inf_status = save_inferior_status (1);
- old_chain = make_cleanup ((make_cleanup_func) restore_inferior_status,
- inf_status);
+ old_chain = make_cleanup_restore_inferior_status (inf_status);
/* PUSH_DUMMY_FRAME is responsible for saving the inferior registers
(and POP_FRAME for restoring them). (At least on most machines)
@@ -1522,72 +1514,72 @@ You must use a pointer to function type variable. Command ignored.", arg_name);
}
}
-#if defined (REG_STRUCT_HAS_ADDR)
- {
- /* This is a machine like the sparc, where we may need to pass a pointer
- to the structure, not the structure itself. */
- for (i = nargs - 1; i >= 0; i--)
- {
- struct type *arg_type = check_typedef (VALUE_TYPE (args[i]));
- if ((TYPE_CODE (arg_type) == TYPE_CODE_STRUCT
- || TYPE_CODE (arg_type) == TYPE_CODE_UNION
- || TYPE_CODE (arg_type) == TYPE_CODE_ARRAY
- || TYPE_CODE (arg_type) == TYPE_CODE_STRING
- || TYPE_CODE (arg_type) == TYPE_CODE_BITSTRING
- || TYPE_CODE (arg_type) == TYPE_CODE_SET
- || (TYPE_CODE (arg_type) == TYPE_CODE_FLT
- && TYPE_LENGTH (arg_type) > 8)
- )
- && REG_STRUCT_HAS_ADDR (using_gcc, arg_type))
- {
- CORE_ADDR addr;
- int len; /* = TYPE_LENGTH (arg_type); */
- int aligned_len;
- arg_type = check_typedef (VALUE_ENCLOSING_TYPE (args[i]));
- len = TYPE_LENGTH (arg_type);
-
-#ifdef STACK_ALIGN
- /* MVS 11/22/96: I think at least some of this stack_align code is
- really broken. Better to let PUSH_ARGUMENTS adjust the stack in
- a target-defined manner. */
- aligned_len = STACK_ALIGN (len);
-#else
- aligned_len = len;
-#endif
- if (INNER_THAN (1, 2))
- {
- /* stack grows downward */
- sp -= aligned_len;
- }
- else
- {
- /* The stack grows up, so the address of the thing we push
- is the stack pointer before we push it. */
- addr = sp;
- }
- /* Push the structure. */
- write_memory (sp, VALUE_CONTENTS_ALL (args[i]), len);
- if (INNER_THAN (1, 2))
- {
- /* The stack grows down, so the address of the thing we push
- is the stack pointer after we push it. */
- addr = sp;
- }
- else
- {
- /* stack grows upward */
- sp += aligned_len;
- }
- /* The value we're going to pass is the address of the thing
- we just pushed. */
- /*args[i] = value_from_longest (lookup_pointer_type (value_type),
- (LONGEST) addr); */
- args[i] = value_from_longest (lookup_pointer_type (arg_type),
- (LONGEST) addr);
- }
- }
- }
-#endif /* REG_STRUCT_HAS_ADDR. */
+ if (REG_STRUCT_HAS_ADDR_P ())
+ {
+ /* This is a machine like the sparc, where we may need to pass a
+ pointer to the structure, not the structure itself. */
+ for (i = nargs - 1; i >= 0; i--)
+ {
+ struct type *arg_type = check_typedef (VALUE_TYPE (args[i]));
+ if ((TYPE_CODE (arg_type) == TYPE_CODE_STRUCT
+ || TYPE_CODE (arg_type) == TYPE_CODE_UNION
+ || TYPE_CODE (arg_type) == TYPE_CODE_ARRAY
+ || TYPE_CODE (arg_type) == TYPE_CODE_STRING
+ || TYPE_CODE (arg_type) == TYPE_CODE_BITSTRING
+ || TYPE_CODE (arg_type) == TYPE_CODE_SET
+ || (TYPE_CODE (arg_type) == TYPE_CODE_FLT
+ && TYPE_LENGTH (arg_type) > 8)
+ )
+ && REG_STRUCT_HAS_ADDR (using_gcc, arg_type))
+ {
+ CORE_ADDR addr;
+ int len; /* = TYPE_LENGTH (arg_type); */
+ int aligned_len;
+ arg_type = check_typedef (VALUE_ENCLOSING_TYPE (args[i]));
+ len = TYPE_LENGTH (arg_type);
+
+ if (STACK_ALIGN_P ())
+ /* MVS 11/22/96: I think at least some of this
+ stack_align code is really broken. Better to let
+ PUSH_ARGUMENTS adjust the stack in a target-defined
+ manner. */
+ aligned_len = STACK_ALIGN (len);
+ else
+ aligned_len = len;
+ if (INNER_THAN (1, 2))
+ {
+ /* stack grows downward */
+ sp -= aligned_len;
+ }
+ else
+ {
+ /* The stack grows up, so the address of the thing
+ we push is the stack pointer before we push it. */
+ addr = sp;
+ }
+ /* Push the structure. */
+ write_memory (sp, VALUE_CONTENTS_ALL (args[i]), len);
+ if (INNER_THAN (1, 2))
+ {
+ /* The stack grows down, so the address of the thing
+ we push is the stack pointer after we push it. */
+ addr = sp;
+ }
+ else
+ {
+ /* stack grows upward */
+ sp += aligned_len;
+ }
+ /* The value we're going to pass is the address of the
+ thing we just pushed. */
+ /*args[i] = value_from_longest (lookup_pointer_type (value_type),
+ (LONGEST) addr); */
+ args[i] = value_from_pointer (lookup_pointer_type (arg_type),
+ addr);
+ }
+ }
+ }
+
/* Reserve space for the return structure to be written on the
stack, if necessary */
@@ -1595,12 +1587,11 @@ You must use a pointer to function type variable. Command ignored.", arg_name);
if (struct_return)
{
int len = TYPE_LENGTH (value_type);
-#ifdef STACK_ALIGN
- /* MVS 11/22/96: I think at least some of this stack_align code is
- really broken. Better to let PUSH_ARGUMENTS adjust the stack in
- a target-defined manner. */
- len = STACK_ALIGN (len);
-#endif
+ if (STACK_ALIGN_P ())
+ /* MVS 11/22/96: I think at least some of this stack_align
+ code is really broken. Better to let PUSH_ARGUMENTS adjust
+ the stack in a target-defined manner. */
+ len = STACK_ALIGN (len);
if (INNER_THAN (1, 2))
{
/* stack grows downward */
@@ -1621,11 +1612,10 @@ You must use a pointer to function type variable. Command ignored.", arg_name);
hppa_push_arguments */
#ifndef NO_EXTRA_ALIGNMENT_NEEDED
-#if defined(STACK_ALIGN)
/* MVS 11/22/96: I think at least some of this stack_align code is
really broken. Better to let PUSH_ARGUMENTS adjust the stack in
a target-defined manner. */
- if (INNER_THAN (1, 2))
+ if (STACK_ALIGN_P () && INNER_THAN (1, 2))
{
/* If stack grows down, we must leave a hole at the top. */
int len = 0;
@@ -1636,7 +1626,6 @@ You must use a pointer to function type variable. Command ignored.", arg_name);
len += CALL_DUMMY_STACK_ADJUST;
sp -= STACK_ALIGN (len) - len;
}
-#endif /* STACK_ALIGN */
#endif /* NO_EXTRA_ALIGNMENT_NEEDED */
sp = PUSH_ARGUMENTS (nargs, args, sp, struct_return, struct_addr);
@@ -1654,8 +1643,7 @@ You must use a pointer to function type variable. Command ignored.", arg_name);
sp = PUSH_RETURN_ADDRESS (real_pc, sp);
#endif /* PUSH_RETURN_ADDRESS */
-#if defined(STACK_ALIGN)
- if (!INNER_THAN (1, 2))
+ if (STACK_ALIGN_P () && !INNER_THAN (1, 2))
{
/* If stack grows up, we must leave a hole at the bottom, note
that sp already has been advanced for the arguments! */
@@ -1663,7 +1651,6 @@ You must use a pointer to function type variable. Command ignored.", arg_name);
sp += CALL_DUMMY_STACK_ADJUST;
sp = STACK_ALIGN (sp);
}
-#endif /* STACK_ALIGN */
/* XXX This seems wrong. For stacks that grow down we shouldn't do
anything here! */
@@ -1695,9 +1682,8 @@ You must use a pointer to function type variable. Command ignored.", arg_name);
wouldn't happen. (See store_inferior_registers in sparc-nat.c.) */
write_sp (sp);
-#ifdef SAVE_DUMMY_FRAME_TOS
- SAVE_DUMMY_FRAME_TOS (sp);
-#endif
+ if (SAVE_DUMMY_FRAME_TOS_P ())
+ SAVE_DUMMY_FRAME_TOS (sp);
{
char retbuf[REGISTER_BYTES];
diff --git a/gdb/valprint.c b/gdb/valprint.c
index e1414792b79..7e6308cde8e 100644
--- a/gdb/valprint.c
+++ b/gdb/valprint.c
@@ -43,23 +43,23 @@ static int partial_memory_read (CORE_ADDR memaddr, char *myaddr,
static void print_hex_chars (struct ui_file *, unsigned char *,
unsigned int);
-static void show_print PARAMS ((char *, int));
+static void show_print (char *, int);
-static void set_print PARAMS ((char *, int));
+static void set_print (char *, int);
-static void set_radix PARAMS ((char *, int));
+static void set_radix (char *, int);
-static void show_radix PARAMS ((char *, int));
+static void show_radix (char *, int);
-static void set_input_radix PARAMS ((char *, int, struct cmd_list_element *));
+static void set_input_radix (char *, int, struct cmd_list_element *);
-static void set_input_radix_1 PARAMS ((int, unsigned));
+static void set_input_radix_1 (int, unsigned);
-static void set_output_radix PARAMS ((char *, int, struct cmd_list_element *));
+static void set_output_radix (char *, int, struct cmd_list_element *);
-static void set_output_radix_1 PARAMS ((int, unsigned));
+static void set_output_radix_1 (int, unsigned);
-void _initialize_valprint PARAMS ((void));
+void _initialize_valprint (void);
/* Maximum number of chars to print for a string pointer value or vector
contents, or UINT_MAX for no limit. Note that "set print elements 0"
@@ -561,6 +561,7 @@ longest_to_int (arg)
return (rtnval);
}
+
/* Print a floating point value of type TYPE, pointed to in GDB by VALADDR,
on STREAM. */
@@ -574,85 +575,82 @@ print_floating (valaddr, type, stream)
int inv;
unsigned len = TYPE_LENGTH (type);
-#if defined (IEEE_FLOAT)
-
/* Check for NaN's. Note that this code does not depend on us being
on an IEEE conforming system. It only depends on the target
machine using IEEE representation. This means (a)
cross-debugging works right, and (2) IEEE_FLOAT can (and should)
- be defined for systems like the 68881, which uses IEEE
+ be non-zero for systems like the 68881, which uses IEEE
representation, but is not IEEE conforming. */
+ if (IEEE_FLOAT)
+ {
+ unsigned long low, high;
+ /* Is the sign bit 0? */
+ int nonnegative;
+ /* Is it is a NaN (i.e. the exponent is all ones and
+ the fraction is nonzero)? */
+ int is_nan;
+
+ /* For lint, initialize these two variables to suppress warning: */
+ low = high = nonnegative = 0;
+ if (len == 4)
+ {
+ /* It's single precision. */
+ /* Assume that floating point byte order is the same as
+ integer byte order. */
+ low = extract_unsigned_integer (valaddr, 4);
+ nonnegative = ((low & 0x80000000) == 0);
+ is_nan = ((((low >> 23) & 0xFF) == 0xFF)
+ && 0 != (low & 0x7FFFFF));
+ low &= 0x7fffff;
+ high = 0;
+ }
+ else if (len == 8)
+ {
+ /* It's double precision. Get the high and low words. */
- {
- unsigned long low, high;
- /* Is the sign bit 0? */
- int nonnegative;
- /* Is it is a NaN (i.e. the exponent is all ones and
- the fraction is nonzero)? */
- int is_nan;
-
- /* For lint, initialize these two variables to suppress warning: */
- low = high = nonnegative = 0;
- if (len == 4)
- {
- /* It's single precision. */
- /* Assume that floating point byte order is the same as
- integer byte order. */
- low = extract_unsigned_integer (valaddr, 4);
- nonnegative = ((low & 0x80000000) == 0);
- is_nan = ((((low >> 23) & 0xFF) == 0xFF)
- && 0 != (low & 0x7FFFFF));
- low &= 0x7fffff;
- high = 0;
- }
- else if (len == 8)
- {
- /* It's double precision. Get the high and low words. */
-
- /* Assume that floating point byte order is the same as
- integer byte order. */
- if (TARGET_BYTE_ORDER == BIG_ENDIAN)
- {
- low = extract_unsigned_integer (valaddr + 4, 4);
- high = extract_unsigned_integer (valaddr, 4);
- }
- else
- {
- low = extract_unsigned_integer (valaddr, 4);
- high = extract_unsigned_integer (valaddr + 4, 4);
- }
- nonnegative = ((high & 0x80000000) == 0);
- is_nan = (((high >> 20) & 0x7ff) == 0x7ff
- && !((((high & 0xfffff) == 0)) && (low == 0)));
- high &= 0xfffff;
- }
- else
- {
+ /* Assume that floating point byte order is the same as
+ integer byte order. */
+ if (TARGET_BYTE_ORDER == BIG_ENDIAN)
+ {
+ low = extract_unsigned_integer (valaddr + 4, 4);
+ high = extract_unsigned_integer (valaddr, 4);
+ }
+ else
+ {
+ low = extract_unsigned_integer (valaddr, 4);
+ high = extract_unsigned_integer (valaddr + 4, 4);
+ }
+ nonnegative = ((high & 0x80000000) == 0);
+ is_nan = (((high >> 20) & 0x7ff) == 0x7ff
+ && !((((high & 0xfffff) == 0)) && (low == 0)));
+ high &= 0xfffff;
+ }
+ else
+ {
#ifdef TARGET_ANALYZE_FLOATING
- TARGET_ANALYZE_FLOATING;
+ TARGET_ANALYZE_FLOATING;
#else
- /* Extended. We can't detect extended NaNs for this target.
- Also note that currently extendeds get nuked to double in
- REGISTER_CONVERTIBLE. */
- is_nan = 0;
+ /* Extended. We can't detect extended NaNs for this target.
+ Also note that currently extendeds get nuked to double in
+ REGISTER_CONVERTIBLE. */
+ is_nan = 0;
#endif
- }
-
- if (is_nan)
- {
- /* The meaning of the sign and fraction is not defined by IEEE.
- But the user might know what they mean. For example, they
- (in an implementation-defined manner) distinguish between
- signaling and quiet NaN's. */
- if (high)
- fprintf_filtered (stream, "-NaN(0x%lx%.8lx)" + !!nonnegative,
- high, low);
- else
- fprintf_filtered (stream, "-NaN(0x%lx)" + nonnegative, low);
- return;
- }
- }
-#endif /* IEEE_FLOAT. */
+ }
+
+ if (is_nan)
+ {
+ /* The meaning of the sign and fraction is not defined by IEEE.
+ But the user might know what they mean. For example, they
+ (in an implementation-defined manner) distinguish between
+ signaling and quiet NaN's. */
+ if (high)
+ fprintf_filtered (stream, "-NaN(0x%lx%.8lx)" + !!nonnegative,
+ high, low);
+ else
+ fprintf_filtered (stream, "-NaN(0x%lx)" + nonnegative, low);
+ return;
+ }
+ }
doub = unpack_double (type, valaddr, &inv);
if (inv)
diff --git a/gdb/value.h b/gdb/value.h
index 9b6989a28c2..7ec96c309de 100644
--- a/gdb/value.h
+++ b/gdb/value.h
@@ -163,7 +163,7 @@ typedef struct value *value_ptr;
VALUE_CONTENTS_ALL_RAW(val))
-extern int value_fetch_lazy PARAMS ((value_ptr val));
+extern int value_fetch_lazy (value_ptr val);
#define VALUE_LVAL(val) (val)->lval
#define VALUE_ADDRESS(val) (val)->location.address
@@ -186,8 +186,8 @@ extern int value_fetch_lazy PARAMS ((value_ptr val));
do { struct type *value_type_arg_tmp = check_typedef (VALUE_TYPE (arg));\
if (TYPE_CODE (value_type_arg_tmp) == TYPE_CODE_REF) \
arg = value_at_lazy (TYPE_TARGET_TYPE (value_type_arg_tmp), \
- unpack_long (VALUE_TYPE (arg), \
- VALUE_CONTENTS (arg)), \
+ unpack_pointer (VALUE_TYPE (arg), \
+ VALUE_CONTENTS (arg)), \
VALUE_BFD_SECTION (arg)); \
} while (0)
@@ -246,251 +246,244 @@ struct fn_field;
extern void print_address_demangle (CORE_ADDR, struct ui_file *, int);
-extern LONGEST value_as_long PARAMS ((value_ptr val));
+extern LONGEST value_as_long (value_ptr val);
-extern DOUBLEST value_as_double PARAMS ((value_ptr val));
+extern DOUBLEST value_as_double (value_ptr val);
-extern CORE_ADDR value_as_pointer PARAMS ((value_ptr val));
+extern CORE_ADDR value_as_pointer (value_ptr val);
-extern LONGEST unpack_long PARAMS ((struct type * type, char *valaddr));
+extern LONGEST unpack_long (struct type *type, char *valaddr);
-extern DOUBLEST unpack_double PARAMS ((struct type * type, char *valaddr,
- int *invp));
+extern DOUBLEST unpack_double (struct type *type, char *valaddr, int *invp);
-extern CORE_ADDR unpack_pointer PARAMS ((struct type * type, char *valaddr));
+extern CORE_ADDR unpack_pointer (struct type *type, char *valaddr);
-extern LONGEST unpack_field_as_long PARAMS ((struct type * type, char *valaddr,
- int fieldno));
+extern LONGEST unpack_field_as_long (struct type *type, char *valaddr,
+ int fieldno);
-extern value_ptr value_from_longest PARAMS ((struct type * type, LONGEST num));
+extern value_ptr value_from_longest (struct type *type, LONGEST num);
-extern value_ptr value_from_double PARAMS ((struct type * type, DOUBLEST num));
+extern value_ptr value_from_pointer (struct type *type, CORE_ADDR addr);
-extern value_ptr value_from_string PARAMS ((char *string));
+extern value_ptr value_from_double (struct type *type, DOUBLEST num);
-extern value_ptr value_at PARAMS ((struct type * type, CORE_ADDR addr, asection * sect));
+extern value_ptr value_from_string (char *string);
-extern value_ptr value_at_lazy PARAMS ((struct type * type, CORE_ADDR addr, asection * sect));
+extern value_ptr value_at (struct type *type, CORE_ADDR addr,
+ asection * sect);
-extern value_ptr value_from_register PARAMS ((struct type * type, int regnum,
- struct frame_info * frame));
+extern value_ptr value_at_lazy (struct type *type, CORE_ADDR addr,
+ asection * sect);
-extern value_ptr value_of_variable PARAMS ((struct symbol * var,
- struct block * b));
+extern value_ptr value_from_register (struct type *type, int regnum,
+ struct frame_info *frame);
-extern value_ptr value_of_register PARAMS ((int regnum));
+extern value_ptr value_of_variable (struct symbol *var, struct block *b);
-extern int symbol_read_needs_frame PARAMS ((struct symbol *));
+extern value_ptr value_of_register (int regnum);
-extern value_ptr read_var_value PARAMS ((struct symbol * var,
- struct frame_info * frame));
+extern int symbol_read_needs_frame (struct symbol *);
-extern value_ptr locate_var_value PARAMS ((struct symbol * var,
- struct frame_info * frame));
+extern value_ptr read_var_value (struct symbol *var,
+ struct frame_info *frame);
-extern value_ptr allocate_value PARAMS ((struct type * type));
+extern value_ptr locate_var_value (struct symbol *var,
+ struct frame_info *frame);
-extern value_ptr allocate_repeat_value PARAMS ((struct type * type, int count));
+extern value_ptr allocate_value (struct type *type);
-extern value_ptr value_mark PARAMS ((void));
+extern value_ptr allocate_repeat_value (struct type *type, int count);
-extern void value_free_to_mark PARAMS ((value_ptr mark));
+extern value_ptr value_mark (void);
-extern value_ptr value_string PARAMS ((char *ptr, int len));
-extern value_ptr value_bitstring PARAMS ((char *ptr, int len));
+extern void value_free_to_mark (value_ptr mark);
-extern value_ptr value_array PARAMS ((int lowbound, int highbound,
- value_ptr * elemvec));
+extern value_ptr value_string (char *ptr, int len);
+extern value_ptr value_bitstring (char *ptr, int len);
-extern value_ptr value_concat PARAMS ((value_ptr arg1, value_ptr arg2));
+extern value_ptr value_array (int lowbound, int highbound,
+ value_ptr * elemvec);
-extern value_ptr value_binop PARAMS ((value_ptr arg1, value_ptr arg2,
- enum exp_opcode op));
+extern value_ptr value_concat (value_ptr arg1, value_ptr arg2);
-extern value_ptr value_add PARAMS ((value_ptr arg1, value_ptr arg2));
+extern value_ptr value_binop (value_ptr arg1, value_ptr arg2,
+ enum exp_opcode op);
-extern value_ptr value_sub PARAMS ((value_ptr arg1, value_ptr arg2));
+extern value_ptr value_add (value_ptr arg1, value_ptr arg2);
-extern value_ptr value_coerce_array PARAMS ((value_ptr arg1));
+extern value_ptr value_sub (value_ptr arg1, value_ptr arg2);
-extern value_ptr value_coerce_function PARAMS ((value_ptr arg1));
+extern value_ptr value_coerce_array (value_ptr arg1);
-extern value_ptr value_ind PARAMS ((value_ptr arg1));
+extern value_ptr value_coerce_function (value_ptr arg1);
-extern value_ptr value_addr PARAMS ((value_ptr arg1));
+extern value_ptr value_ind (value_ptr arg1);
-extern value_ptr value_assign PARAMS ((value_ptr toval, value_ptr fromval));
+extern value_ptr value_addr (value_ptr arg1);
-extern value_ptr value_neg PARAMS ((value_ptr arg1));
+extern value_ptr value_assign (value_ptr toval, value_ptr fromval);
-extern value_ptr value_complement PARAMS ((value_ptr arg1));
+extern value_ptr value_neg (value_ptr arg1);
-extern value_ptr value_struct_elt PARAMS ((value_ptr * argp, value_ptr * args,
- char *name,
- int *static_memfuncp, char *err));
+extern value_ptr value_complement (value_ptr arg1);
-extern value_ptr value_struct_elt_for_reference PARAMS ((struct type * domain,
- int offset,
- struct type * curtype,
- char *name,
- struct type * intype));
+extern value_ptr value_struct_elt (value_ptr * argp, value_ptr * args,
+ char *name,
+ int *static_memfuncp, char *err);
-extern value_ptr value_static_field PARAMS ((struct type * type, int fieldno));
+extern value_ptr value_struct_elt_for_reference (struct type *domain,
+ int offset,
+ struct type *curtype,
+ char *name,
+ struct type *intype);
-extern struct fn_field *value_find_oload_method_list PARAMS ((value_ptr *, char *, int, int *, int *, struct type **, int *));
+extern value_ptr value_static_field (struct type *type, int fieldno);
-extern int find_overload_match PARAMS ((struct type ** arg_types, int nargs, char *name, int method, int lax, value_ptr obj, struct symbol * fsym, value_ptr * valp, struct symbol ** symp, int *staticp));
+extern struct fn_field *value_find_oload_method_list (value_ptr *, char *,
+ int, int *, int *,
+ struct type **, int *);
-extern value_ptr value_field PARAMS ((value_ptr arg1, int fieldno));
+extern int find_overload_match (struct type **arg_types, int nargs,
+ char *name, int method, int lax,
+ value_ptr obj, struct symbol *fsym,
+ value_ptr * valp, struct symbol **symp,
+ int *staticp);
-extern value_ptr value_primitive_field PARAMS ((value_ptr arg1, int offset,
- int fieldno,
- struct type * arg_type));
+extern value_ptr value_field (value_ptr arg1, int fieldno);
-extern struct type *
- value_rtti_type PARAMS ((value_ptr, int *, int *, int *));
+extern value_ptr value_primitive_field (value_ptr arg1, int offset,
+ int fieldno, struct type *arg_type);
-extern struct type *
- value_rtti_target_type PARAMS ((value_ptr, int *, int *, int *));
+extern struct type *value_rtti_type (value_ptr, int *, int *, int *);
-extern value_ptr
- value_full_object PARAMS ((value_ptr, struct type *, int, int, int));
+extern struct type *value_rtti_target_type (value_ptr, int *, int *, int *);
-extern value_ptr value_cast PARAMS ((struct type * type, value_ptr arg2));
+extern value_ptr value_full_object (value_ptr, struct type *, int, int, int);
-extern value_ptr value_zero PARAMS ((struct type * type, enum lval_type lv));
+extern value_ptr value_cast (struct type *type, value_ptr arg2);
-extern value_ptr value_repeat PARAMS ((value_ptr arg1, int count));
+extern value_ptr value_zero (struct type *type, enum lval_type lv);
-extern value_ptr value_subscript PARAMS ((value_ptr array, value_ptr idx));
+extern value_ptr value_repeat (value_ptr arg1, int count);
-extern value_ptr value_from_vtable_info PARAMS ((value_ptr arg,
- struct type * type));
+extern value_ptr value_subscript (value_ptr array, value_ptr idx);
-extern value_ptr value_being_returned PARAMS ((struct type * valtype,
- char *retbuf,
- int struct_return));
+extern value_ptr value_from_vtable_info (value_ptr arg, struct type *type);
-extern value_ptr value_in PARAMS ((value_ptr element, value_ptr set));
+extern value_ptr value_being_returned (struct type *valtype,
+ char *retbuf, int struct_return);
-extern int value_bit_index PARAMS ((struct type * type, char *addr, int index));
+extern value_ptr value_in (value_ptr element, value_ptr set);
-extern int using_struct_return PARAMS ((value_ptr function, CORE_ADDR funcaddr,
- struct type * value_type, int gcc_p));
+extern int value_bit_index (struct type *type, char *addr, int index);
-extern void set_return_value PARAMS ((value_ptr val));
+extern int using_struct_return (value_ptr function, CORE_ADDR funcaddr,
+ struct type *value_type, int gcc_p);
-extern value_ptr evaluate_expression PARAMS ((struct expression * exp));
+extern void set_return_value (value_ptr val);
-extern value_ptr evaluate_type PARAMS ((struct expression * exp));
+extern value_ptr evaluate_expression (struct expression *exp);
-extern value_ptr evaluate_subexp_with_coercion PARAMS ((struct expression *,
- int *, enum noside));
+extern value_ptr evaluate_type (struct expression *exp);
-extern value_ptr parse_and_eval PARAMS ((char *exp));
+extern value_ptr evaluate_subexp_with_coercion (struct expression *,
+ int *, enum noside);
-extern value_ptr parse_to_comma_and_eval PARAMS ((char **expp));
+extern value_ptr parse_and_eval (char *exp);
-extern struct type *parse_and_eval_type PARAMS ((char *p, int length));
+extern value_ptr parse_to_comma_and_eval (char **expp);
-extern CORE_ADDR parse_and_eval_address PARAMS ((char *exp));
+extern struct type *parse_and_eval_type (char *p, int length);
-extern CORE_ADDR parse_and_eval_address_1 PARAMS ((char **expptr));
+extern CORE_ADDR parse_and_eval_address (char *exp);
-extern value_ptr access_value_history PARAMS ((int num));
+extern CORE_ADDR parse_and_eval_address_1 (char **expptr);
-extern value_ptr value_of_internalvar PARAMS ((struct internalvar * var));
+extern value_ptr access_value_history (int num);
-extern void set_internalvar PARAMS ((struct internalvar * var, value_ptr val));
+extern value_ptr value_of_internalvar (struct internalvar *var);
-extern void set_internalvar_component PARAMS ((struct internalvar * var,
- int offset,
- int bitpos, int bitsize,
- value_ptr newvalue));
+extern void set_internalvar (struct internalvar *var, value_ptr val);
-extern struct internalvar *lookup_internalvar PARAMS ((char *name));
+extern void set_internalvar_component (struct internalvar *var,
+ int offset,
+ int bitpos, int bitsize,
+ value_ptr newvalue);
-extern int value_equal PARAMS ((value_ptr arg1, value_ptr arg2));
+extern struct internalvar *lookup_internalvar (char *name);
-extern int value_less PARAMS ((value_ptr arg1, value_ptr arg2));
+extern int value_equal (value_ptr arg1, value_ptr arg2);
-extern int value_logical_not PARAMS ((value_ptr arg1));
+extern int value_less (value_ptr arg1, value_ptr arg2);
+
+extern int value_logical_not (value_ptr arg1);
/* C++ */
-extern value_ptr value_of_this PARAMS ((int complain));
+extern value_ptr value_of_this (int complain);
-extern value_ptr value_x_binop PARAMS ((value_ptr arg1, value_ptr arg2,
- enum exp_opcode op,
- enum exp_opcode otherop,
- enum noside noside));
+extern value_ptr value_x_binop (value_ptr arg1, value_ptr arg2,
+ enum exp_opcode op,
+ enum exp_opcode otherop, enum noside noside);
-extern value_ptr value_x_unop PARAMS ((value_ptr arg1, enum exp_opcode op,
- enum noside noside));
+extern value_ptr value_x_unop (value_ptr arg1, enum exp_opcode op,
+ enum noside noside);
-extern value_ptr value_fn_field PARAMS ((value_ptr * arg1p, struct fn_field * f,
- int j,
- struct type * type, int offset));
+extern value_ptr value_fn_field (value_ptr * arg1p, struct fn_field *f,
+ int j, struct type *type, int offset);
-extern value_ptr value_virtual_fn_field PARAMS ((value_ptr * arg1p,
- struct fn_field * f, int j,
- struct type * type,
- int offset));
+extern value_ptr value_virtual_fn_field (value_ptr * arg1p,
+ struct fn_field *f, int j,
+ struct type *type, int offset);
-extern int binop_user_defined_p PARAMS ((enum exp_opcode op,
- value_ptr arg1, value_ptr arg2));
+extern int binop_user_defined_p (enum exp_opcode op,
+ value_ptr arg1, value_ptr arg2);
-extern int unop_user_defined_p PARAMS ((enum exp_opcode op, value_ptr arg1));
+extern int unop_user_defined_p (enum exp_opcode op, value_ptr arg1);
-extern int destructor_name_p PARAMS ((const char *name,
- const struct type * type));
+extern int destructor_name_p (const char *name, const struct type *type);
#define value_free(val) free ((PTR)val)
-extern void free_all_values PARAMS ((void));
+extern void free_all_values (void);
-extern void release_value PARAMS ((value_ptr val));
+extern void release_value (value_ptr val);
-extern int record_latest_value PARAMS ((value_ptr val));
+extern int record_latest_value (value_ptr val);
-extern void registers_changed PARAMS ((void));
+extern void registers_changed (void);
-extern void read_register_bytes PARAMS ((int regbyte, char *myaddr, int len));
+extern void read_register_bytes (int regbyte, char *myaddr, int len);
-extern void write_register_bytes PARAMS ((int regbyte, char *myaddr, int len));
+extern void write_register_bytes (int regbyte, char *myaddr, int len);
-extern void
-read_register_gen PARAMS ((int regno, char *myaddr));
+extern void read_register_gen (int regno, char *myaddr);
-extern CORE_ADDR
- read_register PARAMS ((int regno));
+extern void write_register_gen (int regno, char *myaddr);
-extern CORE_ADDR
- read_register_pid PARAMS ((int regno, int pid));
+extern CORE_ADDR read_register (int regno);
-extern void
-write_register PARAMS ((int regno, LONGEST val));
+extern CORE_ADDR read_register_pid (int regno, int pid);
-extern void
-write_register_pid PARAMS ((int regno, CORE_ADDR val, int pid));
+extern void write_register (int regno, LONGEST val);
-extern void
-supply_register PARAMS ((int regno, char *val));
+extern void write_register_pid (int regno, CORE_ADDR val, int pid);
+
+extern void supply_register (int regno, char *val);
-extern void get_saved_register PARAMS ((char *raw_buffer, int *optimized,
- CORE_ADDR * addrp,
- struct frame_info * frame,
- int regnum, enum lval_type * lval));
+extern void get_saved_register (char *raw_buffer, int *optimized,
+ CORE_ADDR * addrp,
+ struct frame_info *frame,
+ int regnum, enum lval_type *lval);
extern void
-modify_field PARAMS ((char *addr, LONGEST fieldval, int bitpos, int bitsize));
+modify_field (char *addr, LONGEST fieldval, int bitpos, int bitsize);
extern void type_print (struct type * type, char *varstring,
struct ui_file * stream, int show);
-extern char *baseclass_addr PARAMS ((struct type * type, int index,
- char *valaddr,
- value_ptr * valuep, int *errp));
+extern char *baseclass_addr (struct type *type, int index,
+ char *valaddr, value_ptr * valuep, int *errp);
extern void print_longest (struct ui_file * stream, int format,
int use_local, LONGEST val);
@@ -506,8 +499,7 @@ extern void value_print_array_elements (value_ptr val,
int format,
enum val_prettyprint pretty);
-extern value_ptr
- value_release_to_mark PARAMS ((value_ptr mark));
+extern value_ptr value_release_to_mark (value_ptr mark);
extern int val_print (struct type * type, char *valaddr,
int embedded_offset, CORE_ADDR address,
@@ -521,49 +513,47 @@ extern void print_variable_value (struct symbol * var,
struct frame_info * frame,
struct ui_file *stream);
-extern int check_field PARAMS ((value_ptr, const char *));
+extern int check_field (value_ptr, const char *);
extern void c_typedef_print (struct type * type, struct symbol * news,
struct ui_file * stream);
-extern char *
- internalvar_name PARAMS ((struct internalvar * var));
+extern char *internalvar_name (struct internalvar *var);
-extern void
-clear_value_history PARAMS ((void));
+extern void clear_value_history (void);
-extern void
-clear_internalvars PARAMS ((void));
+extern void clear_internalvars (void);
/* From values.c */
-extern value_ptr value_copy PARAMS ((value_ptr));
+extern value_ptr value_copy (value_ptr);
-extern int baseclass_offset PARAMS ((struct type *, int, char *, CORE_ADDR));
+extern int baseclass_offset (struct type *, int, char *, CORE_ADDR);
/* From valops.c */
-extern value_ptr varying_to_slice PARAMS ((value_ptr));
+extern value_ptr varying_to_slice (value_ptr);
-extern value_ptr value_slice PARAMS ((value_ptr, int, int));
+extern value_ptr value_slice (value_ptr, int, int);
-extern value_ptr call_function_by_hand PARAMS ((value_ptr, int, value_ptr *));
+extern value_ptr call_function_by_hand (value_ptr, int, value_ptr *);
extern int default_coerce_float_to_double (struct type *, struct type *);
extern int standard_coerce_float_to_double (struct type *, struct type *);
-extern value_ptr value_literal_complex PARAMS ((value_ptr, value_ptr, struct type *));
+extern value_ptr value_literal_complex (value_ptr, value_ptr, struct type *);
-extern void find_rt_vbase_offset PARAMS ((struct type *, struct type *, char *, int, int *, int *));
+extern void find_rt_vbase_offset (struct type *, struct type *, char *, int,
+ int *, int *);
-extern value_ptr find_function_in_inferior PARAMS ((char *));
+extern value_ptr find_function_in_inferior (char *);
-extern value_ptr value_allocate_space_in_inferior PARAMS ((int));
+extern value_ptr value_allocate_space_in_inferior (int);
-extern CORE_ADDR default_push_arguments PARAMS ((int nargs, value_ptr * args,
- CORE_ADDR sp,
- int struct_return,
- CORE_ADDR struct_addr));
+extern CORE_ADDR default_push_arguments (int nargs, value_ptr * args,
+ CORE_ADDR sp,
+ int struct_return,
+ CORE_ADDR struct_addr);
#endif /* !defined (VALUE_H) */
diff --git a/gdb/values.c b/gdb/values.c
index 07aff7a8055..b77f405c45b 100644
--- a/gdb/values.c
+++ b/gdb/values.c
@@ -35,18 +35,17 @@
/* Prototypes for exported functions. */
-void _initialize_values PARAMS ((void));
+void _initialize_values (void);
/* Prototypes for local functions. */
-static value_ptr value_headof PARAMS ((value_ptr, struct type *,
- struct type *));
+static value_ptr value_headof (value_ptr, struct type *, struct type *);
-static void show_values PARAMS ((char *, int));
+static void show_values (char *, int);
-static void show_convenience PARAMS ((char *, int));
+static void show_convenience (char *, int);
-static int vb_match PARAMS ((struct type *, int, struct type *));
+static int vb_match (struct type *, int, struct type *);
/* The value-history records all the values printed
by print commands during this session. Each chunk
@@ -580,8 +579,9 @@ value_as_double (val)
error ("Invalid floating value found in program.");
return foo;
}
-/* Extract a value as a C pointer.
- Does not deallocate the value. */
+/* Extract a value as a C pointer. Does not deallocate the value.
+ Note that val's type may not actually be a pointer; value_as_long
+ handles all the cases. */
CORE_ADDR
value_as_pointer (val)
value_ptr val;
@@ -649,7 +649,7 @@ unpack_long (type, valaddr)
if (GDB_TARGET_IS_D10V
&& len == 2)
return D10V_MAKE_DADDR (extract_address (valaddr, len));
- return extract_address (valaddr, len);
+ return extract_typed_address (valaddr, type);
case TYPE_CODE_MEMBER:
error ("not implemented: member types in unpack_long");
@@ -731,6 +731,7 @@ unpack_pointer (type, valaddr)
whether we want this to be true eventually. */
return unpack_long (type, valaddr);
}
+
/* Get the value of the FIELDN'th field (which must be static) of TYPE. */
@@ -1420,9 +1421,7 @@ retry:
case TYPE_CODE_REF:
case TYPE_CODE_PTR:
- /* This assumes that all pointers of a given length
- have the same form. */
- store_address (VALUE_CONTENTS_RAW (val), len, (CORE_ADDR) num);
+ store_typed_address (VALUE_CONTENTS_RAW (val), type, (CORE_ADDR) num);
break;
default:
@@ -1431,6 +1430,18 @@ retry:
return val;
}
+
+/* Create a value representing a pointer of type TYPE to the address
+ ADDR. */
+value_ptr
+value_from_pointer (struct type *type, CORE_ADDR addr)
+{
+ value_ptr val = allocate_value (type);
+ store_typed_address (VALUE_CONTENTS_RAW (val), type, addr);
+ return val;
+}
+
+
/* Create a value for a string constant to be stored locally
(not in the inferior's memory space, but in GDB memory).
This is analogous to value_from_longest, which also does not
@@ -1549,13 +1560,6 @@ generic_use_struct_convention (gcc_p, value_type)
#define USE_STRUCT_CONVENTION(gcc_p,type) generic_use_struct_convention (gcc_p, type)
#endif
-/* Some fundamental types (such as long double) are returned on the stack for
- certain architectures. This macro should return true for any type besides
- struct, union or array that gets returned on the stack. */
-
-#ifndef RETURN_VALUE_ON_STACK
-#define RETURN_VALUE_ON_STACK(TYPE) 0
-#endif
/* Return true if the function specified is using the structure returning
convention on this machine to return arguments, or 0 if it is using
diff --git a/gdb/varobj.c b/gdb/varobj.c
index fd6120391a4..faae5f81b3c 100644
--- a/gdb/varobj.c
+++ b/gdb/varobj.c
@@ -155,127 +155,128 @@ struct vlist
/* Helper functions for the above subcommands. */
-static int delete_variable PARAMS ((struct cpstack **, struct varobj *, int));
+static int delete_variable (struct cpstack **, struct varobj *, int);
-static void delete_variable_1 PARAMS ((struct cpstack **, int *,
- struct varobj *, int, int));
+static void delete_variable_1 (struct cpstack **, int *,
+ struct varobj *, int, int);
-static int install_variable PARAMS ((struct varobj *));
+static int install_variable (struct varobj *);
-static void uninstall_variable PARAMS ((struct varobj *));
+static void uninstall_variable (struct varobj *);
-static struct varobj *child_exists PARAMS ((struct varobj *, char *));
+static struct varobj *child_exists (struct varobj *, char *);
-static struct varobj *create_child PARAMS ((struct varobj *, int, char *));
+static struct varobj *create_child (struct varobj *, int, char *);
-static void save_child_in_parent PARAMS ((struct varobj *, struct varobj *));
+static void save_child_in_parent (struct varobj *, struct varobj *);
-static void remove_child_from_parent PARAMS ((struct varobj *, struct varobj *));
+static void remove_child_from_parent (struct varobj *, struct varobj *);
/* Utility routines */
-static struct varobj *new_variable PARAMS ((void));
+static struct varobj *new_variable (void);
-static struct varobj *new_root_variable PARAMS ((void));
+static struct varobj *new_root_variable (void);
-static void free_variable PARAMS ((struct varobj * var));
+static void free_variable (struct varobj *var);
-static struct type *get_type PARAMS ((struct varobj * var));
+static struct cleanup *make_cleanup_free_variable (struct varobj *var);
-static struct type *get_type_deref PARAMS ((struct varobj * var));
+static struct type *get_type (struct varobj *var);
-static struct type *get_target_type PARAMS ((struct type *));
+static struct type *get_type_deref (struct varobj *var);
-static enum varobj_display_formats variable_default_display PARAMS ((struct varobj *));
+static struct type *get_target_type (struct type *);
-static int my_value_equal PARAMS ((value_ptr, value_ptr, int *));
+static enum varobj_display_formats variable_default_display (struct varobj *);
-static void vpush PARAMS ((struct vstack ** pstack, struct varobj * var));
+static int my_value_equal (value_ptr, value_ptr, int *);
-static struct varobj *vpop PARAMS ((struct vstack ** pstack));
+static void vpush (struct vstack **pstack, struct varobj *var);
-static void cppush PARAMS ((struct cpstack ** pstack, char *name));
+static struct varobj *vpop (struct vstack **pstack);
-static char *cppop PARAMS ((struct cpstack ** pstack));
+static void cppush (struct cpstack **pstack, char *name);
+
+static char *cppop (struct cpstack **pstack);
/* Language-specific routines. */
-static enum varobj_languages variable_language PARAMS ((struct varobj * var));
+static enum varobj_languages variable_language (struct varobj *var);
-static int number_of_children PARAMS ((struct varobj *));
+static int number_of_children (struct varobj *);
-static char *name_of_variable PARAMS ((struct varobj *));
+static char *name_of_variable (struct varobj *);
-static char *name_of_child PARAMS ((struct varobj *, int));
+static char *name_of_child (struct varobj *, int);
-static value_ptr value_of_root PARAMS ((struct varobj ** var_handle,
- int *));
+static value_ptr value_of_root (struct varobj **var_handle, int *);
-static value_ptr value_of_child PARAMS ((struct varobj * parent, int index));
+static value_ptr value_of_child (struct varobj *parent, int index);
-static struct type *type_of_child PARAMS ((struct varobj * var));
+static struct type *type_of_child (struct varobj *var);
-static int variable_editable PARAMS ((struct varobj * var));
+static int variable_editable (struct varobj *var);
-static char *my_value_of_variable PARAMS ((struct varobj * var));
+static char *my_value_of_variable (struct varobj *var);
-static int type_changeable PARAMS ((struct varobj * var));
+static int type_changeable (struct varobj *var);
/* C implementation */
-static int c_number_of_children PARAMS ((struct varobj * var));
+static int c_number_of_children (struct varobj *var);
-static char *c_name_of_variable PARAMS ((struct varobj * parent));
+static char *c_name_of_variable (struct varobj *parent);
-static char *c_name_of_child PARAMS ((struct varobj * parent, int index));
+static char *c_name_of_child (struct varobj *parent, int index);
-static value_ptr c_value_of_root PARAMS ((struct varobj ** var_handle));
+static value_ptr c_value_of_root (struct varobj **var_handle);
-static value_ptr c_value_of_child PARAMS ((struct varobj * parent, int index));
+static value_ptr c_value_of_child (struct varobj *parent, int index);
-static struct type *c_type_of_child PARAMS ((struct varobj * parent, int index));
+static struct type *c_type_of_child (struct varobj *parent, int index);
-static int c_variable_editable PARAMS ((struct varobj * var));
+static int c_variable_editable (struct varobj *var);
-static char *c_value_of_variable PARAMS ((struct varobj * var));
+static char *c_value_of_variable (struct varobj *var);
/* C++ implementation */
-static int cplus_number_of_children PARAMS ((struct varobj * var));
+static int cplus_number_of_children (struct varobj *var);
-static void cplus_class_num_children PARAMS ((struct type * type, int children[3]));
+static void cplus_class_num_children (struct type *type, int children[3]);
-static char *cplus_name_of_variable PARAMS ((struct varobj * parent));
+static char *cplus_name_of_variable (struct varobj *parent);
-static char *cplus_name_of_child PARAMS ((struct varobj * parent, int index));
+static char *cplus_name_of_child (struct varobj *parent, int index);
-static value_ptr cplus_value_of_root PARAMS ((struct varobj ** var_handle));
+static value_ptr cplus_value_of_root (struct varobj **var_handle);
-static value_ptr cplus_value_of_child PARAMS ((struct varobj * parent, int index));
+static value_ptr cplus_value_of_child (struct varobj *parent, int index);
-static struct type *cplus_type_of_child PARAMS ((struct varobj * parent, int index));
+static struct type *cplus_type_of_child (struct varobj *parent, int index);
-static int cplus_variable_editable PARAMS ((struct varobj * var));
+static int cplus_variable_editable (struct varobj *var);
-static char *cplus_value_of_variable PARAMS ((struct varobj * var));
+static char *cplus_value_of_variable (struct varobj *var);
/* Java implementation */
-static int java_number_of_children PARAMS ((struct varobj * var));
+static int java_number_of_children (struct varobj *var);
-static char *java_name_of_variable PARAMS ((struct varobj * parent));
+static char *java_name_of_variable (struct varobj *parent);
-static char *java_name_of_child PARAMS ((struct varobj * parent, int index));
+static char *java_name_of_child (struct varobj *parent, int index);
-static value_ptr java_value_of_root PARAMS ((struct varobj ** var_handle));
+static value_ptr java_value_of_root (struct varobj **var_handle);
-static value_ptr java_value_of_child PARAMS ((struct varobj * parent, int index));
+static value_ptr java_value_of_child (struct varobj *parent, int index);
-static struct type *java_type_of_child PARAMS ((struct varobj * parent, int index));
+static struct type *java_type_of_child (struct varobj *parent, int index);
-static int java_variable_editable PARAMS ((struct varobj * var));
+static int java_variable_editable (struct varobj *var);
-static char *java_value_of_variable PARAMS ((struct varobj * var));
+static char *java_value_of_variable (struct varobj *var);
/* The language specific vector */
@@ -286,28 +287,28 @@ struct language_specific
enum varobj_languages language;
/* The number of children of PARENT. */
- int (*number_of_children) PARAMS ((struct varobj * parent));
+ int (*number_of_children) (struct varobj * parent);
/* The name (expression) of a root varobj. */
- char *(*name_of_variable) PARAMS ((struct varobj * parent));
+ char *(*name_of_variable) (struct varobj * parent);
/* The name of the INDEX'th child of PARENT. */
- char *(*name_of_child) PARAMS ((struct varobj * parent, int index));
+ char *(*name_of_child) (struct varobj * parent, int index);
/* The value_ptr of the root variable ROOT. */
- value_ptr (*value_of_root) PARAMS ((struct varobj ** root_handle));
+ value_ptr (*value_of_root) (struct varobj ** root_handle);
/* The value_ptr of the INDEX'th child of PARENT. */
- value_ptr (*value_of_child) PARAMS ((struct varobj * parent, int index));
+ value_ptr (*value_of_child) (struct varobj * parent, int index);
/* The type of the INDEX'th child of PARENT. */
- struct type *(*type_of_child) PARAMS ((struct varobj * parent, int index));
+ struct type *(*type_of_child) (struct varobj * parent, int index);
/* Is VAR editable? */
- int (*variable_editable) PARAMS ((struct varobj * var));
+ int (*variable_editable) (struct varobj * var);
/* The current value of VAR. */
- char *(*value_of_variable) PARAMS ((struct varobj * var));
+ char *(*value_of_variable) (struct varobj * var);
};
/* Array of known source language routines. */
@@ -416,7 +417,7 @@ varobj_create (char *objname,
/* Fill out a varobj structure for the (root) variable being constructed. */
var = new_root_variable ();
- old_chain = make_cleanup ((make_cleanup_func) free_variable, var);
+ old_chain = make_cleanup_free_variable (var);
if (expression != NULL)
{
@@ -1373,6 +1374,18 @@ free_variable (var)
FREEIF (var);
}
+static void
+do_free_variable_cleanup (void *var)
+{
+ free_variable (var);
+}
+
+static struct cleanup *
+make_cleanup_free_variable (struct varobj *var)
+{
+ return make_cleanup (do_free_variable_cleanup, var);
+}
+
/* This returns the type of the variable. This skips past typedefs
and returns the real type of the variable. It also dereferences
pointers and references. */
diff --git a/gdb/w89k-rom.c b/gdb/w89k-rom.c
index ff98186865b..9a733621acf 100644
--- a/gdb/w89k-rom.c
+++ b/gdb/w89k-rom.c
@@ -28,7 +28,7 @@
#include "xmodem.h"
-static void w89k_open PARAMS ((char *args, int from_tty));
+static void w89k_open (char *args, int from_tty);
/*
* this array of registers need to match the indexes used by GDB. The
diff --git a/gdb/win32-nat.c b/gdb/win32-nat.c
index 4295d4b5210..298fd513e52 100644
--- a/gdb/win32-nat.c
+++ b/gdb/win32-nat.c
@@ -34,13 +34,9 @@
#include <sys/types.h>
#include <fcntl.h>
#include <stdlib.h>
-
-#ifdef _MSC_VER
-#include "windefs.h"
-#else /* other WIN32 compiler */
#include <windows.h>
#include <imagehlp.h>
-#endif
+#include <sys/cygwin.h>
#include "buildsym.h"
#include "symfile.h"
@@ -52,7 +48,7 @@
#include <unistd.h>
/* The ui's event loop. */
-extern int (*ui_loop_hook) PARAMS ((int signo));
+extern int (*ui_loop_hook) (int signo);
/* If we're not using the old Cygwin header file set, define the
following which never should have been in the generic Win32 API
@@ -66,7 +62,7 @@ extern int (*ui_loop_hook) PARAMS ((int signo));
FIXME: This should be in a cygwin include file. */
#define CYGWIN_SIGNAL_STRING "cygwin: signal"
-#define CHECK(x) check (x, __FILE__,__LINE__)
+#define CHECK(x) check (x, __FILE__,__LINE__)
#define DEBUG_EXEC(x) if (debug_exec) printf x
#define DEBUG_EVENTS(x) if (debug_events) printf x
#define DEBUG_MEM(x) if (debug_memory) printf x
@@ -75,10 +71,12 @@ extern int (*ui_loop_hook) PARAMS ((int signo));
/* Forward declaration */
extern struct target_ops child_ops;
-static void child_stop PARAMS ((void));
-static int win32_child_thread_alive PARAMS ((int));
-void child_kill_inferior PARAMS ((void));
+static void child_stop (void);
+static int win32_child_thread_alive (int);
+void child_kill_inferior (void);
+static int last_sig = 0; /* Set if a signal was received from the
+ debugged process */
/* Thread information structure used to track information that is
not available in gdb's thread structure. */
typedef struct thread_info_struct
@@ -92,10 +90,7 @@ typedef struct thread_info_struct
STACKFRAME sf;
} thread_info;
-static thread_info thread_head = {NULL};
-
-/* The saved state for a continue after breaking back to gdb. */
-static DWORD continue_status;
+static thread_info thread_head;
/* The process and thread handles for the above context. */
@@ -201,7 +196,7 @@ thread_rec (DWORD id, int get_context)
{
if (!th->suspend_count && get_context)
{
- if (get_context > 0)
+ if (get_context > 0 && id != current_event.dwThreadId)
th->suspend_count = SuspendThread (th->h) + 1;
else if (get_context < 0)
th->suspend_count = -1;
@@ -280,7 +275,7 @@ static void
check (BOOL ok, const char *file, int line)
{
if (!ok)
- printf_filtered ("error return %s:%d was %d\n", file, line, GetLastError ());
+ printf_filtered ("error return %s:%d was %lu\n", file, line, GetLastError ());
}
static void
@@ -394,7 +389,7 @@ int psapi_get_dll_name (DWORD BaseAddress, char *dll_name_ret)
if (!ok)
goto failed;
- for (i = 0; i < cbNeeded / sizeof (HMODULE); i++)
+ for (i = 0; i < (int) (cbNeeded / sizeof (HMODULE)); i++)
{
if (!(*psapi_GetModuleInformation) (current_process_handle,
DllHandle [i],
@@ -407,7 +402,7 @@ int psapi_get_dll_name (DWORD BaseAddress, char *dll_name_ret)
dll_name_ret,
MAX_PATH);
if (len == 0)
- error ("Error getting dll name: %u\n", GetLastError ());
+ error ("Error getting dll name: %u\n", GetLastError ());
if ((DWORD) (mi.lpBaseOfDll) == BaseAddress)
return 1;
@@ -418,22 +413,89 @@ failed:
return 0;
}
+/* Encapsulate the information required in a call to
+ symbol_file_add_args */
+struct safe_symbol_file_add_args
+{
+ char *name;
+ int from_tty;
+ struct section_addr_info *addrs;
+ int mainline;
+ int flags;
+ struct objfile *ret;
+};
+
+/* Call symbol_file_add with stderr redirected. We don't care if there
+ are errors. */
+static int
+safe_symbol_file_add_stub (void *argv)
+{
+#define p ((struct safe_symbol_file_add_args *)argv)
+ p->ret = symbol_file_add (p->name, p->from_tty, p->addrs, p->mainline, p->flags);
+ return !!p->ret;
+#undef p
+}
+
+/* Restore gdb's stderr after calling symbol_file_add */
+static void
+safe_symbol_file_add_cleanup (void *gdb_stderrv)
+{
+ gdb_flush (gdb_stderr);
+ ui_file_delete (gdb_stderr);
+ gdb_stderr = (struct ui_file *)gdb_stderrv;
+}
+
+/* symbol_file_add wrapper that prevents errors from being displayed. */
+static struct objfile *
+safe_symbol_file_add (char *name, int from_tty,
+ struct section_addr_info *addrs,
+ int mainline, int flags)
+
+{
+ struct safe_symbol_file_add_args p;
+ struct cleanup *cleanup;
+
+ cleanup = make_cleanup (safe_symbol_file_add_cleanup, gdb_stderr);
+
+ gdb_flush (gdb_stderr);
+ gdb_stderr = ui_file_new ();
+ p.name = name;
+ p.from_tty = from_tty;
+ p.addrs = addrs;
+ p.mainline = mainline;
+ p.flags = flags;
+ catch_errors (safe_symbol_file_add_stub, &p, "", RETURN_MASK_ERROR);
+
+ do_cleanups (cleanup);
+ return p.ret;
+}
+
+/* Maintain a linked list of "so" information. */
+struct so_stuff
+{
+ struct so_stuff *next, **last;
+ DWORD load_addr;
+ char name[0];
+} solib_start, *solib_end;
+
+/* Remember the maximum DLL length for printing in info dll command. */
+int max_dll_name_len;
+
/* Wait for child to do something. Return pid of child, or -1 in case
of error; store status through argument pointer OURSTATUS. */
-
static int
-handle_load_dll (PTR dummy)
+handle_load_dll (PTR dummy ATTRIBUTE_UNUSED)
{
LOAD_DLL_DEBUG_INFO *event = &current_event.u.LoadDll;
DWORD dll_name_ptr;
DWORD done;
char dll_buf[MAX_PATH + 1];
- char *p, *dll_name = NULL;
- struct objfile *objfile;
- MEMORY_BASIC_INFORMATION minfo;
- struct section_addr_info section_addrs;
+ struct so_stuff *so, *solast;
+ char *dll_name = NULL;
+ DWORD dll_base = 0;
+ int len;
+ char *p;
- memset (&section_addrs, 0, sizeof (section_addrs));
dll_buf[0] = dll_buf[sizeof (dll_buf) - 1] = '\0';
if (!psapi_get_dll_name ((DWORD) (event->lpBaseOfDll), dll_buf))
@@ -446,7 +508,7 @@ handle_load_dll (PTR dummy)
a program. It will not work for attached processes. */
if (dll_name == NULL || *dll_name == '\0')
{
- int size = event->fUnicode ? sizeof (WCHAR) : sizeof (char);
+ DWORD size = event->fUnicode ? sizeof (WCHAR) : sizeof (char);
int len = 0;
char b[2];
@@ -500,21 +562,99 @@ handle_load_dll (PTR dummy)
if (!dll_name)
return 1;
+ (void) strlwr (dll_name);
+
while ((p = strchr (dll_name, '\\')))
*p = '/';
+ so = (struct so_stuff *) xmalloc (sizeof (struct so_stuff) + strlen (dll_name) + 8 + 2);
+ so->load_addr = (DWORD) event->lpBaseOfDll + 0x1000;
+ strcpy (so->name, dll_name);
+
+ solib_end->next = so;
+ solib_end = so;
+ so->next = NULL;
+
+ len = strlen (dll_name);
+ if (len > max_dll_name_len)
+ max_dll_name_len = len;
+
+ return 1;
+}
+
+/* Return name of last loaded DLL. */
+char *
+child_solib_loaded_library_pathname (int pid)
+{
+ return !solib_end || !solib_end->name[0]? NULL : solib_end->name;
+}
+
+/* Clear list of loaded DLLs. */
+void
+child_clear_solibs (void)
+{
+ struct so_stuff *so, *so1 = solib_start.next;
+
+ while ((so = so1) != NULL)
+ {
+ so1 = so->next;
+ free (so);
+ }
+
+ solib_start.next = NULL;
+ solib_end = &solib_start;
+ max_dll_name_len = sizeof ("DLL Name") - 1;
+}
+
+/* Add DLL symbol information. */
+void
+child_solib_add (char *filename, int from_tty, struct target_ops *t)
+{
+ struct section_addr_info section_addrs;
+
/* The symbols in a dll are offset by 0x1000, which is the
the offset from 0 of the first byte in an image - because
- of the file header and the section alignment.
+ of the file header and the section alignment. */
- FIXME: Is this the real reason that we need the 0x1000 ? */
+ if (!solib_end || !solib_end->name[0])
+ return;
- printf_unfiltered ("%x:%s", event->lpBaseOfDll, dll_name);
- section_addrs.text_addr = (int) event->lpBaseOfDll + 0x1000;
- symbol_file_add (dll_name, 0, &section_addrs, 0, OBJF_SHARED);
- printf_unfiltered ("\n");
+ memset (&section_addrs, 0, sizeof (section_addrs));
+ section_addrs.other[0].name = ".text";
+ section_addrs.other[0].addr = solib_end->load_addr;
+ safe_symbol_file_add (solib_end->name, 0, &section_addrs, 0, OBJF_SHARED);
- return 1;
+ return;
+}
+
+/* Load DLL symbol info. */
+void
+dll_symbol_command (char *args, int from_tty)
+{
+ struct section_addr_info section_addrs;
+
+ dont_repeat ();
+
+ if (args == NULL)
+ error ("dll-symbols requires a file name");
+
+ safe_symbol_file_add (args, 0, NULL, 0, OBJF_SHARED);
+}
+
+/* List currently loaded DLLs. */
+void
+info_dll_command (char *ignore, int from_tty)
+{
+ struct so_stuff *so = &solib_start;
+
+ if (!so->next)
+ return;
+
+ printf ("%*s Load Address\n", -max_dll_name_len, "DLL Name");
+ while ((so = so->next) != NULL)
+ printf_unfiltered ("%*s %08lx\n", -max_dll_name_len, so->name, so->load_addr);
+
+ return;
}
/* Handle DEBUG_STRING output from child process.
@@ -534,7 +674,7 @@ handle_output_debug_string (struct target_waitstatus *ourstatus)
if (strncmp (s, CYGWIN_SIGNAL_STRING, sizeof (CYGWIN_SIGNAL_STRING) - 1) != 0)
{
if (strncmp (s, "cYg", 3) != 0)
- warning (s);
+ warning ("%s", s);
}
else
{
@@ -553,73 +693,65 @@ handle_output_debug_string (struct target_waitstatus *ourstatus)
static int
handle_exception (struct target_waitstatus *ourstatus)
{
- int i;
- int done = 0;
thread_info *th;
+ DWORD code = current_event.u.Exception.ExceptionRecord.ExceptionCode;
ourstatus->kind = TARGET_WAITKIND_STOPPED;
/* Record the context of the current thread */
th = thread_rec (current_event.dwThreadId, -1);
- switch (current_event.u.Exception.ExceptionRecord.ExceptionCode)
+ last_sig = 0;
+
+ switch (code)
{
case EXCEPTION_ACCESS_VIOLATION:
- DEBUG_EXCEPT (("gdb: Target exception ACCESS_VIOLATION at 0x%08x\n",
- current_event.u.Exception.ExceptionRecord.ExceptionAddress));
+ DEBUG_EXCEPT (("gdb: Target exception ACCESS_VIOLATION at 0x%08lx\n",
+ (DWORD) current_event.u.Exception.ExceptionRecord.ExceptionAddress));
ourstatus->value.sig = TARGET_SIGNAL_SEGV;
- continue_status = DBG_EXCEPTION_NOT_HANDLED;
+ last_sig = SIGSEGV;
break;
case STATUS_FLOAT_UNDERFLOW:
case STATUS_FLOAT_DIVIDE_BY_ZERO:
case STATUS_FLOAT_OVERFLOW:
case STATUS_INTEGER_DIVIDE_BY_ZERO:
- DEBUG_EXCEPT (("gdb: Target exception STACK_OVERFLOW at 0x%08x\n",
- current_event.u.Exception.ExceptionRecord.ExceptionAddress));
+ DEBUG_EXCEPT (("gdb: Target exception STACK_OVERFLOW at 0x%08lx\n",
+ (DWORD) current_event.u.Exception.ExceptionRecord.ExceptionAddress));
ourstatus->value.sig = TARGET_SIGNAL_FPE;
- continue_status = DBG_EXCEPTION_NOT_HANDLED;
+ last_sig = SIGFPE;
break;
case STATUS_STACK_OVERFLOW:
- DEBUG_EXCEPT (("gdb: Target exception STACK_OVERFLOW at 0x%08x\n",
- current_event.u.Exception.ExceptionRecord.ExceptionAddress));
+ DEBUG_EXCEPT (("gdb: Target exception STACK_OVERFLOW at 0x%08lx\n",
+ (DWORD) current_event.u.Exception.ExceptionRecord.ExceptionAddress));
ourstatus->value.sig = TARGET_SIGNAL_SEGV;
- continue_status = DBG_EXCEPTION_NOT_HANDLED;
break;
case EXCEPTION_BREAKPOINT:
- DEBUG_EXCEPT (("gdb: Target exception BREAKPOINT at 0x%08x\n",
- current_event.u.Exception.ExceptionRecord.ExceptionAddress));
+ DEBUG_EXCEPT (("gdb: Target exception BREAKPOINT at 0x%08lx\n",
+ (DWORD) current_event.u.Exception.ExceptionRecord.ExceptionAddress));
ourstatus->value.sig = TARGET_SIGNAL_TRAP;
break;
case DBG_CONTROL_C:
- DEBUG_EXCEPT (("gdb: Target exception CONTROL_C at 0x%08x\n",
- current_event.u.Exception.ExceptionRecord.ExceptionAddress));
+ DEBUG_EXCEPT (("gdb: Target exception CONTROL_C at 0x%08lx\n",
+ (DWORD) current_event.u.Exception.ExceptionRecord.ExceptionAddress));
ourstatus->value.sig = TARGET_SIGNAL_INT;
- continue_status = DBG_EXCEPTION_NOT_HANDLED;
+ last_sig = SIGINT; /* FIXME - should check pass state */
break;
case EXCEPTION_SINGLE_STEP:
- DEBUG_EXCEPT (("gdb: Target exception SINGLE_STEP at 0x%08x\n",
- current_event.u.Exception.ExceptionRecord.ExceptionAddress));
+ DEBUG_EXCEPT (("gdb: Target exception SINGLE_STEP at 0x%08lx\n",
+ (DWORD) current_event.u.Exception.ExceptionRecord.ExceptionAddress));
ourstatus->value.sig = TARGET_SIGNAL_TRAP;
break;
case EXCEPTION_ILLEGAL_INSTRUCTION:
- DEBUG_EXCEPT (("gdb: Target exception SINGLE_ILL at 0x%08x\n",
- current_event.u.Exception.ExceptionRecord.ExceptionAddress));
+ DEBUG_EXCEPT (("gdb: Target exception SINGLE_ILL at 0x%08lx\n",
+ (DWORD) current_event.u.Exception.ExceptionRecord.ExceptionAddress));
ourstatus->value.sig = TARGET_SIGNAL_ILL;
+ last_sig = SIGILL;
break;
default:
- /* This may be a structured exception handling exception. In
- that case, we want to let the program try to handle it, and
- only break if we see the exception a second time.
- if (current_event.u.Exception.dwFirstChance)
-
- return 0;
-*/
-
- printf_unfiltered ("gdb: unknown target exception 0x%08x at 0x%08x\n",
+ printf_unfiltered ("gdb: unknown target exception 0x%08lx at 0x%08lx\n",
current_event.u.Exception.ExceptionRecord.ExceptionCode,
- current_event.u.Exception.ExceptionRecord.ExceptionAddress);
+ (DWORD) current_event.u.Exception.ExceptionRecord.ExceptionAddress);
ourstatus->value.sig = TARGET_SIGNAL_UNKNOWN;
- continue_status = DBG_EXCEPTION_NOT_HANDLED;
break;
}
exception_count++;
@@ -629,13 +761,13 @@ handle_exception (struct target_waitstatus *ourstatus)
/* Resume all artificially suspended threads if we are continuing
execution */
static BOOL
-child_continue (int id)
+child_continue (DWORD continue_status, int id)
{
int i;
thread_info *th;
BOOL res;
- DEBUG_EVENTS (("ContinueDebugEvent (cpid=%d, ctid=%d, DBG_CONTINUE);\n",
+ DEBUG_EVENTS (("ContinueDebugEvent (cpid=%ld, ctid=%ld, DBG_CONTINUE);\n",
current_event.dwProcessId, current_event.dwThreadId));
res = ContinueDebugEvent (current_event.dwProcessId,
current_event.dwThreadId,
@@ -643,7 +775,7 @@ child_continue (int id)
continue_status = 0;
if (res)
for (th = &thread_head; (th = th->next) != NULL;)
- if (((id == -1) || (id == th->id)) && th->suspend_count)
+ if (((id == -1) || (id == (int) th->id)) && th->suspend_count)
{
for (i = 0; i < th->suspend_count; i++)
(void) ResumeThread (th->h);
@@ -653,134 +785,138 @@ child_continue (int id)
return res;
}
+/* Get the next event from the child. Return 1 if the event requires
+ handling by WFI (or whatever).
+ */
static int
-get_child_debug_event (int pid, struct target_waitstatus *ourstatus,
- DWORD *event_code, int *retval)
+get_child_debug_event (int pid ATTRIBUTE_UNUSED, struct target_waitstatus *ourstatus)
{
+ int breakout = 0;
BOOL debug_event;
- int breakout = 1;
+ DWORD continue_status, event_code;
+ thread_info *th = NULL;
+ static thread_info dummy_thread_info;
+ int retval = 0;
- if (!(debug_event = WaitForDebugEvent (&current_event, 20)))
- {
- breakout = *retval = *event_code = 0;
- goto out;
- }
+ if (!(debug_event = WaitForDebugEvent (&current_event, 1000)))
+ goto out;
event_count++;
continue_status = DBG_CONTINUE;
- *retval = 0;
- switch (*event_code = current_event.dwDebugEventCode)
+ event_code = current_event.dwDebugEventCode;
+ ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
+
+ switch (event_code)
{
case CREATE_THREAD_DEBUG_EVENT:
DEBUG_EVENTS (("gdb: kernel event for pid=%d tid=%x code=%s)\n",
- (unsigned) current_event.dwProcessId,
- (unsigned) current_event.dwThreadId,
- "CREATE_THREAD_DEBUG_EVENT"));
+ (unsigned) current_event.dwProcessId,
+ (unsigned) current_event.dwThreadId,
+ "CREATE_THREAD_DEBUG_EVENT"));
/* Record the existence of this thread */
- child_add_thread (current_event.dwThreadId,
- current_event.u.CreateThread.hThread);
+ th = child_add_thread (current_event.dwThreadId,
+ current_event.u.CreateThread.hThread);
if (info_verbose)
printf_unfiltered ("[New %s]\n",
- target_pid_to_str (current_event.dwThreadId));
+ target_pid_to_str (current_event.dwThreadId));
+ retval = current_event.dwThreadId;
break;
case EXIT_THREAD_DEBUG_EVENT:
DEBUG_EVENTS (("gdb: kernel event for pid=%d tid=%d code=%s)\n",
- (unsigned) current_event.dwProcessId,
- (unsigned) current_event.dwThreadId,
- "EXIT_THREAD_DEBUG_EVENT"));
+ (unsigned) current_event.dwProcessId,
+ (unsigned) current_event.dwThreadId,
+ "EXIT_THREAD_DEBUG_EVENT"));
child_delete_thread (current_event.dwThreadId);
+ th = &dummy_thread_info;
break;
case CREATE_PROCESS_DEBUG_EVENT:
DEBUG_EVENTS (("gdb: kernel event for pid=%d tid=%d code=%s)\n",
- (unsigned) current_event.dwProcessId,
- (unsigned) current_event.dwThreadId,
- "CREATE_PROCESS_DEBUG_EVENT"));
+ (unsigned) current_event.dwProcessId,
+ (unsigned) current_event.dwThreadId,
+ "CREATE_PROCESS_DEBUG_EVENT"));
current_process_handle = current_event.u.CreateProcessInfo.hProcess;
main_thread_id = inferior_pid = current_event.dwThreadId;
/* Add the main thread */
- current_thread = child_add_thread (inferior_pid,
- current_event.u.CreateProcessInfo.hThread);
+ th = child_add_thread (current_event.dwProcessId,
+ current_event.u.CreateProcessInfo.hProcess);
+ th = child_add_thread (inferior_pid,
+ current_event.u.CreateProcessInfo.hThread);
+ retval = ourstatus->value.related_pid = current_event.dwProcessId;
break;
case EXIT_PROCESS_DEBUG_EVENT:
DEBUG_EVENTS (("gdb: kernel event for pid=%d tid=%d code=%s)\n",
- (unsigned) current_event.dwProcessId,
- (unsigned) current_event.dwThreadId,
- "EXIT_PROCESS_DEBUG_EVENT"));
+ (unsigned) current_event.dwProcessId,
+ (unsigned) current_event.dwThreadId,
+ "EXIT_PROCESS_DEBUG_EVENT"));
ourstatus->kind = TARGET_WAITKIND_EXITED;
ourstatus->value.integer = current_event.u.ExitProcess.dwExitCode;
CloseHandle (current_process_handle);
- *retval = current_event.dwProcessId;
- goto out;
+ retval = current_event.dwProcessId;
+ break;
case LOAD_DLL_DEBUG_EVENT:
DEBUG_EVENTS (("gdb: kernel event for pid=%d tid=%d code=%s)\n",
- (unsigned) current_event.dwProcessId,
- (unsigned) current_event.dwThreadId,
- "LOAD_DLL_DEBUG_EVENT"));
- catch_errors (handle_load_dll, NULL, "", RETURN_MASK_ALL);
+ (unsigned) current_event.dwProcessId,
+ (unsigned) current_event.dwThreadId,
+ "LOAD_DLL_DEBUG_EVENT"));
+ catch_errors (handle_load_dll, NULL, (char *) "", RETURN_MASK_ALL);
registers_changed (); /* mark all regs invalid */
+ ourstatus->kind = TARGET_WAITKIND_LOADED;
+ ourstatus->value.integer = 0;
+ retval = current_event.dwProcessId;
break;
case UNLOAD_DLL_DEBUG_EVENT:
DEBUG_EVENTS (("gdb: kernel event for pid=%d tid=%d code=%s)\n",
- (unsigned) current_event.dwProcessId,
- (unsigned) current_event.dwThreadId,
- "UNLOAD_DLL_DEBUG_EVENT"));
- break; /* FIXME: don't know what to do here */
+ (unsigned) current_event.dwProcessId,
+ (unsigned) current_event.dwThreadId,
+ "UNLOAD_DLL_DEBUG_EVENT"));
+ break; /* FIXME: don't know what to do here */
case EXCEPTION_DEBUG_EVENT:
DEBUG_EVENTS (("gdb: kernel event for pid=%d tid=%d code=%s)\n",
- (unsigned) current_event.dwProcessId,
- (unsigned) current_event.dwThreadId,
- "EXCEPTION_DEBUG_EVENT"));
- if (handle_exception (ourstatus)) /* sets continue_status */
- {
- *retval = current_event.dwThreadId;
- goto out;
- }
+ (unsigned) current_event.dwProcessId,
+ (unsigned) current_event.dwThreadId,
+ "EXCEPTION_DEBUG_EVENT"));
+ handle_exception (ourstatus);
+ retval = current_event.dwThreadId;
break;
- case OUTPUT_DEBUG_STRING_EVENT:
+ case OUTPUT_DEBUG_STRING_EVENT: /* message from the kernel */
DEBUG_EVENTS (("gdb: kernel event for pid=%d tid=%d code=%s)\n",
- (unsigned) current_event.dwProcessId,
- (unsigned) current_event.dwThreadId,
- "OUTPUT_DEBUG_STRING_EVENT"));
- if (handle_output_debug_string (ourstatus))
- {
- *retval = main_thread_id;
- goto out;
- }
+ (unsigned) current_event.dwProcessId,
+ (unsigned) current_event.dwThreadId,
+ "OUTPUT_DEBUG_STRING_EVENT"));
+ if (handle_output_debug_string ( ourstatus))
+ retval = current_event.dwProcessId;
break;
default:
- printf_unfiltered ("gdb: kernel event for pid=%d tid=%d\n",
- current_event.dwProcessId,
- current_event.dwThreadId);
- printf_unfiltered (" unknown event code %d\n",
+ printf_unfiltered ("gdb: kernel event for pid=%ld tid=%ld\n",
+ (DWORD) current_event.dwProcessId,
+ (DWORD) current_event.dwThreadId);
+ printf_unfiltered (" unknown event code %ld\n",
current_event.dwDebugEventCode);
break;
}
- breakout = 0;
- CHECK (child_continue (-1));
- continue_status = 0;
+ if (!retval)
+ CHECK (child_continue (continue_status, -1));
+ else
+ current_thread = th ?: thread_rec (current_event.dwThreadId, TRUE);
out:
- return breakout;
+ return retval;
}
-
/* Wait for interesting events to occur in the target process. */
static int
child_wait (int pid, struct target_waitstatus *ourstatus)
{
- DWORD event_code;
- int retval;
-
/* We loop when we get a non-standard exception rather than return
with a SPURIOUS because resume can try and step or modify things,
which needs a current_thread->h. But some of these exceptions mark
@@ -789,9 +925,8 @@ child_wait (int pid, struct target_waitstatus *ourstatus)
while (1)
{
- if (continue_status != 0)
- CHECK (child_continue (-1));
- if (get_child_debug_event (pid, ourstatus, &event_code, &retval))
+ int retval = get_child_debug_event (pid, ourstatus);
+ if (retval)
return retval;
else
{
@@ -828,6 +963,9 @@ child_attach (args, from_tty)
exception_count = 0;
event_count = 0;
+ child_init_thread_list ();
+ child_clear_solibs ();
+
if (from_tty)
{
char *exec_file = (char *) get_exec_file (0);
@@ -846,9 +984,7 @@ child_attach (args, from_tty)
}
static void
-child_detach (args, from_tty)
- char *args;
- int from_tty;
+child_detach (char *args ATTRIBUTE_UNUSED, int from_tty)
{
if (from_tty)
{
@@ -866,8 +1002,7 @@ child_detach (args, from_tty)
/* Print status information about what we're accessing. */
static void
-child_files_info (ignore)
- struct target_ops *ignore;
+child_files_info (struct target_ops *ignore ATTRIBUTE_UNUSED)
{
printf_unfiltered ("\tUsing the running image of %s %s.\n",
attach_flag ? "attached" : "child", target_pid_to_str (inferior_pid));
@@ -875,9 +1010,7 @@ child_files_info (ignore)
/* ARGSUSED */
static void
-child_open (arg, from_tty)
- char *arg;
- int from_tty;
+child_open (char *arg ATTRIBUTE_UNUSED, int from_tty ATTRIBUTE_UNUSED)
{
error ("Use the \"run\" command to start a Unix child process.");
}
@@ -904,17 +1037,15 @@ child_create_inferior (exec_file, allargs, env)
BOOL ret;
DWORD flags;
char *args;
- DWORD event_code;
+ extern int stop_after_trap;
if (!exec_file)
- {
- error ("No executable specified, use `target exec'.\n");
- }
+ error ("No executable specified, use `target exec'.\n");
memset (&si, 0, sizeof (si));
si.cb = sizeof (si);
- cygwin32_conv_to_win32_path (exec_file, real_path);
+ cygwin_conv_to_win32_path (exec_file, real_path);
flags = DEBUG_ONLY_THIS_PROCESS;
@@ -960,9 +1091,9 @@ child_create_inferior (exec_file, allargs, env)
len = strlen (conv_path_names[j]);
if (strncmp (conv_path_names[j], env[i], len) == 0)
{
- if (cygwin32_posix_path_list_p (env[i] + len))
+ if (cygwin_posix_path_list_p (env[i] + len))
envlen += len
- + cygwin32_posix_to_win32_path_list_buf_size (env[i] + len);
+ + cygwin_posix_to_win32_path_list_buf_size (env[i] + len);
else
envlen += strlen (env[i]) + 1;
break;
@@ -984,10 +1115,10 @@ child_create_inferior (exec_file, allargs, env)
len = strlen (conv_path_names[j]);
if (strncmp (conv_path_names[j], env[i], len) == 0)
{
- if (cygwin32_posix_path_list_p (env[i] + len))
+ if (cygwin_posix_path_list_p (env[i] + len))
{
memcpy (temp, env[i], len);
- cygwin32_posix_to_win32_path_list (env[i] + len, temp + len);
+ cygwin_posix_to_win32_path_list (env[i] + len, temp + len);
}
else
strcpy (temp, env[i]);
@@ -1026,27 +1157,32 @@ child_create_inferior (exec_file, allargs, env)
inferior_pid = current_event.dwThreadId = pi.dwThreadId;
push_target (&child_ops);
child_init_thread_list ();
- init_wait_for_inferior ();
+ child_clear_solibs ();
clear_proceed_status ();
+ init_wait_for_inferior ();
target_terminal_init ();
target_terminal_inferior ();
+ last_sig = 0;
- /* Run until process and threads are loaded */
- do
- get_child_debug_event (inferior_pid, &dummy, &event_code, &ret);
- while (event_code != EXCEPTION_DEBUG_EVENT);
-
- SymSetOptions (SYMOPT_DEFERRED_LOADS);
- SymInitialize (current_process_handle, NULL, TRUE);
+ while (1)
+ {
+ stop_after_trap = 1;
+ wait_for_inferior ();
+ if (stop_signal != TARGET_SIGNAL_TRAP)
+ resume (0, stop_signal);
+ else
+ break;
+ }
+ stop_after_trap = 0;
+ /* child_continue (DBG_CONTINUE, -1);*/
proceed ((CORE_ADDR) - 1, TARGET_SIGNAL_0, 0);
}
static void
child_mourn_inferior ()
{
- continue_status = DBG_CONTINUE;
- (void) child_continue (-1);
+ (void) child_continue (DBG_CONTINUE, -1);
unpush_target (&child_ops);
generic_mourn_inferior ();
}
@@ -1064,21 +1200,21 @@ child_stop ()
int
child_xfer_memory (CORE_ADDR memaddr, char *our, int len,
- int write, struct target_ops *target)
+ int write, struct target_ops *target ATTRIBUTE_UNUSED)
{
DWORD done;
if (write)
{
- DEBUG_MEM (("gdb: write target memory, %d bytes at 0x%08x\n",
- len, memaddr));
+ DEBUG_MEM (("gdb: write target memory, %d bytes at 0x%08lx\n",
+ len, (DWORD) memaddr));
WriteProcessMemory (current_process_handle, (LPVOID) memaddr, our,
len, &done);
FlushInstructionCache (current_process_handle, (LPCVOID) memaddr, len);
}
else
{
- DEBUG_MEM (("gdb: read target memory, %d bytes at 0x%08x\n",
- len, memaddr));
+ DEBUG_MEM (("gdb: read target memory, %d bytes at 0x%08lx\n",
+ len, (DWORD) memaddr));
ReadProcessMemory (current_process_handle, (LPCVOID) memaddr, our, len,
&done);
}
@@ -1092,8 +1228,7 @@ child_kill_inferior (void)
for (;;)
{
- continue_status = DBG_CONTINUE;
- if (!child_continue (-1))
+ if (!child_continue (DBG_CONTINUE, -1))
break;
if (!WaitForDebugEvent (&current_event, INFINITE))
break;
@@ -1111,33 +1246,37 @@ child_kill_inferior (void)
void
child_resume (int pid, int step, enum target_signal sig)
{
- int i;
thread_info *th;
+ DWORD continue_status = last_sig > 0 && last_sig < NSIG ?
+ DBG_EXCEPTION_NOT_HANDLED : DBG_CONTINUE;
+
+ last_sig = 0;
DEBUG_EXEC (("gdb: child_resume (pid=%d, step=%d, sig=%d);\n",
pid, step, sig));
/* Get context for currently selected thread */
th = thread_rec (current_event.dwThreadId, FALSE);
- if (step)
+ if (th)
{
-#ifdef i386
- /* Single step by setting t bit */
- child_fetch_inferior_registers (PS_REGNUM);
- th->context.EFlags |= FLAG_TRACE_BIT;
-#endif
- }
+ if (step)
+ {
+ /* Single step by setting t bit */
+ child_fetch_inferior_registers (PS_REGNUM);
+ th->context.EFlags |= FLAG_TRACE_BIT;
+ }
- if (th->context.ContextFlags)
- {
- CHECK (SetThreadContext (th->h, &th->context));
- th->context.ContextFlags = 0;
+ if (th->context.ContextFlags)
+ {
+ CHECK (SetThreadContext (th->h, &th->context));
+ th->context.ContextFlags = 0;
+ }
}
/* Allow continuing with the same signal that interrupted us.
Otherwise complain. */
- child_continue (pid);
+ child_continue (continue_status, pid);
}
static void
@@ -1209,51 +1348,52 @@ init_child_ops (void)
void
_initialize_inftarg ()
{
- struct cmd_list_element *c;
init_child_ops ();
- add_show_from_set
- (add_set_cmd ("new-console", class_support, var_boolean,
+ add_com ("dll-symbols", class_files, dll_symbol_command,
+ "Load dll library symbols from FILE.");
+
+ add_com_alias ("sharedlibrary", "dll-symbols", class_alias, 1);
+
+ add_show_from_set (add_set_cmd ("new-console", class_support, var_boolean,
(char *) &new_console,
"Set creation of new console when creating child process.",
&setlist),
&showlist);
- add_show_from_set
- (add_set_cmd ("new-group", class_support, var_boolean,
+ add_show_from_set (add_set_cmd ("new-group", class_support, var_boolean,
(char *) &new_group,
"Set creation of new group when creating child process.",
&setlist),
&showlist);
- add_show_from_set
- (add_set_cmd ("debugexec", class_support, var_boolean,
+ add_show_from_set (add_set_cmd ("debugexec", class_support, var_boolean,
(char *) &debug_exec,
"Set whether to display execution in child process.",
&setlist),
&showlist);
- add_show_from_set
- (add_set_cmd ("debugevents", class_support, var_boolean,
+ add_show_from_set (add_set_cmd ("debugevents", class_support, var_boolean,
(char *) &debug_events,
"Set whether to display kernel events in child process.",
&setlist),
&showlist);
- add_show_from_set
- (add_set_cmd ("debugmemory", class_support, var_boolean,
+ add_show_from_set (add_set_cmd ("debugmemory", class_support, var_boolean,
(char *) &debug_memory,
"Set whether to display memory accesses in child process.",
&setlist),
&showlist);
- add_show_from_set
- (add_set_cmd ("debugexceptions", class_support, var_boolean,
+ add_show_from_set (add_set_cmd ("debugexceptions", class_support, var_boolean,
(char *) &debug_exceptions,
- "Set whether to display kernel exceptions in child process.",
+ "Set whether to display kernel exceptions in child process.",
&setlist),
&showlist);
+ add_info ("dll", info_dll_command, "Status of loaded DLLs.");
+ add_info_alias ("sharedlibrary", "dll", 1);
+
add_target (&child_ops);
}
@@ -1272,9 +1412,9 @@ char *
cygwin_pid_to_str (int pid)
{
static char buf[80];
- if (pid == current_event.dwProcessId)
+ if ((DWORD) pid == current_event.dwProcessId)
sprintf (buf, "process %d", pid);
else
- sprintf (buf, "thread %d.0x%x", current_event.dwProcessId, pid);
+ sprintf (buf, "thread %ld.0x%x", current_event.dwProcessId, pid);
return buf;
}
diff --git a/gdb/wince-stub.c b/gdb/wince-stub.c
index d20223c1690..ce872d8137e 100644
--- a/gdb/wince-stub.c
+++ b/gdb/wince-stub.c
@@ -28,12 +28,13 @@
#include <winsock.h>
#include "wince-stub.h"
-#define MALLOC(n) (void *) LocalAlloc (LMEM_MOVEABLE, (UINT)(n))
+#define MALLOC(n) (void *) LocalAlloc (LMEM_MOVEABLE | LMEM_ZEROINIT, (UINT)(n))
#define REALLOC(s, n) (void *) LocalReAlloc ((HLOCAL)(s), (UINT)(n), LMEM_MOVEABLE)
+#define FREE(s) LocalFree ((HLOCAL)(s))
static int skip_next_id = 0; /* Don't read next API code from socket */
-/* v-style interface for handling varying argyment list error messages.
+/* v-style interface for handling varying argument list error messages.
Displays the error message in a dialog box and exits when user clicks
on OK. */
static void
@@ -56,6 +57,27 @@ stub_error (LPCWSTR fmt, ...)
vstub_error (fmt, args);
}
+/* Allocate a limited pool of memory, reallocating over unused
+ buffers. This assumes that there will never be more than four
+ "buffers" required which, so far, is a safe assumption. */
+static LPVOID
+mempool (unsigned int len)
+{
+ static int outn = -1;
+ static LPWSTR outs[4] = {NULL, NULL, NULL, NULL};
+
+ if (++outn >= (sizeof (outs) / sizeof (outs[0])))
+ outn = 0;
+
+ /* Allocate space for the converted string, reusing any previously allocated
+ space, if applicable. */
+ if (outs[outn])
+ FREE (outs[outn]);
+ outs[outn] = (LPWSTR) MALLOC (len);
+
+ return outs[outn];
+}
+
/* Standard "oh well" can't communicate error. Someday this might attempt
synchronization. */
static void
@@ -88,28 +110,6 @@ sockwrite (LPCWSTR huh, int s, const void *str, size_t n)
}
}
-/* Allocate a limited pool of memory, reallocating over unused
- buffers. This assumes that there will never be more than four
- "buffers" required which, so far, is a safe assumption. */
-static LPVOID
-mempool (gdb_wince_len len)
-{
- static int n = -1;
- static LPWSTR outs[4] = {NULL /*, NULL, etc. */};
-
- if (++n >= (sizeof (outs) / sizeof (outs[0])))
- n = 0;
-
- /* Allocate space for the converted string, reusing any previously allocated
- space, if applicable. */
- if (outs[n])
- outs[n] = (LPWSTR) REALLOC (outs[n], len);
- else
- outs[n] = (LPWSTR) MALLOC (len);
-
- return outs[n];
-}
-
/* Get a an ID (possibly) and a DWORD from the host gdb.
Don't bother with the id if the main loop has already
read it. */
@@ -175,7 +175,7 @@ getmemory (LPCWSTR huh, int s, gdb_wince_id what, gdb_wince_len *inlen)
*inlen = getlen (huh, s, what);
- p = mempool (*inlen); /* FIXME: check for error */
+ p = mempool ((unsigned int) *inlen); /* FIXME: check for error */
if ((gdb_wince_len) sockread (huh, s, p, *inlen) != *inlen)
stub_error (L"error getting string from host.");
@@ -269,6 +269,49 @@ terminate_process (int s)
&res, sizeof (res));
}
+static int stepped = 0;
+/* Handle single step instruction. FIXME: unneded? */
+static void
+flag_single_step (int s)
+{
+ stepped = 1;
+ skip_next_id = 0;
+}
+
+struct skipper
+{
+ wchar_t *s;
+ int nskip;
+} skippy[] =
+{
+ {L"Undefined Instruction:", 1},
+ {L"Data Abort:", 2},
+ {NULL, 0}
+};
+
+static int
+skip_message (DEBUG_EVENT *ev)
+{
+ char s[80];
+ DWORD nread;
+ struct skipper *skp;
+ int nbytes = ev->u.DebugString.nDebugStringLength;
+
+ if (nbytes > sizeof(s))
+ nbytes = sizeof(s);
+
+ memset (s, 0, sizeof (s));
+ if (!ReadProcessMemory (curproc, ev->u.DebugString.lpDebugStringData,
+ s, nbytes, &nread))
+ return 0;
+
+ for (skp = skippy; skp->s != NULL; skp++)
+ if (wcsncmp ((wchar_t *) s, skp->s, wcslen (skp->s)) == 0)
+ return skp->nskip;
+
+ return 0;
+}
+
/* Emulate WaitForDebugEvent. Returns the debug event on success. */
static void
wait_for_debug_event (int s)
@@ -276,10 +319,32 @@ wait_for_debug_event (int s)
DWORD ms = getdword (L"WaitForDebugEvent ms", s, GDB_WAITFORDEBUGEVENT);
gdb_wince_result res;
DEBUG_EVENT ev;
+ static int skip_next = 0;
+
+ for (;;)
+ {
+ res = WaitForDebugEvent (&ev, ms);
+
+ if (ev.dwDebugEventCode == OUTPUT_DEBUG_STRING_EVENT)
+ {
+ if (skip_next)
+ {
+ skip_next--;
+ goto ignore;
+ }
+ if (skip_next = skip_message (&ev))
+ goto ignore;
+ }
+
+ putresult (L"WaitForDebugEvent event", res, s, GDB_WAITFORDEBUGEVENT,
+ &ev, sizeof (ev));
+ break;
+
+ ignore:
+ ContinueDebugEvent (ev.dwProcessId, ev.dwThreadId, DBG_CONTINUE);
+ }
- res = WaitForDebugEvent (&ev, ms);
- putresult (L"WaitForDebugEvent event", res, s, GDB_WAITFORDEBUGEVENT,
- &ev, sizeof (ev));
+ return;
}
/* Emulate GetThreadContext. Returns CONTEXT structure on success. */
@@ -291,7 +356,7 @@ get_thread_context (int s)
gdb_wince_result res;
memset (&c, 0, sizeof (c));
- c.ContextFlags = getdword (L"GetThreadContext handle", s, GDB_GETTHREADCONTEXT);
+ c.ContextFlags = getdword (L"GetThreadContext flags", s, GDB_GETTHREADCONTEXT);
res = (gdb_wince_result) GetThreadContext (h, &c);
putresult (L"GetThreadContext data", res, s, GDB_GETTHREADCONTEXT,
@@ -319,7 +384,7 @@ read_process_memory (int s)
HANDLE h = gethandle (L"ReadProcessMemory handle", s, GDB_READPROCESSMEMORY);
LPVOID p = getpvoid (L"ReadProcessMemory base", s, GDB_READPROCESSMEMORY);
gdb_wince_len len = getlen (L"ReadProcessMemory size", s, GDB_READPROCESSMEMORY);
- LPVOID buf = mempool ((gdb_wince_len) len);
+ LPVOID buf = mempool ((unsigned int) len);
DWORD outlen;
gdb_wince_result res;
@@ -400,12 +465,6 @@ close_handle (int s)
putresult (L"CloseHandle result", res, s, GDB_CLOSEHANDLE, &res, sizeof (res));
}
-/* Handle single step instruction */
-static void
-single_step (int s)
-{
-}
-
/* Main loop for reading requests from gdb host on the socket. */
static void
dispatch (int s)
@@ -458,8 +517,8 @@ dispatch (int s)
terminate_process (s);
return;
case GDB_SINGLESTEP:
- single_step (s);
- return;
+ flag_single_step (s);
+ break;
default:
{
WCHAR buf[80];
@@ -495,8 +554,6 @@ WinMain (HINSTANCE hi, HINSTANCE hp, LPWSTR cmd, int show)
wcstombs (host, whost, 80); /* Convert from UNICODE to ascii */
}
- MessageBoxW (NULL, whost, L"GDB", MB_ICONERROR);
-
/* Winsock initialization. */
if (WSAStartup (MAKEWORD (1, 1), &wd))
stub_error (L"Couldn't initialize WINSOCK.");
diff --git a/gdb/wince.c b/gdb/wince.c
index 77780d4dbc0..91ac5cff137 100644
--- a/gdb/wince.c
+++ b/gdb/wince.c
@@ -10,7 +10,7 @@
(at your option) any later version.
This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without eve nthe implied warranty of
+ 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.
@@ -55,9 +55,10 @@
#include <sys/param.h>
#include "wince-stub.h"
#include "dcache.h"
+#include <time.h>
/* The ui's event loop. */
-extern int (*ui_loop_hook) PARAMS ((int signo));
+extern int (*ui_loop_hook) (int signo);
/* If we're not using the old Cygwin header file set, define the
following which never should have been in the generic Win32 API
@@ -130,8 +131,8 @@ static int remote_add_host = 0;
/* Forward declaration */
extern struct target_ops child_ops;
-static int win32_child_thread_alive PARAMS ((int));
-void child_kill_inferior PARAMS ((void));
+static int win32_child_thread_alive (int);
+void child_kill_inferior (void);
static int last_sig = 0; /* Set if a signal was received from the
debugged process */
@@ -147,7 +148,6 @@ typedef struct thread_info_struct
int suspend_count;
int stepped; /* True if stepped. */
CORE_ADDR step_pc;
- unsigned long step_instr;
unsigned long step_prev;
CONTEXT context;
}
@@ -155,6 +155,7 @@ thread_info;
static thread_info thread_head =
{NULL};
+static thread_info * thread_rec (DWORD id, int get_context);
/* The process and thread handles for the above context. */
@@ -374,24 +375,21 @@ static const int mappings[NUM_REGS + 1] =
-1
};
-/* This vector maps the target's idea of an exception (extracted
- from the DEBUG_EVENT structure) to GDB's idea. */
-
-struct xlate_exception
- {
- int them;
- enum target_signal us;
- };
-
-static const struct xlate_exception
- xlate[] =
+/* Return a pointer into a CONTEXT field indexed by gdb register number.
+ Return a pointer to an address pointing to zero if there is no
+ corresponding CONTEXT field for the given register number.
+ */
+static ULONG *
+regptr (LPCONTEXT c, int r)
{
- {EXCEPTION_ACCESS_VIOLATION, TARGET_SIGNAL_SEGV},
- {STATUS_STACK_OVERFLOW, TARGET_SIGNAL_SEGV},
- {EXCEPTION_BREAKPOINT, TARGET_SIGNAL_TRAP},
- {DBG_CONTROL_C, TARGET_SIGNAL_INT},
- {EXCEPTION_SINGLE_STEP, TARGET_SIGNAL_TRAP},
- {-1, -1}};
+ static ULONG zero = 0;
+ ULONG *p;
+ if (mappings[r] < 0)
+ p = &zero;
+ else
+ p = (ULONG *) (((char *) c) + mappings[r]);
+ return p;
+}
/******************** Beginning of stub interface ********************/
@@ -629,6 +627,7 @@ towide (const char *s, gdb_wince_len * out_len)
typedef in wince-stub.h and change the putlen/getlen macros in this file and in
the stub.
*/
+
static int
create_process (LPSTR exec_file, LPSTR args, DWORD flags, PROCESS_INFORMATION * pi)
{
@@ -798,6 +797,227 @@ stop_stub ()
/******************** End of emulation routines. ********************/
/******************** End of stub interface ********************/
+#define check_for_step(a, x) (x)
+
+#ifdef MIPS
+static void
+undoSStep (thread_info * th)
+{
+ if (th->stepped)
+ {
+ memory_remove_breakpoint (th->step_pc, (void *) &th->step_prev);
+ th->stepped = 0;
+ }
+}
+
+void
+wince_software_single_step (unsigned int ignore, int insert_breakpoints_p)
+{
+ unsigned long pc;
+ thread_info *th = current_thread; /* Info on currently selected thread */
+ CORE_ADDR mips_next_pc (CORE_ADDR pc);
+
+ if (!insert_breakpoints_p)
+ {
+ undoSStep (th);
+ return;
+ }
+
+ th->stepped = 1;
+ pc = read_register (PC_REGNUM);
+ th->step_pc = mips_next_pc (pc);
+ th->step_prev = 0;
+ memory_insert_breakpoint (th->step_pc, (void *) &th->step_prev);
+ return;
+}
+#elif SHx
+/* Hitachi SH architecture instruction encoding masks */
+
+#define COND_BR_MASK 0xff00
+#define UCOND_DBR_MASK 0xe000
+#define UCOND_RBR_MASK 0xf0df
+#define TRAPA_MASK 0xff00
+
+#define COND_DISP 0x00ff
+#define UCOND_DISP 0x0fff
+#define UCOND_REG 0x0f00
+
+/* Hitachi SH instruction opcodes */
+
+#define BF_INSTR 0x8b00
+#define BT_INSTR 0x8900
+#define BRA_INSTR 0xa000
+#define BSR_INSTR 0xb000
+#define JMP_INSTR 0x402b
+#define JSR_INSTR 0x400b
+#define RTS_INSTR 0x000b
+#define RTE_INSTR 0x002b
+#define TRAPA_INSTR 0xc300
+#define SSTEP_INSTR 0xc3ff
+
+
+#define T_BIT_MASK 0x0001
+
+static CORE_ADDR
+sh_get_next_pc (CONTEXT *c)
+{
+ short *instrMem;
+ int displacement;
+ int reg;
+ unsigned short opcode;
+
+ instrMem = (short *) c->Fir;
+
+ opcode = read_memory_integer ((CORE_ADDR) c->Fir, sizeof (opcode));
+
+ if ((opcode & COND_BR_MASK) == BT_INSTR)
+ {
+ if (c->Psr & T_BIT_MASK)
+ {
+ displacement = (opcode & COND_DISP) << 1;
+ if (displacement & 0x80)
+ displacement |= 0xffffff00;
+ /*
+ * Remember PC points to second instr.
+ * after PC of branch ... so add 4
+ */
+ instrMem = (short *) (c->Fir + displacement + 4);
+ }
+ else
+ instrMem += 1;
+ }
+ else if ((opcode & COND_BR_MASK) == BF_INSTR)
+ {
+ if (c->Psr & T_BIT_MASK)
+ instrMem += 1;
+ else
+ {
+ displacement = (opcode & COND_DISP) << 1;
+ if (displacement & 0x80)
+ displacement |= 0xffffff00;
+ /*
+ * Remember PC points to second instr.
+ * after PC of branch ... so add 4
+ */
+ instrMem = (short *) (c->Fir + displacement + 4);
+ }
+ }
+ else if ((opcode & UCOND_DBR_MASK) == BRA_INSTR)
+ {
+ displacement = (opcode & UCOND_DISP) << 1;
+ if (displacement & 0x0800)
+ displacement |= 0xfffff000;
+
+ /*
+ * Remember PC points to second instr.
+ * after PC of branch ... so add 4
+ */
+ instrMem = (short *) (c->Fir + displacement + 4);
+ }
+ else if ((opcode & UCOND_RBR_MASK) == JSR_INSTR)
+ {
+ reg = (char) ((opcode & UCOND_REG) >> 8);
+
+ instrMem = (short *) *regptr (c, reg);
+ }
+ else if (opcode == RTS_INSTR)
+ instrMem = (short *) c->PR;
+ else if (opcode == RTE_INSTR)
+ instrMem = (short *) *regptr (c, 15);
+ else if ((opcode & TRAPA_MASK) == TRAPA_INSTR)
+ instrMem = (short *) ((opcode & ~TRAPA_MASK) << 2);
+ else
+ instrMem += 1;
+
+ return (CORE_ADDR) instrMem;
+}
+/* Single step (in a painstaking fashion) by inspecting the current
+ instruction and setting a breakpoint on the "next" instruction
+ which would be executed. This code hails from sh-stub.c.
+ */
+static void
+undoSStep (thread_info * th)
+{
+ if (th->stepped)
+ {
+ memory_remove_breakpoint (th->step_pc, (void *) &th->step_prev);
+ th->stepped = 0;
+ }
+ return;
+}
+
+/* Single step (in a painstaking fashion) by inspecting the current
+ instruction and setting a breakpoint on the "next" instruction
+ which would be executed. This code hails from sh-stub.c.
+ */
+void
+wince_software_single_step (unsigned int ignore, int insert_breakpoints_p)
+{
+ thread_info *th = current_thread; /* Info on currently selected thread */
+
+ if (!insert_breakpoints_p)
+ {
+ undoSStep (th);
+ return;
+ }
+
+ th->stepped = 1;
+ th->step_pc = sh_get_next_pc (&th->context);
+ th->step_prev = 0;
+ memory_insert_breakpoint (th->step_pc, (void *) &th->step_prev);
+ return;
+}
+#elif defined (ARM)
+#undef check_for_step
+
+static enum target_signal
+check_for_step (DEBUG_EVENT *ev, enum target_signal x)
+{
+ thread_info *th = thread_rec (ev->dwThreadId, 1);
+
+ if (th->stepped &&
+ th->step_pc == (CORE_ADDR) ev->u.Exception.ExceptionRecord.ExceptionAddress)
+ return TARGET_SIGNAL_TRAP;
+ else
+ return x;
+}
+
+/* Single step (in a painstaking fashion) by inspecting the current
+ instruction and setting a breakpoint on the "next" instruction
+ which would be executed. This code hails from sh-stub.c.
+ */
+static void
+undoSStep (thread_info * th)
+{
+ if (th->stepped)
+ {
+ memory_remove_breakpoint (th->step_pc, (void *) &th->step_prev);
+ th->stepped = 0;
+ }
+}
+
+void
+wince_software_single_step (unsigned int ignore, int insert_breakpoints_p)
+{
+ unsigned long pc;
+ thread_info *th = current_thread; /* Info on currently selected thread */
+ CORE_ADDR mips_next_pc (CORE_ADDR pc);
+
+ if (!insert_breakpoints_p)
+ {
+ undoSStep (th);
+ return;
+ }
+
+ th->stepped = 1;
+ pc = read_register (PC_REGNUM);
+ th->step_pc = arm_get_next_pc (pc);
+ th->step_prev = 0;
+ memory_insert_breakpoint (th->step_pc, (void *) &th->step_prev);
+ return;
+}
+#endif
+
/* Find a thread record given a thread id.
If get_context then also retrieve the context for this
thread. */
@@ -893,22 +1113,6 @@ check (BOOL ok, const char *file, int line)
printf_filtered ("error return %s:%d was %d\n", file, line, GetLastError ());
}
-/* Return a pointer into a CONTEXT field indexed by gdb register number.
- Return a pointer to an address pointing to zero if there is no
- corresponding CONTEXT field for the given register number.
- */
-static ULONG *
-regptr (LPCONTEXT c, int r)
-{
- static ULONG zero = 0;
- ULONG *p;
- if (mappings[r] < 0)
- p = &zero;
- else
- p = (ULONG *) (((char *) c) + mappings[r]);
- return p;
-}
-
static void
do_child_fetch_inferior_registers (int r)
{
@@ -991,7 +1195,9 @@ handle_load_dll (PTR dummy)
out:
if (!len)
return 1;
+#if 0
dll_buf[len] = '\0';
+#endif
dll_name = alloca (len);
if (!dll_name)
@@ -1021,22 +1227,12 @@ out:
FIXME: Is this the real reason that we need the 0x1000 ? */
printf_unfiltered ("%x:%s", event->lpBaseOfDll, dll_name);
-#if 0 /* FIXME: Need to use RAPI stuff to read the file someday. */
- {
- struct section_addr_info section_addrs;
- memset (&section_addrs, 0, sizeof (section_addrs));
- section_addrs.text_addr = (int) event->lpBaseOfDll + 0x1000;
- symbol_file_add (dll_name, 0, &section_addrs, 0, OBJF_SHARED);
- }
-#endif
printf_unfiltered ("\n");
return 1;
}
-/* Handle DEBUG_STRING output from child process.
- Cygwin prepends its messages with a "cygwin:". Interpret this as
- a Cygwin signal. Otherwise just print the string as a warning. */
+/* Handle DEBUG_STRING output from child process. */
static void
handle_output_debug_string (struct target_waitstatus *ourstatus)
{
@@ -1068,6 +1264,7 @@ handle_output_debug_string (struct target_waitstatus *ourstatus)
}
warning (s);
+
return;
}
@@ -1075,16 +1272,13 @@ handle_output_debug_string (struct target_waitstatus *ourstatus)
static int
handle_exception (struct target_waitstatus *ourstatus)
{
- thread_info *th;
-
+#if 0
if (current_event.u.Exception.dwFirstChance)
return 0;
+#endif
ourstatus->kind = TARGET_WAITKIND_STOPPED;
- /* Record the context of the current thread */
- th = thread_rec (current_event.dwThreadId, -1);
-
switch (current_event.u.Exception.ExceptionRecord.ExceptionCode)
{
case EXCEPTION_ACCESS_VIOLATION:
@@ -1114,10 +1308,15 @@ handle_exception (struct target_waitstatus *ourstatus)
(unsigned) current_event.u.Exception.ExceptionRecord.ExceptionAddress));
ourstatus->value.sig = TARGET_SIGNAL_TRAP;
break;
+ case EXCEPTION_ILLEGAL_INSTRUCTION:
+ DEBUG_EXCEPT (("gdb: Target exception SINGLE_ILL at 0x%08x\n",
+ current_event.u.Exception.ExceptionRecord.ExceptionAddress));
+ ourstatus->value.sig = check_for_step (&current_event, TARGET_SIGNAL_ILL);
+ break;
default:
/* This may be a structured exception handling exception. In
- that case, we want to let the program try to handle it, and
- only break if we see the exception a second time. */
+ that case, we want to let the program try to handle it, and
+ only break if we see the exception a second time. */
printf_unfiltered ("gdb: unknown target exception 0x%08x at 0x%08x\n",
current_event.u.Exception.ExceptionRecord.ExceptionCode,
@@ -1159,23 +1358,29 @@ child_continue (DWORD continue_status, int id)
handling by WFI (or whatever).
*/
static int
-get_child_debug_event (int pid, struct target_waitstatus *ourstatus, DWORD * event_code, int *retval)
+get_child_debug_event (int pid, struct target_waitstatus *ourstatus,
+ DWORD target_event_code, int *retval)
{
+ int breakout = 0;
BOOL debug_event;
- DWORD continue_status;
- int breakout = 1;
+ DWORD continue_status, event_code;
+ thread_info *th = NULL;
+ static thread_info dummy_thread_info;
if (!(debug_event = wait_for_debug_event (&current_event, 1000)))
{
- breakout = *retval = *event_code = 0;
+ *retval = 0;
goto out;
}
- this_thread = thread_rec (current_event.dwThreadId, FALSE);
event_count++;
continue_status = DBG_CONTINUE;
*retval = 0;
- switch (*event_code = current_event.dwDebugEventCode)
+
+ event_code = current_event.dwDebugEventCode;
+ breakout = event_code == target_event_code;
+
+ switch (event_code)
{
case CREATE_THREAD_DEBUG_EVENT:
DEBUG_EVENTS (("gdb: kernel event for pid=%d tid=%x code=%s)\n",
@@ -1183,8 +1388,8 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus, DWORD * eve
(unsigned) current_event.dwThreadId,
"CREATE_THREAD_DEBUG_EVENT"));
/* Record the existence of this thread */
- child_add_thread (current_event.dwThreadId,
- current_event.u.CreateThread.hThread);
+ th = child_add_thread (current_event.dwThreadId,
+ current_event.u.CreateThread.hThread);
if (info_verbose)
printf_unfiltered ("[New %s]\n",
target_pid_to_str (current_event.dwThreadId));
@@ -1196,6 +1401,7 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus, DWORD * eve
(unsigned) current_event.dwThreadId,
"EXIT_THREAD_DEBUG_EVENT"));
child_delete_thread (current_event.dwThreadId);
+ th = &dummy_thread_info;
break;
case CREATE_PROCESS_DEBUG_EVENT:
@@ -1207,8 +1413,8 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus, DWORD * eve
main_thread_id = inferior_pid = current_event.dwThreadId;
/* Add the main thread */
- current_thread = child_add_thread (inferior_pid,
- current_event.u.CreateProcessInfo.hThread);
+ th = child_add_thread (inferior_pid,
+ current_event.u.CreateProcessInfo.hThread);
break;
case EXIT_PROCESS_DEBUG_EVENT:
@@ -1220,7 +1426,8 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus, DWORD * eve
ourstatus->value.integer = current_event.u.ExitProcess.dwExitCode;
close_handle (current_process_handle);
*retval = current_event.dwProcessId;
- goto out;
+ breakout = 1;
+ break;
case LOAD_DLL_DEBUG_EVENT:
DEBUG_EVENTS (("gdb: kernel event for pid=%d tid=%d code=%s)\n",
@@ -1244,14 +1451,12 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus, DWORD * eve
(unsigned) current_event.dwThreadId,
"EXCEPTION_DEBUG_EVENT"));
if (handle_exception (ourstatus))
+ *retval = current_event.dwThreadId;
+ else
{
- char buf[32];
- *retval = current_event.dwThreadId;
- remote_read_bytes (read_pc (), buf, sizeof (buf));
- dcache_xfer_memory (remote_dcache, read_pc (), buf, sizeof (buf), 0);
- goto out;
+ continue_status = DBG_EXCEPTION_NOT_HANDLED;
+ breakout = 0;
}
- continue_status = DBG_EXCEPTION_NOT_HANDLED;
break;
case OUTPUT_DEBUG_STRING_EVENT: /* message from the kernel */
@@ -1259,7 +1464,7 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus, DWORD * eve
(unsigned) current_event.dwProcessId,
(unsigned) current_event.dwThreadId,
"OUTPUT_DEBUG_STRING_EVENT"));
- handle_output_debug_string (ourstatus);
+ handle_output_debug_string ( ourstatus);
break;
default:
printf_unfiltered ("gdb: kernel event for pid=%d tid=%d\n",
@@ -1270,8 +1475,10 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus, DWORD * eve
break;
}
- breakout = 0;
- CHECK (child_continue (continue_status, -1));
+ if (breakout)
+ this_thread = current_thread = th ?: thread_rec (current_event.dwThreadId, TRUE);
+ else
+ CHECK (child_continue (continue_status, -1));
out:
return breakout;
@@ -1291,7 +1498,7 @@ child_wait (int pid, struct target_waitstatus *ourstatus)
isn't necessarily what you think it is. */
while (1)
- if (get_child_debug_event (pid, ourstatus, &event_code, &retval))
+ if (get_child_debug_event (pid, ourstatus, EXCEPTION_DEBUG_EVENT, &retval))
return retval;
else
{
@@ -1351,14 +1558,15 @@ char *
upload_to_device (const char *to, const char *from)
{
HANDLE h;
- const char *dir = remote_directory ? : "\\gdb";
+ const char *dir = remote_directory ?: "\\gdb";
int len;
static char *remotefile = NULL;
LPWSTR wstr;
char *p;
DWORD err;
const char *in_to = to;
- FILETIME ctime, atime, wtime;
+ FILETIME crtime, actime, wrtime;
+ time_t utime;
struct stat st;
int fd;
@@ -1397,15 +1605,25 @@ upload_to_device (const char *to, const char *from)
/* Some kind of problem? */
err = CeGetLastError ();
- if (h == NULL)
- error ("error creating file to \"%s\". Windows error %d.",
+ if (h == NULL || h == INVALID_HANDLE_VALUE)
+ error ("error opening file \"%s\". Windows error %d.",
remotefile, err);
+ CeGetFileTime (h, &crtime, &actime, &wrtime);
+ utime = to_time_t (&wrtime);
+#if 0
+ if (utime < st.st_mtime)
+ {
+ char buf[80];
+ strcpy (buf, ctime(&utime));
+ printf ("%s < %s\n", buf, ctime(&st.st_mtime));
+ }
+#endif
/* See if we need to upload the file. */
if (upload_when == UPLOAD_ALWAYS ||
err != ERROR_ALREADY_EXISTS ||
- !CeGetFileTime (h, &ctime, &atime, &wtime) ||
- to_time_t (&wtime) < st.st_mtime)
+ !CeGetFileTime (h, &crtime, &actime, &wrtime) ||
+ to_time_t (&wrtime) < st.st_mtime)
{
DWORD nbytes;
char buf[4096];
@@ -1419,7 +1637,8 @@ upload_to_device (const char *to, const char *from)
}
close (fd);
- CeCloseHandle (h);
+ if (!CeCloseHandle (h))
+ error ("error closing remote file - %d.", CeGetLastError ());
return remotefile;
}
@@ -1555,11 +1774,10 @@ child_create_inferior (char *exec_file, char *args, char **env)
target_terminal_init ();
target_terminal_inferior ();
-
/* Run until process and threads are loaded */
- do
- get_child_debug_event (inferior_pid, &dummy, &event_code, &ret);
- while (event_code != CREATE_PROCESS_DEBUG_EVENT);
+ while (!get_child_debug_event (inferior_pid, &dummy,
+ CREATE_PROCESS_DEBUG_EVENT, &ret))
+ continue;
proceed ((CORE_ADDR) -1, TARGET_SIGNAL_0, 0);
}
@@ -1607,213 +1825,6 @@ child_kill_inferior (void)
target_mourn_inferior (); /* or just child_mourn_inferior? */
}
-#ifdef MIPS
-static void
-undoSStep (thread_info * th)
-{
- if (th->stepped)
- {
- memory_remove_breakpoint (th->step_pc, (void *) &th->step_prev);
- th->stepped = 0;
- }
-}
-
-void
-wince_software_single_step (unsigned int ignore, int insert_breakpoints_p)
-{
- unsigned long pc;
- thread_info *th = current_thread; /* Info on currently selected thread */
- CORE_ADDR mips_next_pc (CORE_ADDR pc);
-
- if (!insert_breakpoints_p)
- {
- undoSStep (th);
- return;
- }
-
- th->stepped = 1;
- pc = read_register (PC_REGNUM);
- th->step_pc = mips_next_pc (pc);
- th->step_prev = 0;
- memory_insert_breakpoint (th->step_pc, (void *) &th->step_prev);
-}
-#elif SHx
-/* Hitachi SH architecture instruction encoding masks */
-
-#define COND_BR_MASK 0xff00
-#define UCOND_DBR_MASK 0xe000
-#define UCOND_RBR_MASK 0xf0df
-#define TRAPA_MASK 0xff00
-
-#define COND_DISP 0x00ff
-#define UCOND_DISP 0x0fff
-#define UCOND_REG 0x0f00
-
-/* Hitachi SH instruction opcodes */
-
-#define BF_INSTR 0x8b00
-#define BT_INSTR 0x8900
-#define BRA_INSTR 0xa000
-#define BSR_INSTR 0xb000
-#define JMP_INSTR 0x402b
-#define JSR_INSTR 0x400b
-#define RTS_INSTR 0x000b
-#define RTE_INSTR 0x002b
-#define TRAPA_INSTR 0xc300
-#define SSTEP_INSTR 0xc3ff
-
-
-#define T_BIT_MASK 0x0001
-
-/* Undo the effect of a previous doSStep. If we single stepped,
- restore the old instruction. */
-
-static void
-undoSStep (thread_info * th)
-{
- if (th->stepped)
- {
- gdb_wince_len done;
- write_process_memory (current_process_handle, (LPVOID) th->step_pc,
- (LPVOID) & th->step_instr, sizeof (short), &done);
- if (done != sizeof (short))
- error ("error unsetting single step.");
- th->stepped = 0;
- }
-}
-
-/* Single step (in a painstaking fashion) by inspecting the current
- instruction and setting a breakpoint on the "next" instruction
- which would be executed. This code hails from sh-stub.c.
- */
-void
-wince_software_single_step (unsigned int ignore, int insert_breakpoints_p)
-{
- thread_info *th = current_thread; /* Info on currently selected thread */
-
- if (!insert_breakpoints_p)
- undoSStep (th);
- else
- {
- short *instrMem;
- int displacement;
- int reg;
- unsigned short opcode;
- gdb_wince_len done;
- LPCONTEXT c = &th->context;
-
- instrMem = (short *) c->Fir;
-
- read_process_memory (current_process_handle, (LPCVOID) c->Fir, &opcode,
- sizeof (opcode), &done);
- if (done != sizeof (opcode))
- error ("couldn't retrieve opcode");
- th->stepped = 1;
-
- if ((opcode & COND_BR_MASK) == BT_INSTR)
- {
- if (c->Psr & T_BIT_MASK)
- {
- displacement = (opcode & COND_DISP) << 1;
- if (displacement & 0x80)
- displacement |= 0xffffff00;
- /*
- * Remember PC points to second instr.
- * after PC of branch ... so add 4
- */
- instrMem = (short *) (c->Fir + displacement + 4);
- }
- else
- instrMem += 1;
- }
- else if ((opcode & COND_BR_MASK) == BF_INSTR)
- {
- if (c->Psr & T_BIT_MASK)
- instrMem += 1;
- else
- {
- displacement = (opcode & COND_DISP) << 1;
- if (displacement & 0x80)
- displacement |= 0xffffff00;
- /*
- * Remember PC points to second instr.
- * after PC of branch ... so add 4
- */
- instrMem = (short *) (c->Fir + displacement + 4);
- }
- }
- else if ((opcode & UCOND_DBR_MASK) == BRA_INSTR)
- {
- displacement = (opcode & UCOND_DISP) << 1;
- if (displacement & 0x0800)
- displacement |= 0xfffff000;
-
- /*
- * Remember PC points to second instr.
- * after PC of branch ... so add 4
- */
- instrMem = (short *) (c->Fir + displacement + 4);
- }
- else if ((opcode & UCOND_RBR_MASK) == JSR_INSTR)
- {
- reg = (char) ((opcode & UCOND_REG) >> 8);
-
- instrMem = (short *) *regptr (c, reg);
- }
- else if (opcode == RTS_INSTR)
- instrMem = (short *) c->PR;
- else if (opcode == RTE_INSTR)
- instrMem = (short *) *regptr (c, 15);
- else if ((opcode & TRAPA_MASK) == TRAPA_INSTR)
- instrMem = (short *) ((opcode & ~TRAPA_MASK) << 2);
- else
- instrMem += 1;
-
- th->step_pc = (CORE_ADDR) instrMem;
-
- read_process_memory (current_process_handle, (LPVOID) instrMem,
- (LPVOID) & th->step_instr, sizeof (short), &done);
- opcode = SSTEP_INSTR;
- write_process_memory (current_process_handle, (LPVOID) instrMem,
- (LPVOID) & opcode, sizeof (short), &done);
- }
-}
-#elif defined (ARM)
-/* Single step (in a painstaking fashion) by inspecting the current
- instruction and setting a breakpoint on the "next" instruction
- which would be executed. This code hails from sh-stub.c.
- */
-static void
-undoSStep (thread_info * th)
-{
- if (th->stepped)
- {
- memory_remove_breakpoint (th->step_pc, (void *) &th->step_prev);
- th->stepped = 0;
- }
-}
-
-void
-wince_software_single_step (unsigned int ignore, int insert_breakpoints_p)
-{
- unsigned long pc;
- thread_info *th = current_thread; /* Info on currently selected thread */
- CORE_ADDR mips_next_pc (CORE_ADDR pc);
-
- if (!insert_breakpoints_p)
- {
- undoSStep (th);
- return;
- }
-
- th->stepped = 1;
- pc = read_register (PC_REGNUM);
- th->step_pc = arm_get_next_pc (pc);
- th->step_prev = 0;
- memory_insert_breakpoint (th->step_pc, (void *) &th->step_prev);
-}
-#endif
-
/* Resume the child after an exception. */
void
child_resume (int pid, int step, enum target_signal sig)
@@ -1917,8 +1928,8 @@ init_child_ops (void)
/* Handle 'set remoteupload' parameter. */
#define replace_upload(what) \
- upload_when = UPLOAD_NEWER; \
- remote_upload = realloc (remote_upload, strlen (upload_options[upload_when].name)); \
+ upload_when = what; \
+ remote_upload = realloc (remote_upload, strlen (upload_options[upload_when].name) + 1); \
strcpy (remote_upload, upload_options[upload_when].name);
static void
@@ -1940,8 +1951,7 @@ set_upload_type (char *ignore, int from_tty)
if (len >= upload_options[i].abbrev &&
strncasecmp (remote_upload, upload_options[i].name, len) == 0)
{
- remote_upload = (char *) upload_options[i].name;
- upload_when = i;
+ replace_upload (i);
return;
}
diff --git a/gdb/wrapper.c b/gdb/wrapper.c
index 7ee26a7d460..4ee8fa248c1 100644
--- a/gdb/wrapper.c
+++ b/gdb/wrapper.c
@@ -42,27 +42,19 @@ struct gdb_wrapper_arguments
} args[10];
};
-int gdb_parse_exp_1 PARAMS ((char **, struct block *,
- int, struct expression **));
-int wrap_parse_exp_1 PARAMS ((char *));
+static int wrap_parse_exp_1 (char *);
-int gdb_evaluate_expression PARAMS ((struct expression *, value_ptr *));
-int wrap_evaluate_expression PARAMS ((char *));
+static int wrap_evaluate_expression (char *);
-int gdb_value_fetch_lazy PARAMS ((value_ptr));
-int wrap_value_fetch_lazy PARAMS ((char *));
+static int wrap_value_fetch_lazy (char *);
-int gdb_value_equal PARAMS ((value_ptr, value_ptr, int *));
-int wrap_value_equal PARAMS ((char *));
+static int wrap_value_equal (char *);
-int gdb_value_subscript PARAMS ((value_ptr, value_ptr, value_ptr * rval));
-int wrap_value_subscript PARAMS ((char *));
+static int wrap_value_subscript (char *);
-int gdb_value_ind PARAMS ((value_ptr val, value_ptr * rval));
-int wrap_value_ind PARAMS ((char *opaque_arg));
+static int wrap_value_ind (char *opaque_arg);
-int gdb_parse_and_eval_type (char *, int, struct type **);
-int wrap_parse_and_eval_type (char *);
+static int wrap_parse_and_eval_type (char *);
int
gdb_parse_exp_1 (stringptr, block, comma, expression)
@@ -88,7 +80,7 @@ gdb_parse_exp_1 (stringptr, block, comma, expression)
}
-int
+static int
wrap_parse_exp_1 (argptr)
char *argptr;
{
@@ -119,7 +111,7 @@ gdb_evaluate_expression (exp, value)
return 1;
}
-int
+static int
wrap_evaluate_expression (a)
char *a;
{
@@ -141,7 +133,7 @@ gdb_value_fetch_lazy (value)
"", RETURN_MASK_ERROR);
}
-int
+static int
wrap_value_fetch_lazy (a)
char *a;
{
@@ -173,7 +165,7 @@ gdb_value_equal (val1, val2, result)
return 1;
}
-int
+static int
wrap_value_equal (a)
char *a;
{
@@ -209,7 +201,7 @@ gdb_value_subscript (val1, val2, rval)
return 1;
}
-int
+static int
wrap_value_subscript (a)
char *a;
{
@@ -243,7 +235,7 @@ gdb_value_ind (val, rval)
return 1;
}
-int
+static int
wrap_value_ind (opaque_arg)
char *opaque_arg;
{
@@ -273,7 +265,7 @@ gdb_parse_and_eval_type (char *p, int length, struct type **type)
return 1;
}
-int
+static int
wrap_parse_and_eval_type (char *a)
{
struct gdb_wrapper_arguments *args = (struct gdb_wrapper_arguments *) a;
diff --git a/gdb/wrapper.h b/gdb/wrapper.h
index 0345b89623e..28261acb2fb 100644
--- a/gdb/wrapper.h
+++ b/gdb/wrapper.h
@@ -19,26 +19,22 @@
#ifndef WRAPPER_H
#define WRAPPER_H 1
-/* Use this struct used to pass arguments to wrapper routines. */
+/* Use this struct to pass arguments to wrapper routines. */
struct gdb_wrapper_arguments;
-extern int gdb_parse_exp_1 PARAMS ((char **, struct block *,
- int, struct expression **));
-extern int wrap_parse_exp_1 PARAMS ((char *));
+extern int gdb_parse_exp_1 (char **, struct block *,
+ int, struct expression **);
-extern int gdb_evaluate_expression PARAMS ((struct expression *, value_ptr *));
-extern int wrap_evaluate_expression PARAMS ((char *));
+extern int gdb_evaluate_expression (struct expression *, value_ptr *);
-extern int gdb_value_fetch_lazy PARAMS ((value_ptr));
-extern int wrap_value_fetch_lazy PARAMS ((char *));
+extern int gdb_value_fetch_lazy (value_ptr);
-extern int gdb_value_equal PARAMS ((value_ptr, value_ptr, int *));
-extern int wrap_value_equal PARAMS ((char *));
+extern int gdb_value_equal (value_ptr, value_ptr, int *);
-extern int gdb_value_ind PARAMS ((value_ptr val, value_ptr * rval));
-extern int wrap_value_ind PARAMS ((char *opaque_arg));
+extern int gdb_value_subscript (value_ptr, value_ptr, value_ptr *);
+
+extern int gdb_value_ind (value_ptr val, value_ptr * rval);
extern int gdb_parse_and_eval_type (char *, int, struct type **);
-extern int wrap_parse_and_eval_type (char *);
#endif /* WRAPPER_H */
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
index 944128293fa..65e319ac9af 100644
--- a/gdb/xcoffread.c
+++ b/gdb/xcoffread.c
@@ -195,89 +195,71 @@ static struct complaint ef_complaint =
static struct complaint eb_complaint =
{"Mismatched .eb symbol ignored starting at symnum %d", 0, 0};
-static void
-xcoff_initial_scan PARAMS ((struct objfile *, int));
+static void xcoff_initial_scan (struct objfile *, int);
-static void
-scan_xcoff_symtab PARAMS ((struct objfile *));
+static void scan_xcoff_symtab (struct objfile *);
-static char *
- xcoff_next_symbol_text PARAMS ((struct objfile *));
+static char *xcoff_next_symbol_text (struct objfile *);
-static void
-record_include_begin PARAMS ((struct coff_symbol *));
+static void record_include_begin (struct coff_symbol *);
static void
-enter_line_range PARAMS ((struct subfile *, unsigned, unsigned,
- CORE_ADDR, CORE_ADDR, unsigned *));
+enter_line_range (struct subfile *, unsigned, unsigned,
+ CORE_ADDR, CORE_ADDR, unsigned *);
-static void
-init_stringtab PARAMS ((bfd *, file_ptr, struct objfile *));
+static void init_stringtab (bfd *, file_ptr, struct objfile *);
-static void
-xcoff_symfile_init PARAMS ((struct objfile *));
+static void xcoff_symfile_init (struct objfile *);
-static void
-xcoff_new_init PARAMS ((struct objfile *));
+static void xcoff_new_init (struct objfile *);
-static void
-xcoff_symfile_finish PARAMS ((struct objfile *));
+static void xcoff_symfile_finish (struct objfile *);
static void
- xcoff_symfile_offsets PARAMS ((struct objfile *, struct section_addr_info *addrs));
+xcoff_symfile_offsets (struct objfile *, struct section_addr_info *addrs);
-static void
-find_linenos PARAMS ((bfd *, sec_ptr, PTR));
+static void find_linenos (bfd *, sec_ptr, PTR);
-static char *
- coff_getfilename PARAMS ((union internal_auxent *, struct objfile *));
+static char *coff_getfilename (union internal_auxent *, struct objfile *);
-static void
-read_symbol PARAMS ((struct internal_syment *, int));
+static void read_symbol (struct internal_syment *, int);
-static int
-read_symbol_lineno PARAMS ((int));
+static int read_symbol_lineno (int);
-static int
-read_symbol_nvalue PARAMS ((int));
+static int read_symbol_nvalue (int);
-static struct symbol *
- process_xcoff_symbol PARAMS ((struct coff_symbol *, struct objfile *));
+static struct symbol *process_xcoff_symbol (struct coff_symbol *,
+ struct objfile *);
-static void
-read_xcoff_symtab PARAMS ((struct partial_symtab *));
+static void read_xcoff_symtab (struct partial_symtab *);
#if 0
-static void
-add_stab_to_list PARAMS ((char *, struct pending_stabs **));
+static void add_stab_to_list (char *, struct pending_stabs **);
#endif
-static int
-compare_lte PARAMS ((const void *, const void *));
+static int compare_lte (const void *, const void *);
-static struct linetable *
- arrange_linetable PARAMS ((struct linetable *));
+static struct linetable *arrange_linetable (struct linetable *);
-static void
-record_include_end PARAMS ((struct coff_symbol *));
+static void record_include_end (struct coff_symbol *);
-static void
-process_linenos PARAMS ((CORE_ADDR, CORE_ADDR));
+static void process_linenos (CORE_ADDR, CORE_ADDR);
/* Translate from a COFF section number (target_index) to a SECT_OFF_*
code. */
-static int secnum_to_section PARAMS ((int, struct objfile *));
-static asection *secnum_to_bfd_section PARAMS ((int, struct objfile *));
+static int secnum_to_section (int, struct objfile *);
+static asection *secnum_to_bfd_section (int, struct objfile *);
struct find_targ_sec_arg
{
int targ_index;
int *resultp;
asection **bfd_sect;
+ struct objfile *objfile;
};
-static void find_targ_sec PARAMS ((bfd *, asection *, void *));
+static void find_targ_sec (bfd *, asection *, void *);
static void
find_targ_sec (abfd, sect, obj)
@@ -286,15 +268,16 @@ find_targ_sec (abfd, sect, obj)
PTR obj;
{
struct find_targ_sec_arg *args = (struct find_targ_sec_arg *) obj;
+ struct objfile *objfile = args->objfile;
if (sect->target_index == args->targ_index)
{
/* This is the section. Figure out what SECT_OFF_* code it is. */
if (bfd_get_section_flags (abfd, sect) & SEC_CODE)
- *args->resultp = SECT_OFF_TEXT;
+ *args->resultp = SECT_OFF_TEXT (objfile);
else if (bfd_get_section_flags (abfd, sect) & SEC_LOAD)
- *args->resultp = SECT_OFF_DATA;
+ *args->resultp = SECT_OFF_DATA (objfile);
else
- *args->resultp = SECT_OFF_BSS;
+ *args->resultp = SECT_OFF_BSS (objfile);
*args->bfd_sect = sect;
}
}
@@ -305,12 +288,13 @@ secnum_to_section (secnum, objfile)
int secnum;
struct objfile *objfile;
{
- int off = SECT_OFF_TEXT;
+ int off = SECT_OFF_TEXT (objfile);
asection *sect = NULL;
struct find_targ_sec_arg args;
args.targ_index = secnum;
args.resultp = &off;
args.bfd_sect = &sect;
+ args.objfile = objfile;
bfd_map_over_sections (objfile->obfd, find_targ_sec, &args);
return off;
}
@@ -321,7 +305,7 @@ secnum_to_bfd_section (secnum, objfile)
int secnum;
struct objfile *objfile;
{
- int off = SECT_OFF_TEXT;
+ int off = SECT_OFF_TEXT (objfile);
asection *sect = NULL;
struct find_targ_sec_arg args;
args.targ_index = secnum;
@@ -530,7 +514,7 @@ static int inclIndx; /* last entry to table */
static int inclLength; /* table length */
static int inclDepth; /* nested include depth */
-static void allocate_include_entry PARAMS ((void));
+static void allocate_include_entry (void);
static void
record_include_begin (cs)
@@ -849,7 +833,7 @@ enter_line_range (subfile, beginoffset, endoffset, startaddr, endaddr,
? int_lnno.l_addr.l_paddr
: read_symbol_nvalue (int_lnno.l_addr.l_symndx));
addr += ANOFFSET (this_symtab_psymtab->objfile->section_offsets,
- SECT_OFF_TEXT);
+ SECT_OFF_TEXT (this_symtab_psymtab->objfile));
if (addr < startaddr || (endaddr && addr >= endaddr))
return;
@@ -1095,7 +1079,7 @@ read_xcoff_symtab (pst)
if (last_source_file)
{
pst->symtab =
- end_symtab (cur_src_end_addr, objfile, SECT_OFF_TEXT);
+ end_symtab (cur_src_end_addr, objfile, SECT_OFF_TEXT (objfile));
end_stabs ();
}
@@ -1160,7 +1144,7 @@ read_xcoff_symtab (pst)
{
complete_symtab (filestring, file_start_addr);
cur_src_end_addr = file_end_addr;
- end_symtab (file_end_addr, objfile, SECT_OFF_TEXT);
+ end_symtab (file_end_addr, objfile, SECT_OFF_TEXT (objfile));
end_stabs ();
start_stabs ();
/* Give all csects for this source file the same
@@ -1180,7 +1164,7 @@ read_xcoff_symtab (pst)
file_start_addr =
cs->c_value + ANOFFSET (objfile->section_offsets,
- SECT_OFF_TEXT);
+ SECT_OFF_TEXT (objfile));
file_end_addr = file_start_addr + CSECT_LEN (&main_aux);
if (cs->c_name && cs->c_name[0] == '.')
@@ -1276,7 +1260,7 @@ read_xcoff_symtab (pst)
complete_symtab (filestring, file_start_addr);
cur_src_end_addr = file_end_addr;
- end_symtab (file_end_addr, objfile, SECT_OFF_TEXT);
+ end_symtab (file_end_addr, objfile, SECT_OFF_TEXT (objfile));
end_stabs ();
/* XCOFF, according to the AIX 3.2 documentation, puts the filename
@@ -1311,7 +1295,7 @@ read_xcoff_symtab (pst)
if (STREQ (cs->c_name, ".bf"))
{
CORE_ADDR off = ANOFFSET (objfile->section_offsets,
- SECT_OFF_TEXT);
+ SECT_OFF_TEXT (objfile));
bfd_coff_swap_aux_in (abfd, raw_auxptr, cs->c_type, cs->c_sclass,
0, cs->c_naux, &main_aux);
@@ -1323,7 +1307,7 @@ read_xcoff_symtab (pst)
(fcn_cs_saved.c_value + off,
fcn_stab_saved.c_name, 0, 0, objfile);
if (new->name != NULL)
- SYMBOL_SECTION (new->name) = SECT_OFF_TEXT;
+ SYMBOL_SECTION (new->name) = SECT_OFF_TEXT (objfile);
}
else if (STREQ (cs->c_name, ".ef"))
{
@@ -1356,7 +1340,7 @@ read_xcoff_symtab (pst)
(fcn_cs_saved.c_value
+ fcn_aux_saved.x_sym.x_misc.x_fsize
+ ANOFFSET (objfile->section_offsets,
- SECT_OFF_TEXT)),
+ SECT_OFF_TEXT (objfile))),
objfile);
within_function = 0;
}
@@ -1426,7 +1410,7 @@ read_xcoff_symtab (pst)
new = push_context (depth,
(cs->c_value
+ ANOFFSET (objfile->section_offsets,
- SECT_OFF_TEXT)));
+ SECT_OFF_TEXT (objfile))));
}
else if (STREQ (cs->c_name, ".eb"))
{
@@ -1448,7 +1432,7 @@ read_xcoff_symtab (pst)
new->start_addr,
(cs->c_value
+ ANOFFSET (objfile->section_offsets,
- SECT_OFF_TEXT)),
+ SECT_OFF_TEXT (objfile))),
objfile);
}
local_symbols = new->locals;
@@ -1467,7 +1451,7 @@ read_xcoff_symtab (pst)
complete_symtab (filestring, file_start_addr);
cur_src_end_addr = file_end_addr;
- s = end_symtab (file_end_addr, objfile, SECT_OFF_TEXT);
+ s = end_symtab (file_end_addr, objfile, SECT_OFF_TEXT (objfile));
/* When reading symbols for the last C_FILE of the objfile, try
to make sure that we set pst->symtab to the symtab for the
file, not to the _globals_ symtab. I'm not sure whether this
@@ -1784,7 +1768,7 @@ find_linenos (abfd, asect, vpinfo)
info->max_lineno_offset = maxoff;
}
-static void xcoff_psymtab_to_symtab_1 PARAMS ((struct partial_symtab *));
+static void xcoff_psymtab_to_symtab_1 (struct partial_symtab *);
static void
xcoff_psymtab_to_symtab_1 (pst)
@@ -1838,7 +1822,7 @@ xcoff_psymtab_to_symtab_1 (pst)
pst->readin = 1;
}
-static void xcoff_psymtab_to_symtab PARAMS ((struct partial_symtab *));
+static void xcoff_psymtab_to_symtab (struct partial_symtab *);
/* Read in all of the symbols for a given psymtab for real.
Be verbose about it if the user wants that. */
@@ -1997,8 +1981,8 @@ init_stringtab (abfd, offset, objfile)
static unsigned int first_fun_line_offset;
static struct partial_symtab *xcoff_start_psymtab
- PARAMS ((struct objfile *, char *, int,
- struct partial_symbol **, struct partial_symbol **));
+ (struct objfile *, char *, int,
+ struct partial_symbol **, struct partial_symbol **);
/* Allocate and partially fill a partial symtab. It will be
completely filled at the end of the symbol list.
@@ -2035,8 +2019,8 @@ xcoff_start_psymtab (objfile, filename, first_symnum, global_syms,
}
static struct partial_symtab *xcoff_end_psymtab
- PARAMS ((struct partial_symtab *, char **, int, int,
- struct partial_symtab **, int, int));
+ (struct partial_symtab *, char **, int, int,
+ struct partial_symtab **, int, int);
/* Close off the current usage of PST.
Returns PST, or NULL if the partial symtab was empty and thrown away.
@@ -2141,10 +2125,9 @@ xcoff_end_psymtab (pst, include_list, num_includes, capping_symbol_number,
return pst;
}
-static void swap_sym PARAMS ((struct internal_syment *,
- union internal_auxent *, char **, char **,
- unsigned int *,
- struct objfile *));
+static void swap_sym (struct internal_syment *,
+ union internal_auxent *, char **, char **,
+ unsigned int *, struct objfile *);
/* Swap raw symbol at *RAW and put the name in *NAME, the symbol in
*SYMBOL, the first auxent in *AUX. Advance *RAW and *SYMNUMP over
@@ -2743,7 +2726,7 @@ xcoff_initial_scan (objfile, mainline)
back_to = make_cleanup (really_free_pendings, 0);
init_minimal_symbol_collection ();
- make_cleanup ((make_cleanup_func) discard_minimal_symbols, 0);
+ make_cleanup_discard_minimal_symbols ();
/* Now that the symbol table data of the executable file are all in core,
process them and define symbols accordingly. */
@@ -2763,22 +2746,43 @@ xcoff_symfile_offsets (objfile, addrs)
struct objfile *objfile;
struct section_addr_info *addrs;
{
+ asection *sect = NULL;
int i;
objfile->num_sections = SECT_OFF_MAX;
objfile->section_offsets = (struct section_offsets *)
obstack_alloc (&objfile->psymbol_obstack, SIZEOF_SECTION_OFFSETS);
- /* syms_from_objfile kindly subtracts from addr the bfd_section_vma
- of the .text section. This strikes me as wrong--whether the
- offset to be applied to symbol reading is relative to the start
- address of the section depends on the symbol format. In any
- event, this whole "addr" concept is pretty broken (it doesn't
- handle any section but .text sensibly), so just ignore the addr
- parameter and use 0. rs6000-nat.c will set the correct section
- offsets via objfile_relocate. */
+ /* Initialize the section indexes for future use. */
+ sect = bfd_get_section_by_name (objfile->obfd, ".text");
+ if (sect)
+ objfile->sect_index_text = sect->index;
+
+ sect = bfd_get_section_by_name (objfile->obfd, ".data");
+ if (sect)
+ objfile->sect_index_data = sect->index;
+
+ sect = bfd_get_section_by_name (objfile->obfd, ".bss");
+ if (sect)
+ objfile->sect_index_bss = sect->index;
+
+ sect = bfd_get_section_by_name (objfile->obfd, ".rodata");
+ if (sect)
+ objfile->sect_index_rodata = sect->index;
+
for (i = 0; i < objfile->num_sections; ++i)
- ANOFFSET (objfile->section_offsets, i) = 0;
+ {
+ /* syms_from_objfile kindly subtracts from addr the
+ bfd_section_vma of the .text section. This strikes me as
+ wrong--whether the offset to be applied to symbol reading is
+ relative to the start address of the section depends on the
+ symbol format. In any event, this whole "addr" concept is
+ pretty broken (it doesn't handle any section but .text
+ sensibly), so just ignore the addr parameter and use 0.
+ rs6000-nat.c will set the correct section offsets via
+ objfile_relocate. */
+ ANOFFSET (objfile->section_offsets, i) = 0;
+ }
}
/* Register our ability to parse symbols for xcoff BFD files. */
diff --git a/gdb/xcoffsolib.c b/gdb/xcoffsolib.c
index 5485c5e4f95..3332268bc18 100644
--- a/gdb/xcoffsolib.c
+++ b/gdb/xcoffsolib.c
@@ -34,7 +34,7 @@
hook is initialized in by rs6000-nat.c. If not, it is currently left
NULL and never called. */
-void (*xcoff_relocate_symtab_hook) PARAMS ((unsigned int)) = NULL;
+void (*xcoff_relocate_symtab_hook) (unsigned int) = NULL;
#ifdef SOLIB_SYMBOLS_MANUAL
@@ -116,7 +116,7 @@ solib_add (arg_string, from_tty, target)
syms_from_objfile (obj, NULL, 0, 0);
new_symfile_objfile (obj, 0, 0);
- vmap_symtab (vp, 0, 0);
+ vmap_symtab (vp);
printf_unfiltered ("Done.\n");
loaded = vp->loaded = 1;
}
@@ -165,7 +165,7 @@ pc_load_segment_name (addr)
return "(unknown load module)";
}
-static void solib_info PARAMS ((char *, int));
+static void solib_info (char *, int);
static void
solib_info (args, from_tty)
diff --git a/gdb/xcoffsolib.h b/gdb/xcoffsolib.h
index 70694933759..fbd3d5b86cd 100644
--- a/gdb/xcoffsolib.h
+++ b/gdb/xcoffsolib.h
@@ -58,4 +58,4 @@ extern struct vmap *vmap;
/* Hook for symbol table relocation at runtime. */
-extern void (*xcoff_relocate_symtab_hook) PARAMS ((unsigned int));
+extern void (*xcoff_relocate_symtab_hook) (unsigned int);
diff --git a/gdb/xmodem.h b/gdb/xmodem.h
index 71f4cd9b4c5..8902fe56f20 100644
--- a/gdb/xmodem.h
+++ b/gdb/xmodem.h
@@ -18,10 +18,10 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-int xmodem_init_xfer PARAMS ((serial_t desc));
-void send_xmodem_packet PARAMS ((serial_t desc, unsigned char *packet, int len,
- int hashmark));
-void xmodem_finish_xfer PARAMS ((serial_t desc));
+int xmodem_init_xfer (serial_t desc);
+void send_xmodem_packet (serial_t desc, unsigned char *packet, int len,
+ int hashmark);
+void xmodem_finish_xfer (serial_t desc);
#define XMODEM_DATASIZE 128 /* The data size is ALWAYS 128 */
#define XMODEM_1KDATASIZE 1024 /* Unless it's 1024!!! */
diff --git a/gdb/z8k-tdep.c b/gdb/z8k-tdep.c
index e32bf8f218a..67982c0c7d2 100644
--- a/gdb/z8k-tdep.c
+++ b/gdb/z8k-tdep.c
@@ -85,7 +85,7 @@ skip_adjust (pc, size)
return pc;
}
-static CORE_ADDR examine_frame PARAMS ((CORE_ADDR, CORE_ADDR * regs, CORE_ADDR));
+static CORE_ADDR examine_frame (CORE_ADDR, CORE_ADDR * regs, CORE_ADDR);
static CORE_ADDR
examine_frame (pc, regs, sp)
CORE_ADDR pc;
diff --git a/include/ChangeLog b/include/ChangeLog
index 0dec2b12b16..c304f8b90d3 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,35 @@
+Tue May 30 16:53:34 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * floatformat.h (struct floatformat): Add field name.
+
+2000-05-26 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * filenames.h: New file.
+ (HAVE_DOS_BASED_FILE_SYSTEM, IS_DIR_SEPARATOR)
+ (IS_ABSOLUTE_PATH, FILENAME_CMP): New macros.
+
+2000-05-17 S. Bharadwaj Yadavalli <sby@scrugs.lkg.dec.com>
+ Rick Gorton <gorton@scrugs.lkg.dec.com>
+
+ * bfdlink.h (struct bfd_link_info): Add emitrelocations flag.
+
+2000-05-08 Alan Modra <alan@linuxcare.com.au>
+
+ * dis-asm.h (print_insn_tic54x): Declare.
+
+Fri May 5 16:51:03 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * coff/rs6k64.h (U802TOC64MAGIC): Change to U803XTOCMAGIC.
+
+Mon Apr 24 15:20:51 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * include/coff/rs6k64.h: New file.
+
+Fri Apr 21 13:20:53 2000 Richard Henderson <rth@cygnus.com>
+ David Mosberger <davidm@hpl.hp.com>
+
+ * dis-asm.h (print_insn_ia64): Declare.
+
2000-04-05 Richard Henderson <rth@cygnus.com>
* splay-tree.h (splay_tree_remove): Declare.
@@ -252,7 +284,7 @@ Mon Feb 1 21:05:46 1999 Catherine Moore <clm@cygnus.com>
* dis-asm.h (print_insn_i386_att): Declare.
(print_insn_i386_intel): Declare.
-998-12-30 Michael Meissner <meissner@cygnus.com>
+1998-12-30 Michael Meissner <meissner@cygnus.com>
* dis-asm.h (INIT_DISASSEMBLE_INFO_NO_ARCH): Cast STREAM and
FPRINTF_FUNC to avoid compiler warnings.
@@ -282,8 +314,7 @@ Tue Dec 8 00:30:31 1998 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
(demangling_styles): add new edg_demangling style
(EDG_DEMANGLING_STYLE_STRING): new macro
(EDG_DEMANGLING): new macro
-
- * demangle.h (DMGL_HP): new macro, for HP/aCC compiler.
+ (DMGL_HP): new macro, for HP/aCC compiler.
(DMGL_STYLE_MASK): modify to include new HP's style.
(demangling_styles): add new hp_demangling value.
(HP_DEMANGLING_STYLE_STRING): new macro.
diff --git a/include/bfdlink.h b/include/bfdlink.h
index bb827a35f04..2285775b48b 100644
--- a/include/bfdlink.h
+++ b/include/bfdlink.h
@@ -179,6 +179,8 @@ struct bfd_link_info
const struct bfd_link_callbacks *callbacks;
/* true if BFD should generate a relocateable object file. */
boolean relocateable;
+ /* true if BFD should generate relocation information in the final executable. */
+ boolean emitrelocations;
/* true if BFD should generate a "task linked" object file,
similar to relocatable but also with globals converted to statics. */
boolean task_link;
diff --git a/include/coff/ChangeLog b/include/coff/ChangeLog
index 6da6a6ff7ec..dd6ca19af67 100644
--- a/include/coff/ChangeLog
+++ b/include/coff/ChangeLog
@@ -1,3 +1,36 @@
+2000-04-17 Timothy Wall <twall@cygnus.com>
+
+ * ti.h: Load page cleanup.
+ * intental.h: Add load page field.
+
+Mon Apr 17 16:44:01 2000 David Mosberger <davidm@hpl.hp.com>
+
+ * pe.h (PEP64AOUTHDR): New header for PE+.
+ (PEP64AOUTSZ): New macro.
+ (IMAGE_SUBSYSTEM_UNKNOWN): New macro.
+ (IMAGE_SUBSYSTEM_NATIVE): Ditto.
+ (IMAGE_SUBSYSTEM_WINDOWS_GUI): Ditto.
+ (IMAGE_SUBSYSTEM_WINDOWS_CUI): Ditto.
+ (IMAGE_SUBSYSTEM_POSIX_CUI): Ditto.
+ (IMAGE_SUBSYSTEM_WINDOWS_CE_GUI): Ditto.
+ (IMAGE_SUBSYSTEM_EFI_APPLICATION): Ditto.
+ (IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER): Ditto.
+ (IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER): Ditto.
+ * internal.h (PE_DEF_FILE_ALIGNMENT): Define only if not defined
+ already.
+ * ia64.h: New file.
+
+2000-04-13 Alan Modra <alan@linuxcare.com.au>
+
+ * ti.h (ADDR_MASK): Don't use ul suffix on constants.
+ (PG_MASK): Ditto.
+
+2000-04-11 Timothy Wall <twall@cygnus.com>
+
+ * ti.h: Remove load page references until load pages are
+ reimplemented.
+ * tic54x.h: Ditto.
+
2000-04-07 Timothy Wall <twall@cygnus.com>
* internal.h: Fix some comments related to TI COFF (instead of tic80).
diff --git a/include/coff/ia64.h b/include/coff/ia64.h
new file mode 100644
index 00000000000..a1157869ce8
--- /dev/null
+++ b/include/coff/ia64.h
@@ -0,0 +1,222 @@
+/*** coff information for HP/Intel IA-64. */
+
+
+/********************** FILE HEADER **********************/
+
+struct external_filehdr {
+ char f_magic[2]; /* magic number */
+ char f_nscns[2]; /* number of sections */
+ char f_timdat[4]; /* time & date stamp */
+ char f_symptr[4]; /* file pointer to symtab */
+ char f_nsyms[4]; /* number of symtab entries */
+ char f_opthdr[2]; /* sizeof(optional hdr) */
+ char f_flags[2]; /* flags */
+};
+
+#define IA64MAGIC 0x200
+
+#define IA64BADMAG(x) (((x).f_magic != IA64MAGIC))
+
+/* Bits for f_flags:
+ * F_RELFLG relocation info stripped from file
+ * F_EXEC file is executable (no unresolved external references)
+ * F_LNNO line numbers stripped from file
+ * F_LSYMS local symbols stripped from file
+ * F_AR32WR file has byte ordering of an AR32WR machine (e.g. vax)
+ */
+
+#define F_RELFLG (0x0001)
+#define F_EXEC (0x0002)
+#define F_LNNO (0x0004)
+#define F_LSYMS (0x0008)
+
+
+#define FILHDR struct external_filehdr
+#define FILHSZ 20
+
+
+/********************** AOUT "OPTIONAL HEADER" **********************/
+
+
+typedef struct
+{
+ char magic[2]; /* type of file */
+ char vstamp[2]; /* version stamp */
+ char tsize[4]; /* text size in bytes, padded to FW bdry*/
+ char dsize[4]; /* initialized data " " */
+ char bsize[4]; /* uninitialized data " " */
+ char entry[4]; /* entry pt. */
+ char text_start[4]; /* base of text used for this file */
+#ifndef BFD64
+ char data_start[4]; /* base of data used for this file */
+#endif
+}
+AOUTHDR;
+
+#define PE32MAGIC 0x10b /* 32-bit image */
+#define PE32PMAGIC 0x20b /* 32-bit image inside 64-bit address space */
+
+#define PE32PBADMAG(x) (((x).f_magic != PE32PMAGIC))
+
+#define AOUTSZ 108
+#define AOUTHDRSZ 108
+
+#define OMAGIC 0404 /* object files, eg as output */
+#define ZMAGIC 0413 /* demand load format, eg normal ld output */
+#define STMAGIC 0401 /* target shlib */
+#define SHMAGIC 0443 /* host shlib */
+
+
+/* define some NT default values */
+/* #define NT_IMAGE_BASE 0x400000 moved to internal.h */
+#define NT_SECTION_ALIGNMENT 0x1000
+#define NT_FILE_ALIGNMENT 0x200
+#define NT_DEF_RESERVE 0x100000
+#define NT_DEF_COMMIT 0x1000
+
+/********************** SECTION HEADER **********************/
+
+
+struct external_scnhdr {
+ char s_name[8]; /* section name */
+ char s_paddr[4]; /* physical address, aliased s_nlib */
+ char s_vaddr[4]; /* virtual address */
+ char s_size[4]; /* section size */
+ char s_scnptr[4]; /* file ptr to raw data for section */
+ char s_relptr[4]; /* file ptr to relocation */
+ char s_lnnoptr[4]; /* file ptr to line numbers */
+ char s_nreloc[2]; /* number of relocation entries */
+ char s_nlnno[2]; /* number of line number entries*/
+ char s_flags[4]; /* flags */
+};
+
+#define SCNHDR struct external_scnhdr
+#define SCNHSZ 40
+
+/*
+ * names of "special" sections
+ */
+#define _TEXT ".text"
+#define _DATA ".data"
+#define _BSS ".bss"
+#define _COMMENT ".comment"
+#define _LIB ".lib"
+
+/********************** LINE NUMBERS **********************/
+
+/* 1 line number entry for every "breakpointable" source line in a section.
+ * Line numbers are grouped on a per function basis; first entry in a function
+ * grouping will have l_lnno = 0 and in place of physical address will be the
+ * symbol table index of the function name.
+ */
+struct external_lineno {
+ union {
+ char l_symndx[4]; /* function name symbol index, iff l_lnno == 0*/
+ char l_paddr[4]; /* (physical) address of line number */
+ } l_addr;
+ char l_lnno[2]; /* line number */
+};
+
+
+#define LINENO struct external_lineno
+#define LINESZ 6
+
+
+/********************** SYMBOLS **********************/
+
+#define E_SYMNMLEN 8 /* # characters in a symbol name */
+#define E_FILNMLEN 14 /* # characters in a file name */
+#define E_DIMNUM 4 /* # array dimensions in auxiliary entry */
+
+struct external_syment
+{
+ union {
+ char e_name[E_SYMNMLEN];
+ struct {
+ char e_zeroes[4];
+ char e_offset[4];
+ } e;
+ } e;
+ char e_value[4];
+ char e_scnum[2];
+ char e_type[2];
+ char e_sclass[1];
+ char e_numaux[1];
+};
+
+#define N_BTMASK (0xf)
+#define N_TMASK (0x30)
+#define N_BTSHFT (4)
+#define N_TSHIFT (2)
+
+union external_auxent {
+ struct {
+ char x_tagndx[4]; /* str, un, or enum tag indx */
+ union {
+ struct {
+ char x_lnno[2]; /* declaration line number */
+ char x_size[2]; /* str/union/array size */
+ } x_lnsz;
+ char x_fsize[4]; /* size of function */
+ } x_misc;
+ union {
+ struct { /* if ISFCN, tag, or .bb */
+ char x_lnnoptr[4]; /* ptr to fcn line # */
+ char x_endndx[4]; /* entry ndx past block end */
+ } x_fcn;
+ struct { /* if ISARY, up to 4 dimen. */
+ char x_dimen[E_DIMNUM][2];
+ } x_ary;
+ } x_fcnary;
+ char x_tvndx[2]; /* tv index */
+ } x_sym;
+
+ union {
+ char x_fname[E_FILNMLEN];
+ struct {
+ char x_zeroes[4];
+ char x_offset[4];
+ } x_n;
+ } x_file;
+
+ struct {
+ char x_scnlen[4]; /* section length */
+ char x_nreloc[2]; /* # relocation entries */
+ char x_nlinno[2]; /* # line numbers */
+ char x_checksum[4]; /* section COMDAT checksum */
+ char x_associated[2]; /* COMDAT associated section index */
+ char x_comdat[1]; /* COMDAT selection number */
+ } x_scn;
+
+ struct {
+ char x_tvfill[4]; /* tv fill value */
+ char x_tvlen[2]; /* length of .tv */
+ char x_tvran[2][2]; /* tv range */
+ } x_tv; /* info about .tv section (in auxent of symbol .tv)) */
+
+
+};
+
+#define SYMENT struct external_syment
+#define SYMESZ 18
+#define AUXENT union external_auxent
+#define AUXESZ 18
+
+
+# define _ETEXT "etext"
+
+
+/********************** RELOCATION DIRECTIVES **********************/
+
+
+
+struct external_reloc {
+ char r_vaddr[4];
+ char r_symndx[4];
+ char r_type[2];
+};
+
+
+#define RELOC struct external_reloc
+#define RELSZ 10
+
diff --git a/include/coff/internal.h b/include/coff/internal.h
index 4fbea7ae32c..c6f2760366b 100644
--- a/include/coff/internal.h
+++ b/include/coff/internal.h
@@ -100,7 +100,9 @@ typedef struct _IMAGE_DATA_DIRECTORY
/* Extra stuff in a PE aouthdr */
#define PE_DEF_SECTION_ALIGNMENT 0x1000
-#define PE_DEF_FILE_ALIGNMENT 0x200
+#ifndef PE_DEF_FILE_ALIGNMENT
+# define PE_DEF_FILE_ALIGNMENT 0x200
+#endif
struct internal_extra_pe_aouthdr
{
@@ -301,6 +303,7 @@ struct internal_scnhdr
unsigned long s_nlnno; /* number of line number entries*/
long s_flags; /* flags */
long s_align; /* used on I960 */
+ unsigned char s_page; /* TI COFF load page */
};
/*
diff --git a/include/coff/pe.h b/include/coff/pe.h
index 6932ee87b76..e65562eee8a 100644
--- a/include/coff/pe.h
+++ b/include/coff/pe.h
@@ -89,12 +89,22 @@
#define IMAGE_FILE_MACHINE_SH4 0x1a6
#define IMAGE_FILE_MACHINE_THUMB 0x1c2
+#define IMAGE_SUBSYSTEM_UNKNOWN 0
+#define IMAGE_SUBSYSTEM_NATIVE 1
+#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2
+#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3
+#define IMAGE_SUBSYSTEM_POSIX_CUI 7
+#define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9
+#define IMAGE_SUBSYSTEM_EFI_APPLICATION 10
+#define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11
+#define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12
+
/* Magic values that are true for all dos/nt implementations */
#define DOSMAGIC 0x5a4d
#define NT_SIGNATURE 0x00004550
- /* NT allows long filenames, we want to accommodate this. This may break
- some of the bfd functions */
+/* NT allows long filenames, we want to accommodate this. This may break
+ some of the bfd functions */
#undef FILNMLEN
#define FILNMLEN 18 /* # characters in a file name */
@@ -132,7 +142,6 @@ struct external_PEI_filehdr
char f_nsyms[4]; /* number of symtab entries */
char f_opthdr[2]; /* sizeof(optional hdr) */
char f_flags[2]; /* flags */
-
};
#ifdef COFF_IMAGE_WITH_PE
@@ -146,6 +155,8 @@ struct external_PEI_filehdr
#endif /* COFF_IMAGE_WITH_PE */
+/* 32-bit PE a.out header: */
+
typedef struct
{
AOUTHDR standard;
@@ -174,13 +185,44 @@ typedef struct
char NumberOfRvaAndSizes[4];
/* IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; */
char DataDirectory[16][2][4]; /* 16 entries, 2 elements/entry, 4 chars */
-
} PEAOUTHDR;
-
-
#undef AOUTSZ
#define AOUTSZ (AOUTHDRSZ + 196)
+/* Like PEAOUTHDR, except that the "standard" member has no BaseOfData
+ (aka data_start) member and that some of the members are 8 instead
+ of just 4 bytes long. */
+typedef struct
+{
+ AOUTHDR standard;
+
+ /* NT extra fields; see internal.h for descriptions */
+ char ImageBase[8];
+ char SectionAlignment[4];
+ char FileAlignment[4];
+ char MajorOperatingSystemVersion[2];
+ char MinorOperatingSystemVersion[2];
+ char MajorImageVersion[2];
+ char MinorImageVersion[2];
+ char MajorSubsystemVersion[2];
+ char MinorSubsystemVersion[2];
+ char Reserved1[4];
+ char SizeOfImage[4];
+ char SizeOfHeaders[4];
+ char CheckSum[4];
+ char Subsystem[2];
+ char DllCharacteristics[2];
+ char SizeOfStackReserve[8];
+ char SizeOfStackCommit[8];
+ char SizeOfHeapReserve[8];
+ char SizeOfHeapCommit[8];
+ char LoaderFlags[4];
+ char NumberOfRvaAndSizes[4];
+ /* IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; */
+ char DataDirectory[16][2][4]; /* 16 entries, 2 elements/entry, 4 chars */
+} PEP64AOUTHDR;
+#define PEP64AOUTSZ 240
+
#undef E_FILNMLEN
#define E_FILNMLEN 18 /* # characters in a file name */
diff --git a/include/coff/rs6k64.h b/include/coff/rs6k64.h
new file mode 100644
index 00000000000..80d8e4c0e9e
--- /dev/null
+++ b/include/coff/rs6k64.h
@@ -0,0 +1,236 @@
+/* IBM RS/6000 "XCOFF64" file definitions for BFD.
+ Copyright (C) 2000 Free Software Foundation, Inc. */
+
+/********************** FILE HEADER **********************/
+
+struct external_filehdr {
+ char f_magic[2]; /* magic number */
+ char f_nscns[2]; /* number of sections */
+ char f_timdat[4]; /* time & date stamp */
+ char f_symptr[8];/* file pointer to symtab */
+ char f_opthdr[2]; /* sizeof(optional hdr) */
+ char f_flags[2]; /* flags */
+ char f_nsyms[4]; /* number of symtab entries */
+};
+
+ /* IBM RS/6000 */
+#define U803XTOCMAGIC 0757 /* readonly text segments and TOC, XCOFF64 */
+
+#define BADMAG(x) ((x).f_magic != U803XTOCMAGIC)
+
+#define FILHDR struct external_filehdr
+#define FILHSZ 24
+
+/********************** AOUT "OPTIONAL HEADER" **********************/
+
+
+typedef struct
+{
+ unsigned char magic[2]; /* type of file */
+ unsigned char vstamp[2]; /* version stamp */
+ unsigned char o_debugger[4]; /* reserved */
+ unsigned char text_start[8]; /* base of text used for this file */
+ unsigned char data_start[8]; /* base of data used for this file */
+ unsigned char o_toc[8]; /* address of TOC */
+ unsigned char o_snentry[2]; /* section number of entry point */
+ unsigned char o_sntext[2]; /* section number of .text section */
+ unsigned char o_sndata[2]; /* section number of .data section */
+ unsigned char o_sntoc[2]; /* section number of TOC */
+ unsigned char o_snloader[2]; /* section number of .loader section */
+ unsigned char o_snbss[2]; /* section number of .bss section */
+ unsigned char o_algntext[2]; /* .text alignment */
+ unsigned char o_algndata[2]; /* .data alignment */
+ unsigned char o_modtype[2]; /* module type (??) */
+ unsigned char o_cputype[2]; /* cpu type */
+ unsigned char o_resv2[4]; /* reserved */
+ unsigned char tsize[8]; /* text size bytes, padded to FW bdry */
+ unsigned char dsize[8]; /* initialized data " " */
+ unsigned char bsize[8]; /* uninitialized data " " */
+ unsigned char entry[8]; /* entry pt. */
+ unsigned char o_maxstack[8]; /* max stack size (??) */
+ unsigned char o_maxdata[8]; /* max data size (??) */
+ unsigned char o_resv3[16]; /* reserved */
+}
+AOUTHDR;
+
+#define AOUTSZ 120
+#define SMALL_AOUTSZ (0)
+#define AOUTHDRSZ 72
+
+#define RS6K_AOUTHDR_OMAGIC 0x0107 /* old: text & data writeable */
+#define RS6K_AOUTHDR_NMAGIC 0x0108 /* new: text r/o, data r/w */
+#define RS6K_AOUTHDR_ZMAGIC 0x010B /* paged: text r/o, both page-aligned */
+
+
+/********************** SECTION HEADER **********************/
+
+
+struct external_scnhdr {
+ char s_name[8]; /* section name */
+ char s_paddr[8]; /* physical address, aliased s_nlib */
+ char s_vaddr[8]; /* virtual address */
+ char s_size[8]; /* section size */
+ char s_scnptr[8]; /* file ptr to raw data for section */
+ char s_relptr[8]; /* file ptr to relocation */
+ char s_lnnoptr[8]; /* file ptr to line numbers */
+ char s_nreloc[4]; /* number of relocation entries */
+ char s_nlnno[4]; /* number of line number entries*/
+ char s_flags[4]; /* flags */
+ char s_pad[4]; /* padding */
+};
+
+/*
+ * names of "special" sections
+ */
+#define _TEXT ".text"
+#define _DATA ".data"
+#define _BSS ".bss"
+#define _PAD ".pad"
+#define _LOADER ".loader"
+
+#define SCNHDR struct external_scnhdr
+
+#define SCNHSZ 72
+
+/* XCOFF uses a special .loader section with type STYP_LOADER. */
+#define STYP_LOADER 0x1000
+
+/* XCOFF uses a special .debug section with type STYP_DEBUG. */
+#define STYP_DEBUG 0x2000
+
+/* XCOFF handles line number or relocation overflow by creating
+ another section header with STYP_OVRFLO set. */
+#define STYP_OVRFLO 0x8000
+
+/********************** LINE NUMBERS **********************/
+
+/* 1 line number entry for every "breakpointable" source line in a section.
+ * Line numbers are grouped on a per function basis; first entry in a function
+ * grouping will have l_lnno = 0 and in place of physical address will be the
+ * symbol table index of the function name.
+ */
+struct external_lineno {
+ union {
+ char l_symndx[8];/* function name symbol index, iff l_lnno == 0*/
+ char l_paddr[8]; /* (physical) address of line number */
+ } l_addr;
+ char l_lnno[4]; /* line number */
+};
+
+
+#define LINENO struct external_lineno
+
+#define LINESZ 12
+
+
+/********************** SYMBOLS **********************/
+
+#define E_SYMNMLEN 8 /* # characters in a symbol name */
+#define E_FILNMLEN 14 /* # characters in a file name */
+#define E_DIMNUM 4 /* # array dimensions in auxiliary entry */
+
+struct external_syment
+{
+ union {
+ char e_value[8];
+ } e;
+ char e_offset[4];
+ char e_scnum[2];
+ char e_type[2];
+ char e_sclass[1];
+ char e_numaux[1];
+};
+
+
+
+#define N_BTMASK (017)
+#define N_TMASK (060)
+#define N_BTSHFT (4)
+#define N_TSHIFT (2)
+
+
+union external_auxent {
+
+ struct {
+ union {
+ struct {
+ char x_lnno[4]; /* declaration line number */
+ char x_size[2]; /* str/union/array size */
+ } x_lnsz;
+ struct {
+ char x_lnnoptr[8];/* ptr to fcn line */
+ char x_fsize[4]; /* size of function */
+ char x_endndx[4]; /* entry ndx past block end */
+ } x_fcn;
+ } x_fcnary;
+ } x_sym;
+
+ union {
+ char x_fname[E_FILNMLEN];
+ struct {
+ char x_zeroes[4];
+ char x_offset[4];
+ char x_pad[6];
+ unsigned char x_ftype[1];
+ unsigned char x_resv[2];
+ } x_n;
+ } x_file;
+
+ struct {
+ char x_exptr[8];
+ char x_fsize[4];
+ char x_endndx[4];
+ char x_pad[1];
+ } x_except;
+
+ struct {
+ unsigned char x_scnlen_lo[4];
+ unsigned char x_parmhash[4];
+ unsigned char x_snhash[2];
+ unsigned char x_smtyp[1];
+ unsigned char x_smclas[1];
+ unsigned char x_scnlen_hi[4];
+ unsigned char x_pad[1];
+ } x_csect;
+
+ struct {
+ char x_pad[17];
+ char x_auxtype[1];
+ } x_auxtype;
+};
+
+#define SYMENT struct external_syment
+#define SYMESZ 18
+#define AUXENT union external_auxent
+#define AUXESZ 18
+#define DBXMASK 0x80 /* for dbx storage mask */
+#define SYMNAME_IN_DEBUG(symptr) ((symptr)->n_sclass & DBXMASK)
+
+/* Values for auxtype field in XCOFF64, taken from AIX 4.3 sym.h */
+#define _AUX_EXCEPT 255
+#define _AUX_FCN 254
+#define _AUX_SYM 253
+#define _AUX_FILE 252
+#define _AUX_CSECT 251
+
+
+
+/********************** RELOCATION DIRECTIVES **********************/
+
+
+struct external_reloc {
+ char r_vaddr[8];
+ char r_symndx[4];
+ char r_size[1];
+ char r_type[1];
+};
+
+
+#define RELOC struct external_reloc
+#define RELSZ 14
+
+#define DEFAULT_DATA_SECTION_ALIGNMENT 4
+#define DEFAULT_BSS_SECTION_ALIGNMENT 4
+#define DEFAULT_TEXT_SECTION_ALIGNMENT 4
+/* For new sections we havn't heard of before */
+#define DEFAULT_SECTION_ALIGNMENT 4
diff --git a/include/coff/ti.h b/include/coff/ti.h
index 6a937813675..9d521b582e5 100644
--- a/include/coff/ti.h
+++ b/include/coff/ti.h
@@ -75,7 +75,6 @@ struct external_filehdr {
#define COFF_ADJUST_FILEHDR_IN_POST(abfd,src,dst) \
do { ((struct internal_filehdr *)(dst))->f_target_id = \
bfd_h_get_16(abfd, (bfd_byte *)(((FILHDR *)(src))->f_target_id)); \
-((struct internal_filehdr *)(dst))->f_flags |= F_LDPAGE; \
} while(0)
#endif
@@ -160,9 +159,6 @@ struct external_scnhdr {
/*
* Special section flags
*/
-/* recognized load pages */
-#define PG_PROG 0x0 /* PROG page */
-#define PG_DATA 0x1 /* DATA page */
/* TI COFF defines these flags;
STYP_CLINK: the section should be excluded from the final
@@ -233,25 +229,26 @@ PUT_SCNHDR_PAGE(ABFD,((struct internal_scnhdr *)(INT))->s_page, \
(bfd_byte *)((SCNHDR *)(EXT))->s_page); \
} while(0)
-/* page macros
+/* Page macros
- the first GDB port requires flags in its remote memory access commands to
- distinguish between data/prog space. hopefully we can make this go away
- eventually. stuff the page in the upper bits of a 32-bit address, since
+ The first GDB port requires flags in its remote memory access commands to
+ distinguish between data/prog space. Hopefully we can make this go away
+ eventually. Stuff the page in the upper bits of a 32-bit address, since
the c5x family only uses 16 or 23 bits.
c2x, c5x and most c54x devices have 16-bit addresses, but the c548 has
- 23-bit program addresses. make sure the page flags don't interfere
+ 23-bit program addresses. Make sure the page flags don't interfere.
These flags are used by GDB to identify the destination page for
addresses.
*/
-#define LONG_ADDRESSES 1
-#define PG_SHIFT (LONG_ADDRESSES ? 30 : 16)
-#define ADDR_MASK ((1ul<<PG_SHIFT)-1)/* 16 or 24-bit addresses */
-#define PG_MASK (3ul<<PG_SHIFT)
-#define PG_TO_FLAG(p) ((p)<<PG_SHIFT)
-#define FLAG_TO_PG(f) (((f)&PG_MASK)>>PG_SHIFT)
+/* recognized load pages */
+#define PG_PROG 0x0 /* PROG page */
+#define PG_DATA 0x1 /* DATA page */
+
+#define ADDR_MASK 0x00FFFFFF
+#define PG_TO_FLAG(p) (((unsigned long)(p) & 0xFF) << 24)
+#define FLAG_TO_PG(f) (((f) >> 24) & 0xFF)
/*
* names of "special" sections
diff --git a/include/dis-asm.h b/include/dis-asm.h
index 6e6c04b53ae..7efd4e0ec98 100644
--- a/include/dis-asm.h
+++ b/include/dis-asm.h
@@ -157,6 +157,7 @@ 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_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_m68k PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_z8001 PARAMS ((bfd_vma, disassemble_info*));
@@ -192,6 +193,7 @@ extern int print_insn_d30v PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_v850 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_tic30 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_vax 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_pj PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_avr PARAMS ((bfd_vma, disassemble_info*));
diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog
index fd94a04226c..ecbae349f55 100644
--- a/include/elf/ChangeLog
+++ b/include/elf/ChangeLog
@@ -1,3 +1,39 @@
+2000-06-03 Alan Modra <alan@linuxcare.com.au>
+
+ * reloc-macros.h (START_RELOC_NUMBERS): Fix name clash for
+ !__STDC__ case.
+ (RELOC_NUMBER): Use ansi stringify if ALMOST_STDC defined.
+
+2000-05-22 Richard Henderson <rth@cygnus.com>
+
+ * ia64.h (R_IA64_PCREL60B, R_IA64_PCREL21BI): New.
+ (R_IA64_PCREL22, R_IA64_PCREL64I): New.
+
+2000-05-02 H.J. Lu <hjl@gnu.org>
+
+ * common.h (ELFOSABI_NONE): Renamed from ELFOSABI_SYSV.
+ (ELFOSABI_MODESTO): Defined.
+ (ELFOSABI_OPENBSD): Likewise.
+
+Fri Apr 21 13:20:53 2000 Richard Henderson <rth@cygnus.com>
+ David Mosberger <davidm@hpl.hp.com>
+
+ * ia64.h: New file.
+
+2000-04-14 H.J. Lu <hjl@gnu.org>
+
+ * common.h (ELFOSABI_TRUE64): Renamed to ELFOSABI_TRU64.
+
+2000-04-14 H.J. Lu <hjl@gnu.org>
+
+ * common.h (ELFOSABI_NETBSD): Defined.
+ (ELFOSABI_HURD): Likewise.
+ (ELFOSABI_SOLARIS): Likewise.
+ (ELFOSABI_MONTEREY): Likewise.
+ (ELFOSABI_IRIX): Likewise.
+ (ELFOSABI_FREEBSD): Likewise.
+ (ELFOSABI_TRUE64): Likewise.
+
2000-04-07 Nick Clifton <nickc@cygnus.com>
* arm-oabi.h: Delete.
diff --git a/include/elf/common.h b/include/elf/common.h
index fe8c2169d88..09b96697ad8 100644
--- a/include/elf/common.h
+++ b/include/elf/common.h
@@ -58,9 +58,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define EI_VERSION 6 /* File version */
#define EI_OSABI 7 /* Operating System/ABI indication */
-#define ELFOSABI_SYSV 0 /* UNIX System V ABI */
+#define ELFOSABI_NONE 0 /* UNIX System V ABI */
#define ELFOSABI_HPUX 1 /* HP-UX operating system */
+#define ELFOSABI_NETBSD 2 /* NetBSD */
#define ELFOSABI_LINUX 3 /* GNU/Linux */
+#define ELFOSABI_HURD 4 /* GNU/Hurd */
+#define ELFOSABI_SOLARIS 6 /* Solaris */
+#define ELFOSABI_MONTEREY 7 /* Monterey */
+#define ELFOSABI_IRIX 8 /* IRIX */
+#define ELFOSABI_FREEBSD 9 /* FreeBSD */
+#define ELFOSABI_TRU64 10 /* TRU64 UNIX */
+#define ELFOSABI_MODESTO 11 /* Novell Modesto */
+#define ELFOSABI_OPENBSD 12 /* OpenBSD */
#define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */
#define ELFOSABI_ARM 97 /* ARM */
diff --git a/include/elf/ia64.h b/include/elf/ia64.h
new file mode 100644
index 00000000000..9d50030e512
--- /dev/null
+++ b/include/elf/ia64.h
@@ -0,0 +1,172 @@
+/* IA-64 ELF support for BFD.
+ Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+
+#ifndef _ELF_IA64_H
+#define _ELF_IA64_H
+
+/* Bits in the e_flags field of the Elf64_Ehdr: */
+
+#define EF_IA_64_MASKOS 0x0000000f /* os-specific flags */
+#define EF_IA_64_ABI64 (1 << 4) /* 64-bit ABI */
+#define EF_IA_64_ARCH 0xff000000 /* arch. version mask */
+
+/* ??? These four definitions are not part of the SVR4 ABI.
+ They were present in David's initial code drop, so it is probable
+ that they are used by HP/UX. */
+#define EF_IA_64_TRAPNIL (1 << 0) /* trap NIL pointer dereferences */
+#define EF_IA_64_EXT (1 << 2) /* program uses arch. extensions */
+#define EF_IA_64_BE (1 << 3) /* PSR BE bit set (big-endian) */
+#define EFA_IA_64_EAS2_3 0x23000000 /* ia64 EAS 2.3 */
+
+#define ELF_STRING_ia64_archext ".IA_64.archext"
+#define ELF_STRING_ia64_pltoff ".IA_64.pltoff"
+#define ELF_STRING_ia64_unwind ".IA_64.unwind"
+#define ELF_STRING_ia64_unwind_info ".IA_64.unwind_info"
+
+/* Bits in the sh_flags field of Elf64_Shdr: */
+
+#define SHF_IA_64_SHORT 0x10000000 /* section near gp */
+#define SHF_IA_64_NORECOV 0x20000000 /* spec insns w/o recovery */
+
+/* Possible values for sh_type in Elf64_Shdr: */
+
+#define SHT_IA_64_EXT (SHT_LOPROC + 0) /* extension bits */
+#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) /* unwind bits */
+
+/* Bits in the p_flags field of Elf64_Phdr: */
+
+#define PF_IA_64_NORECOV 0x80000000
+
+/* Possible values for p_type in Elf64_Phdr: */
+
+#define PT_IA_64_ARCHEXT (PT_LOPROC + 0) /* arch extension bits */
+#define PT_IA_64_UNWIND (PT_LOPROC + 1) /* ia64 unwind bits */
+
+/* Possible values for d_tag in Elf64_Dyn: */
+
+#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0)
+
+/* ia64-specific relocation types: */
+
+/* Relocs apply to specific instructions within a bundle. The least
+ significant 2 bits of the address indicate which instruction in the
+ bundle the reloc refers to (0=first slot, 1=second slow, 2=third
+ slot, 3=undefined) and the remaining bits give the address of the
+ bundle (16 byte aligned).
+
+ The top 5 bits of the reloc code specifies the expression type, the
+ low 3 bits the format of the data word being relocated.
+
+ ??? Relocations below marked ## are not part of the SVR4 processor
+ suppliment. They were present in David's initial code drop, so it
+ is possible that they are used by HP/UX. */
+
+#include "elf/reloc-macros.h"
+
+START_RELOC_NUMBERS (elf_ia64_reloc_type)
+ RELOC_NUMBER (R_IA64_NONE, 0x00) /* none */
+
+ RELOC_NUMBER (R_IA64_IMM14, 0x21) /* symbol + addend, add imm14 */
+ RELOC_NUMBER (R_IA64_IMM22, 0x22) /* symbol + addend, add imm22 */
+ RELOC_NUMBER (R_IA64_IMM64, 0x23) /* symbol + addend, mov imm64 */
+ RELOC_NUMBER (R_IA64_DIR32MSB, 0x24) /* symbol + addend, data4 MSB */
+ RELOC_NUMBER (R_IA64_DIR32LSB, 0x25) /* symbol + addend, data4 LSB */
+ RELOC_NUMBER (R_IA64_DIR64MSB, 0x26) /* symbol + addend, data8 MSB */
+ RELOC_NUMBER (R_IA64_DIR64LSB, 0x27) /* symbol + addend, data8 LSB */
+
+ RELOC_NUMBER (R_IA64_GPREL22, 0x2a) /* @gprel(sym + add), add imm22 */
+ RELOC_NUMBER (R_IA64_GPREL64I, 0x2b) /* @gprel(sym + add), mov imm64 */
+ RELOC_NUMBER (R_IA64_GPREL32MSB, 0x2c) /* @gprel(sym + add), data4 MSB ## */
+ RELOC_NUMBER (R_IA64_GPREL32LSB, 0x2d) /* @gprel(sym + add), data4 LSB ## */
+ RELOC_NUMBER (R_IA64_GPREL64MSB, 0x2e) /* @gprel(sym + add), data8 MSB */
+ RELOC_NUMBER (R_IA64_GPREL64LSB, 0x2f) /* @gprel(sym + add), data8 LSB */
+
+ RELOC_NUMBER (R_IA64_LTOFF22, 0x32) /* @ltoff(sym + add), add imm22 */
+ RELOC_NUMBER (R_IA64_LTOFF64I, 0x33) /* @ltoff(sym + add), mov imm64 */
+
+ RELOC_NUMBER (R_IA64_PLTOFF22, 0x3a) /* @pltoff(sym + add), add imm22 */
+ RELOC_NUMBER (R_IA64_PLTOFF64I, 0x3b) /* @pltoff(sym + add), mov imm64 */
+ RELOC_NUMBER (R_IA64_PLTOFF64MSB, 0x3e) /* @pltoff(sym + add), data8 MSB */
+ RELOC_NUMBER (R_IA64_PLTOFF64LSB, 0x3f) /* @pltoff(sym + add), data8 LSB */
+
+ RELOC_NUMBER (R_IA64_FPTR64I, 0x43) /* @fptr(sym + add), mov imm64 */
+ RELOC_NUMBER (R_IA64_FPTR32MSB, 0x44) /* @fptr(sym + add), data4 MSB */
+ RELOC_NUMBER (R_IA64_FPTR32LSB, 0x45) /* @fptr(sym + add), data4 LSB */
+ RELOC_NUMBER (R_IA64_FPTR64MSB, 0x46) /* @fptr(sym + add), data8 MSB */
+ RELOC_NUMBER (R_IA64_FPTR64LSB, 0x47) /* @fptr(sym + add), data8 LSB */
+
+ RELOC_NUMBER (R_IA64_PCREL60B, 0x48) /* @pcrel(sym + add), brl */
+ RELOC_NUMBER (R_IA64_PCREL21B, 0x49) /* @pcrel(sym + add), ptb, call */
+ RELOC_NUMBER (R_IA64_PCREL21M, 0x4a) /* @pcrel(sym + add), chk.s */
+ RELOC_NUMBER (R_IA64_PCREL21F, 0x4b) /* @pcrel(sym + add), fchkf */
+ RELOC_NUMBER (R_IA64_PCREL32MSB, 0x4c) /* @pcrel(sym + add), data4 MSB */
+ RELOC_NUMBER (R_IA64_PCREL32LSB, 0x4d) /* @pcrel(sym + add), data4 LSB */
+ RELOC_NUMBER (R_IA64_PCREL64MSB, 0x4e) /* @pcrel(sym + add), data8 MSB */
+ RELOC_NUMBER (R_IA64_PCREL64LSB, 0x4f) /* @pcrel(sym + add), data8 LSB */
+
+ RELOC_NUMBER (R_IA64_LTOFF_FPTR22, 0x52) /* @ltoff(@fptr(s+a)), imm22 */
+ RELOC_NUMBER (R_IA64_LTOFF_FPTR64I, 0x53) /* @ltoff(@fptr(s+a)), imm64 */
+ RELOC_NUMBER (R_IA64_LTOFF_FPTR64MSB, 0x56) /* @ltoff(@fptr(s+a)), 8 MSB ##*/
+ RELOC_NUMBER (R_IA64_LTOFF_FPTR64LSB, 0x57) /* @ltoff(@fptr(s+a)), 8 LSB ##*/
+
+ RELOC_NUMBER (R_IA64_SEGBASE, 0x58) /* set segment base for @segrel ## */
+ RELOC_NUMBER (R_IA64_SEGREL32MSB, 0x5c) /* @segrel(sym + add), data4 MSB */
+ RELOC_NUMBER (R_IA64_SEGREL32LSB, 0x5d) /* @segrel(sym + add), data4 LSB */
+ RELOC_NUMBER (R_IA64_SEGREL64MSB, 0x5e) /* @segrel(sym + add), data8 MSB */
+ RELOC_NUMBER (R_IA64_SEGREL64LSB, 0x5f) /* @segrel(sym + add), data8 LSB */
+
+ RELOC_NUMBER (R_IA64_SECREL32MSB, 0x64) /* @secrel(sym + add), data4 MSB */
+ RELOC_NUMBER (R_IA64_SECREL32LSB, 0x65) /* @secrel(sym + add), data4 LSB */
+ RELOC_NUMBER (R_IA64_SECREL64MSB, 0x66) /* @secrel(sym + add), data8 MSB */
+ RELOC_NUMBER (R_IA64_SECREL64LSB, 0x67) /* @secrel(sym + add), data8 LSB */
+
+ RELOC_NUMBER (R_IA64_REL32MSB, 0x6c) /* data 4 + REL */
+ RELOC_NUMBER (R_IA64_REL32LSB, 0x6d) /* data 4 + REL */
+ RELOC_NUMBER (R_IA64_REL64MSB, 0x6e) /* data 8 + REL */
+ RELOC_NUMBER (R_IA64_REL64LSB, 0x6f) /* data 8 + REL */
+
+ RELOC_NUMBER (R_IA64_LTV32MSB, 0x70) /* symbol + addend, data4 MSB */
+ RELOC_NUMBER (R_IA64_LTV32LSB, 0x71) /* symbol + addend, data4 LSB */
+ RELOC_NUMBER (R_IA64_LTV64MSB, 0x72) /* symbol + addend, data8 MSB */
+ RELOC_NUMBER (R_IA64_LTV64LSB, 0x73) /* symbol + addend, data8 LSB */
+
+ RELOC_NUMBER (R_IA64_PCREL21BI, 0x79) /* @pcrel(sym + add), ptb, call */
+ RELOC_NUMBER (R_IA64_PCREL22, 0x7a) /* @pcrel(sym + add), imm22 */
+ RELOC_NUMBER (R_IA64_PCREL64I, 0x7b) /* @pcrel(sym + add), imm64 */
+
+ RELOC_NUMBER (R_IA64_IPLTMSB, 0x80) /* dynamic reloc, imported PLT, MSB */
+ RELOC_NUMBER (R_IA64_IPLTLSB, 0x81) /* dynamic reloc, imported PLT, LSB */
+ RELOC_NUMBER (R_IA64_EPLTMSB, 0x82) /* dynamic reloc, exported PLT, ## */
+ RELOC_NUMBER (R_IA64_EPLTLSB, 0x83) /* dynamic reloc, exported PLT, ## */
+ RELOC_NUMBER (R_IA64_COPY, 0x84) /* dynamic reloc, data copy ## */
+ RELOC_NUMBER (R_IA64_LTOFF22X, 0x86) /* LTOFF22, relaxable. */
+ RELOC_NUMBER (R_IA64_LDXMOV, 0x87) /* Use of LTOFF22X. */
+
+ RELOC_NUMBER (R_IA64_TPREL22, 0x92) /* sym-TP+add, add imm22 ## */
+ RELOC_NUMBER (R_IA64_TPREL64MSB, 0x96) /* sym-TP+add, data8 MSB ## */
+ RELOC_NUMBER (R_IA64_TPREL64LSB, 0x97) /* sym-TP+add, data8 LSB ## */
+
+ RELOC_NUMBER (R_IA64_LTOFF_TP22, 0x9a) /* @ltoff(sym-TP+add), add imm22 ## */
+
+ FAKE_RELOC (R_IA64_MAX_RELOC_CODE, 0x9a)
+END_RELOC_NUMBERS
+
+#endif /* _ELF_IA64_H */
diff --git a/include/elf/mips.h b/include/elf/mips.h
index 1e2a9f99a70..e5e37393d9b 100644
--- a/include/elf/mips.h
+++ b/include/elf/mips.h
@@ -1,5 +1,5 @@
/* MIPS ELF support for BFD.
- Copyright (C) 1993, 1994, 1995, 1996, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1994, 1995, 1996, 1998, 2000 Free Software Foundation, Inc.
By Ian Lance Taylor, Cygnus Support, <ian@cygnus.com>, from
information in the System V Application Binary Interface, MIPS
diff --git a/include/elf/mn10300.h b/include/elf/mn10300.h
index 1b90a137961..4e7fce5c866 100644
--- a/include/elf/mn10300.h
+++ b/include/elf/mn10300.h
@@ -1,5 +1,5 @@
/* MN10300 ELF support for BFD.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
diff --git a/include/elf/reloc-macros.h b/include/elf/reloc-macros.h
index 42174caeeae..9c27e8930d6 100644
--- a/include/elf/reloc-macros.h
+++ b/include/elf/reloc-macros.h
@@ -1,5 +1,5 @@
/* Generic relocation support for BFD.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -59,7 +59,7 @@
}
}
*/
-
+
#ifndef _RELOC_MACROS_H
#define _RELOC_MACROS_H
@@ -78,15 +78,15 @@ name (rtype) \
switch (rtype) \
{
-#ifdef __STDC__
+#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 FAKE_RELOC(name, number)
#define EMPTY_RELOC(name)
-
+
#define END_RELOC_NUMBERS \
default: return NULL; \
} \
@@ -100,15 +100,15 @@ name (rtype) \
to -1 so that the first real entry will still default to 0). Further
entries then prepend a comma to their definitions, creating a list
of enumerator entries that will satisfy these compilers. */
-#ifdef __STDC__
+#if defined (__STDC__) || defined (ALMOST_STDC)
#define START_RELOC_NUMBERS(name) enum name { _##name = -1
#else
-#define START_RELOC_NUMBERS(name) enum name { name = -1
+#define START_RELOC_NUMBERS(name) enum name { _/**/name = -1
#endif
-
+
#define RELOC_NUMBER(name, number) , name = number
-#define FAKE_RELOC(name, number) , name = number
-#define EMPTY_RELOC(name) , name
+#define FAKE_RELOC(name, number) , name = number
+#define EMPTY_RELOC(name) , name
#define END_RELOC_NUMBERS };
#endif
diff --git a/include/filenames.h b/include/filenames.h
new file mode 100644
index 00000000000..ba933c8530e
--- /dev/null
+++ b/include/filenames.h
@@ -0,0 +1,51 @@
+/* Macros for taking apart, interpreting and processing file names.
+
+ These are here because some non-Posix (a.k.a. DOSish) systems have
+ drive letter brain-damage at the beginning of an absolute file name,
+ use forward- and back-slash in path names interchangeably, and
+ some of them have case-insensitive file names.
+
+ Copyright 2000 Free Software Foundation, Inc.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef FILENAMES_H
+#define FILENAMES_H
+
+#if defined(__MSDOS__) || defined(_WIN32) || defined(__OS2__)
+
+#ifndef HAVE_DOS_BASED_FILE_SYSTEM
+#define HAVE_DOS_BASED_FILE_SYSTEM 1
+#endif
+
+#define IS_DIR_SEPARATOR(c) ((c) == '/' || (c) == '\\')
+/* Note that IS_ABSOLUTE_PATH accepts d:foo as well, although it is
+ only semi-absolute. This is because the users of IS_ABSOLUTE_PATH
+ want to know whether to prepend the current working directory to
+ a file name, which should not be done with a name like d:foo. */
+#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0]) || (((f)[0]) && ((f)[1] == ':')))
+#define FILENAME_CMP(s1, s2) strcasecmp(s1, s2)
+
+#else /* not DOSish */
+
+#define IS_DIR_SEPARATOR(c) ((c) == '/')
+#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0]))
+#define FILENAME_CMP(s1, s2) strcmp(s1, s2)
+
+#endif /* not DOSish */
+
+#endif /* FILENAMES_H */
diff --git a/include/floatformat.h b/include/floatformat.h
index 90daca21bcb..e4d1d150f26 100644
--- a/include/floatformat.h
+++ b/include/floatformat.h
@@ -1,5 +1,5 @@
/* IEEE floating point support declarations, for GDB, the GNU Debugger.
- Copyright (C) 1991 Free Software Foundation, Inc.
+ Copyright (C) 1991, 2000 Free Software Foundation, Inc.
This file is part of GDB.
@@ -73,6 +73,9 @@ struct floatformat
/* Is the integer bit explicit or implicit? */
enum floatformat_intbit intbit;
+
+ /* Internal name for debugging. */
+ const char *name;
};
/* floatformats for IEEE single and double, big and little endian. */
diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog
index 7452c2beac8..de2e3c6817c 100644
--- a/include/opcode/ChangeLog
+++ b/include/opcode/ChangeLog
@@ -1,3 +1,64 @@
+Wed Apr 12 17:11:20 2000 Donald Lindsay <dlindsay@hound.cygnus.com>
+
+ * d10v.h: added ALONE attribute for d10v_opcode.exec_type.
+
+2000-05-23 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * i386.h: Allow d suffix on iret, and add DefaultSize modifier.
+
+2000-05-17 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * i386.h: Use sl_FP, not sl_Suf for fild.
+
+2000-05-16 Frank Ch. Eigler <fche@redhat.com>
+
+ * cgen.h (CGEN_MAX_SYNTAX_BYTES): Increase to 32. Check that
+ it exceeds CGEN_ACTUAL_MAX_SYNTAX_BYTES, if set.
+ (CGEN_MAX_IFMT_OPERANDS): Increase to 16. Check that it exceeds
+ CGEN_ACTUAL_MAX_IFMT_OPERANDS, if set.
+
+2000-05-13 Alan Modra <alan@linuxcare.com.au>,
+
+ * i386.h (i386_optab): Cpu686 for sysenter,sysexit,fxsave,fxrestore.
+
+2000-05-13 Alan Modra <alan@linuxcare.com.au>,
+ Alexander Sokolov <robocop@netlink.ru>
+
+ * i386.h (i386_optab): Add cpu_flags for all instructions.
+
+2000-05-13 Alan Modra <alan@linuxcare.com.au>
+
+ From Gavin Romig-Koch <gavin@cygnus.com>
+ * i386.h (wld_Suf): Define. Use on pushf, popf, pusha, popa.
+
+2000-05-04 Timothy Wall <twall@cygnus.com>
+
+ * tic54x.h: New.
+
+2000-05-03 J.T. Conklin <jtc@redback.com>
+
+ * ppc.h (PPC_OPCODE_ALTIVEC): New opcode flag for vector unit.
+ (PPC_OPERAND_VR): New operand flag for vector registers.
+
+2000-05-01 Kazu Hirata <kazu@hxi.com>
+
+ * h8300.h (EOP): Add missing initializer.
+
+Fri Apr 21 15:03:37 2000 Jason Eckhardt <jle@cygnus.com>
+
+ * hppa.h (pa_opcodes): New opcodes for PA2.0 wide mode
+ forms of ld/st{b,h,w,d} and fld/fst{w,d} (16-bit displacements).
+ New operand types l,y,&,fe,fE,fx added to support above forms.
+ (pa_opcodes): Replaced usage of 'x' as source/target for
+ floating point double-word loads/stores with 'fx'.
+
+Fri Apr 21 13:20:53 2000 Richard Henderson <rth@cygnus.com>
+ David Mosberger <davidm@hpl.hp.com>
+ Timothy Wall <twall@cygnus.com>
+ Jim Wilson <wilson@cygnus.com>
+
+ * ia64.h: New file.
+
2000-03-27 Nick Clifton <nickc@cygnus.com>
* d30v.h (SHORT_A1): Fix value.
diff --git a/include/opcode/cgen.h b/include/opcode/cgen.h
index 0cff7c82682..1db272bbb11 100644
--- a/include/opcode/cgen.h
+++ b/include/opcode/cgen.h
@@ -735,9 +735,17 @@ typedef struct
into the operand table. The operand table doesn't exist in C, per se, as
the data is recorded in the parse/insert/extract/print switch statements. */
-#ifndef CGEN_MAX_SYNTAX_BYTES
-#define CGEN_MAX_SYNTAX_BYTES 16
+/* This should be at least as large as necessary for any target. */
+#define CGEN_MAX_SYNTAX_BYTES 32
+
+/* A target may know its own precise maximum. Assert that it falls below
+ the above limit. */
+#ifdef CGEN_ACTUAL_MAX_SYNTAX_BYTES
+#if CGEN_ACTUAL_MAX_SYNTAX_BYTES > CGEN_MAX_SYNTAX_BYTES
+#error "CGEN_ACTUAL_MAX_SYNTAX_BYTES too high - enlarge CGEN_MAX_SYNTAX_BYTES"
#endif
+#endif
+
typedef struct
{
@@ -824,9 +832,17 @@ typedef struct {
#define CGEN_IFMT_IFLD_IFLD(ii) ((ii)->ifld)
} CGEN_IFMT_IFLD;
-#ifndef CGEN_MAX_IFMT_OPERANDS
-#define CGEN_MAX_IFMT_OPERANDS 1
+/* This should be at least as large as necessary for any target. */
+#define CGEN_MAX_IFMT_OPERANDS 16
+
+/* A target may know its own precise maximum. Assert that it falls below
+ the above limit. */
+#ifdef CGEN_ACTUAL_MAX_IFMT_OPERANDS
+#if CGEN_ACTUAL_MAX_IFMT_OPERANDS > CGEN_MAX_IFMT_OPERANDS
+#error "CGEN_ACTUAL_MAX_IFMT_OPERANDS too high - enlarge CGEN_MAX_IFMT_OPERANDS"
#endif
+#endif
+
typedef struct
{
diff --git a/include/opcode/d10v.h b/include/opcode/d10v.h
index 7c6d32ddffa..0abd9ee8e5e 100644
--- a/include/opcode/d10v.h
+++ b/include/opcode/d10v.h
@@ -78,6 +78,7 @@ struct d10v_opcode
#define WF0 128 /* modifies f0 */
#define WCAR 256 /* write Carry */
#define BRANCH 512 /* branch, no link */
+#define ALONE 1024 /* short but pack with a NOP if on asm line alone */
/* the opcode */
long opcode;
diff --git a/include/opcode/h8300.h b/include/opcode/h8300.h
index 3a05e4ee21c..6def737086c 100644
--- a/include/opcode/h8300.h
+++ b/include/opcode/h8300.h
@@ -182,7 +182,7 @@ struct h8_opcode
#define NEW_SOP(code, in,x,name) \
{code, in, x, name
-#define EOP ,0,0,0 }
+#define EOP ,0,0,0,0 }
#define TWOOP(code, name, op1, op2,op3) \
{ code,1, 2,name, {{IMM8, RD8, E}}, {{ op1, RD8, IMM8, IGNORE, E, 0, 0, 0, 0}}, 0, 0, 0, 0},\
diff --git a/include/opcode/hppa.h b/include/opcode/hppa.h
index 1c41ff07c25..9ce59c364f5 100644
--- a/include/opcode/hppa.h
+++ b/include/opcode/hppa.h
@@ -70,9 +70,9 @@ struct pa_opcode
In the args field, the following characters are unused:
- ' " & - / 34 6789:;< > @'
+ ' " - / 34 6789:;< > @'
' C M [\] '
- ' e g l y } '
+ ' e g } '
Here are all the characters:
@@ -92,6 +92,7 @@ Kinds of operands:
i 11 bit immediate value at 31
j 14 bit immediate value at 31
k 21 bit immediate value at 31
+ l 16 bit immediate value at 31 (wide mode only, unusual encoding).
n nullification for branch instructions
N nullification for spop and copr instructions
w 12 bit branch displacement
@@ -157,6 +158,8 @@ Also these:
# 14bit offset for double precision FP load long/store.
J Yet another 14bit offset with an unusual encoding.
K Yet another 14bit offset with an unusual encoding.
+ y 16bit offset for single precision FP long load/store (PA2.0 wide).
+ & 16bit offset for double precision FP long load/store (PA2.0 wide).
Y %sr0,%r31 -- implicit target of be,l instruction.
@ implicit immediate value of 0
@@ -243,6 +246,8 @@ Floating point registers all have 'f' as a prefix:
fB operand 2 register with L/R halves at 15
fC operand 3 register with L/R halves at 16:18,21:23
fe Like fT, but encoding is different.
+ fE Same as fe, except prints a space before register during disasm.
+ fx target register at 15 (only for PA 2.0 long format FLDD/FSTD).
Float registers for fmpyadd and fmpysub:
@@ -257,7 +262,7 @@ Float registers for fmpyadd and fmpysub:
/* List of characters not to put a space after. Note that
"," is included, as the "spopN" operations use literal
- commas in their completer sections. */
+ commas in their completer sections. */
static const char *const completer_chars = ",CcY<>?!@+&U~FfGHINnOoZMadu|/=0123%e$m}";
/* The order of the opcodes in this table is significant:
@@ -270,7 +275,7 @@ static const char *const completer_chars = ",CcY<>?!@+&U~FfGHINnOoZMadu|/=0123%e
static const struct pa_opcode pa_opcodes[] =
{
-/* pseudo-instructions */
+/* Pseudo-instructions. */
{ "ldi", 0x34000000, 0xffe0c000, "j,x", pa10, 0},/* ldo val(r0),r */
@@ -312,8 +317,9 @@ static const struct pa_opcode pa_opcodes[] =
{ "ldd", 0x0c0000c0, 0xfc0013c0, "cxccx(b),t", pa20, FLAG_STRICT},
{ "ldd", 0x0c0010c0, 0xfc0013c0, "cmcc5(s,b),t", pa20, FLAG_STRICT},
{ "ldd", 0x0c0010c0, 0xfc0013c0, "cmcc5(b),t", pa20, FLAG_STRICT},
-{ "ldd", 0x50000000, 0xfc000002, "cq#(s,b),x", pa20, FLAG_STRICT},
+{ "ldd", 0x50000000, 0xfc000002, "cq&(b),x", pa20w, FLAG_STRICT},
{ "ldd", 0x50000000, 0xfc000002, "cq#(b),x", pa20, FLAG_STRICT},
+{ "ldw", 0x48000000, 0xfc000000, "l(b),x", pa20w, FLAG_STRICT},
{ "ldw", 0x0c000080, 0xfc0013c0, "cxccx(s,b),t", pa10, FLAG_STRICT},
{ "ldw", 0x0c000080, 0xfc0013c0, "cxccx(b),t", pa10, FLAG_STRICT},
{ "ldw", 0x0c0010a0, 0xfc1f33e0, "cocc@(s,b),t", pa20, FLAG_STRICT},
@@ -327,6 +333,7 @@ static const struct pa_opcode pa_opcodes[] =
{ "ldw", 0x48000000, 0xfc000000, "j(s,b),x", pa10, 0},
{ "ldw", 0x48000000, 0xfc000000, "j(s,b),x", pa10, 0},
{ "ldw", 0x48000000, 0xfc000000, "j(b),x", pa10, 0},
+{ "ldh", 0x44000000, 0xfc000000, "l(b),x", pa20w, FLAG_STRICT},
{ "ldh", 0x0c000040, 0xfc0013c0, "cxccx(s,b),t", pa10, FLAG_STRICT},
{ "ldh", 0x0c000040, 0xfc0013c0, "cxccx(b),t", pa10, FLAG_STRICT},
{ "ldh", 0x0c001060, 0xfc1f33e0, "cocc@(s,b),t", pa20, FLAG_STRICT},
@@ -335,6 +342,7 @@ static const struct pa_opcode pa_opcodes[] =
{ "ldh", 0x0c001040, 0xfc0013c0, "cmcc5(b),t", pa10, FLAG_STRICT},
{ "ldh", 0x44000000, 0xfc000000, "j(s,b),x", pa10, 0},
{ "ldh", 0x44000000, 0xfc000000, "j(b),x", pa10, 0},
+{ "ldb", 0x40000000, 0xfc000000, "l(b),x", pa20w, FLAG_STRICT},
{ "ldb", 0x0c000000, 0xfc0013c0, "cxccx(s,b),t", pa10, FLAG_STRICT},
{ "ldb", 0x0c000000, 0xfc0013c0, "cxccx(b),t", pa10, FLAG_STRICT},
{ "ldb", 0x0c001020, 0xfc1f33e0, "cocc@(s,b),t", pa20, FLAG_STRICT},
@@ -347,8 +355,9 @@ static const struct pa_opcode pa_opcodes[] =
{ "std", 0x0c0012e0, 0xfc0033ff, "cocCx,@(b)", pa20, FLAG_STRICT},
{ "std", 0x0c0012c0, 0xfc0013c0, "cmcCx,V(s,b)", pa20, FLAG_STRICT},
{ "std", 0x0c0012c0, 0xfc0013c0, "cmcCx,V(b)", pa20, FLAG_STRICT},
-{ "std", 0x70000000, 0xfc000002, "cqx,#(s,b)", pa20, FLAG_STRICT},
+{ "std", 0x70000000, 0xfc000002, "cqx,&(b)", pa20w, FLAG_STRICT},
{ "std", 0x70000000, 0xfc000002, "cqx,#(b)", pa20, FLAG_STRICT},
+{ "stw", 0x68000000, 0xfc000000, "x,l(b)", pa20w, FLAG_STRICT},
{ "stw", 0x0c0012a0, 0xfc0013ff, "cocCx,@(s,b)", pa20, FLAG_STRICT},
{ "stw", 0x0c0012a0, 0xfc0013ff, "cocCx,@(b)", pa20, FLAG_STRICT},
{ "stw", 0x0c001280, 0xfc0013c0, "cmcCx,V(s,b)", pa10, FLAG_STRICT},
@@ -359,12 +368,14 @@ static const struct pa_opcode pa_opcodes[] =
{ "stw", 0x7c000004, 0xfc000006, "cex,K(b)", pa20, FLAG_STRICT},
{ "stw", 0x68000000, 0xfc000000, "x,j(s,b)", pa10, 0},
{ "stw", 0x68000000, 0xfc000000, "x,j(b)", pa10, 0},
+{ "sth", 0x64000000, 0xfc000000, "x,l(b)", pa20w, FLAG_STRICT},
{ "sth", 0x0c001260, 0xfc0033ff, "cocCx,@(s,b)", pa20, FLAG_STRICT},
{ "sth", 0x0c001260, 0xfc0033ff, "cocCx,@(b)", pa20, FLAG_STRICT},
{ "sth", 0x0c001240, 0xfc0013c0, "cmcCx,V(s,b)", pa10, FLAG_STRICT},
{ "sth", 0x0c001240, 0xfc0013c0, "cmcCx,V(b)", pa10, FLAG_STRICT},
{ "sth", 0x64000000, 0xfc000000, "x,j(s,b)", pa10, 0},
{ "sth", 0x64000000, 0xfc000000, "x,j(b)", pa10, 0},
+{ "stb", 0x60000000, 0xfc000000, "x,l(b)", pa20w, FLAG_STRICT},
{ "stb", 0x0c001220, 0xfc0033ff, "cocCx,@(s,b)", pa20, FLAG_STRICT},
{ "stb", 0x0c001220, 0xfc0033ff, "cocCx,@(b)", pa20, FLAG_STRICT},
{ "stb", 0x0c001200, 0xfc0013c0, "cmcCx,V(s,b)", pa10, FLAG_STRICT},
@@ -431,7 +442,7 @@ static const struct pa_opcode pa_opcodes[] =
{ "addil", 0x28000000, 0xfc000000, "k,b,Z", pa10, 0},
{ "addil", 0x28000000, 0xfc000000, "k,b", pa10, 0},
-/* Branching instructions. */
+/* Branching instructions. */
{ "b", 0xe8008000, 0xfc00e000, "cpnXL", pa20, FLAG_STRICT},
{ "b", 0xe800a000, 0xfc00e000, "clnXL", pa20, FLAG_STRICT},
{ "b", 0xe8000000, 0xfc00e000, "clnW,b", pa10, FLAG_STRICT},
@@ -471,7 +482,7 @@ static const struct pa_opcode pa_opcodes[] =
{ "pushnom", 0xe8004001, 0xffffffff, "", pa20, FLAG_STRICT},
{ "pushbts", 0xe8004001, 0xffe0ffff, "x", pa20, FLAG_STRICT},
-/* Computation Instructions */
+/* Computation Instructions. */
{ "cmpclr", 0x080008a0, 0xfc000fe0, "?Sx,b,t", pa20, FLAG_STRICT},
{ "cmpclr", 0x08000880, 0xfc000fe0, "?sx,b,t", pa10, FLAG_STRICT},
@@ -540,7 +551,7 @@ static const struct pa_opcode pa_opcodes[] =
{ "sh3addl", 0x08000ac0, 0xfc000fe0, "?ax,b,t", pa10, 0},
{ "sh3addo", 0x08000ec0, 0xfc000fe0, "?ax,b,t", pa10, 0},
-/* Subword Operation Instructions */
+/* Subword Operation Instructions. */
{ "hadd", 0x08000300, 0xfc00ff20, "cHx,b,t", pa20, FLAG_STRICT},
{ "havg", 0x080002c0, 0xfc00ffe0, "x,b,t", pa20, FLAG_STRICT},
@@ -554,7 +565,7 @@ static const struct pa_opcode pa_opcodes[] =
{ "permh", 0xf8000000, 0xfc009020, "c*a,t", pa20, FLAG_STRICT},
-/* Extract and Deposit Instructions */
+/* Extract and Deposit Instructions. */
{ "shrpd", 0xd0000200, 0xfc001fe0, "?Xx,b,!,t", pa20, FLAG_STRICT},
{ "shrpd", 0xd0000400, 0xfc001400, "?Xx,b,~,t", pa20, FLAG_STRICT},
@@ -587,7 +598,7 @@ static const struct pa_opcode pa_opcodes[] =
{ "zdepi", 0xd4001800, 0xfc001c00, "?x5,p,T,b", pa10, 0},
{ "depi", 0xd4001c00, 0xfc001c00, "?x5,p,T,b", pa10, 0},
-/* System Control Instructions */
+/* System Control Instructions. */
{ "break", 0x00000000, 0xfc001fe0, "r,A", pa10, 0},
{ "rfi", 0x00000c00, 0xffffff1f, "cr", pa10, FLAG_STRICT},
@@ -678,7 +689,7 @@ static const struct pa_opcode pa_opcodes[] =
{ "gfr", 0x04001a80, 0xfc003fdf, "cZx(s,b)", pa11, 0},
{ "gfr", 0x04001a80, 0xfc003fdf, "cZx(b)", pa11, 0},
-/* Floating Point Coprocessor Instructions */
+/* Floating Point Coprocessor Instructions. */
{ "fldw", 0x24001020, 0xfc1f33a0, "cocc@(s,b),fT", pa20, FLAG_STRICT},
{ "fldw", 0x24001020, 0xfc1f33a0, "cocc@(b),fT", pa20, FLAG_STRICT},
@@ -686,36 +697,36 @@ static const struct pa_opcode pa_opcodes[] =
{ "fldw", 0x24000000, 0xfc001380, "cxccx(b),fT", pa10, FLAG_STRICT},
{ "fldw", 0x24001000, 0xfc001380, "cmcc5(s,b),fT", pa10, FLAG_STRICT},
{ "fldw", 0x24001000, 0xfc001380, "cmcc5(b),fT", pa10, FLAG_STRICT},
-{ "fldw", 0x5c000000, 0xfc000004, "d(s,b),fe", pa20, FLAG_STRICT},
+{ "fldw", 0x5c000000, 0xfc000004, "y(b),fe", pa20w, FLAG_STRICT},
+{ "fldw", 0x58000000, 0xfc000000, "cJy(b),fe", pa20w, FLAG_STRICT},
{ "fldw", 0x5c000000, 0xfc000004, "d(b),fe", pa20, FLAG_STRICT},
-{ "fldw", 0x58000000, 0xfc000004, "cJd(s,b),fe", pa20, FLAG_STRICT},
-{ "fldw", 0x58000000, 0xfc000004, "cJd(b),fe", pa20, FLAG_STRICT},
+{ "fldw", 0x58000000, 0xfc000000, "cJd(b),fe", pa20, FLAG_STRICT},
{ "fldd", 0x2c001020, 0xfc1f33e0, "cocc@(s,b),ft", pa20, FLAG_STRICT},
{ "fldd", 0x2c001020, 0xfc1f33e0, "cocc@(b),ft", pa20, FLAG_STRICT},
{ "fldd", 0x2c000000, 0xfc0013c0, "cxccx(s,b),ft", pa10, FLAG_STRICT},
{ "fldd", 0x2c000000, 0xfc0013c0, "cxccx(b),ft", pa10, FLAG_STRICT},
{ "fldd", 0x2c001000, 0xfc0013c0, "cmcc5(s,b),ft", pa10, FLAG_STRICT},
{ "fldd", 0x2c001000, 0xfc0013c0, "cmcc5(b),ft", pa10, FLAG_STRICT},
-{ "fldd", 0x50000002, 0xfc000002, "cq#(s,b),x", pa20, FLAG_STRICT},
-{ "fldd", 0x50000002, 0xfc000002, "cq#(b),x", pa20, FLAG_STRICT},
+{ "fldd", 0x50000002, 0xfc000002, "cq&(b),fx", pa20w, FLAG_STRICT},
+{ "fldd", 0x50000002, 0xfc000002, "cq#(b),fx", pa20, FLAG_STRICT},
{ "fstw", 0x24001220, 0xfc1f33a0, "cocCfT,@(s,b)", pa10, FLAG_STRICT},
{ "fstw", 0x24001220, 0xfc1f33a0, "cocCfT,@(b)", pa10, FLAG_STRICT},
{ "fstw", 0x24000200, 0xfc001380, "cxcCfT,x(s,b)", pa10, FLAG_STRICT},
{ "fstw", 0x24000200, 0xfc001380, "cxcCfT,x(b)", pa10, FLAG_STRICT},
{ "fstw", 0x24001200, 0xfc001380, "cmcCfT,5(s,b)", pa10, FLAG_STRICT},
{ "fstw", 0x24001200, 0xfc001380, "cmcCfT,5(b)", pa10, FLAG_STRICT},
-{ "fstw", 0x7c000000, 0xfc000004, "fe,d(s,b)", pa20, FLAG_STRICT},
+{ "fstw", 0x7c000000, 0xfc000004, "fE,y(b)", pa20w, FLAG_STRICT},
+{ "fstw", 0x78000000, 0xfc000000, "cJfe,y(b)", pa20w, FLAG_STRICT},
{ "fstw", 0x7c000000, 0xfc000004, "fe,d(b)", pa20, FLAG_STRICT},
-{ "fstw", 0x78000000, 0xfc000004, "cJfe,d(s,b)", pa20, FLAG_STRICT},
-{ "fstw", 0x78000000, 0xfc000004, "cJfe,d(b)", pa20, FLAG_STRICT},
+{ "fstw", 0x78000000, 0xfc000000, "cJfe,d(b)", pa20, FLAG_STRICT},
{ "fstd", 0x2c001220, 0xfc1f33e0, "cocCft,@(s,b)", pa10, FLAG_STRICT},
{ "fstd", 0x2c001220, 0xfc1f33e0, "cocCft,@(b)", pa10, FLAG_STRICT},
{ "fstd", 0x2c000200, 0xfc0013c0, "cxcCft,x(s,b)", pa10, FLAG_STRICT},
{ "fstd", 0x2c000200, 0xfc0013c0, "cxcCft,x(b)", pa10, FLAG_STRICT},
{ "fstd", 0x2c001200, 0xfc0013c0, "cmcCft,5(s,b)", pa10, FLAG_STRICT},
{ "fstd", 0x2c001200, 0xfc0013c0, "cmcCft,5(b)", pa10, FLAG_STRICT},
-{ "fstd", 0x70000002, 0xfc000002, "cqx,#(s,b)", pa20, FLAG_STRICT},
-{ "fstd", 0x70000002, 0xfc000002, "cqx,#(b)", pa20, FLAG_STRICT},
+{ "fstd", 0x70000002, 0xfc000002, "cqfx,&(b)", pa20w, FLAG_STRICT},
+{ "fstd", 0x70000002, 0xfc000002, "cqfx,#(b)", pa20, FLAG_STRICT},
{ "fldwx", 0x24000000, 0xfc001f80, "cxx(s,b),fT", pa10, 0},
{ "fldwx", 0x24000000, 0xfc001f80, "cxx(b),fT", pa10, 0},
{ "flddx", 0x2c000000, 0xfc001fc0, "cxx(s,b),ft", pa10, 0},
@@ -782,12 +793,12 @@ static const struct pa_opcode pa_opcodes[] =
{ "ftest", 0x30002420, 0xffffffff, "", pa10, 0},
{ "fid", 0x30000000, 0xffffffff, "", pa11, 0},
-/* Performance Monitor Instructions */
+/* Performance Monitor Instructions. */
{ "pmdis", 0x30000280, 0xffffffdf, "N", pa20, FLAG_STRICT},
{ "pmenb", 0x30000680, 0xffffffff, "", pa20, FLAG_STRICT},
-/* Assist Instructions */
+/* Assist Instructions. */
{ "spop0", 0x10000000, 0xfc000600, "v,ON", pa10, 0},
{ "spop1", 0x10000200, 0xfc000600, "v,oNt", pa10, 0},
@@ -830,7 +841,7 @@ static const struct pa_opcode pa_opcodes[] =
#define NUMOPCODES ((sizeof pa_opcodes)/(sizeof pa_opcodes[0]))
-/* SKV 12/18/92. Added some denotations for various operands. */
+/* SKV 12/18/92. Added some denotations for various operands. */
#define PA_IMM11_AT_31 'i'
#define PA_IMM14_AT_31 'j'
diff --git a/include/opcode/i386.h b/include/opcode/i386.h
index d399f4eb20b..d9c151e4537 100644
--- a/include/opcode/i386.h
+++ b/include/opcode/i386.h
@@ -1,5 +1,6 @@
/* opcode/i386.h -- Intel 80386 opcode table
- Copyright 1989, 91, 92, 93, 94, 95, 96, 97, 98, 1999 Free Software Foundation.
+ Copyright 1989, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+ Free Software Foundation.
This file is part of GAS, the GNU Assembler, and GDB, the GNU Debugger.
@@ -58,6 +59,7 @@ static const template i386_optab[] = {
#define bw_Suf (No_lSuf|No_sSuf|No_dSuf|No_xSuf)
#define bl_Suf (No_wSuf|No_sSuf|No_dSuf|No_xSuf)
#define wl_Suf (No_bSuf|No_sSuf|No_dSuf|No_xSuf)
+#define wld_Suf (No_bSuf|No_sSuf|No_xSuf)
#define sl_Suf (No_bSuf|No_wSuf|No_dSuf|No_xSuf)
#define sld_Suf (No_bSuf|No_wSuf|No_xSuf)
#define sldx_Suf (No_bSuf|No_wSuf)
@@ -81,973 +83,992 @@ static const template i386_optab[] = {
/* Move instructions. */
#define MOV_AX_DISP32 0xa0
-{ "mov", 2, 0xa0, X, bwl_Suf|D|W, { Disp16|Disp32, Acc, 0 } },
-{ "mov", 2, 0x88, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0 } },
-{ "mov", 2, 0xb0, X, bwl_Suf|W|ShortForm, { Imm, Reg, 0 } },
-{ "mov", 2, 0xc6, X, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0 } },
-/* The next two instructions accept WordReg so that a segment register
+{ "mov", 2, 0xa0, X, 0, bwl_Suf|D|W, { Disp16|Disp32, Acc, 0 } },
+{ "mov", 2, 0x88, X, 0, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0 } },
+{ "mov", 2, 0xb0, X, 0, bwl_Suf|W|ShortForm, { Imm, Reg, 0 } },
+{ "mov", 2, 0xc6, X, 0, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0 } },
+/* The segment register moves accept WordReg so that a segment register
can be copied to a 32 bit register, and vice versa, without using a
size prefix. When moving to a 32 bit register, the upper 16 bits
are set to an implementation defined value (on the Pentium Pro,
the implementation defined value is zero). */
-{ "mov", 2, 0x8c, X, wl_Suf|Modrm, { SReg3|SReg2, WordReg|WordMem, 0 } },
-{ "mov", 2, 0x8e, X, wl_Suf|Modrm|IgnoreSize, { WordReg|WordMem, SReg3|SReg2, 0 } },
+{ "mov", 2, 0x8c, X, 0, wl_Suf|Modrm, { SReg2, WordReg|WordMem, 0 } },
+{ "mov", 2, 0x8c, X, Cpu386, wl_Suf|Modrm, { SReg3, WordReg|WordMem, 0 } },
+{ "mov", 2, 0x8e, X, 0, wl_Suf|Modrm|IgnoreSize, { WordReg|WordMem, SReg2, 0 } },
+{ "mov", 2, 0x8e, X, Cpu386, wl_Suf|Modrm|IgnoreSize, { WordReg|WordMem, SReg3, 0 } },
/* Move to/from control debug registers. */
-{ "mov", 2, 0x0f20, X, l_Suf|D|Modrm|IgnoreSize, { Control, Reg32|InvMem, 0} },
-{ "mov", 2, 0x0f21, X, l_Suf|D|Modrm|IgnoreSize, { Debug, Reg32|InvMem, 0} },
-{ "mov", 2, 0x0f24, X, l_Suf|D|Modrm|IgnoreSize, { Test, Reg32|InvMem, 0} },
+{ "mov", 2, 0x0f20, X, Cpu386, l_Suf|D|Modrm|IgnoreSize, { Control, Reg32|InvMem, 0} },
+{ "mov", 2, 0x0f21, X, Cpu386, l_Suf|D|Modrm|IgnoreSize, { Debug, Reg32|InvMem, 0} },
+{ "mov", 2, 0x0f24, X, Cpu386, l_Suf|D|Modrm|IgnoreSize, { Test, Reg32|InvMem, 0} },
/* Move with sign extend. */
/* "movsbl" & "movsbw" must not be unified into "movsb" to avoid
conflict with the "movs" string move instruction. */
-{"movsbl", 2, 0x0fbe, X, NoSuf|Modrm, { Reg8|ByteMem, Reg32, 0} },
-{"movsbw", 2, 0x0fbe, X, NoSuf|Modrm, { Reg8|ByteMem, Reg16, 0} },
-{"movswl", 2, 0x0fbf, X, NoSuf|Modrm, { Reg16|ShortMem, Reg32, 0} },
-/* Intel Syntax */
-{"movsx", 2, 0x0fbf, X, w_Suf|Modrm|IgnoreSize, { Reg16|ShortMem, Reg32, 0} },
-{"movsx", 2, 0x0fbe, X, b_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
+{"movsbl", 2, 0x0fbe, X, Cpu386, NoSuf|Modrm, { Reg8|ByteMem, Reg32, 0} },
+{"movsbw", 2, 0x0fbe, X, Cpu386, NoSuf|Modrm, { Reg8|ByteMem, Reg16, 0} },
+{"movswl", 2, 0x0fbf, X, Cpu386, NoSuf|Modrm, { Reg16|ShortMem, Reg32, 0} },
+/* Intel Syntax next 2 insns */
+{"movsx", 2, 0x0fbf, X, Cpu386, w_Suf|Modrm|IgnoreSize, { Reg16|ShortMem, Reg32, 0} },
+{"movsx", 2, 0x0fbe, X, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
/* Move with zero extend. */
-{"movzb", 2, 0x0fb6, X, wl_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
-{"movzwl", 2, 0x0fb7, X, NoSuf|Modrm, { Reg16|ShortMem, Reg32, 0} },
-/* Intel Syntax */
-{"movzx", 2, 0x0fb7, X, w_Suf|Modrm|IgnoreSize, { Reg16|ShortMem, Reg32, 0} },
-{"movzx", 2, 0x0fb6, X, b_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
+{"movzb", 2, 0x0fb6, X, Cpu386, wl_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
+{"movzwl", 2, 0x0fb7, X, Cpu386, NoSuf|Modrm, { Reg16|ShortMem, Reg32, 0} },
+/* Intel Syntax next 2 insns */
+{"movzx", 2, 0x0fb7, X, Cpu386, w_Suf|Modrm|IgnoreSize, { Reg16|ShortMem, Reg32, 0} },
+{"movzx", 2, 0x0fb6, X, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
/* Push instructions. */
-{"push", 1, 0x50, X, wl_Suf|ShortForm|DefaultSize, { WordReg, 0, 0 } },
-{"push", 1, 0xff, 6, wl_Suf|Modrm|DefaultSize, { WordReg|WordMem, 0, 0 } },
-{"push", 1, 0x6a, X, wl_Suf|DefaultSize, { Imm8S, 0, 0} },
-{"push", 1, 0x68, X, wl_Suf|DefaultSize, { Imm16|Imm32, 0, 0} },
-{"push", 1, 0x06, X, wl_Suf|Seg2ShortForm|DefaultSize, { SReg2, 0, 0 } },
-{"push", 1, 0x0fa0, X, wl_Suf|Seg3ShortForm|DefaultSize, { SReg3, 0, 0 } },
-{"pusha", 0, 0x60, X, wl_Suf|DefaultSize, { 0, 0, 0 } },
+{"push", 1, 0x50, X, 0, wl_Suf|ShortForm|DefaultSize, { WordReg, 0, 0 } },
+{"push", 1, 0xff, 6, 0, wl_Suf|Modrm|DefaultSize, { WordReg|WordMem, 0, 0 } },
+{"push", 1, 0x6a, X, Cpu186, wl_Suf|DefaultSize, { Imm8S, 0, 0} },
+{"push", 1, 0x68, X, Cpu186, wl_Suf|DefaultSize, { Imm16|Imm32, 0, 0} },
+{"push", 1, 0x06, X, 0, wl_Suf|Seg2ShortForm|DefaultSize, { SReg2, 0, 0 } },
+{"push", 1, 0x0fa0, X, Cpu386, wl_Suf|Seg3ShortForm|DefaultSize, { SReg3, 0, 0 } },
+{"pusha", 0, 0x60, X, Cpu186, wld_Suf|DefaultSize, { 0, 0, 0 } },
/* Pop instructions. */
-{"pop", 1, 0x58, X, wl_Suf|ShortForm|DefaultSize, { WordReg, 0, 0 } },
-{"pop", 1, 0x8f, 0, wl_Suf|Modrm|DefaultSize, { WordReg|WordMem, 0, 0 } },
+{"pop", 1, 0x58, X, 0, wl_Suf|ShortForm|DefaultSize, { WordReg, 0, 0 } },
+{"pop", 1, 0x8f, 0, 0, wl_Suf|Modrm|DefaultSize, { WordReg|WordMem, 0, 0 } },
#define POP_SEG_SHORT 0x07
-{"pop", 1, 0x07, X, wl_Suf|Seg2ShortForm|DefaultSize, { SReg2, 0, 0 } },
-{"pop", 1, 0x0fa1, X, wl_Suf|Seg3ShortForm|DefaultSize, { SReg3, 0, 0 } },
-{"popa", 0, 0x61, X, wl_Suf|DefaultSize, { 0, 0, 0 } },
+{"pop", 1, 0x07, X, 0, wl_Suf|Seg2ShortForm|DefaultSize, { SReg2, 0, 0 } },
+{"pop", 1, 0x0fa1, X, Cpu386, wl_Suf|Seg3ShortForm|DefaultSize, { SReg3, 0, 0 } },
+{"popa", 0, 0x61, X, Cpu186, wld_Suf|DefaultSize, { 0, 0, 0 } },
/* Exchange instructions.
xchg commutes: we allow both operand orders. */
-{"xchg", 2, 0x90, X, wl_Suf|ShortForm, { WordReg, Acc, 0 } },
-{"xchg", 2, 0x90, X, wl_Suf|ShortForm, { Acc, WordReg, 0 } },
-{"xchg", 2, 0x86, X, bwl_Suf|W|Modrm, { Reg, Reg|AnyMem, 0 } },
-{"xchg", 2, 0x86, X, bwl_Suf|W|Modrm, { Reg|AnyMem, Reg, 0 } },
+{"xchg", 2, 0x90, X, 0, wl_Suf|ShortForm, { WordReg, Acc, 0 } },
+{"xchg", 2, 0x90, X, 0, wl_Suf|ShortForm, { Acc, WordReg, 0 } },
+{"xchg", 2, 0x86, X, 0, bwl_Suf|W|Modrm, { Reg, Reg|AnyMem, 0 } },
+{"xchg", 2, 0x86, X, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, Reg, 0 } },
/* In/out from ports. */
-{"in", 2, 0xe4, X, bwl_Suf|W, { Imm8, Acc, 0 } },
-{"in", 2, 0xec, X, bwl_Suf|W, { InOutPortReg, Acc, 0 } },
-{"in", 1, 0xe4, X, bwl_Suf|W, { Imm8, 0, 0 } },
-{"in", 1, 0xec, X, bwl_Suf|W, { InOutPortReg, 0, 0 } },
-{"out", 2, 0xe6, X, bwl_Suf|W, { Acc, Imm8, 0 } },
-{"out", 2, 0xee, X, bwl_Suf|W, { Acc, InOutPortReg, 0 } },
-{"out", 1, 0xe6, X, bwl_Suf|W, { Imm8, 0, 0 } },
-{"out", 1, 0xee, X, bwl_Suf|W, { InOutPortReg, 0, 0 } },
+{"in", 2, 0xe4, X, 0, bwl_Suf|W, { Imm8, Acc, 0 } },
+{"in", 2, 0xec, X, 0, bwl_Suf|W, { InOutPortReg, Acc, 0 } },
+{"in", 1, 0xe4, X, 0, bwl_Suf|W, { Imm8, 0, 0 } },
+{"in", 1, 0xec, X, 0, bwl_Suf|W, { InOutPortReg, 0, 0 } },
+{"out", 2, 0xe6, X, 0, bwl_Suf|W, { Acc, Imm8, 0 } },
+{"out", 2, 0xee, X, 0, bwl_Suf|W, { Acc, InOutPortReg, 0 } },
+{"out", 1, 0xe6, X, 0, bwl_Suf|W, { Imm8, 0, 0 } },
+{"out", 1, 0xee, X, 0, bwl_Suf|W, { InOutPortReg, 0, 0 } },
/* Load effective address. */
-{"lea", 2, 0x8d, X, wl_Suf|Modrm, { WordMem, WordReg, 0 } },
+{"lea", 2, 0x8d, X, 0, wl_Suf|Modrm, { WordMem, WordReg, 0 } },
/* Load segment registers from memory. */
-{"lds", 2, 0xc5, X, wl_Suf|Modrm, { WordMem, WordReg, 0} },
-{"les", 2, 0xc4, X, wl_Suf|Modrm, { WordMem, WordReg, 0} },
-{"lfs", 2, 0x0fb4, X, wl_Suf|Modrm, { WordMem, WordReg, 0} },
-{"lgs", 2, 0x0fb5, X, wl_Suf|Modrm, { WordMem, WordReg, 0} },
-{"lss", 2, 0x0fb2, X, wl_Suf|Modrm, { WordMem, WordReg, 0} },
+{"lds", 2, 0xc5, X, 0, wl_Suf|Modrm, { WordMem, WordReg, 0} },
+{"les", 2, 0xc4, X, 0, wl_Suf|Modrm, { WordMem, WordReg, 0} },
+{"lfs", 2, 0x0fb4, X, Cpu386, wl_Suf|Modrm, { WordMem, WordReg, 0} },
+{"lgs", 2, 0x0fb5, X, Cpu386, wl_Suf|Modrm, { WordMem, WordReg, 0} },
+{"lss", 2, 0x0fb2, X, Cpu386, wl_Suf|Modrm, { WordMem, WordReg, 0} },
/* Flags register instructions. */
-{"clc", 0, 0xf8, X, NoSuf, { 0, 0, 0} },
-{"cld", 0, 0xfc, X, NoSuf, { 0, 0, 0} },
-{"cli", 0, 0xfa, X, NoSuf, { 0, 0, 0} },
-{"clts", 0, 0x0f06, X, NoSuf, { 0, 0, 0} },
-{"cmc", 0, 0xf5, X, NoSuf, { 0, 0, 0} },
-{"lahf", 0, 0x9f, X, NoSuf, { 0, 0, 0} },
-{"sahf", 0, 0x9e, X, NoSuf, { 0, 0, 0} },
-{"pushf", 0, 0x9c, X, wl_Suf|DefaultSize, { 0, 0, 0} },
-{"popf", 0, 0x9d, X, wl_Suf|DefaultSize, { 0, 0, 0} },
-{"stc", 0, 0xf9, X, NoSuf, { 0, 0, 0} },
-{"std", 0, 0xfd, X, NoSuf, { 0, 0, 0} },
-{"sti", 0, 0xfb, X, NoSuf, { 0, 0, 0} },
+{"clc", 0, 0xf8, X, 0, NoSuf, { 0, 0, 0} },
+{"cld", 0, 0xfc, X, 0, NoSuf, { 0, 0, 0} },
+{"cli", 0, 0xfa, X, 0, NoSuf, { 0, 0, 0} },
+{"clts", 0, 0x0f06, X, Cpu286, NoSuf, { 0, 0, 0} },
+{"cmc", 0, 0xf5, X, 0, NoSuf, { 0, 0, 0} },
+{"lahf", 0, 0x9f, X, 0, NoSuf, { 0, 0, 0} },
+{"sahf", 0, 0x9e, X, 0, NoSuf, { 0, 0, 0} },
+{"pushf", 0, 0x9c, X, 0, wld_Suf|DefaultSize, { 0, 0, 0} },
+{"popf", 0, 0x9d, X, 0, wld_Suf|DefaultSize, { 0, 0, 0} },
+{"stc", 0, 0xf9, X, 0, NoSuf, { 0, 0, 0} },
+{"std", 0, 0xfd, X, 0, NoSuf, { 0, 0, 0} },
+{"sti", 0, 0xfb, X, 0, NoSuf, { 0, 0, 0} },
/* Arithmetic. */
-{"add", 2, 0x00, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"add", 2, 0x83, 0, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"add", 2, 0x04, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"add", 2, 0x80, 0, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"inc", 1, 0x40, X, wl_Suf|ShortForm, { WordReg, 0, 0} },
-{"inc", 1, 0xfe, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"sub", 2, 0x28, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"sub", 2, 0x83, 5, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"sub", 2, 0x2c, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"sub", 2, 0x80, 5, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"dec", 1, 0x48, X, wl_Suf|ShortForm, { WordReg, 0, 0} },
-{"dec", 1, 0xfe, 1, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"sbb", 2, 0x18, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"sbb", 2, 0x83, 3, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"sbb", 2, 0x1c, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"sbb", 2, 0x80, 3, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"cmp", 2, 0x38, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"cmp", 2, 0x83, 7, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"cmp", 2, 0x3c, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"cmp", 2, 0x80, 7, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"test", 2, 0x84, X, bwl_Suf|W|Modrm, { Reg|AnyMem, Reg, 0} },
-{"test", 2, 0x84, X, bwl_Suf|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"test", 2, 0xa8, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"test", 2, 0xf6, 0, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"and", 2, 0x20, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"and", 2, 0x83, 4, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"and", 2, 0x24, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"and", 2, 0x80, 4, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"or", 2, 0x08, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"or", 2, 0x83, 1, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"or", 2, 0x0c, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"or", 2, 0x80, 1, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"xor", 2, 0x30, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"xor", 2, 0x83, 6, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"xor", 2, 0x34, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"xor", 2, 0x80, 6, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-/* iclr with 1 operand is really xor with 2 operands. */
-{"clr", 1, 0x30, X, bwl_Suf|W|Modrm|regKludge, { Reg, 0, 0 } },
-
-{"adc", 2, 0x10, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"adc", 2, 0x83, 2, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"adc", 2, 0x14, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"adc", 2, 0x80, 2, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"neg", 1, 0xf6, 3, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-{"not", 1, 0xf6, 2, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"aaa", 0, 0x37, X, NoSuf, { 0, 0, 0} },
-{"aas", 0, 0x3f, X, NoSuf, { 0, 0, 0} },
-{"daa", 0, 0x27, X, NoSuf, { 0, 0, 0} },
-{"das", 0, 0x2f, X, NoSuf, { 0, 0, 0} },
-{"aad", 0, 0xd50a, X, NoSuf, { 0, 0, 0} },
-{"aad", 1, 0xd5, X, NoSuf, { Imm8S, 0, 0} },
-{"aam", 0, 0xd40a, X, NoSuf, { 0, 0, 0} },
-{"aam", 1, 0xd4, X, NoSuf, { Imm8S, 0, 0} },
+{"add", 2, 0x00, X, 0, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"add", 2, 0x83, 0, 0, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"add", 2, 0x04, X, 0, bwl_Suf|W, { Imm, Acc, 0} },
+{"add", 2, 0x80, 0, 0, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
+
+{"inc", 1, 0x40, X, 0, wl_Suf|ShortForm, { WordReg, 0, 0} },
+{"inc", 1, 0xfe, 0, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"sub", 2, 0x28, X, 0, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"sub", 2, 0x83, 5, 0, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"sub", 2, 0x2c, X, 0, bwl_Suf|W, { Imm, Acc, 0} },
+{"sub", 2, 0x80, 5, 0, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
+
+{"dec", 1, 0x48, X, 0, wl_Suf|ShortForm, { WordReg, 0, 0} },
+{"dec", 1, 0xfe, 1, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"sbb", 2, 0x18, X, 0, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"sbb", 2, 0x83, 3, 0, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"sbb", 2, 0x1c, X, 0, bwl_Suf|W, { Imm, Acc, 0} },
+{"sbb", 2, 0x80, 3, 0, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
+
+{"cmp", 2, 0x38, X, 0, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"cmp", 2, 0x83, 7, 0, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"cmp", 2, 0x3c, X, 0, bwl_Suf|W, { Imm, Acc, 0} },
+{"cmp", 2, 0x80, 7, 0, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
+
+{"test", 2, 0x84, X, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, Reg, 0} },
+{"test", 2, 0x84, X, 0, bwl_Suf|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"test", 2, 0xa8, X, 0, bwl_Suf|W, { Imm, Acc, 0} },
+{"test", 2, 0xf6, 0, 0, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
+
+{"and", 2, 0x20, X, 0, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"and", 2, 0x83, 4, 0, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"and", 2, 0x24, X, 0, bwl_Suf|W, { Imm, Acc, 0} },
+{"and", 2, 0x80, 4, 0, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
+
+{"or", 2, 0x08, X, 0, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"or", 2, 0x83, 1, 0, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"or", 2, 0x0c, X, 0, bwl_Suf|W, { Imm, Acc, 0} },
+{"or", 2, 0x80, 1, 0, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
+
+{"xor", 2, 0x30, X, 0, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"xor", 2, 0x83, 6, 0, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"xor", 2, 0x34, X, 0, bwl_Suf|W, { Imm, Acc, 0} },
+{"xor", 2, 0x80, 6, 0, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
+
+/* clr with 1 operand is really xor with 2 operands. */
+{"clr", 1, 0x30, X, 0, bwl_Suf|W|Modrm|regKludge, { Reg, 0, 0 } },
+
+{"adc", 2, 0x10, X, 0, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"adc", 2, 0x83, 2, 0, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"adc", 2, 0x14, X, 0, bwl_Suf|W, { Imm, Acc, 0} },
+{"adc", 2, 0x80, 2, 0, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
+
+{"neg", 1, 0xf6, 3, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+{"not", 1, 0xf6, 2, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"aaa", 0, 0x37, X, 0, NoSuf, { 0, 0, 0} },
+{"aas", 0, 0x3f, X, 0, NoSuf, { 0, 0, 0} },
+{"daa", 0, 0x27, X, 0, NoSuf, { 0, 0, 0} },
+{"das", 0, 0x2f, X, 0, NoSuf, { 0, 0, 0} },
+{"aad", 0, 0xd50a, X, 0, NoSuf, { 0, 0, 0} },
+{"aad", 1, 0xd5, X, 0, NoSuf, { Imm8S, 0, 0} },
+{"aam", 0, 0xd40a, X, 0, NoSuf, { 0, 0, 0} },
+{"aam", 1, 0xd4, X, 0, NoSuf, { Imm8S, 0, 0} },
/* Conversion insns. */
/* Intel naming */
-{"cbw", 0, 0x98, X, NoSuf|Size16, { 0, 0, 0} },
-{"cwde", 0, 0x98, X, NoSuf|Size32, { 0, 0, 0} },
-{"cwd", 0, 0x99, X, NoSuf|Size16, { 0, 0, 0} },
-{"cdq", 0, 0x99, X, NoSuf|Size32, { 0, 0, 0} },
+{"cbw", 0, 0x98, X, 0, NoSuf|Size16, { 0, 0, 0} },
+{"cwde", 0, 0x98, X, 0, NoSuf|Size32, { 0, 0, 0} },
+{"cwd", 0, 0x99, X, 0, NoSuf|Size16, { 0, 0, 0} },
+{"cdq", 0, 0x99, X, 0, NoSuf|Size32, { 0, 0, 0} },
/* AT&T naming */
-{"cbtw", 0, 0x98, X, NoSuf|Size16, { 0, 0, 0} },
-{"cwtl", 0, 0x98, X, NoSuf|Size32, { 0, 0, 0} },
-{"cwtd", 0, 0x99, X, NoSuf|Size16, { 0, 0, 0} },
-{"cltd", 0, 0x99, X, NoSuf|Size32, { 0, 0, 0} },
+{"cbtw", 0, 0x98, X, 0, NoSuf|Size16, { 0, 0, 0} },
+{"cwtl", 0, 0x98, X, 0, NoSuf|Size32, { 0, 0, 0} },
+{"cwtd", 0, 0x99, X, 0, NoSuf|Size16, { 0, 0, 0} },
+{"cltd", 0, 0x99, X, 0, NoSuf|Size32, { 0, 0, 0} },
/* Warning! the mul/imul (opcode 0xf6) must only have 1 operand! They are
expanding 64-bit multiplies, and *cannot* be selected to accomplish
'imul %ebx, %eax' (opcode 0x0faf must be used in this case)
These multiplies can only be selected with single operand forms. */
-{"mul", 1, 0xf6, 4, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-{"imul", 1, 0xf6, 5, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-{"imul", 2, 0x0faf, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"imul", 3, 0x6b, X, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, WordReg} },
-{"imul", 3, 0x69, X, wl_Suf|Modrm, { Imm16|Imm32, WordReg|WordMem, WordReg} },
+{"mul", 1, 0xf6, 4, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+{"imul", 1, 0xf6, 5, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+{"imul", 2, 0x0faf, X, Cpu386, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"imul", 3, 0x6b, X, Cpu186, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, WordReg} },
+{"imul", 3, 0x69, X, Cpu186, wl_Suf|Modrm, { Imm16|Imm32, WordReg|WordMem, WordReg} },
/* imul with 2 operands mimics imul with 3 by putting the register in
both i.rm.reg & i.rm.regmem fields. regKludge enables this
transformation. */
-{"imul", 2, 0x6b, X, wl_Suf|Modrm|regKludge,{ Imm8S, WordReg, 0} },
-{"imul", 2, 0x69, X, wl_Suf|Modrm|regKludge,{ Imm16|Imm32, WordReg, 0} },
-
-{"div", 1, 0xf6, 6, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-{"div", 2, 0xf6, 6, bwl_Suf|W|Modrm, { Reg|AnyMem, Acc, 0} },
-{"idiv", 1, 0xf6, 7, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-{"idiv", 2, 0xf6, 7, bwl_Suf|W|Modrm, { Reg|AnyMem, Acc, 0} },
-
-{"rol", 2, 0xd0, 0, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"rol", 2, 0xc0, 0, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"rol", 2, 0xd2, 0, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"rol", 1, 0xd0, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"ror", 2, 0xd0, 1, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"ror", 2, 0xc0, 1, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"ror", 2, 0xd2, 1, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"ror", 1, 0xd0, 1, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"rcl", 2, 0xd0, 2, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"rcl", 2, 0xc0, 2, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"rcl", 2, 0xd2, 2, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"rcl", 1, 0xd0, 2, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"rcr", 2, 0xd0, 3, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"rcr", 2, 0xc0, 3, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"rcr", 2, 0xd2, 3, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"rcr", 1, 0xd0, 3, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"sal", 2, 0xd0, 4, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"sal", 2, 0xc0, 4, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"sal", 2, 0xd2, 4, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"sal", 1, 0xd0, 4, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-{"shl", 2, 0xd0, 4, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"shl", 2, 0xc0, 4, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"shl", 2, 0xd2, 4, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"shl", 1, 0xd0, 4, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"shld", 3, 0x0fa4, X, wl_Suf|Modrm, { Imm8, WordReg, WordReg|WordMem} },
-{"shld", 3, 0x0fa5, X, wl_Suf|Modrm, { ShiftCount, WordReg, WordReg|WordMem} },
-{"shld", 2, 0x0fa5, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
-
-{"shr", 2, 0xd0, 5, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"shr", 2, 0xc0, 5, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"shr", 2, 0xd2, 5, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"shr", 1, 0xd0, 5, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"shrd", 3, 0x0fac, X, wl_Suf|Modrm, { Imm8, WordReg, WordReg|WordMem} },
-{"shrd", 3, 0x0fad, X, wl_Suf|Modrm, { ShiftCount, WordReg, WordReg|WordMem} },
-{"shrd", 2, 0x0fad, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
-
-{"sar", 2, 0xd0, 7, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"sar", 2, 0xc0, 7, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"sar", 2, 0xd2, 7, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"sar", 1, 0xd0, 7, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+{"imul", 2, 0x6b, X, Cpu186, wl_Suf|Modrm|regKludge,{ Imm8S, WordReg, 0} },
+{"imul", 2, 0x69, X, Cpu186, wl_Suf|Modrm|regKludge,{ Imm16|Imm32, WordReg, 0} },
+
+{"div", 1, 0xf6, 6, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+{"div", 2, 0xf6, 6, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, Acc, 0} },
+{"idiv", 1, 0xf6, 7, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+{"idiv", 2, 0xf6, 7, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, Acc, 0} },
+
+{"rol", 2, 0xd0, 0, 0, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"rol", 2, 0xc0, 0, Cpu186, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"rol", 2, 0xd2, 0, 0, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"rol", 1, 0xd0, 0, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"ror", 2, 0xd0, 1, 0, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"ror", 2, 0xc0, 1, Cpu186, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"ror", 2, 0xd2, 1, 0, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"ror", 1, 0xd0, 1, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"rcl", 2, 0xd0, 2, 0, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"rcl", 2, 0xc0, 2, Cpu186, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"rcl", 2, 0xd2, 2, 0, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"rcl", 1, 0xd0, 2, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"rcr", 2, 0xd0, 3, 0, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"rcr", 2, 0xc0, 3, Cpu186, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"rcr", 2, 0xd2, 3, 0, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"rcr", 1, 0xd0, 3, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"sal", 2, 0xd0, 4, 0, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"sal", 2, 0xc0, 4, Cpu186, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"sal", 2, 0xd2, 4, 0, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"sal", 1, 0xd0, 4, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"shl", 2, 0xd0, 4, 0, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"shl", 2, 0xc0, 4, Cpu186, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"shl", 2, 0xd2, 4, 0, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"shl", 1, 0xd0, 4, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"shr", 2, 0xd0, 5, 0, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"shr", 2, 0xc0, 5, Cpu186, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"shr", 2, 0xd2, 5, 0, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"shr", 1, 0xd0, 5, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"sar", 2, 0xd0, 7, 0, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"sar", 2, 0xc0, 7, Cpu186, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"sar", 2, 0xd2, 7, 0, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"sar", 1, 0xd0, 7, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"shld", 3, 0x0fa4, X, Cpu386, wl_Suf|Modrm, { Imm8, WordReg, WordReg|WordMem} },
+{"shld", 3, 0x0fa5, X, Cpu386, wl_Suf|Modrm, { ShiftCount, WordReg, WordReg|WordMem} },
+{"shld", 2, 0x0fa5, X, Cpu386, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
+
+{"shrd", 3, 0x0fac, X, Cpu386, wl_Suf|Modrm, { Imm8, WordReg, WordReg|WordMem} },
+{"shrd", 3, 0x0fad, X, Cpu386, wl_Suf|Modrm, { ShiftCount, WordReg, WordReg|WordMem} },
+{"shrd", 2, 0x0fad, X, Cpu386, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
/* Control transfer instructions. */
-{"call", 1, 0xe8, X, wl_Suf|JumpDword|DefaultSize, { Disp16|Disp32, 0, 0} },
-{"call", 1, 0xff, 2, wl_Suf|Modrm|DefaultSize, { WordReg|WordMem|JumpAbsolute, 0, 0} },
+{"call", 1, 0xe8, X, 0, wl_Suf|JumpDword|DefaultSize, { Disp16|Disp32, 0, 0} },
+{"call", 1, 0xff, 2, 0, wl_Suf|Modrm|DefaultSize, { WordReg|WordMem|JumpAbsolute, 0, 0} },
/* Intel Syntax */
-{"call", 2, 0x9a, X, wl_Suf|JumpInterSegment|DefaultSize, { Imm16, Imm16|Imm32, 0} },
+{"call", 2, 0x9a, X, 0, wl_Suf|JumpInterSegment|DefaultSize, { Imm16, Imm16|Imm32, 0} },
/* Intel Syntax */
-{"call", 1, 0xff, 3, x_Suf|Modrm|DefaultSize, { WordMem, 0, 0} },
-{"lcall", 2, 0x9a, X, wl_Suf|JumpInterSegment|DefaultSize, { Imm16, Imm16|Imm32, 0} },
-{"lcall", 1, 0xff, 3, wl_Suf|Modrm|DefaultSize, { WordMem|JumpAbsolute, 0, 0} },
+{"call", 1, 0xff, 3, 0, x_Suf|Modrm|DefaultSize, { WordMem, 0, 0} },
+{"lcall", 2, 0x9a, X, 0, wl_Suf|JumpInterSegment|DefaultSize, { Imm16, Imm16|Imm32, 0} },
+{"lcall", 1, 0xff, 3, 0, wl_Suf|Modrm|DefaultSize, { WordMem|JumpAbsolute, 0, 0} },
#define JUMP_PC_RELATIVE 0xeb
-{"jmp", 1, 0xeb, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jmp", 1, 0xff, 4, wl_Suf|Modrm, { WordReg|WordMem|JumpAbsolute, 0, 0} },
+{"jmp", 1, 0xeb, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jmp", 1, 0xff, 4, 0, wl_Suf|Modrm, { WordReg|WordMem|JumpAbsolute, 0, 0} },
/* Intel Syntax */
-{"jmp", 2, 0xea, X, wl_Suf|JumpInterSegment, { Imm16, Imm16|Imm32, 0} },
+{"jmp", 2, 0xea, X, 0, wl_Suf|JumpInterSegment, { Imm16, Imm16|Imm32, 0} },
/* Intel Syntax */
-{"jmp", 1, 0xff, 5, x_Suf|Modrm, { WordMem, 0, 0} },
-{"ljmp", 2, 0xea, X, wl_Suf|JumpInterSegment, { Imm16, Imm16|Imm32, 0} },
-{"ljmp", 1, 0xff, 5, wl_Suf|Modrm, { WordMem|JumpAbsolute, 0, 0} },
+{"jmp", 1, 0xff, 5, 0, x_Suf|Modrm, { WordMem, 0, 0} },
+{"ljmp", 2, 0xea, X, 0, wl_Suf|JumpInterSegment, { Imm16, Imm16|Imm32, 0} },
+{"ljmp", 1, 0xff, 5, 0, wl_Suf|Modrm, { WordMem|JumpAbsolute, 0, 0} },
-{"ret", 0, 0xc3, X, wl_Suf|DefaultSize, { 0, 0, 0} },
-{"ret", 1, 0xc2, X, wl_Suf|DefaultSize, { Imm16, 0, 0} },
-{"lret", 0, 0xcb, X, wl_Suf|DefaultSize, { 0, 0, 0} },
-{"lret", 1, 0xca, X, wl_Suf|DefaultSize, { Imm16, 0, 0} },
-{"enter", 2, 0xc8, X, wl_Suf|DefaultSize, { Imm16, Imm8, 0} },
-{"leave", 0, 0xc9, X, wl_Suf|DefaultSize, { 0, 0, 0} },
+{"ret", 0, 0xc3, X, 0, wl_Suf|DefaultSize, { 0, 0, 0} },
+{"ret", 1, 0xc2, X, 0, wl_Suf|DefaultSize, { Imm16, 0, 0} },
+{"lret", 0, 0xcb, X, 0, wl_Suf|DefaultSize, { 0, 0, 0} },
+{"lret", 1, 0xca, X, 0, wl_Suf|DefaultSize, { Imm16, 0, 0} },
+{"enter", 2, 0xc8, X, Cpu186, wl_Suf|DefaultSize, { Imm16, Imm8, 0} },
+{"leave", 0, 0xc9, X, Cpu186, wl_Suf|DefaultSize, { 0, 0, 0} },
/* Conditional jumps. */
-{"jo", 1, 0x70, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jno", 1, 0x71, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jb", 1, 0x72, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jc", 1, 0x72, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnae", 1, 0x72, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnb", 1, 0x73, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnc", 1, 0x73, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jae", 1, 0x73, X, NoSuf|Jump, { Disp, 0, 0} },
-{"je", 1, 0x74, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jz", 1, 0x74, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jne", 1, 0x75, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnz", 1, 0x75, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jbe", 1, 0x76, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jna", 1, 0x76, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnbe", 1, 0x77, X, NoSuf|Jump, { Disp, 0, 0} },
-{"ja", 1, 0x77, X, NoSuf|Jump, { Disp, 0, 0} },
-{"js", 1, 0x78, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jns", 1, 0x79, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jp", 1, 0x7a, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jpe", 1, 0x7a, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnp", 1, 0x7b, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jpo", 1, 0x7b, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jl", 1, 0x7c, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnge", 1, 0x7c, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnl", 1, 0x7d, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jge", 1, 0x7d, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jle", 1, 0x7e, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jng", 1, 0x7e, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnle", 1, 0x7f, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jg", 1, 0x7f, X, NoSuf|Jump, { Disp, 0, 0} },
+{"jo", 1, 0x70, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jno", 1, 0x71, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jb", 1, 0x72, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jc", 1, 0x72, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnae", 1, 0x72, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnb", 1, 0x73, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnc", 1, 0x73, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jae", 1, 0x73, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"je", 1, 0x74, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jz", 1, 0x74, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jne", 1, 0x75, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnz", 1, 0x75, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jbe", 1, 0x76, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jna", 1, 0x76, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnbe", 1, 0x77, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"ja", 1, 0x77, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"js", 1, 0x78, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jns", 1, 0x79, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jp", 1, 0x7a, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jpe", 1, 0x7a, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnp", 1, 0x7b, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jpo", 1, 0x7b, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jl", 1, 0x7c, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnge", 1, 0x7c, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnl", 1, 0x7d, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jge", 1, 0x7d, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jle", 1, 0x7e, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jng", 1, 0x7e, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnle", 1, 0x7f, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jg", 1, 0x7f, X, 0, NoSuf|Jump, { Disp, 0, 0} },
/* jcxz vs. jecxz is chosen on the basis of the address size prefix. */
-{"jcxz", 1, 0xe3, X, NoSuf|JumpByte|Size16, { Disp, 0, 0} },
-{"jecxz", 1, 0xe3, X, NoSuf|JumpByte|Size32, { Disp, 0, 0} },
+{"jcxz", 1, 0xe3, X, 0, NoSuf|JumpByte|Size16, { Disp, 0, 0} },
+{"jecxz", 1, 0xe3, X, 0, NoSuf|JumpByte|Size32, { Disp, 0, 0} },
/* The loop instructions also use the address size prefix to select
%cx rather than %ecx for the loop count, so the `w' form of these
instructions emit an address size prefix rather than a data size
prefix. */
-{"loop", 1, 0xe2, X, wl_Suf|JumpByte, { Disp, 0, 0} },
-{"loopz", 1, 0xe1, X, wl_Suf|JumpByte, { Disp, 0, 0} },
-{"loope", 1, 0xe1, X, wl_Suf|JumpByte, { Disp, 0, 0} },
-{"loopnz", 1, 0xe0, X, wl_Suf|JumpByte, { Disp, 0, 0} },
-{"loopne", 1, 0xe0, X, wl_Suf|JumpByte, { Disp, 0, 0} },
+{"loop", 1, 0xe2, X, 0, wl_Suf|JumpByte, { Disp, 0, 0} },
+{"loopz", 1, 0xe1, X, 0, wl_Suf|JumpByte, { Disp, 0, 0} },
+{"loope", 1, 0xe1, X, 0, wl_Suf|JumpByte, { Disp, 0, 0} },
+{"loopnz", 1, 0xe0, X, 0, wl_Suf|JumpByte, { Disp, 0, 0} },
+{"loopne", 1, 0xe0, X, 0, wl_Suf|JumpByte, { Disp, 0, 0} },
/* Set byte on flag instructions. */
-{"seto", 1, 0x0f90, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setno", 1, 0x0f91, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setb", 1, 0x0f92, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setc", 1, 0x0f92, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnae", 1, 0x0f92, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnb", 1, 0x0f93, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnc", 1, 0x0f93, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setae", 1, 0x0f93, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"sete", 1, 0x0f94, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setz", 1, 0x0f94, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setne", 1, 0x0f95, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnz", 1, 0x0f95, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setbe", 1, 0x0f96, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setna", 1, 0x0f96, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnbe", 1, 0x0f97, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"seta", 1, 0x0f97, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"sets", 1, 0x0f98, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setns", 1, 0x0f99, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setp", 1, 0x0f9a, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setpe", 1, 0x0f9a, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnp", 1, 0x0f9b, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setpo", 1, 0x0f9b, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setl", 1, 0x0f9c, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnge", 1, 0x0f9c, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnl", 1, 0x0f9d, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setge", 1, 0x0f9d, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setle", 1, 0x0f9e, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setng", 1, 0x0f9e, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnle", 1, 0x0f9f, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setg", 1, 0x0f9f, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"seto", 1, 0x0f90, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setno", 1, 0x0f91, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setb", 1, 0x0f92, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setc", 1, 0x0f92, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnae", 1, 0x0f92, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnb", 1, 0x0f93, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnc", 1, 0x0f93, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setae", 1, 0x0f93, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"sete", 1, 0x0f94, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setz", 1, 0x0f94, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setne", 1, 0x0f95, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnz", 1, 0x0f95, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setbe", 1, 0x0f96, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setna", 1, 0x0f96, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnbe", 1, 0x0f97, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"seta", 1, 0x0f97, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"sets", 1, 0x0f98, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setns", 1, 0x0f99, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setp", 1, 0x0f9a, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setpe", 1, 0x0f9a, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnp", 1, 0x0f9b, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setpo", 1, 0x0f9b, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setl", 1, 0x0f9c, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnge", 1, 0x0f9c, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnl", 1, 0x0f9d, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setge", 1, 0x0f9d, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setle", 1, 0x0f9e, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setng", 1, 0x0f9e, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnle", 1, 0x0f9f, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setg", 1, 0x0f9f, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
/* String manipulation. */
-{"cmps", 0, 0xa6, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"cmps", 2, 0xa6, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, AnyMem, 0} },
-{"scmp", 0, 0xa6, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"scmp", 2, 0xa6, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, AnyMem, 0} },
-{"ins", 0, 0x6c, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"ins", 2, 0x6c, X, bwld_Suf|W|IsString, { InOutPortReg, AnyMem|EsSeg, 0} },
-{"outs", 0, 0x6e, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"outs", 2, 0x6e, X, bwld_Suf|W|IsString, { AnyMem, InOutPortReg, 0} },
-{"lods", 0, 0xac, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"lods", 1, 0xac, X, bwld_Suf|W|IsString, { AnyMem, 0, 0} },
-{"lods", 2, 0xac, X, bwld_Suf|W|IsString, { AnyMem, Acc, 0} },
-{"slod", 0, 0xac, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"slod", 1, 0xac, X, bwld_Suf|W|IsString, { AnyMem, 0, 0} },
-{"slod", 2, 0xac, X, bwld_Suf|W|IsString, { AnyMem, Acc, 0} },
-{"movs", 0, 0xa4, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"movs", 2, 0xa4, X, bwld_Suf|W|IsString, { AnyMem, AnyMem|EsSeg, 0} },
-{"smov", 0, 0xa4, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"smov", 2, 0xa4, X, bwld_Suf|W|IsString, { AnyMem, AnyMem|EsSeg, 0} },
-{"scas", 0, 0xae, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"scas", 1, 0xae, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
-{"scas", 2, 0xae, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, Acc, 0} },
-{"ssca", 0, 0xae, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"ssca", 1, 0xae, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
-{"ssca", 2, 0xae, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, Acc, 0} },
-{"stos", 0, 0xaa, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"stos", 1, 0xaa, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
-{"stos", 2, 0xaa, X, bwld_Suf|W|IsString, { Acc, AnyMem|EsSeg, 0} },
-{"ssto", 0, 0xaa, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"ssto", 1, 0xaa, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
-{"ssto", 2, 0xaa, X, bwld_Suf|W|IsString, { Acc, AnyMem|EsSeg, 0} },
-{"xlat", 0, 0xd7, X, b_Suf|IsString, { 0, 0, 0} },
-{"xlat", 1, 0xd7, X, b_Suf|IsString, { AnyMem, 0, 0} },
+{"cmps", 0, 0xa6, X, 0, bwld_Suf|W|IsString, { 0, 0, 0} },
+{"cmps", 2, 0xa6, X, 0, bwld_Suf|W|IsString, { AnyMem|EsSeg, AnyMem, 0} },
+{"scmp", 0, 0xa6, X, 0, bwld_Suf|W|IsString, { 0, 0, 0} },
+{"scmp", 2, 0xa6, X, 0, bwld_Suf|W|IsString, { AnyMem|EsSeg, AnyMem, 0} },
+{"ins", 0, 0x6c, X, Cpu186, bwld_Suf|W|IsString, { 0, 0, 0} },
+{"ins", 2, 0x6c, X, Cpu186, bwld_Suf|W|IsString, { InOutPortReg, AnyMem|EsSeg, 0} },
+{"outs", 0, 0x6e, X, Cpu186, bwld_Suf|W|IsString, { 0, 0, 0} },
+{"outs", 2, 0x6e, X, Cpu186, bwld_Suf|W|IsString, { AnyMem, InOutPortReg, 0} },
+{"lods", 0, 0xac, X, 0, bwld_Suf|W|IsString, { 0, 0, 0} },
+{"lods", 1, 0xac, X, 0, bwld_Suf|W|IsString, { AnyMem, 0, 0} },
+{"lods", 2, 0xac, X, 0, bwld_Suf|W|IsString, { AnyMem, Acc, 0} },
+{"slod", 0, 0xac, X, 0, bwld_Suf|W|IsString, { 0, 0, 0} },
+{"slod", 1, 0xac, X, 0, bwld_Suf|W|IsString, { AnyMem, 0, 0} },
+{"slod", 2, 0xac, X, 0, bwld_Suf|W|IsString, { AnyMem, Acc, 0} },
+{"movs", 0, 0xa4, X, 0, bwld_Suf|W|IsString, { 0, 0, 0} },
+{"movs", 2, 0xa4, X, 0, bwld_Suf|W|IsString, { AnyMem, AnyMem|EsSeg, 0} },
+{"smov", 0, 0xa4, X, 0, bwld_Suf|W|IsString, { 0, 0, 0} },
+{"smov", 2, 0xa4, X, 0, bwld_Suf|W|IsString, { AnyMem, AnyMem|EsSeg, 0} },
+{"scas", 0, 0xae, X, 0, bwld_Suf|W|IsString, { 0, 0, 0} },
+{"scas", 1, 0xae, X, 0, bwld_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
+{"scas", 2, 0xae, X, 0, bwld_Suf|W|IsString, { AnyMem|EsSeg, Acc, 0} },
+{"ssca", 0, 0xae, X, 0, bwld_Suf|W|IsString, { 0, 0, 0} },
+{"ssca", 1, 0xae, X, 0, bwld_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
+{"ssca", 2, 0xae, X, 0, bwld_Suf|W|IsString, { AnyMem|EsSeg, Acc, 0} },
+{"stos", 0, 0xaa, X, 0, bwld_Suf|W|IsString, { 0, 0, 0} },
+{"stos", 1, 0xaa, X, 0, bwld_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
+{"stos", 2, 0xaa, X, 0, bwld_Suf|W|IsString, { Acc, AnyMem|EsSeg, 0} },
+{"ssto", 0, 0xaa, X, 0, bwld_Suf|W|IsString, { 0, 0, 0} },
+{"ssto", 1, 0xaa, X, 0, bwld_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
+{"ssto", 2, 0xaa, X, 0, bwld_Suf|W|IsString, { Acc, AnyMem|EsSeg, 0} },
+{"xlat", 0, 0xd7, X, 0, b_Suf|IsString, { 0, 0, 0} },
+{"xlat", 1, 0xd7, X, 0, b_Suf|IsString, { AnyMem, 0, 0} },
/* Bit manipulation. */
-{"bsf", 2, 0x0fbc, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"bsr", 2, 0x0fbd, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"bt", 2, 0x0fa3, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
-{"bt", 2, 0x0fba, 4, wl_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
-{"btc", 2, 0x0fbb, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
-{"btc", 2, 0x0fba, 7, wl_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
-{"btr", 2, 0x0fb3, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
-{"btr", 2, 0x0fba, 6, wl_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
-{"bts", 2, 0x0fab, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
-{"bts", 2, 0x0fba, 5, wl_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
+{"bsf", 2, 0x0fbc, X, Cpu386, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"bsr", 2, 0x0fbd, X, Cpu386, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"bt", 2, 0x0fa3, X, Cpu386, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
+{"bt", 2, 0x0fba, 4, Cpu386, wl_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
+{"btc", 2, 0x0fbb, X, Cpu386, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
+{"btc", 2, 0x0fba, 7, Cpu386, wl_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
+{"btr", 2, 0x0fb3, X, Cpu386, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
+{"btr", 2, 0x0fba, 6, Cpu386, wl_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
+{"bts", 2, 0x0fab, X, Cpu386, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
+{"bts", 2, 0x0fba, 5, Cpu386, wl_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
/* Interrupts & op. sys insns. */
/* See gas/config/tc-i386.c for conversion of 'int $3' into the special
int 3 insn. */
#define INT_OPCODE 0xcd
#define INT3_OPCODE 0xcc
-{"int", 1, 0xcd, X, NoSuf, { Imm8, 0, 0} },
-{"int3", 0, 0xcc, X, NoSuf, { 0, 0, 0} },
-{"into", 0, 0xce, X, NoSuf, { 0, 0, 0} },
-{"iret", 0, 0xcf, X, wl_Suf, { 0, 0, 0} },
+{"int", 1, 0xcd, X, 0, NoSuf, { Imm8, 0, 0} },
+{"int3", 0, 0xcc, X, 0, NoSuf, { 0, 0, 0} },
+{"into", 0, 0xce, X, 0, NoSuf, { 0, 0, 0} },
+{"iret", 0, 0xcf, X, 0, wld_Suf|DefaultSize, { 0, 0, 0} },
/* i386sl, i486sl, later 486, and Pentium. */
-{"rsm", 0, 0x0faa, X, NoSuf, { 0, 0, 0} },
+{"rsm", 0, 0x0faa, X, Cpu386, NoSuf, { 0, 0, 0} },
-{"bound", 2, 0x62, X, wl_Suf|Modrm, { WordReg, WordMem, 0} },
+{"bound", 2, 0x62, X, Cpu186, wl_Suf|Modrm, { WordReg, WordMem, 0} },
-{"hlt", 0, 0xf4, X, NoSuf, { 0, 0, 0} },
+{"hlt", 0, 0xf4, X, 0, NoSuf, { 0, 0, 0} },
/* nop is actually 'xchgl %eax, %eax'. */
-{"nop", 0, 0x90, X, NoSuf, { 0, 0, 0} },
+{"nop", 0, 0x90, X, 0, NoSuf, { 0, 0, 0} },
/* Protection control. */
-{"arpl", 2, 0x63, X, w_Suf|Modrm|IgnoreSize,{ Reg16, Reg16|ShortMem, 0} },
-{"lar", 2, 0x0f02, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"lgdt", 1, 0x0f01, 2, wl_Suf|Modrm, { WordMem, 0, 0} },
-{"lidt", 1, 0x0f01, 3, wl_Suf|Modrm, { WordMem, 0, 0} },
-{"lldt", 1, 0x0f00, 2, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
-{"lmsw", 1, 0x0f01, 6, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
-{"lsl", 2, 0x0f03, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"ltr", 1, 0x0f00, 3, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
-
-{"sgdt", 1, 0x0f01, 0, wl_Suf|Modrm, { WordMem, 0, 0} },
-{"sidt", 1, 0x0f01, 1, wl_Suf|Modrm, { WordMem, 0, 0} },
-{"sldt", 1, 0x0f00, 0, wl_Suf|Modrm, { WordReg|WordMem, 0, 0} },
-{"smsw", 1, 0x0f01, 4, wl_Suf|Modrm, { WordReg|WordMem, 0, 0} },
-{"str", 1, 0x0f00, 1, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
-
-{"verr", 1, 0x0f00, 4, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
-{"verw", 1, 0x0f00, 5, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
+{"arpl", 2, 0x63, X, Cpu286, w_Suf|Modrm|IgnoreSize,{ Reg16, Reg16|ShortMem, 0} },
+{"lar", 2, 0x0f02, X, Cpu286, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"lgdt", 1, 0x0f01, 2, Cpu286, wl_Suf|Modrm, { WordMem, 0, 0} },
+{"lidt", 1, 0x0f01, 3, Cpu286, wl_Suf|Modrm, { WordMem, 0, 0} },
+{"lldt", 1, 0x0f00, 2, Cpu286, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
+{"lmsw", 1, 0x0f01, 6, Cpu286, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
+{"lsl", 2, 0x0f03, X, Cpu286, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"ltr", 1, 0x0f00, 3, Cpu286, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
+
+{"sgdt", 1, 0x0f01, 0, Cpu286, wl_Suf|Modrm, { WordMem, 0, 0} },
+{"sidt", 1, 0x0f01, 1, Cpu286, wl_Suf|Modrm, { WordMem, 0, 0} },
+{"sldt", 1, 0x0f00, 0, Cpu286, wl_Suf|Modrm, { WordReg|WordMem, 0, 0} },
+{"smsw", 1, 0x0f01, 4, Cpu286, wl_Suf|Modrm, { WordReg|WordMem, 0, 0} },
+{"str", 1, 0x0f00, 1, Cpu286, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
+
+{"verr", 1, 0x0f00, 4, Cpu286, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
+{"verw", 1, 0x0f00, 5, Cpu286, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
/* Floating point instructions. */
/* load */
-{"fld", 1, 0xd9c0, X, FP|ShortForm, { FloatReg, 0, 0} }, /* register */
-{"fld", 1, 0xd9, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} }, /* %st0 <-- mem float/double */
-{"fld", 1, 0xd9c0, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
+{"fld", 1, 0xd9c0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fld", 1, 0xd9, 0, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fld", 1, 0xd9c0, X, 0, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
/* Intel Syntax */
-{"fld", 1, 0xdb, 5, x_FP|Modrm, { LLongMem, 0, 0} }, /* %st0 <-- mem efloat */
-{"fild", 1, 0xdf, 0, sl_Suf|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} }, /* %st0 <-- mem word(16)/dword(32) */
+{"fld", 1, 0xdb, 5, 0, x_FP|Modrm, { LLongMem, 0, 0} },
+{"fild", 1, 0xdf, 0, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
/* Intel Syntax */
-{"fildd", 1, 0xdf, 5, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 <-- mem qword (64) */
-{"fildq", 1, 0xdf, 5, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 <-- mem qword (64) */
-{"fildll", 1, 0xdf, 5, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 <-- mem qword (64) */
-{"fldt", 1, 0xdb, 5, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 <-- mem efloat */
-{"fbld", 1, 0xdf, 4, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 <-- mem bcd */
+{"fildd", 1, 0xdf, 5, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fildq", 1, 0xdf, 5, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fildll", 1, 0xdf, 5, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fldt", 1, 0xdb, 5, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fbld", 1, 0xdf, 4, 0, FP|Modrm, { LLongMem, 0, 0} },
/* store (no pop) */
-{"fst", 1, 0xddd0, X, FP|ShortForm, { FloatReg, 0, 0} }, /* register */
-{"fst", 1, 0xd9, 2, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} }, /* %st0 --> mem float/double */
-{"fst", 1, 0xddd0, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
-{"fist", 1, 0xdf, 2, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} }, /* %st0 --> mem word(16)/dword(32) */
+{"fst", 1, 0xddd0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fst", 1, 0xd9, 2, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fst", 1, 0xddd0, X, 0, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
+{"fist", 1, 0xdf, 2, 0, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
/* store (with pop) */
-{"fstp", 1, 0xddd8, X, FP|ShortForm, { FloatReg, 0, 0} }, /* register */
-{"fstp", 1, 0xd9, 3, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} }, /* %st0 --> mem float/double */
-{"fstp", 1, 0xddd8, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
+{"fstp", 1, 0xddd8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fstp", 1, 0xd9, 3, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fstp", 1, 0xddd8, X, 0, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
/* Intel Syntax */
-{"fstp", 1, 0xdb, 7, x_FP|Modrm, { LLongMem, 0, 0} }, /* %st0 --> mem efloat */
-{"fistp", 1, 0xdf, 3, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} }, /* %st0 --> mem word(16)/dword(32) */
+{"fstp", 1, 0xdb, 7, 0, x_FP|Modrm, { LLongMem, 0, 0} },
+{"fistp", 1, 0xdf, 3, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
/* Intel Syntax */
-{"fistpd", 1, 0xdf, 7, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 --> mem qword (64) */
-{"fistpq", 1, 0xdf, 7, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 --> mem qword (64) */
-{"fistpll",1, 0xdf, 7, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 --> mem qword (64) */
-{"fstpt", 1, 0xdb, 7, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 --> mem efloat */
-{"fbstp", 1, 0xdf, 6, FP|Modrm, { LLongMem, 0, 0} }, /* %st0 --> mem bcd */
+{"fistpd", 1, 0xdf, 7, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fistpq", 1, 0xdf, 7, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fistpll",1, 0xdf, 7, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fstpt", 1, 0xdb, 7, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fbstp", 1, 0xdf, 6, 0, FP|Modrm, { LLongMem, 0, 0} },
/* exchange %st<n> with %st0 */
-{"fxch", 1, 0xd9c8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fxch", 0, 0xd9c9, X, FP, { 0, 0, 0} }, /* alias for fxch %st(1) */
+{"fxch", 1, 0xd9c8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+/* alias for fxch %st(1) */
+{"fxch", 0, 0xd9c9, X, 0, FP, { 0, 0, 0} },
/* comparison (without pop) */
-{"fcom", 1, 0xd8d0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fcom", 0, 0xd8d1, X, FP, { 0, 0, 0} }, /* alias for fcom %st(1) */
-{"fcom", 1, 0xd8, 2, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} }, /* compare %st0, mem float/double */
-{"fcom", 1, 0xd8d0, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
-{"ficom", 1, 0xde, 2, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} }, /* compare %st0, mem word/dword */
+{"fcom", 1, 0xd8d0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+/* alias for fcom %st(1) */
+{"fcom", 0, 0xd8d1, X, 0, FP, { 0, 0, 0} },
+{"fcom", 1, 0xd8, 2, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fcom", 1, 0xd8d0, X, 0, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
+{"ficom", 1, 0xde, 2, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
/* comparison (with pop) */
-{"fcomp", 1, 0xd8d8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fcomp", 0, 0xd8d9, X, FP, { 0, 0, 0} }, /* alias for fcomp %st(1) */
-{"fcomp", 1, 0xd8, 3, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} }, /* compare %st0, mem float/double */
-{"fcomp", 1, 0xd8d8, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
-{"ficomp", 1, 0xde, 3, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} }, /* compare %st0, mem word/dword */
-{"fcompp", 0, 0xded9, X, FP, { 0, 0, 0} }, /* compare %st0, %st1 & pop 2 */
+{"fcomp", 1, 0xd8d8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+/* alias for fcomp %st(1) */
+{"fcomp", 0, 0xd8d9, X, 0, FP, { 0, 0, 0} },
+{"fcomp", 1, 0xd8, 3, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fcomp", 1, 0xd8d8, X, 0, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
+{"ficomp", 1, 0xde, 3, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fcompp", 0, 0xded9, X, 0, FP, { 0, 0, 0} },
/* unordered comparison (with pop) */
-{"fucom", 1, 0xdde0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fucom", 0, 0xdde1, X, FP, { 0, 0, 0} }, /* alias for fucom %st(1) */
-{"fucomp", 1, 0xdde8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fucomp", 0, 0xdde9, X, FP, { 0, 0, 0} }, /* alias for fucomp %st(1) */
-{"fucompp",0, 0xdae9, X, FP, { 0, 0, 0} }, /* ucompare %st0, %st1 & pop twice */
+{"fucom", 1, 0xdde0, X, Cpu286, FP|ShortForm, { FloatReg, 0, 0} },
+/* alias for fucom %st(1) */
+{"fucom", 0, 0xdde1, X, Cpu286, FP, { 0, 0, 0} },
+{"fucomp", 1, 0xdde8, X, Cpu286, FP|ShortForm, { FloatReg, 0, 0} },
+/* alias for fucomp %st(1) */
+{"fucomp", 0, 0xdde9, X, Cpu286, FP, { 0, 0, 0} },
+{"fucompp",0, 0xdae9, X, Cpu286, FP, { 0, 0, 0} },
-{"ftst", 0, 0xd9e4, X, FP, { 0, 0, 0} }, /* test %st0 */
-{"fxam", 0, 0xd9e5, X, FP, { 0, 0, 0} }, /* examine %st0 */
+{"ftst", 0, 0xd9e4, X, 0, FP, { 0, 0, 0} },
+{"fxam", 0, 0xd9e5, X, 0, FP, { 0, 0, 0} },
/* load constants into %st0 */
-{"fld1", 0, 0xd9e8, X, FP, { 0, 0, 0} }, /* %st0 <-- 1.0 */
-{"fldl2t", 0, 0xd9e9, X, FP, { 0, 0, 0} }, /* %st0 <-- log2(10) */
-{"fldl2e", 0, 0xd9ea, X, FP, { 0, 0, 0} }, /* %st0 <-- log2(e) */
-{"fldpi", 0, 0xd9eb, X, FP, { 0, 0, 0} }, /* %st0 <-- pi */
-{"fldlg2", 0, 0xd9ec, X, FP, { 0, 0, 0} }, /* %st0 <-- log10(2) */
-{"fldln2", 0, 0xd9ed, X, FP, { 0, 0, 0} }, /* %st0 <-- ln(2) */
-{"fldz", 0, 0xd9ee, X, FP, { 0, 0, 0} }, /* %st0 <-- 0.0 */
+{"fld1", 0, 0xd9e8, X, 0, FP, { 0, 0, 0} },
+{"fldl2t", 0, 0xd9e9, X, 0, FP, { 0, 0, 0} },
+{"fldl2e", 0, 0xd9ea, X, 0, FP, { 0, 0, 0} },
+{"fldpi", 0, 0xd9eb, X, 0, FP, { 0, 0, 0} },
+{"fldlg2", 0, 0xd9ec, X, 0, FP, { 0, 0, 0} },
+{"fldln2", 0, 0xd9ed, X, 0, FP, { 0, 0, 0} },
+{"fldz", 0, 0xd9ee, X, 0, FP, { 0, 0, 0} },
/* arithmetic */
/* add */
-{"fadd", 2, 0xd8c0, X, FP|ShortForm|FloatD, { FloatReg, FloatAcc, 0} },
-{"fadd", 1, 0xd8c0, X, FP|ShortForm, { FloatReg, 0, 0} }, /* alias for fadd %st(i), %st */
+{"fadd", 2, 0xd8c0, X, 0, FP|ShortForm|FloatD, { FloatReg, FloatAcc, 0} },
+/* alias for fadd %st(i), %st */
+{"fadd", 1, 0xd8c0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
-{"fadd", 0, 0xdec1, X, FP|Ugh, { 0, 0, 0} }, /* alias for faddp */
+/* alias for faddp */
+{"fadd", 0, 0xdec1, X, 0, FP|Ugh, { 0, 0, 0} },
#endif
-{"fadd", 1, 0xd8, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fiadd", 1, 0xde, 0, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fadd", 1, 0xd8, 0, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fiadd", 1, 0xde, 0, 0, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
-{"faddp", 2, 0xdec0, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"faddp", 1, 0xdec0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"faddp", 0, 0xdec1, X, FP, { 0, 0, 0} }, /* alias for faddp %st, %st(1) */
-{"faddp", 2, 0xdec0, X, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
+{"faddp", 2, 0xdec0, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"faddp", 1, 0xdec0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+/* alias for faddp %st, %st(1) */
+{"faddp", 0, 0xdec1, X, 0, FP, { 0, 0, 0} },
+{"faddp", 2, 0xdec0, X, 0, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
/* subtract */
-{"fsub", 2, 0xd8e0, X, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
-{"fsub", 1, 0xd8e0, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fsub", 2, 0xd8e0, X, 0, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
+{"fsub", 1, 0xd8e0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
-{"fsub", 0, 0xdee1, X, FP|Ugh, { 0, 0, 0} }, /* alias for fsubp */
+/* alias for fsubp */
+{"fsub", 0, 0xdee1, X, 0, FP|Ugh, { 0, 0, 0} },
#endif
-{"fsub", 1, 0xd8, 4, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fisub", 1, 0xde, 4, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fsub", 1, 0xd8, 4, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fisub", 1, 0xde, 4, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
#if SYSV386_COMPAT
-{"fsubp", 2, 0xdee0, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fsubp", 1, 0xdee0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fsubp", 0, 0xdee1, X, FP, { 0, 0, 0} },
+{"fsubp", 2, 0xdee0, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fsubp", 1, 0xdee0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fsubp", 0, 0xdee1, X, 0, FP, { 0, 0, 0} },
#if OLDGCC_COMPAT
-{"fsubp", 2, 0xdee0, X, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
+{"fsubp", 2, 0xdee0, X, 0, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
#endif
#else
-{"fsubp", 2, 0xdee8, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fsubp", 1, 0xdee8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fsubp", 0, 0xdee9, X, FP, { 0, 0, 0} },
+{"fsubp", 2, 0xdee8, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fsubp", 1, 0xdee8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fsubp", 0, 0xdee9, X, 0, FP, { 0, 0, 0} },
#endif
/* subtract reverse */
-{"fsubr", 2, 0xd8e8, X, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
-{"fsubr", 1, 0xd8e8, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fsubr", 2, 0xd8e8, X, 0, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
+{"fsubr", 1, 0xd8e8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
-{"fsubr", 0, 0xdee9, X, FP|Ugh, { 0, 0, 0} }, /* alias for fsubrp */
+/* alias for fsubrp */
+{"fsubr", 0, 0xdee9, X, 0, FP|Ugh, { 0, 0, 0} },
#endif
-{"fsubr", 1, 0xd8, 5, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fisubr", 1, 0xde, 5, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fsubr", 1, 0xd8, 5, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fisubr", 1, 0xde, 5, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
#if SYSV386_COMPAT
-{"fsubrp", 2, 0xdee8, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fsubrp", 1, 0xdee8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fsubrp", 0, 0xdee9, X, FP, { 0, 0, 0} },
+{"fsubrp", 2, 0xdee8, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fsubrp", 1, 0xdee8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fsubrp", 0, 0xdee9, X, 0, FP, { 0, 0, 0} },
#if OLDGCC_COMPAT
-{"fsubrp", 2, 0xdee8, X, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
+{"fsubrp", 2, 0xdee8, X, 0, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
#endif
#else
-{"fsubrp", 2, 0xdee0, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fsubrp", 1, 0xdee0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fsubrp", 0, 0xdee1, X, FP, { 0, 0, 0} },
+{"fsubrp", 2, 0xdee0, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fsubrp", 1, 0xdee0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fsubrp", 0, 0xdee1, X, 0, FP, { 0, 0, 0} },
#endif
/* multiply */
-{"fmul", 2, 0xd8c8, X, FP|ShortForm|FloatD, { FloatReg, FloatAcc, 0} },
-{"fmul", 1, 0xd8c8, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fmul", 2, 0xd8c8, X, 0, FP|ShortForm|FloatD, { FloatReg, FloatAcc, 0} },
+{"fmul", 1, 0xd8c8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
-{"fmul", 0, 0xdec9, X, FP|Ugh, { 0, 0, 0} }, /* alias for fmulp */
+/* alias for fmulp */
+{"fmul", 0, 0xdec9, X, 0, FP|Ugh, { 0, 0, 0} },
#endif
-{"fmul", 1, 0xd8, 1, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fimul", 1, 0xde, 1, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fmul", 1, 0xd8, 1, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fimul", 1, 0xde, 1, 0, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
-{"fmulp", 2, 0xdec8, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fmulp", 1, 0xdec8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fmulp", 0, 0xdec9, X, FP, { 0, 0, 0} },
-{"fmulp", 2, 0xdec8, X, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
+{"fmulp", 2, 0xdec8, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fmulp", 1, 0xdec8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fmulp", 0, 0xdec9, X, 0, FP, { 0, 0, 0} },
+{"fmulp", 2, 0xdec8, X, 0, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
/* divide */
-{"fdiv", 2, 0xd8f0, X, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
-{"fdiv", 1, 0xd8f0, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fdiv", 2, 0xd8f0, X, 0, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
+{"fdiv", 1, 0xd8f0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
-{"fdiv", 0, 0xdef1, X, FP|Ugh, { 0, 0, 0} }, /* alias for fdivp */
+/* alias for fdivp */
+{"fdiv", 0, 0xdef1, X, 0, FP|Ugh, { 0, 0, 0} },
#endif
-{"fdiv", 1, 0xd8, 6, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fidiv", 1, 0xde, 6, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fdiv", 1, 0xd8, 6, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fidiv", 1, 0xde, 6, 0, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
#if SYSV386_COMPAT
-{"fdivp", 2, 0xdef0, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fdivp", 1, 0xdef0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fdivp", 0, 0xdef1, X, FP, { 0, 0, 0} },
+{"fdivp", 2, 0xdef0, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fdivp", 1, 0xdef0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fdivp", 0, 0xdef1, X, 0, FP, { 0, 0, 0} },
#if OLDGCC_COMPAT
-{"fdivp", 2, 0xdef0, X, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
+{"fdivp", 2, 0xdef0, X, 0, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
#endif
#else
-{"fdivp", 2, 0xdef8, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fdivp", 1, 0xdef8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fdivp", 0, 0xdef9, X, FP, { 0, 0, 0} },
+{"fdivp", 2, 0xdef8, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fdivp", 1, 0xdef8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fdivp", 0, 0xdef9, X, 0, FP, { 0, 0, 0} },
#endif
/* divide reverse */
-{"fdivr", 2, 0xd8f8, X, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
-{"fdivr", 1, 0xd8f8, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fdivr", 2, 0xd8f8, X, 0, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
+{"fdivr", 1, 0xd8f8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
-{"fdivr", 0, 0xdef9, X, FP|Ugh, { 0, 0, 0} }, /* alias for fdivrp */
+/* alias for fdivrp */
+{"fdivr", 0, 0xdef9, X, 0, FP|Ugh, { 0, 0, 0} },
#endif
-{"fdivr", 1, 0xd8, 7, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fidivr", 1, 0xde, 7, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fdivr", 1, 0xd8, 7, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fidivr", 1, 0xde, 7, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
#if SYSV386_COMPAT
-{"fdivrp", 2, 0xdef8, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fdivrp", 1, 0xdef8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fdivrp", 0, 0xdef9, X, FP, { 0, 0, 0} },
+{"fdivrp", 2, 0xdef8, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fdivrp", 1, 0xdef8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fdivrp", 0, 0xdef9, X, 0, FP, { 0, 0, 0} },
#if OLDGCC_COMPAT
-{"fdivrp", 2, 0xdef8, X, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
+{"fdivrp", 2, 0xdef8, X, 0, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
#endif
#else
-{"fdivrp", 2, 0xdef0, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fdivrp", 1, 0xdef0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fdivrp", 0, 0xdef1, X, FP, { 0, 0, 0} },
+{"fdivrp", 2, 0xdef0, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fdivrp", 1, 0xdef0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fdivrp", 0, 0xdef1, X, 0, FP, { 0, 0, 0} },
#endif
-{"f2xm1", 0, 0xd9f0, X, FP, { 0, 0, 0} },
-{"fyl2x", 0, 0xd9f1, X, FP, { 0, 0, 0} },
-{"fptan", 0, 0xd9f2, X, FP, { 0, 0, 0} },
-{"fpatan", 0, 0xd9f3, X, FP, { 0, 0, 0} },
-{"fxtract",0, 0xd9f4, X, FP, { 0, 0, 0} },
-{"fprem1", 0, 0xd9f5, X, FP, { 0, 0, 0} },
-{"fdecstp",0, 0xd9f6, X, FP, { 0, 0, 0} },
-{"fincstp",0, 0xd9f7, X, FP, { 0, 0, 0} },
-{"fprem", 0, 0xd9f8, X, FP, { 0, 0, 0} },
-{"fyl2xp1",0, 0xd9f9, X, FP, { 0, 0, 0} },
-{"fsqrt", 0, 0xd9fa, X, FP, { 0, 0, 0} },
-{"fsincos",0, 0xd9fb, X, FP, { 0, 0, 0} },
-{"frndint",0, 0xd9fc, X, FP, { 0, 0, 0} },
-{"fscale", 0, 0xd9fd, X, FP, { 0, 0, 0} },
-{"fsin", 0, 0xd9fe, X, FP, { 0, 0, 0} },
-{"fcos", 0, 0xd9ff, X, FP, { 0, 0, 0} },
-{"fchs", 0, 0xd9e0, X, FP, { 0, 0, 0} },
-{"fabs", 0, 0xd9e1, X, FP, { 0, 0, 0} },
+{"f2xm1", 0, 0xd9f0, X, 0, FP, { 0, 0, 0} },
+{"fyl2x", 0, 0xd9f1, X, 0, FP, { 0, 0, 0} },
+{"fptan", 0, 0xd9f2, X, 0, FP, { 0, 0, 0} },
+{"fpatan", 0, 0xd9f3, X, 0, FP, { 0, 0, 0} },
+{"fxtract",0, 0xd9f4, X, 0, FP, { 0, 0, 0} },
+{"fprem1", 0, 0xd9f5, X, Cpu286, FP, { 0, 0, 0} },
+{"fdecstp",0, 0xd9f6, X, 0, FP, { 0, 0, 0} },
+{"fincstp",0, 0xd9f7, X, 0, FP, { 0, 0, 0} },
+{"fprem", 0, 0xd9f8, X, 0, FP, { 0, 0, 0} },
+{"fyl2xp1",0, 0xd9f9, X, 0, FP, { 0, 0, 0} },
+{"fsqrt", 0, 0xd9fa, X, 0, FP, { 0, 0, 0} },
+{"fsincos",0, 0xd9fb, X, Cpu286, FP, { 0, 0, 0} },
+{"frndint",0, 0xd9fc, X, 0, FP, { 0, 0, 0} },
+{"fscale", 0, 0xd9fd, X, 0, FP, { 0, 0, 0} },
+{"fsin", 0, 0xd9fe, X, Cpu286, FP, { 0, 0, 0} },
+{"fcos", 0, 0xd9ff, X, Cpu286, FP, { 0, 0, 0} },
+{"fchs", 0, 0xd9e0, X, 0, FP, { 0, 0, 0} },
+{"fabs", 0, 0xd9e1, X, 0, FP, { 0, 0, 0} },
/* processor control */
-{"fninit", 0, 0xdbe3, X, FP, { 0, 0, 0} },
-{"finit", 0, 0xdbe3, X, FP|FWait, { 0, 0, 0} },
-{"fldcw", 1, 0xd9, 5, FP|Modrm, { ShortMem, 0, 0} },
-{"fnstcw", 1, 0xd9, 7, FP|Modrm, { ShortMem, 0, 0} },
-{"fstcw", 1, 0xd9, 7, FP|FWait|Modrm, { ShortMem, 0, 0} },
-{"fnstsw", 1, 0xdfe0, X, FP, { Acc, 0, 0} },
-{"fnstsw", 1, 0xdd, 7, FP|Modrm, { ShortMem, 0, 0} },
-{"fnstsw", 0, 0xdfe0, X, FP, { 0, 0, 0} },
-{"fstsw", 1, 0xdfe0, X, FP|FWait, { Acc, 0, 0} },
-{"fstsw", 1, 0xdd, 7, FP|FWait|Modrm, { ShortMem, 0, 0} },
-{"fstsw", 0, 0xdfe0, X, FP|FWait, { 0, 0, 0} },
-{"fnclex", 0, 0xdbe2, X, FP, { 0, 0, 0} },
-{"fclex", 0, 0xdbe2, X, FP|FWait, { 0, 0, 0} },
+{"fninit", 0, 0xdbe3, X, 0, FP, { 0, 0, 0} },
+{"finit", 0, 0xdbe3, X, 0, FP|FWait, { 0, 0, 0} },
+{"fldcw", 1, 0xd9, 5, 0, FP|Modrm, { ShortMem, 0, 0} },
+{"fnstcw", 1, 0xd9, 7, 0, FP|Modrm, { ShortMem, 0, 0} },
+{"fstcw", 1, 0xd9, 7, 0, FP|FWait|Modrm, { ShortMem, 0, 0} },
+{"fnstsw", 1, 0xdfe0, X, 0, FP, { Acc, 0, 0} },
+{"fnstsw", 1, 0xdd, 7, 0, FP|Modrm, { ShortMem, 0, 0} },
+{"fnstsw", 0, 0xdfe0, X, 0, FP, { 0, 0, 0} },
+{"fstsw", 1, 0xdfe0, X, 0, FP|FWait, { Acc, 0, 0} },
+{"fstsw", 1, 0xdd, 7, 0, FP|FWait|Modrm, { ShortMem, 0, 0} },
+{"fstsw", 0, 0xdfe0, X, 0, FP|FWait, { 0, 0, 0} },
+{"fnclex", 0, 0xdbe2, X, 0, FP, { 0, 0, 0} },
+{"fclex", 0, 0xdbe2, X, 0, FP|FWait, { 0, 0, 0} },
/* Short forms of fldenv, fstenv use data size prefix. */
-{"fnstenv",1, 0xd9, 6, sl_Suf|Modrm, { LLongMem, 0, 0} },
-{"fstenv", 1, 0xd9, 6, sl_Suf|FWait|Modrm, { LLongMem, 0, 0} },
-{"fldenv", 1, 0xd9, 4, sl_Suf|Modrm, { LLongMem, 0, 0} },
-{"fnsave", 1, 0xdd, 6, sl_Suf|Modrm, { LLongMem, 0, 0} },
-{"fsave", 1, 0xdd, 6, sl_Suf|FWait|Modrm, { LLongMem, 0, 0} },
-{"frstor", 1, 0xdd, 4, sl_Suf|Modrm, { LLongMem, 0, 0} },
-
-{"ffree", 1, 0xddc0, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fnstenv",1, 0xd9, 6, 0, sl_Suf|Modrm, { LLongMem, 0, 0} },
+{"fstenv", 1, 0xd9, 6, 0, sl_Suf|FWait|Modrm, { LLongMem, 0, 0} },
+{"fldenv", 1, 0xd9, 4, 0, sl_Suf|Modrm, { LLongMem, 0, 0} },
+{"fnsave", 1, 0xdd, 6, 0, sl_Suf|Modrm, { LLongMem, 0, 0} },
+{"fsave", 1, 0xdd, 6, 0, sl_Suf|FWait|Modrm, { LLongMem, 0, 0} },
+{"frstor", 1, 0xdd, 4, 0, sl_Suf|Modrm, { LLongMem, 0, 0} },
+
+{"ffree", 1, 0xddc0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
/* P6:free st(i), pop st */
-{"ffreep", 1, 0xdfc0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fnop", 0, 0xd9d0, X, FP, { 0, 0, 0} },
+{"ffreep", 1, 0xdfc0, X, Cpu686, FP|ShortForm, { FloatReg, 0, 0} },
+{"fnop", 0, 0xd9d0, X, 0, FP, { 0, 0, 0} },
#define FWAIT_OPCODE 0x9b
-{"fwait", 0, 0x9b, X, FP, { 0, 0, 0} },
+{"fwait", 0, 0x9b, X, 0, FP, { 0, 0, 0} },
/* Opcode prefixes; we allow them as separate insns too. */
#define ADDR_PREFIX_OPCODE 0x67
-{"addr16", 0, 0x67, X, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
-{"addr32", 0, 0x67, X, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
-{"aword", 0, 0x67, X, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
-{"adword", 0, 0x67, X, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
+{"addr16", 0, 0x67, X, Cpu386, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
+{"addr32", 0, 0x67, X, Cpu386, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
+{"aword", 0, 0x67, X, Cpu386, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
+{"adword", 0, 0x67, X, Cpu386, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
#define DATA_PREFIX_OPCODE 0x66
-{"data16", 0, 0x66, X, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
-{"data32", 0, 0x66, X, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
-{"word", 0, 0x66, X, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
-{"dword", 0, 0x66, X, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
+{"data16", 0, 0x66, X, Cpu386, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
+{"data32", 0, 0x66, X, Cpu386, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
+{"word", 0, 0x66, X, Cpu386, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
+{"dword", 0, 0x66, X, Cpu386, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
#define LOCK_PREFIX_OPCODE 0xf0
-{"lock", 0, 0xf0, X, NoSuf|IsPrefix, { 0, 0, 0} },
-{"wait", 0, 0x9b, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"lock", 0, 0xf0, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
+{"wait", 0, 0x9b, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
#define CS_PREFIX_OPCODE 0x2e
-{"cs", 0, 0x2e, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"cs", 0, 0x2e, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
#define DS_PREFIX_OPCODE 0x3e
-{"ds", 0, 0x3e, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"ds", 0, 0x3e, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
#define ES_PREFIX_OPCODE 0x26
-{"es", 0, 0x26, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"es", 0, 0x26, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
#define FS_PREFIX_OPCODE 0x64
-{"fs", 0, 0x64, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"fs", 0, 0x64, X, Cpu386, NoSuf|IsPrefix, { 0, 0, 0} },
#define GS_PREFIX_OPCODE 0x65
-{"gs", 0, 0x65, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"gs", 0, 0x65, X, Cpu386, NoSuf|IsPrefix, { 0, 0, 0} },
#define SS_PREFIX_OPCODE 0x36
-{"ss", 0, 0x36, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"ss", 0, 0x36, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
#define REPNE_PREFIX_OPCODE 0xf2
#define REPE_PREFIX_OPCODE 0xf3
-{"rep", 0, 0xf3, X, NoSuf|IsPrefix, { 0, 0, 0} },
-{"repe", 0, 0xf3, X, NoSuf|IsPrefix, { 0, 0, 0} },
-{"repz", 0, 0xf3, X, NoSuf|IsPrefix, { 0, 0, 0} },
-{"repne", 0, 0xf2, X, NoSuf|IsPrefix, { 0, 0, 0} },
-{"repnz", 0, 0xf2, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rep", 0, 0xf3, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
+{"repe", 0, 0xf3, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
+{"repz", 0, 0xf3, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
+{"repne", 0, 0xf2, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
+{"repnz", 0, 0xf2, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
/* 486 extensions. */
-{"bswap", 1, 0x0fc8, X, l_Suf|ShortForm, { Reg32, 0, 0 } },
-{"xadd", 2, 0x0fc0, X, bwl_Suf|W|Modrm, { Reg, Reg|AnyMem, 0 } },
-{"cmpxchg", 2, 0x0fb0, X, bwl_Suf|W|Modrm, { Reg, Reg|AnyMem, 0 } },
-{"invd", 0, 0x0f08, X, NoSuf, { 0, 0, 0} },
-{"wbinvd", 0, 0x0f09, X, NoSuf, { 0, 0, 0} },
-{"invlpg", 1, 0x0f01, 7, NoSuf|Modrm, { AnyMem, 0, 0} },
+{"bswap", 1, 0x0fc8, X, Cpu486, l_Suf|ShortForm, { Reg32, 0, 0 } },
+{"xadd", 2, 0x0fc0, X, Cpu486, bwl_Suf|W|Modrm, { Reg, Reg|AnyMem, 0 } },
+{"cmpxchg", 2, 0x0fb0, X, Cpu486, bwl_Suf|W|Modrm, { Reg, Reg|AnyMem, 0 } },
+{"invd", 0, 0x0f08, X, Cpu486, NoSuf, { 0, 0, 0} },
+{"wbinvd", 0, 0x0f09, X, Cpu486, NoSuf, { 0, 0, 0} },
+{"invlpg", 1, 0x0f01, 7, Cpu486, NoSuf|Modrm, { AnyMem, 0, 0} },
/* 586 and late 486 extensions. */
-{"cpuid", 0, 0x0fa2, X, NoSuf, { 0, 0, 0} },
+{"cpuid", 0, 0x0fa2, X, Cpu486, NoSuf, { 0, 0, 0} },
/* Pentium extensions. */
-{"wrmsr", 0, 0x0f30, X, NoSuf, { 0, 0, 0} },
-{"rdtsc", 0, 0x0f31, X, NoSuf, { 0, 0, 0} },
-{"rdmsr", 0, 0x0f32, X, NoSuf, { 0, 0, 0} },
-{"cmpxchg8b",1,0x0fc7, 1, NoSuf|Modrm, { LLongMem, 0, 0} },
-{"sysenter",0, 0x0f34, X, NoSuf, { 0, 0, 0} },
-{"sysexit", 0, 0x0f35, X, NoSuf, { 0, 0, 0} },
-{"fxsave", 1, 0x0fae, 0, FP|Modrm, { LLongMem, 0, 0} },
-{"fxrstor", 1, 0x0fae, 1, FP|Modrm, { LLongMem, 0, 0} },
-
-/* Pentium Pro extensions. */
-{"rdpmc", 0, 0x0f33, X, NoSuf, { 0, 0, 0} },
-
-{"ud2", 0, 0x0f0b, X, NoSuf, { 0, 0, 0} }, /* official undefined instr. */
-{"ud2a", 0, 0x0f0b, X, NoSuf, { 0, 0, 0} }, /* alias for ud2 */
-{"ud2b", 0, 0x0fb9, X, NoSuf, { 0, 0, 0} }, /* 2nd. official undefined instr. */
-
-{"cmovo", 2, 0x0f40, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovno", 2, 0x0f41, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovb", 2, 0x0f42, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovc", 2, 0x0f42, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnae", 2, 0x0f42, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovae", 2, 0x0f43, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnc", 2, 0x0f43, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnb", 2, 0x0f43, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmove", 2, 0x0f44, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovz", 2, 0x0f44, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovne", 2, 0x0f45, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnz", 2, 0x0f45, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovbe", 2, 0x0f46, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovna", 2, 0x0f46, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmova", 2, 0x0f47, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnbe", 2, 0x0f47, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovs", 2, 0x0f48, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovns", 2, 0x0f49, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovp", 2, 0x0f4a, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnp", 2, 0x0f4b, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovl", 2, 0x0f4c, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnge", 2, 0x0f4c, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovge", 2, 0x0f4d, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnl", 2, 0x0f4d, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovle", 2, 0x0f4e, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovng", 2, 0x0f4e, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovg", 2, 0x0f4f, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnle", 2, 0x0f4f, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-
-{"fcmovb", 2, 0xdac0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovnae",2, 0xdac0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmove", 2, 0xdac8, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovbe", 2, 0xdad0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovna", 2, 0xdad0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovu", 2, 0xdad8, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovae", 2, 0xdbc0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovnb", 2, 0xdbc0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovne", 2, 0xdbc8, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmova", 2, 0xdbd0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovnbe",2, 0xdbd0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovnu", 2, 0xdbd8, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-
-{"fcomi", 2, 0xdbf0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcomi", 0, 0xdbf1, X, FP|ShortForm, { 0, 0, 0} },
-{"fcomi", 1, 0xdbf0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fucomi", 2, 0xdbe8, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fucomi", 0, 0xdbe9, X, FP|ShortForm, { 0, 0, 0} },
-{"fucomi", 1, 0xdbe8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fcomip", 2, 0xdff0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcompi", 2, 0xdff0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcompi", 0, 0xdff1, X, FP|ShortForm, { 0, 0, 0} },
-{"fcompi", 1, 0xdff0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fucomip", 2, 0xdfe8, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fucompi", 2, 0xdfe8, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fucompi", 0, 0xdfe9, X, FP|ShortForm, { 0, 0, 0} },
-{"fucompi", 1, 0xdfe8, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"wrmsr", 0, 0x0f30, X, Cpu586, NoSuf, { 0, 0, 0} },
+{"rdtsc", 0, 0x0f31, X, Cpu586, NoSuf, { 0, 0, 0} },
+{"rdmsr", 0, 0x0f32, X, Cpu586, NoSuf, { 0, 0, 0} },
+{"cmpxchg8b",1,0x0fc7, 1, Cpu586, NoSuf|Modrm, { LLongMem, 0, 0} },
+
+/* Pentium II/Pentium Pro extensions. */
+{"sysenter",0, 0x0f34, X, Cpu686, NoSuf, { 0, 0, 0} },
+{"sysexit", 0, 0x0f35, X, Cpu686, NoSuf, { 0, 0, 0} },
+{"fxsave", 1, 0x0fae, 0, Cpu686, FP|Modrm, { LLongMem, 0, 0} },
+{"fxrstor", 1, 0x0fae, 1, Cpu686, FP|Modrm, { LLongMem, 0, 0} },
+{"rdpmc", 0, 0x0f33, X, Cpu686, NoSuf, { 0, 0, 0} },
+/* official undefined instr. */
+{"ud2", 0, 0x0f0b, X, Cpu686, NoSuf, { 0, 0, 0} },
+/* alias for ud2 */
+{"ud2a", 0, 0x0f0b, X, Cpu686, NoSuf, { 0, 0, 0} },
+/* 2nd. official undefined instr. */
+{"ud2b", 0, 0x0fb9, X, Cpu686, NoSuf, { 0, 0, 0} },
+
+{"cmovo", 2, 0x0f40, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovno", 2, 0x0f41, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovb", 2, 0x0f42, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovc", 2, 0x0f42, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnae", 2, 0x0f42, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovae", 2, 0x0f43, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnc", 2, 0x0f43, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnb", 2, 0x0f43, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmove", 2, 0x0f44, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovz", 2, 0x0f44, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovne", 2, 0x0f45, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnz", 2, 0x0f45, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovbe", 2, 0x0f46, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovna", 2, 0x0f46, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmova", 2, 0x0f47, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnbe", 2, 0x0f47, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovs", 2, 0x0f48, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovns", 2, 0x0f49, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovp", 2, 0x0f4a, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnp", 2, 0x0f4b, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovl", 2, 0x0f4c, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnge", 2, 0x0f4c, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovge", 2, 0x0f4d, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnl", 2, 0x0f4d, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovle", 2, 0x0f4e, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovng", 2, 0x0f4e, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovg", 2, 0x0f4f, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnle", 2, 0x0f4f, X, Cpu686, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+
+{"fcmovb", 2, 0xdac0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovnae",2, 0xdac0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmove", 2, 0xdac8, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovbe", 2, 0xdad0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovna", 2, 0xdad0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovu", 2, 0xdad8, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovae", 2, 0xdbc0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovnb", 2, 0xdbc0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovne", 2, 0xdbc8, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmova", 2, 0xdbd0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovnbe",2, 0xdbd0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovnu", 2, 0xdbd8, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+
+{"fcomi", 2, 0xdbf0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcomi", 0, 0xdbf1, X, Cpu686, FP|ShortForm, { 0, 0, 0} },
+{"fcomi", 1, 0xdbf0, X, Cpu686, FP|ShortForm, { FloatReg, 0, 0} },
+{"fucomi", 2, 0xdbe8, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fucomi", 0, 0xdbe9, X, Cpu686, FP|ShortForm, { 0, 0, 0} },
+{"fucomi", 1, 0xdbe8, X, Cpu686, FP|ShortForm, { FloatReg, 0, 0} },
+{"fcomip", 2, 0xdff0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcompi", 2, 0xdff0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcompi", 0, 0xdff1, X, Cpu686, FP|ShortForm, { 0, 0, 0} },
+{"fcompi", 1, 0xdff0, X, Cpu686, FP|ShortForm, { FloatReg, 0, 0} },
+{"fucomip", 2, 0xdfe8, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fucompi", 2, 0xdfe8, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fucompi", 0, 0xdfe9, X, Cpu686, FP|ShortForm, { 0, 0, 0} },
+{"fucompi", 1, 0xdfe8, X, Cpu686, FP|ShortForm, { FloatReg, 0, 0} },
/* MMX instructions. */
-{"emms", 0, 0x0f77, X, FP, { 0, 0, 0 } },
-{"movd", 2, 0x0f6e, X, FP|Modrm, { Reg32|LongMem, RegMMX, 0 } },
-{"movd", 2, 0x0f7e, X, FP|Modrm, { RegMMX, Reg32|LongMem, 0 } },
-{"movq", 2, 0x0f6f, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"movq", 2, 0x0f7f, X, FP|Modrm, { RegMMX, RegMMX|LongMem, 0 } },
-{"packssdw", 2, 0x0f6b, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"packsswb", 2, 0x0f63, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"packuswb", 2, 0x0f67, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"paddb", 2, 0x0ffc, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"paddw", 2, 0x0ffd, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"paddd", 2, 0x0ffe, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"paddsb", 2, 0x0fec, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"paddsw", 2, 0x0fed, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"paddusb", 2, 0x0fdc, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"paddusw", 2, 0x0fdd, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pand", 2, 0x0fdb, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pandn", 2, 0x0fdf, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pcmpeqb", 2, 0x0f74, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pcmpeqw", 2, 0x0f75, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pcmpeqd", 2, 0x0f76, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pcmpgtb", 2, 0x0f64, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pcmpgtw", 2, 0x0f65, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pcmpgtd", 2, 0x0f66, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pmaddwd", 2, 0x0ff5, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pmulhw", 2, 0x0fe5, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pmullw", 2, 0x0fd5, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"por", 2, 0x0feb, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psllw", 2, 0x0ff1, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psllw", 2, 0x0f71, 6, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"pslld", 2, 0x0ff2, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pslld", 2, 0x0f72, 6, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"psllq", 2, 0x0ff3, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psllq", 2, 0x0f73, 6, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"psraw", 2, 0x0fe1, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psraw", 2, 0x0f71, 4, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"psrad", 2, 0x0fe2, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psrad", 2, 0x0f72, 4, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"psrlw", 2, 0x0fd1, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psrlw", 2, 0x0f71, 2, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"psrld", 2, 0x0fd2, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psrld", 2, 0x0f72, 2, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"psrlq", 2, 0x0fd3, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psrlq", 2, 0x0f73, 2, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"psubb", 2, 0x0ff8, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psubw", 2, 0x0ff9, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psubd", 2, 0x0ffa, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psubsb", 2, 0x0fe8, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psubsw", 2, 0x0fe9, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psubusb", 2, 0x0fd8, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psubusw", 2, 0x0fd9, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"punpckhbw",2, 0x0f68, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"punpckhwd",2, 0x0f69, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"punpckhdq",2, 0x0f6a, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"punpcklbw",2, 0x0f60, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"punpcklwd",2, 0x0f61, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"punpckldq",2, 0x0f62, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pxor", 2, 0x0fef, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"emms", 0, 0x0f77, X, CpuMMX, FP, { 0, 0, 0 } },
+{"movd", 2, 0x0f6e, X, CpuMMX, FP|Modrm, { Reg32|LongMem, RegMMX, 0 } },
+{"movd", 2, 0x0f7e, X, CpuMMX, FP|Modrm, { RegMMX, Reg32|LongMem, 0 } },
+{"movq", 2, 0x0f6f, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"movq", 2, 0x0f7f, X, CpuMMX, FP|Modrm, { RegMMX, RegMMX|LongMem, 0 } },
+{"packssdw", 2, 0x0f6b, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"packsswb", 2, 0x0f63, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"packuswb", 2, 0x0f67, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paddb", 2, 0x0ffc, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paddw", 2, 0x0ffd, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paddd", 2, 0x0ffe, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paddsb", 2, 0x0fec, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paddsw", 2, 0x0fed, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paddusb", 2, 0x0fdc, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paddusw", 2, 0x0fdd, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pand", 2, 0x0fdb, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pandn", 2, 0x0fdf, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pcmpeqb", 2, 0x0f74, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pcmpeqw", 2, 0x0f75, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pcmpeqd", 2, 0x0f76, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pcmpgtb", 2, 0x0f64, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pcmpgtw", 2, 0x0f65, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pcmpgtd", 2, 0x0f66, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmaddwd", 2, 0x0ff5, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmulhw", 2, 0x0fe5, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmullw", 2, 0x0fd5, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"por", 2, 0x0feb, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psllw", 2, 0x0ff1, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psllw", 2, 0x0f71, 6, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"pslld", 2, 0x0ff2, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pslld", 2, 0x0f72, 6, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"psllq", 2, 0x0ff3, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psllq", 2, 0x0f73, 6, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"psraw", 2, 0x0fe1, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psraw", 2, 0x0f71, 4, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"psrad", 2, 0x0fe2, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psrad", 2, 0x0f72, 4, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"psrlw", 2, 0x0fd1, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psrlw", 2, 0x0f71, 2, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"psrld", 2, 0x0fd2, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psrld", 2, 0x0f72, 2, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"psrlq", 2, 0x0fd3, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psrlq", 2, 0x0f73, 2, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"psubb", 2, 0x0ff8, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psubw", 2, 0x0ff9, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psubd", 2, 0x0ffa, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psubsb", 2, 0x0fe8, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psubsw", 2, 0x0fe9, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psubusb", 2, 0x0fd8, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psubusw", 2, 0x0fd9, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"punpckhbw",2, 0x0f68, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"punpckhwd",2, 0x0f69, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"punpckhdq",2, 0x0f6a, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"punpcklbw",2, 0x0f60, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"punpcklwd",2, 0x0f61, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"punpckldq",2, 0x0f62, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pxor", 2, 0x0fef, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
/* PIII Katmai New Instructions / SIMD instructions. */
-{"addps", 2, 0x0f58, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"addss", 2, 0xf30f58, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"andnps", 2, 0x0f55, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"andps", 2, 0x0f54, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpeqps", 2, 0x0fc2, 0, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpeqss", 2, 0xf30fc2, 0, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpleps", 2, 0x0fc2, 2, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpless", 2, 0xf30fc2, 2, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpltps", 2, 0x0fc2, 1, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpltss", 2, 0xf30fc2, 1, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpneqps", 2, 0x0fc2, 4, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpneqss", 2, 0xf30fc2, 4, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpnleps", 2, 0x0fc2, 6, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpnless", 2, 0xf30fc2, 6, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpnltps", 2, 0x0fc2, 5, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpnltss", 2, 0xf30fc2, 5, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpordps", 2, 0x0fc2, 7, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpordss", 2, 0xf30fc2, 7, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpunordps",2, 0x0fc2, 3, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpunordss",2, 0xf30fc2, 3, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpps", 3, 0x0fc2, X, FP|Modrm, { Imm8, RegXMM|LLongMem, RegXMM } },
-{"cmpss", 3, 0xf30fc2, X, FP|Modrm, { Imm8, RegXMM|WordMem, RegXMM } },
-{"comiss", 2, 0x0f2f, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"cvtpi2ps", 2, 0x0f2a, X, FP|Modrm, { RegMMX|LLongMem, RegXMM, 0 } },
-{"cvtps2pi", 2, 0x0f2d, X, FP|Modrm, { RegXMM|LLongMem, RegMMX, 0 } },
-{"cvtsi2ss", 2, 0xf30f2a, X, FP|Modrm, { Reg32|WordMem, RegXMM, 0 } },
-{"cvtss2si", 2, 0xf30f2d, X, FP|Modrm, { RegXMM|WordMem, Reg32, 0 } },
-{"cvttps2pi", 2, 0x0f2c, X, FP|Modrm, { RegXMM|LLongMem, RegMMX, 0 } },
-{"cvttss2si", 2, 0xf30f2c, X, FP|Modrm, { RegXMM|WordMem, Reg32, 0 } },
-{"divps", 2, 0x0f5e, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"divss", 2, 0xf30f5e, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"ldmxcsr", 1, 0x0fae, 2, FP|Modrm, { WordMem, 0, 0 } },
-{"maskmovq", 2, 0x0ff7, X, FP|Modrm, { RegMMX|InvMem, RegMMX, 0 } },
-{"maxps", 2, 0x0f5f, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"maxss", 2, 0xf30f5f, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"minps", 2, 0x0f5d, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"minss", 2, 0xf30f5d, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"movaps", 2, 0x0f28, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"movaps", 2, 0x0f29, X, FP|Modrm, { RegXMM, RegXMM|LLongMem, 0 } },
-{"movhlps", 2, 0x0f12, X, FP|Modrm, { RegXMM|InvMem, RegXMM, 0 } },
-{"movhps", 2, 0x0f16, X, FP|Modrm, { LLongMem, RegXMM, 0 } },
-{"movhps", 2, 0x0f17, X, FP|Modrm, { RegXMM, LLongMem, 0 } },
-{"movlhps", 2, 0x0f16, X, FP|Modrm, { RegXMM|InvMem, RegXMM, 0 } },
-{"movlps", 2, 0x0f12, X, FP|Modrm, { LLongMem, RegXMM, 0 } },
-{"movlps", 2, 0x0f13, X, FP|Modrm, { RegXMM, LLongMem, 0 } },
-{"movmskps", 2, 0x0f50, X, FP|Modrm, { RegXMM|InvMem, Reg32, 0 } },
-{"movntps", 2, 0x0f2b, X, FP|Modrm, { RegXMM, LLongMem, 0 } },
-{"movntq", 2, 0x0fe7, X, FP|Modrm, { RegMMX, LLongMem, 0 } },
-{"movss", 2, 0xf30f10, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"movss", 2, 0xf30f11, X, FP|Modrm, { RegXMM, RegXMM|WordMem, 0 } },
-{"movups", 2, 0x0f10, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"movups", 2, 0x0f11, X, FP|Modrm, { RegXMM, RegXMM|LLongMem, 0 } },
-{"mulps", 2, 0x0f59, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"mulss", 2, 0xf30f59, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"orps", 2, 0x0f56, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"pavgb", 2, 0x0fe0, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"pavgw", 2, 0x0fe3, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"pextrw", 3, 0x0fc5, X, FP|Modrm, { Imm8, RegMMX, Reg32|InvMem } },
-{"pinsrw", 3, 0x0fc4, X, FP|Modrm, { Imm8, Reg32|ShortMem, RegMMX } },
-{"pmaxsw", 2, 0x0fee, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"pmaxub", 2, 0x0fde, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"pminsw", 2, 0x0fea, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"pminub", 2, 0x0fda, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"pmovmskb", 2, 0x0fd7, X, FP|Modrm, { RegMMX, Reg32|InvMem, 0 } },
-{"pmulhuw", 2, 0x0fe4, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"prefetchnta", 1, 0x0f18, 0, FP|Modrm, { LLongMem, 0, 0 } },
-{"prefetcht0", 1, 0x0f18, 1, FP|Modrm, { LLongMem, 0, 0 } },
-{"prefetcht1", 1, 0x0f18, 2, FP|Modrm, { LLongMem, 0, 0 } },
-{"prefetcht2", 1, 0x0f18, 3, FP|Modrm, { LLongMem, 0, 0 } },
-{"psadbw", 2, 0x0ff6, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"pshufw", 3, 0x0f70, X, FP|Modrm, { Imm8, RegMMX|LLongMem, RegMMX } },
-{"rcpps", 2, 0x0f53, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"rcpss", 2, 0xf30f53, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"rsqrtps", 2, 0x0f52, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"rsqrtss", 2, 0xf30f52, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"sfence", 0, 0x0faef8, X, FP, { 0, 0, 0 } },
-{"shufps", 3, 0x0fc6, X, FP|Modrm, { Imm8, RegXMM|LLongMem, RegXMM } },
-{"sqrtps", 2, 0x0f51, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"sqrtss", 2, 0xf30f51, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"stmxcsr", 1, 0x0fae, 3, FP|Modrm, { WordMem, 0, 0 } },
-{"subps", 2, 0x0f5c, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"subss", 2, 0xf30f5c, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"ucomiss", 2, 0x0f2e, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"unpckhps", 2, 0x0f15, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"unpcklps", 2, 0x0f14, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"xorps", 2, 0x0f57, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"addps", 2, 0x0f58, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"addss", 2, 0xf30f58, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"andnps", 2, 0x0f55, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"andps", 2, 0x0f54, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpeqps", 2, 0x0fc2, 0, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpeqss", 2, 0xf30fc2, 0, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpleps", 2, 0x0fc2, 2, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpless", 2, 0xf30fc2, 2, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpltps", 2, 0x0fc2, 1, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpltss", 2, 0xf30fc2, 1, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpneqps", 2, 0x0fc2, 4, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpneqss", 2, 0xf30fc2, 4, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpnleps", 2, 0x0fc2, 6, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpnless", 2, 0xf30fc2, 6, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpnltps", 2, 0x0fc2, 5, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpnltss", 2, 0xf30fc2, 5, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpordps", 2, 0x0fc2, 7, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpordss", 2, 0xf30fc2, 7, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpunordps",2, 0x0fc2, 3, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpunordss",2, 0xf30fc2, 3, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpps", 3, 0x0fc2, X, CpuSSE, FP|Modrm, { Imm8, RegXMM|LLongMem, RegXMM } },
+{"cmpss", 3, 0xf30fc2, X, CpuSSE, FP|Modrm, { Imm8, RegXMM|WordMem, RegXMM } },
+{"comiss", 2, 0x0f2f, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"cvtpi2ps", 2, 0x0f2a, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegXMM, 0 } },
+{"cvtps2pi", 2, 0x0f2d, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegMMX, 0 } },
+{"cvtsi2ss", 2, 0xf30f2a, X, CpuSSE, FP|Modrm, { Reg32|WordMem, RegXMM, 0 } },
+{"cvtss2si", 2, 0xf30f2d, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, Reg32, 0 } },
+{"cvttps2pi", 2, 0x0f2c, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegMMX, 0 } },
+{"cvttss2si", 2, 0xf30f2c, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, Reg32, 0 } },
+{"divps", 2, 0x0f5e, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"divss", 2, 0xf30f5e, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"ldmxcsr", 1, 0x0fae, 2, CpuSSE, FP|Modrm, { WordMem, 0, 0 } },
+{"maskmovq", 2, 0x0ff7, X, CpuSSE, FP|Modrm, { RegMMX|InvMem, RegMMX, 0 } },
+{"maxps", 2, 0x0f5f, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"maxss", 2, 0xf30f5f, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"minps", 2, 0x0f5d, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"minss", 2, 0xf30f5d, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"movaps", 2, 0x0f28, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"movaps", 2, 0x0f29, X, CpuSSE, FP|Modrm, { RegXMM, RegXMM|LLongMem, 0 } },
+{"movhlps", 2, 0x0f12, X, CpuSSE, FP|Modrm, { RegXMM|InvMem, RegXMM, 0 } },
+{"movhps", 2, 0x0f16, X, CpuSSE, FP|Modrm, { LLongMem, RegXMM, 0 } },
+{"movhps", 2, 0x0f17, X, CpuSSE, FP|Modrm, { RegXMM, LLongMem, 0 } },
+{"movlhps", 2, 0x0f16, X, CpuSSE, FP|Modrm, { RegXMM|InvMem, RegXMM, 0 } },
+{"movlps", 2, 0x0f12, X, CpuSSE, FP|Modrm, { LLongMem, RegXMM, 0 } },
+{"movlps", 2, 0x0f13, X, CpuSSE, FP|Modrm, { RegXMM, LLongMem, 0 } },
+{"movmskps", 2, 0x0f50, X, CpuSSE, FP|Modrm, { RegXMM|InvMem, Reg32, 0 } },
+{"movntps", 2, 0x0f2b, X, CpuSSE, FP|Modrm, { RegXMM, LLongMem, 0 } },
+{"movntq", 2, 0x0fe7, X, CpuSSE, FP|Modrm, { RegMMX, LLongMem, 0 } },
+{"movss", 2, 0xf30f10, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"movss", 2, 0xf30f11, X, CpuSSE, FP|Modrm, { RegXMM, RegXMM|WordMem, 0 } },
+{"movups", 2, 0x0f10, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"movups", 2, 0x0f11, X, CpuSSE, FP|Modrm, { RegXMM, RegXMM|LLongMem, 0 } },
+{"mulps", 2, 0x0f59, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"mulss", 2, 0xf30f59, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"orps", 2, 0x0f56, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pavgb", 2, 0x0fe0, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"pavgw", 2, 0x0fe3, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"pextrw", 3, 0x0fc5, X, CpuSSE, FP|Modrm, { Imm8, RegMMX, Reg32|InvMem } },
+{"pinsrw", 3, 0x0fc4, X, CpuSSE, FP|Modrm, { Imm8, Reg32|ShortMem, RegMMX } },
+{"pmaxsw", 2, 0x0fee, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"pmaxub", 2, 0x0fde, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"pminsw", 2, 0x0fea, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"pminub", 2, 0x0fda, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"pmovmskb", 2, 0x0fd7, X, CpuSSE, FP|Modrm, { RegMMX, Reg32|InvMem, 0 } },
+{"pmulhuw", 2, 0x0fe4, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"prefetchnta", 1, 0x0f18, 0, CpuSSE, FP|Modrm, { LLongMem, 0, 0 } },
+{"prefetcht0", 1, 0x0f18, 1, CpuSSE, FP|Modrm, { LLongMem, 0, 0 } },
+{"prefetcht1", 1, 0x0f18, 2, CpuSSE, FP|Modrm, { LLongMem, 0, 0 } },
+{"prefetcht2", 1, 0x0f18, 3, CpuSSE, FP|Modrm, { LLongMem, 0, 0 } },
+{"psadbw", 2, 0x0ff6, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"pshufw", 3, 0x0f70, X, CpuSSE, FP|Modrm, { Imm8, RegMMX|LLongMem, RegMMX } },
+{"rcpps", 2, 0x0f53, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"rcpss", 2, 0xf30f53, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"rsqrtps", 2, 0x0f52, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"rsqrtss", 2, 0xf30f52, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"sfence", 0, 0x0faef8, X, CpuSSE, FP, { 0, 0, 0 } },
+{"shufps", 3, 0x0fc6, X, CpuSSE, FP|Modrm, { Imm8, RegXMM|LLongMem, RegXMM } },
+{"sqrtps", 2, 0x0f51, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"sqrtss", 2, 0xf30f51, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"stmxcsr", 1, 0x0fae, 3, CpuSSE, FP|Modrm, { WordMem, 0, 0 } },
+{"subps", 2, 0x0f5c, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"subss", 2, 0xf30f5c, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"ucomiss", 2, 0x0f2e, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"unpckhps", 2, 0x0f15, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"unpcklps", 2, 0x0f14, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"xorps", 2, 0x0f57, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
/* AMD 3DNow! instructions. */
-{"prefetch", 1, 0x0f0d, 0, FP|Modrm, { ByteMem, 0, 0 } },
-{"prefetchw",1, 0x0f0d, 1, FP|Modrm, { ByteMem, 0, 0 } },
-{"femms", 0, 0x0f0e, X, FP, { 0, 0, 0 } },
-{"pavgusb", 2, 0x0f0f, 0xbf, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pf2id", 2, 0x0f0f, 0x1d, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pf2iw", 2, 0x0f0f, 0x1c, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
-{"pfacc", 2, 0x0f0f, 0xae, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfadd", 2, 0x0f0f, 0x9e, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfcmpeq", 2, 0x0f0f, 0xb0, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfcmpge", 2, 0x0f0f, 0x90, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfcmpgt", 2, 0x0f0f, 0xa0, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfmax", 2, 0x0f0f, 0xa4, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfmin", 2, 0x0f0f, 0x94, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfmul", 2, 0x0f0f, 0xb4, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfnacc", 2, 0x0f0f, 0x8a, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
-{"pfpnacc", 2, 0x0f0f, 0x8e, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
-{"pfrcp", 2, 0x0f0f, 0x96, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfrcpit1", 2, 0x0f0f, 0xa6, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfrcpit2", 2, 0x0f0f, 0xb6, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfrsqit1", 2, 0x0f0f, 0xa7, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfrsqrt", 2, 0x0f0f, 0x97, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfsub", 2, 0x0f0f, 0x9a, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfsubr", 2, 0x0f0f, 0xaa, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pi2fd", 2, 0x0f0f, 0x0d, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pi2fw", 2, 0x0f0f, 0x0c, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
-{"pmulhrw", 2, 0x0f0f, 0xb7, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pswapd", 2, 0x0f0f, 0xbb, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
-
-{NULL, 0, 0, 0, 0, { 0, 0, 0} } /* sentinel */
+{"prefetch", 1, 0x0f0d, 0, Cpu3dnow, FP|Modrm, { ByteMem, 0, 0 } },
+{"prefetchw",1, 0x0f0d, 1, Cpu3dnow, FP|Modrm, { ByteMem, 0, 0 } },
+{"femms", 0, 0x0f0e, X, Cpu3dnow, FP, { 0, 0, 0 } },
+{"pavgusb", 2, 0x0f0f, 0xbf, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pf2id", 2, 0x0f0f, 0x1d, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pf2iw", 2, 0x0f0f, 0x1c, Cpu3dnow|Cpu686, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfacc", 2, 0x0f0f, 0xae, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfadd", 2, 0x0f0f, 0x9e, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfcmpeq", 2, 0x0f0f, 0xb0, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfcmpge", 2, 0x0f0f, 0x90, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfcmpgt", 2, 0x0f0f, 0xa0, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfmax", 2, 0x0f0f, 0xa4, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfmin", 2, 0x0f0f, 0x94, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfmul", 2, 0x0f0f, 0xb4, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfnacc", 2, 0x0f0f, 0x8a, Cpu3dnow|Cpu686, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfpnacc", 2, 0x0f0f, 0x8e, Cpu3dnow|Cpu686, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfrcp", 2, 0x0f0f, 0x96, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfrcpit1", 2, 0x0f0f, 0xa6, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfrcpit2", 2, 0x0f0f, 0xb6, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfrsqit1", 2, 0x0f0f, 0xa7, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfrsqrt", 2, 0x0f0f, 0x97, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfsub", 2, 0x0f0f, 0x9a, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfsubr", 2, 0x0f0f, 0xaa, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pi2fd", 2, 0x0f0f, 0x0d, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pi2fw", 2, 0x0f0f, 0x0c, Cpu3dnow|Cpu686, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmulhrw", 2, 0x0f0f, 0xb7, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pswapd", 2, 0x0f0f, 0xbb, Cpu3dnow|Cpu686, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+
+/* sentinel */
+{NULL, 0, 0, 0, 0, 0, { 0, 0, 0} }
};
#undef X
#undef NoSuf
@@ -1059,6 +1080,7 @@ static const template i386_optab[] = {
#undef bw_Suf
#undef bl_Suf
#undef wl_Suf
+#undef wld_Suf
#undef sl_Suf
#undef sld_Suf
#undef sldx_Suf
diff --git a/include/opcode/ia64.h b/include/opcode/ia64.h
new file mode 100644
index 00000000000..dd6bccdedeb
--- /dev/null
+++ b/include/opcode/ia64.h
@@ -0,0 +1,388 @@
+/* ia64.h -- Header file for ia64 opcode table
+ Copyright (C) 1998, 1999 David Mosberger-Tang <davidm@hpl.hp.com>
+
+ See the file HP-COPYRIGHT for additional information. */
+
+#ifndef opcode_ia64_h
+#define opcode_ia64_h
+
+#include <sys/types.h>
+
+#include <bfd.h>
+
+
+typedef BFD_HOST_U_64_BIT ia64_insn;
+
+enum ia64_insn_type
+ {
+ IA64_TYPE_NIL = 0, /* illegal type */
+ IA64_TYPE_A, /* integer alu (I- or M-unit) */
+ IA64_TYPE_I, /* non-alu integer (I-unit) */
+ IA64_TYPE_M, /* memory (M-unit) */
+ IA64_TYPE_B, /* branch (B-unit) */
+ IA64_TYPE_F, /* floating-point (F-unit) */
+ IA64_TYPE_X, /* long encoding (X-unit) */
+ IA64_TYPE_DYN, /* Dynamic opcode */
+ IA64_NUM_TYPES
+ };
+
+enum ia64_unit
+ {
+ IA64_UNIT_NIL = 0, /* illegal unit */
+ IA64_UNIT_I, /* integer unit */
+ IA64_UNIT_M, /* memory unit */
+ IA64_UNIT_B, /* branching unit */
+ IA64_UNIT_F, /* floating-point unit */
+ IA64_UNIT_L, /* long "unit" */
+ IA64_UNIT_X, /* may be integer or branch unit */
+ IA64_NUM_UNITS
+ };
+
+/* Changes to this enumeration must be propagated to the operand table in
+ bfd/cpu-ia64-opc.c
+ */
+enum ia64_opnd
+ {
+ IA64_OPND_NIL, /* no operand---MUST BE FIRST!*/
+
+ /* constants */
+ IA64_OPND_AR_CCV, /* application register ccv (ar.ccv) */
+ IA64_OPND_AR_PFS, /* application register pfs (ar.pfs) */
+ IA64_OPND_C1, /* the constant 1 */
+ IA64_OPND_C8, /* the constant 8 */
+ IA64_OPND_C16, /* the constant 16 */
+ IA64_OPND_GR0, /* gr0 */
+ IA64_OPND_IP, /* instruction pointer (ip) */
+ IA64_OPND_PR, /* predicate register (pr) */
+ IA64_OPND_PR_ROT, /* rotating predicate register (pr.rot) */
+ IA64_OPND_PSR, /* processor status register (psr) */
+ IA64_OPND_PSR_L, /* processor status register L (psr.l) */
+ IA64_OPND_PSR_UM, /* processor status register UM (psr.um) */
+
+ /* register operands: */
+ IA64_OPND_AR3, /* third application register # (bits 20-26) */
+ IA64_OPND_B1, /* branch register # (bits 6-8) */
+ IA64_OPND_B2, /* branch register # (bits 13-15) */
+ IA64_OPND_CR3, /* third control register # (bits 20-26) */
+ IA64_OPND_F1, /* first floating-point register # */
+ IA64_OPND_F2, /* second floating-point register # */
+ IA64_OPND_F3, /* third floating-point register # */
+ IA64_OPND_F4, /* fourth floating-point register # */
+ IA64_OPND_P1, /* first predicate # */
+ IA64_OPND_P2, /* second predicate # */
+ IA64_OPND_R1, /* first register # */
+ IA64_OPND_R2, /* second register # */
+ IA64_OPND_R3, /* third register # */
+ IA64_OPND_R3_2, /* third register # (limited to gr0-gr3) */
+
+ /* indirect operands: */
+ IA64_OPND_CPUID_R3, /* cpuid[reg] */
+ IA64_OPND_DBR_R3, /* dbr[reg] */
+ IA64_OPND_DTR_R3, /* dtr[reg] */
+ IA64_OPND_ITR_R3, /* itr[reg] */
+ IA64_OPND_IBR_R3, /* ibr[reg] */
+ IA64_OPND_MR3, /* memory at addr of third register # */
+ IA64_OPND_MSR_R3, /* msr[reg] */
+ IA64_OPND_PKR_R3, /* pkr[reg] */
+ IA64_OPND_PMC_R3, /* pmc[reg] */
+ IA64_OPND_PMD_R3, /* pmd[reg] */
+ IA64_OPND_RR_R3, /* rr[reg] */
+
+ /* immediate operands: */
+ IA64_OPND_CCNT5, /* 5-bit count (31 - bits 20-24) */
+ IA64_OPND_CNT2a, /* 2-bit count (1 + bits 27-28) */
+ IA64_OPND_CNT2b, /* 2-bit count (bits 27-28): 1, 2, 3 */
+ IA64_OPND_CNT2c, /* 2-bit count (bits 30-31): 0, 7, 15, or 16 */
+ IA64_OPND_CNT5, /* 5-bit count (bits 14-18) */
+ IA64_OPND_CNT6, /* 6-bit count (bits 27-32) */
+ IA64_OPND_CPOS6a, /* 6-bit count (63 - bits 20-25) */
+ IA64_OPND_CPOS6b, /* 6-bit count (63 - bits 14-19) */
+ IA64_OPND_CPOS6c, /* 6-bit count (63 - bits 31-36) */
+ IA64_OPND_IMM1, /* signed 1-bit immediate (bit 36) */
+ IA64_OPND_IMMU2, /* unsigned 2-bit immediate (bits 13-14) */
+ IA64_OPND_IMMU7a, /* unsigned 7-bit immediate (bits 13-19) */
+ IA64_OPND_IMMU7b, /* unsigned 7-bit immediate (bits 20-26) */
+ IA64_OPND_SOF, /* 8-bit stack frame size */
+ IA64_OPND_SOL, /* 8-bit size of locals */
+ IA64_OPND_SOR, /* 6-bit number of rotating registers (scaled by 8) */
+ IA64_OPND_IMM8, /* signed 8-bit immediate (bits 13-19 & 36) */
+ IA64_OPND_IMM8U4, /* cmp4*u signed 8-bit immediate (bits 13-19 & 36) */
+ IA64_OPND_IMM8M1, /* signed 8-bit immediate -1 (bits 13-19 & 36) */
+ IA64_OPND_IMM8M1U4, /* cmp4*u signed 8-bit immediate -1 (bits 13-19 & 36)*/
+ IA64_OPND_IMM8M1U8, /* cmp*u signed 8-bit immediate -1 (bits 13-19 & 36) */
+ IA64_OPND_IMMU9, /* unsigned 9-bit immediate (bits 33-34, 20-26) */
+ IA64_OPND_IMM9a, /* signed 9-bit immediate (bits 6-12, 27, 36) */
+ IA64_OPND_IMM9b, /* signed 9-bit immediate (bits 13-19, 27, 36) */
+ IA64_OPND_IMM14, /* signed 14-bit immediate (bits 13-19, 27-32, 36) */
+ IA64_OPND_IMM17, /* signed 17-bit immediate (2*bits 6-12, 24-31, 36) */
+ IA64_OPND_IMMU21, /* unsigned 21-bit immediate (bits 6-25, 36) */
+ IA64_OPND_IMM22, /* signed 22-bit immediate (bits 13-19, 22-36) */
+ IA64_OPND_IMMU24, /* unsigned 24-bit immediate (bits 6-26, 31-32, 36) */
+ IA64_OPND_IMM44, /* signed 44-bit immediate (2^16*bits 6-32, 36) */
+ IA64_OPND_IMMU62, /* unsigned 62-bit immediate */
+ IA64_OPND_IMMU64, /* unsigned 64-bit immediate (lotsa bits...) */
+ IA64_OPND_INC3, /* signed 3-bit (bits 13-15): +/-1, 4, 8, 16 */
+ IA64_OPND_LEN4, /* 4-bit count (bits 27-30 + 1) */
+ IA64_OPND_LEN6, /* 6-bit count (bits 27-32 + 1) */
+ IA64_OPND_MBTYPE4, /* 4-bit mux type (bits 20-23) */
+ IA64_OPND_MHTYPE8, /* 8-bit mux type (bits 20-27) */
+ IA64_OPND_POS6, /* 6-bit count (bits 14-19) */
+ IA64_OPND_TAG13, /* signed 13-bit tag (ip + 16*bits 6-12, 33-34) */
+ IA64_OPND_TAG13b, /* signed 13-bit tag (ip + 16*bits 24-32) */
+ IA64_OPND_TGT25, /* signed 25-bit (ip + 16*bits 6-25, 36) */
+ IA64_OPND_TGT25b, /* signed 25-bit (ip + 16*bits 6-12, 20-32, 36) */
+ IA64_OPND_TGT25c, /* signed 25-bit (ip + 16*bits 13-32, 36) */
+ IA64_OPND_TGT64, /* 64-bit (ip + 16*bits 13-32, 36, 2-40(L)) */
+
+ IA64_OPND_COUNT /* # of operand types (MUST BE LAST!) */
+ };
+
+enum ia64_dependency_mode
+{
+ IA64_DV_RAW,
+ IA64_DV_WAW,
+ IA64_DV_WAR,
+};
+
+enum ia64_dependency_semantics
+{
+ IA64_DVS_NONE,
+ IA64_DVS_IMPLIED,
+ IA64_DVS_IMPLIEDF,
+ IA64_DVS_DATA,
+ IA64_DVS_INSTR,
+ IA64_DVS_SPECIFIC,
+ IA64_DVS_OTHER,
+};
+
+enum ia64_resource_specifier
+{
+ IA64_RS_ANY,
+ IA64_RS_AR_K,
+ IA64_RS_AR_UNAT,
+ IA64_RS_AR, /* 8-15, 20, 22-23, 31, 33-35, 37-39, 41-43, 45-47, 67-111 */
+ IA64_RS_ARb, /* 48-63, 112-127 */
+ IA64_RS_BR,
+ IA64_RS_CFM,
+ IA64_RS_CPUID,
+ IA64_RS_CR_IRR,
+ IA64_RS_CR_LRR,
+ IA64_RS_CR, /* 3-7,10-15,18,26-63,75-79,82-127 */
+ IA64_RS_DBR,
+ IA64_RS_FR,
+ IA64_RS_FRb,
+ IA64_RS_GR0,
+ IA64_RS_GR,
+ IA64_RS_IBR,
+ IA64_RS_INSERVICE, /* CR[EOI] or CR[IVR] */
+ IA64_RS_MSR,
+ IA64_RS_PKR,
+ IA64_RS_PMC,
+ IA64_RS_PMD,
+ IA64_RS_PR,
+ IA64_RS_PR63,
+ IA64_RS_RR,
+
+ IA64_RS_ARX, /* ARs not in RS_AR or RS_ARb */
+ IA64_RS_CRX, /* CRs not in RS_CR */
+ IA64_RS_PSR, /* PSR bits */
+ IA64_RS_RSE, /* implementation-specific RSE resources */
+ IA64_RS_AR_FPSR,
+};
+
+enum ia64_rse_resource
+{
+ IA64_RSE_N_STACKED_PHYS,
+ IA64_RSE_BOF,
+ IA64_RSE_STORE_REG,
+ IA64_RSE_LOAD_REG,
+ IA64_RSE_BSPLOAD,
+ IA64_RSE_RNATBITINDEX,
+ IA64_RSE_CFLE,
+ IA64_RSE_NDIRTY,
+};
+
+/* Information about a given resource dependency */
+struct ia64_dependency
+{
+ /* Name of the resource */
+ const char *name;
+ /* Does this dependency need further specification? */
+ enum ia64_resource_specifier specifier;
+ /* Mode of dependency */
+ enum ia64_dependency_mode mode;
+ /* Dependency semantics */
+ enum ia64_dependency_semantics semantics;
+ /* Register index, if applicable (distinguishes AR, CR, and PSR deps) */
+#define REG_NONE (-1)
+ int regindex;
+ /* Special info on semantics */
+ const char *info;
+};
+
+/* Two arrays of indexes into the ia64_dependency table.
+ chks are dependencies to check for conflicts when an opcode is
+ encountered; regs are dependencies to register (mark as used) when an
+ opcode is used. chks correspond to readers (RAW) or writers (WAW or
+ WAR) of a resource, while regs correspond to writers (RAW or WAW) and
+ readers (WAR) of a resource. */
+struct ia64_opcode_dependency
+{
+ int nchks;
+ const unsigned short *chks;
+ int nregs;
+ const unsigned short *regs;
+};
+
+/* encode/extract the note/index for a dependency */
+#define RDEP(N,X) (((N)<<11)|(X))
+#define NOTE(X) (((X)>>11)&0x1F)
+#define DEP(X) ((X)&0x7FF)
+
+/* A template descriptor describes the execution units that are active
+ for each of the three slots. It also specifies the location of
+ instruction group boundaries that may be present between two slots. */
+struct ia64_templ_desc
+ {
+ int group_boundary; /* 0=no boundary, 1=between slot 0 & 1, etc. */
+ enum ia64_unit exec_unit[3];
+ const char *name;
+ };
+
+/* The opcode table is an array of struct ia64_opcode. */
+
+struct ia64_opcode
+ {
+ /* The opcode name. */
+ const char *name;
+
+ /* The type of the instruction: */
+ enum ia64_insn_type type;
+
+ /* Number of output operands: */
+ int num_outputs;
+
+ /* The opcode itself. Those bits which will be filled in with
+ operands are zeroes. */
+ ia64_insn opcode;
+
+ /* The opcode mask. This is used by the disassembler. This is a
+ mask containing ones indicating those bits which must match the
+ opcode field, and zeroes indicating those bits which need not
+ match (and are presumably filled in by operands). */
+ ia64_insn mask;
+
+ /* An array of operand codes. Each code is an index into the
+ operand table. They appear in the order which the operands must
+ appear in assembly code, and are terminated by a zero. */
+ enum ia64_opnd operands[5];
+
+ /* One bit flags for the opcode. These are primarily used to
+ indicate specific processors and environments support the
+ instructions. The defined values are listed below. */
+ unsigned int flags;
+
+ /* Used by ia64_find_next_opcode (). */
+ short ent_index;
+
+ /* Opcode dependencies. */
+ const struct ia64_opcode_dependency *dependencies;
+ };
+
+/* Values defined for the flags field of a struct ia64_opcode. */
+
+#define IA64_OPCODE_FIRST (1<<0) /* must be first in an insn group */
+#define IA64_OPCODE_X_IN_MLX (1<<1) /* insn is allowed in X slot of MLX */
+#define IA64_OPCODE_LAST (1<<2) /* must be last in an insn group */
+#define IA64_OPCODE_PRIV (1<<3) /* privileged instruct */
+#define IA64_OPCODE_SLOT2 (1<<4) /* insn allowed in slot 2 only */
+#define IA64_OPCODE_NO_PRED (1<<5) /* insn cannot be predicated */
+#define IA64_OPCODE_PSEUDO (1<<6) /* insn is a pseudo-op */
+#define IA64_OPCODE_F2_EQ_F3 (1<<7) /* constraint: F2 == F3 */
+#define IA64_OPCODE_LEN_EQ_64MCNT (1<<8) /* constraint: LEN == 64-CNT */
+#define IA64_OPCODE_MOD_RRBS (1<<9) /* modifies all rrbs in CFM */
+
+/* A macro to extract the major opcode from an instruction. */
+#define IA64_OP(i) (((i) >> 37) & 0xf)
+
+enum ia64_operand_class
+ {
+ IA64_OPND_CLASS_CST, /* constant */
+ IA64_OPND_CLASS_REG, /* register */
+ IA64_OPND_CLASS_IND, /* indirect register */
+ IA64_OPND_CLASS_ABS, /* absolute value */
+ IA64_OPND_CLASS_REL, /* IP-relative value */
+ };
+
+/* The operands table is an array of struct ia64_operand. */
+
+struct ia64_operand
+{
+ enum ia64_operand_class class;
+
+ /* Set VALUE as the operand bits for the operand of type SELF in the
+ instruction pointed to by CODE. If an error occurs, *CODE is not
+ modified and the returned string describes the cause of the
+ error. If no error occurs, NULL is returned. */
+ const char *(*insert) (const struct ia64_operand *self, ia64_insn value,
+ ia64_insn *code);
+
+ /* Extract the operand bits for an operand of type SELF from
+ instruction CODE store them in *VALUE. If an error occurs, the
+ cause of the error is described by the string returned. If no
+ error occurs, NULL is returned. */
+ const char *(*extract) (const struct ia64_operand *self, ia64_insn code,
+ ia64_insn *value);
+
+ /* A string whose meaning depends on the operand class. */
+
+ const char *str;
+
+ struct bit_field
+ {
+ /* The number of bits in the operand. */
+ int bits;
+
+ /* How far the operand is left shifted in the instruction. */
+ int shift;
+ }
+ field[4]; /* no operand has more than this many bit-fields */
+
+ unsigned int flags;
+
+ const char *desc; /* brief description */
+};
+
+/* Values defined for the flags field of a struct ia64_operand. */
+
+/* Disassemble as signed decimal (instead of hex): */
+#define IA64_OPND_FLAG_DECIMAL_SIGNED (1<<0)
+/* Disassemble as unsigned decimal (instead of hex): */
+#define IA64_OPND_FLAG_DECIMAL_UNSIGNED (1<<1)
+
+extern const struct ia64_templ_desc ia64_templ_desc[16];
+
+/* The tables are sorted by major opcode number and are otherwise in
+ the order in which the disassembler should consider instructions. */
+extern struct ia64_opcode ia64_opcodes_a[];
+extern struct ia64_opcode ia64_opcodes_i[];
+extern struct ia64_opcode ia64_opcodes_m[];
+extern struct ia64_opcode ia64_opcodes_b[];
+extern struct ia64_opcode ia64_opcodes_f[];
+extern struct ia64_opcode ia64_opcodes_d[];
+
+
+extern struct ia64_opcode *ia64_find_opcode (const char *name);
+extern struct ia64_opcode *ia64_find_next_opcode (struct ia64_opcode *ent);
+
+extern struct ia64_opcode *ia64_dis_opcode (ia64_insn insn,
+ enum ia64_insn_type type);
+
+extern void ia64_free_opcode (struct ia64_opcode *ent);
+extern const struct ia64_dependency *ia64_find_dependency (int index);
+
+/* To avoid circular library dependencies, this array is implemented
+ in bfd/cpu-ia64-opc.c: */
+extern const struct ia64_operand elf64_ia64_operands[IA64_OPND_COUNT];
+
+#endif /* opcode_ia64_h */
diff --git a/include/opcode/ppc.h b/include/opcode/ppc.h
index 974f0dfa569..246e3c77683 100644
--- a/include/opcode/ppc.h
+++ b/include/opcode/ppc.h
@@ -88,6 +88,9 @@ extern const int powerpc_num_opcodes;
/* Opcode is supported as part of the 64-bit bridge. */
#define PPC_OPCODE_64_BRIDGE (0400)
+/* Opcode is supported by Altivec Vector Unit */
+#define PPC_OPCODE_ALTIVEC (01000)
+
/* A macro to extract the major opcode from an instruction. */
#define PPC_OP(i) (((i) >> 26) & 0x3f)
@@ -221,6 +224,11 @@ extern const struct powerpc_operand powerpc_operands[];
number is allowed). This flag will only be set for a signed
operand. */
#define PPC_OPERAND_NEGATIVE (04000)
+
+/* This operand names a vector unit register. The disassembler
+ prints these with a leading 'v'. */
+#define PPC_OPERAND_VR (010000)
+
/* The POWER and PowerPC assemblers use a few macros. We keep them
with the operands table for simplicity. The macro table is an
diff --git a/include/opcode/tic54x.h b/include/opcode/tic54x.h
new file mode 100644
index 00000000000..09ee8c90370
--- /dev/null
+++ b/include/opcode/tic54x.h
@@ -0,0 +1,167 @@
+/* tic54x.h -- Header file for TI TMS320C54X opcode table
+ Copyright 1999, 2000 Free Software Foundation, Inc.
+ Written by Timothy Wall (twall@cygnus.com)
+
+This file is part of GDB, GAS, and the GNU binutils.
+
+GDB, GAS, and the GNU binutils are free software; you can redistribute
+them and/or modify them under the terms of the GNU General Public
+License as published by the Free Software Foundation; either version
+1, or (at your option) any later version.
+
+GDB, GAS, and the GNU binutils are distributed in the hope that they
+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 file; see the file COPYING. If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA. */
+
+#ifndef _TIC54X_H_
+#define _TIC54X_H_
+
+typedef struct _symbol
+{
+ const char *name;
+ unsigned short value;
+} symbol;
+
+enum optype {
+ OPT = 0x8000,
+ OP_None = 0x0,
+
+ OP_Xmem, /* AR3 or AR4, indirect */
+ OP_Ymem, /* AR3 or AR4, indirect */
+ OP_pmad, /* PROG mem, direct */
+ OP_dmad, /* DATA mem, direct */
+ OP_Smem,
+ OP_Lmem, /* 32-bit single-addressed (direct/indirect) */
+ OP_MMR,
+ OP_PA,
+ OP_Sind,
+ OP_xpmad,
+ OP_xpmad_ms7,
+ OP_MMRX,
+ OP_MMRY,
+
+ OP_SRC1, /* src accumulator in bit 8 */
+ OP_SRC, /* src accumulator in bit 9 */
+ OP_RND, /* rounded result dst accumulator, opposite of bit 8 */
+ OP_DST, /* dst accumulator in bit 8 */
+ OP_ARX, /* arX in bits 0-3 */
+ OP_SHIFT, /* -16 to 15 (SHIFT), bits 0-4 */
+ OP_SHFT, /* 0 to 15 (SHIFT1 in summary), bits 0-3 */
+ OP_B, /* ACC B only */
+ OP_A, /* ACC A only */
+
+ OP_lk, /* 16-bit immediate, '#' optional */
+ OP_TS,
+ OP_k8, /* -128 <= k <= 128 */
+ OP_16, /* literal "16" */
+ OP_BITC, /* 0 to 16 */
+ OP_CC, /* condition code */
+ OP_CC2, /* 4-bit condition code */
+ OP_CC3, /* 2-bit condition code */
+ OP_123, /* 1, 2, or 3 */
+ OP_031, /* 0-31, numeric */
+ OP_k5, /* 0 to 31 */
+ OP_k8u, /* 0 to 255 */
+ OP_ASM, /* "ASM" */
+ OP_T, /* "T" */
+ OP_DP, /* "DP" */
+ OP_ARP, /* "ARP" */
+ OP_k3, /* 0-7 */
+ OP_lku, /* 0 to 65535 */
+ OP_N, /* 0/1 or ST0/ST1 */
+ OP_SBIT, /* status bit or 0-15 */
+ OP_12, /* one or two */
+ OP_k9, /* 9 bits of data page (DP) address */
+ OP_TRN, /* "TRN" */
+
+};
+
+typedef struct _template
+{
+ /* The opcode mnemonic */
+ const char *name;
+
+ unsigned int words; /* insn size in words */
+ int minops, maxops; /* min/max operand count */
+ /* The significant bits in the opcode. Other bits are zero.
+ Instructions with more than 16 bits of opcode store the rest in the upper
+ 16 bits.
+ */
+ unsigned short opcode;
+#define INDIRECT(OP) ((OP)&0x80)
+#define MOD(OP) (((OP)>>3)&0xF)
+#define ARF(OP) ((OP)&0x7)
+#define IS_LKADDR(OP) (INDIRECT(OP) && MOD(OP)>=12)
+#define SRC(OP) ((OP)&0x200)
+#define DST(OP) ((OP)&0x100)
+#define SRC1(OP) ((OP)&0x100)
+#define SHIFT(OP) (((OP)&0x10)?(((OP)&0x1F)-32):((OP)&0x1F))
+#define SHFT(OP) ((OP)&0xF)
+#define ARX(OP) ((OP)&0x7)
+#define XMEM(OP) (((OP)&0x00F0)>>4)
+#define YMEM(OP) ((OP)&0x000F)
+#define XMOD(C) (((C)&0xC)>>2)
+#define XARX(C) (((C)&0x3)+2)
+#define CC3(OP) (((OP)>>8)&0x3)
+#define SBIT(OP) ((OP)&0xF)
+#define MMR(OP) ((OP)&0x7F)
+#define MMRX(OP) ((((OP)>>4)&0xF)+16)
+#define MMRY(OP) (((OP)&0xF)+16)
+
+#define OPTYPE(X) ((X)&~OPT)
+
+ /* Ones in this mask indicate which bits must match the opcode field.
+ Zeroes indicate don't care bits (operands and/or opcode options) */
+ unsigned short mask;
+
+ /* An array of operand codes (at most 4 operands) */
+#define MAX_OPERANDS 4
+ enum optype operand_types[MAX_OPERANDS];
+
+ /* Special purpose flags (e.g. branch type, parallel, delay, etc)
+ */
+ unsigned short flags;
+#define B_NEXT 0 /* normal execution, next insn is next address */
+#define B_BRANCH 1 /* next insn is in opcode */
+#define B_RET 2 /* next insn is on stack */
+#define B_BACC 3 /* next insn is in acc */
+#define B_REPEAT 4 /* next insn repeats */
+#define FL_BMASK 0x07
+
+#define FL_DELAY 0x10 /* instruction uses delay slots */
+#define FL_EXT 0x20 /* instruction takes two words */
+#define FL_FAR 0x40 /* far mode addressing */
+#define FL_LP 0x80 /* LP-only instruction */
+#define FL_NR 0x100 /* no repeat allowed */
+#define FL_SMR 0x200 /* Smem read (for flagging write-only *+ARx */
+
+ unsigned short opcode2, mask2; /* some insns have an extended opcode */
+
+} template;
+
+typedef struct _partemplate {
+ char *name;
+ char *parname;
+ unsigned int words; /* length in words */
+ int minops, maxops; /* min/max operand count for 2nd part of insn */
+ unsigned short opcode;
+ unsigned short mask;
+ enum optype operand_types[MAX_OPERANDS];
+ enum optype paroperand_types[MAX_OPERANDS];
+} partemplate;
+
+extern const template tic54x_unknown_opcode;
+extern const template tic54x_optab[];
+extern const partemplate tic54x_paroptab[];
+extern const symbol mmregs[], regs[];
+extern const symbol condition_codes[], cc2_codes[], status_bits[];
+extern const symbol cc3_codes[];
+extern const char *misc_symbols[];
+
+#endif /* TIC54X_H */
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 37c565831b1..bc85c404a3e 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,35 @@
+Tue May 30 16:45:25 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * floatformat.c: Add name to each floatformat field.
+
+Tue May 30 15:07:52 2000 Jeffrey A Law (law@cygnus.com)
+
+ * Makefile.in (objalloc.o): Depend on config.h
+
+2000-05-29 Zack Weinberg <zack@wolery.cumb.org>
+
+ * hashtab.c, partition.c, xmemdup.c: Include string.h
+ if HAVE_STRING_H.
+ * pexecute.c, xexit.c: Include stdlib.h if HAVE_STDLIB_H.
+ * objalloc.c: Include config.h. Include stdlib.h and don't
+ declare malloc or free if HAVE_STDLIB_H.
+ * strerror.c, strsignal.c: Include stdlib.h if HAVE_STDLIB_H,
+ else declare malloc without prototype. Include string.h if
+ HAVE_STRING_H, else declare memset without prototype. Don't
+ include stddef.h.
+
+ * sort.c: Bring over from GCC.
+
+2000-05-26 Alexandre Oliva <aoliva@cygnus.com>
+
+ * Makefile.in (maintainer-clean-subdir): Fix handling of empty
+ SUBDIRS.
+
+2000-04-21 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * Makefile.in (*-subdir): Revamp slightly to avoid losing on
+ 4.3BSD systems.
+
2000-04-05 Richard Henderson <rth@cygnus.com>
* splay-tree.c (splay_tree_remove): New.
diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in
index 9aa57f06d4b..d7052ad2965 100644
--- a/libiberty/Makefile.in
+++ b/libiberty/Makefile.in
@@ -244,9 +244,10 @@ all-subdir check-subdir installcheck-subdir info-subdir \
install-info-subdir clean-info-subdir dvi-subdir install-subdir \
etags-subdir mostlyclean-subdir clean-subdir distclean-subdir \
maintainer-clean-subdir:
- @target=`echo $@ | sed -e 's/-subdir//'`; \
- for dir in . $(SUBDIRS) ; do \
- test $$dir = . || (cd $$dir && $(MAKE) $$target) || exit 1; \
+ @subdirs='$(SUBDIRS)'; \
+ target=`echo $@ | sed -e 's/-subdir//'`; \
+ for dir in $$subdirs ; do \
+ cd $$dir && $(MAKE) $$target; \
done
$(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS) $(ALLOCA): stamp-picdir
@@ -270,7 +271,7 @@ getruntime.o: config.h $(INCDIR)/libiberty.h
hex.o: $(INCDIR)/libiberty.h
floatformat.o: $(INCDIR)/floatformat.h
mkstemps.o: config.h
-objalloc.o: $(INCDIR)/objalloc.h
+objalloc.o: config.h $(INCDIR)/objalloc.h
obstack.o: config.h $(INCDIR)/obstack.h
partition.o: config.h $(INCDIR)/partition.h
pexecute.o: config.h $(INCDIR)/libiberty.h
diff --git a/libiberty/floatformat.c b/libiberty/floatformat.c
index 1d8f16df353..3cb78f51dde 100644
--- a/libiberty/floatformat.c
+++ b/libiberty/floatformat.c
@@ -1,5 +1,5 @@
/* IEEE floating point support routines, for GDB, the GNU Debugger.
- Copyright (C) 1991, 1994, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1994, 1999, 2000 Free Software Foundation, Inc.
This file is part of GDB.
@@ -36,19 +36,27 @@ extern char *memset ();
/* floatformats for IEEE single and double, big and little endian. */
const struct floatformat floatformat_ieee_single_big =
{
- floatformat_big, 32, 0, 1, 8, 127, 255, 9, 23, floatformat_intbit_no
+ floatformat_big, 32, 0, 1, 8, 127, 255, 9, 23,
+ floatformat_intbit_no,
+ "floatformat_ieee_single_big"
};
const struct floatformat floatformat_ieee_single_little =
{
- floatformat_little, 32, 0, 1, 8, 127, 255, 9, 23, floatformat_intbit_no
+ floatformat_little, 32, 0, 1, 8, 127, 255, 9, 23,
+ floatformat_intbit_no,
+ "floatformat_ieee_single_little"
};
const struct floatformat floatformat_ieee_double_big =
{
- floatformat_big, 64, 0, 1, 11, 1023, 2047, 12, 52, floatformat_intbit_no
+ floatformat_big, 64, 0, 1, 11, 1023, 2047, 12, 52,
+ floatformat_intbit_no,
+ "floatformat_ieee_double_big"
};
const struct floatformat floatformat_ieee_double_little =
{
- floatformat_little, 64, 0, 1, 11, 1023, 2047, 12, 52, floatformat_intbit_no
+ floatformat_little, 64, 0, 1, 11, 1023, 2047, 12, 52,
+ floatformat_intbit_no,
+ "floatformat_ieee_double_little"
};
/* floatformat for IEEE double, little endian byte order, with big endian word
@@ -56,24 +64,30 @@ const struct floatformat floatformat_ieee_double_little =
const struct floatformat floatformat_ieee_double_littlebyte_bigword =
{
- floatformat_littlebyte_bigword, 64, 0, 1, 11, 1023, 2047, 12, 52, floatformat_intbit_no
+ floatformat_littlebyte_bigword, 64, 0, 1, 11, 1023, 2047, 12, 52,
+ floatformat_intbit_no,
+ "floatformat_ieee_double_little"
};
const struct floatformat floatformat_i387_ext =
{
floatformat_little, 80, 0, 1, 15, 0x3fff, 0x7fff, 16, 64,
- floatformat_intbit_yes
+ floatformat_intbit_yes,
+ "floatformat_i387_ext"
};
const struct floatformat floatformat_m68881_ext =
{
/* Note that the bits from 16 to 31 are unused. */
- floatformat_big, 96, 0, 1, 15, 0x3fff, 0x7fff, 32, 64, floatformat_intbit_yes
+ floatformat_big, 96, 0, 1, 15, 0x3fff, 0x7fff, 32, 64,
+ floatformat_intbit_yes,
+ "floatformat_m68881_ext"
};
const struct floatformat floatformat_i960_ext =
{
/* Note that the bits from 0 to 15 are unused. */
floatformat_little, 96, 16, 17, 15, 0x3fff, 0x7fff, 32, 64,
- floatformat_intbit_yes
+ floatformat_intbit_yes,
+ "floatformat_i960_ext"
};
const struct floatformat floatformat_m88110_ext =
{
@@ -81,17 +95,20 @@ const struct floatformat floatformat_m88110_ext =
/* Harris uses raw format 128 bytes long, but the number is just an ieee
double, and the last 64 bits are wasted. */
floatformat_big,128, 0, 1, 11, 0x3ff, 0x7ff, 12, 52,
- floatformat_intbit_no
+ floatformat_intbit_no,
+ "floatformat_m88110_ext(harris)"
#else
floatformat_big, 80, 0, 1, 15, 0x3fff, 0x7fff, 16, 64,
- floatformat_intbit_yes
+ floatformat_intbit_yes,
+ "floatformat_m88110_ext"
#endif /* HARRIS_FLOAT_FORMAT */
};
const struct floatformat floatformat_arm_ext =
{
/* Bits 1 to 16 are unused. */
floatformat_big, 96, 0, 17, 15, 0x3fff, 0x7fff, 32, 64,
- floatformat_intbit_yes
+ floatformat_intbit_yes,
+ "floatformat_arm_ext"
};
static unsigned long get_field PARAMS ((unsigned char *,
diff --git a/libiberty/hashtab.c b/libiberty/hashtab.c
index 16c5d3e4b12..6ae34aab0f1 100644
--- a/libiberty/hashtab.c
+++ b/libiberty/hashtab.c
@@ -41,6 +41,10 @@ Boston, MA 02111-1307, USA. */
#include <stdlib.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
#include <stdio.h>
#include "libiberty.h"
diff --git a/libiberty/objalloc.c b/libiberty/objalloc.c
index 57754a86105..50995691e33 100644
--- a/libiberty/objalloc.c
+++ b/libiberty/objalloc.c
@@ -18,6 +18,8 @@ Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include "ansidecl.h"
+#include "config.h"
+
#include "objalloc.h"
/* Get a definition for NULL. */
@@ -33,11 +35,16 @@ Boston, MA 02111-1307, USA. */
#include <stddef.h>
#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#else
/* For systems with larger pointers than ints, this must be declared. */
extern PTR malloc PARAMS ((size_t));
extern void free PARAMS ((PTR));
#endif
+#endif
+
/* These routines allocate space for an object. Freeing allocated
space may or may not free all more recently allocated space.
diff --git a/libiberty/partition.c b/libiberty/partition.c
index c1d584774bf..52fb128d7bf 100644
--- a/libiberty/partition.c
+++ b/libiberty/partition.c
@@ -27,6 +27,10 @@
#include <stdlib.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
#include "libiberty.h"
#include "partition.h"
diff --git a/libiberty/pexecute.c b/libiberty/pexecute.c
index 56ddec78dd8..f1aea9db7f0 100644
--- a/libiberty/pexecute.c
+++ b/libiberty/pexecute.c
@@ -35,6 +35,9 @@ Boston, MA 02111-1307, USA. */
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
#define ISSPACE (x) isspace(x)
#ifdef HAVE_SYS_WAIT_H
#include <sys/wait.h>
diff --git a/libiberty/sort.c b/libiberty/sort.c
new file mode 100644
index 00000000000..da2d660b6f5
--- /dev/null
+++ b/libiberty/sort.c
@@ -0,0 +1,185 @@
+/* Sorting algorithms.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+ Contributed by Mark Mitchell <mark@codesourcery.com>.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC 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 GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include "libiberty.h"
+#include "sort.h"
+#include <limits.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#ifndef UCHAR_MAX
+#define UCHAR_MAX ((unsigned char)(-1))
+#endif
+
+/* POINTERS and WORK are both arrays of N pointers. When this
+ function returns POINTERS will be sorted in ascending order. */
+
+void sort_pointers (n, pointers, work)
+ size_t n;
+ void **pointers;
+ void **work;
+{
+ /* The type of a single digit. This can be any unsigned integral
+ type. When changing this, DIGIT_MAX should be changed as
+ well. */
+ typedef unsigned char digit_t;
+
+ /* The maximum value a single digit can have. */
+#define DIGIT_MAX (UCHAR_MAX + 1)
+
+ /* The Ith entry is the number of elements in *POINTERSP that have I
+ in the digit on which we are currently sorting. */
+ unsigned int count[DIGIT_MAX];
+ /* Nonzero if we are running on a big-endian machine. */
+ int big_endian_p;
+ size_t i;
+ size_t j;
+
+ /* The algorithm used here is radix sort which takes time linear in
+ the number of elements in the array. */
+
+ /* The algorithm here depends on being able to swap the two arrays
+ an even number of times. */
+ if ((sizeof (void *) / sizeof (digit_t)) % 2 != 0)
+ abort ();
+
+ /* Figure out the endianness of the machine. */
+ for (i = 0, j = 0; i < sizeof (size_t); ++i)
+ {
+ j *= (UCHAR_MAX + 1);
+ j += i;
+ }
+ big_endian_p = (((char *)&j)[0] == 0);
+
+ /* Move through the pointer values from least significant to most
+ significant digits. */
+ for (i = 0; i < sizeof (void *) / sizeof (digit_t); ++i)
+ {
+ digit_t *digit;
+ digit_t *bias;
+ digit_t *top;
+ unsigned int *countp;
+ void **pointerp;
+
+ /* The offset from the start of the pointer will depend on the
+ endianness of the machine. */
+ if (big_endian_p)
+ j = sizeof (void *) / sizeof (digit_t) - i;
+ else
+ j = i;
+
+ /* Now, perform a stable sort on this digit. We use counting
+ sort. */
+ memset (count, 0, DIGIT_MAX * sizeof (unsigned int));
+
+ /* Compute the address of the appropriate digit in the first and
+ one-past-the-end elements of the array. On a little-endian
+ machine, the least-significant digit is closest to the front. */
+ bias = ((digit_t *) pointers) + j;
+ top = ((digit_t *) (pointers + n)) + j;
+
+ /* Count how many there are of each value. At the end of this
+ loop, COUNT[K] will contain the number of pointers whose Ith
+ digit is K. */
+ for (digit = bias;
+ digit < top;
+ digit += sizeof (void *) / sizeof (digit_t))
+ ++count[*digit];
+
+ /* Now, make COUNT[K] contain the number of pointers whose Ith
+ digit is less than or equal to K. */
+ for (countp = count + 1; countp < count + DIGIT_MAX; ++countp)
+ *countp += countp[-1];
+
+ /* Now, drop the pointers into their correct locations. */
+ for (pointerp = pointers + n - 1; pointerp >= pointers; --pointerp)
+ work[--count[((digit_t *) pointerp)[j]]] = *pointerp;
+
+ /* Swap WORK and POINTERS so that POINTERS contains the sorted
+ array. */
+ pointerp = pointers;
+ pointers = work;
+ work = pointerp;
+ }
+}
+
+/* Everything below here is a unit test for the routines in this
+ file. */
+
+#ifdef UNIT_TEST
+
+#include <stdio.h>
+
+void *xmalloc (n)
+ size_t n;
+{
+ return malloc (n);
+}
+
+int main (int argc, char **argv)
+{
+ int k;
+ int result;
+ size_t i;
+ void **pointers;
+ void **work;
+
+ if (argc > 1)
+ k = atoi (argv[1]);
+ else
+ k = 10;
+
+ pointers = xmalloc (k * sizeof (void *));
+ work = xmalloc (k * sizeof (void *));
+
+ for (i = 0; i < k; ++i)
+ {
+ pointers[i] = (void *) random ();
+ printf ("%x\n", pointers[i]);
+ }
+
+ sort_pointers (k, pointers, work);
+
+ printf ("\nSorted\n\n");
+
+ result = 0;
+
+ for (i = 0; i < k; ++i)
+ {
+ printf ("%x\n", pointers[i]);
+ if (i > 0 && (char*) pointers[i] < (char*) pointers[i - 1])
+ result = 1;
+ }
+
+ free (pointers);
+ free (work);
+
+ return result;
+}
+
+#endif
diff --git a/libiberty/strerror.c b/libiberty/strerror.c
index 644cc75462a..0dd2220cd73 100644
--- a/libiberty/strerror.c
+++ b/libiberty/strerror.c
@@ -25,14 +25,17 @@
/* Routines imported from standard C runtime libraries. */
-#ifdef __STDC__
-#include <stddef.h>
-extern void *malloc (size_t size); /* 4.10.3.3 */
-extern void *memset (void *s, int c, size_t n); /* 4.11.6.1 */
-#else /* !__STDC__ */
-extern char *malloc (); /* Standard memory allocater */
-extern char *memset ();
-#endif /* __STDC__ */
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#else
+extern PTR malloc ();
+#endif
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+extern PTR memset ();
+#endif
#ifndef MAX
# define MAX(a,b) ((a) > (b) ? (a) : (b))
diff --git a/libiberty/strsignal.c b/libiberty/strsignal.c
index c7bb10c441c..5625323b71b 100644
--- a/libiberty/strsignal.c
+++ b/libiberty/strsignal.c
@@ -23,14 +23,17 @@
/* Routines imported from standard C runtime libraries. */
-#ifdef __STDC__
-#include <stddef.h>
-extern void *malloc (size_t size); /* 4.10.3.3 */
-extern void *memset (void *s, int c, size_t n); /* 4.11.6.1 */
-#else /* !__STDC__ */
-extern char *malloc (); /* Standard memory allocater */
-extern char *memset ();
-#endif /* __STDC__ */
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#else
+extern PTR malloc ();
+#endif
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+extern PTR memset ();
+#endif
/* Undefine the macro we used to hide the definition of sys_siglist
found in the system header files. */
diff --git a/libiberty/xexit.c b/libiberty/xexit.c
index 431bbe02991..7aa52ac7599 100644
--- a/libiberty/xexit.c
+++ b/libiberty/xexit.c
@@ -21,6 +21,9 @@ Boston, MA 02111-1307, USA. */
#include "libiberty.h"
#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
/* This variable is set by xatexit if it is called. This way, xmalloc
doesn't drag xatexit into the link. */
diff --git a/libiberty/xmemdup.c b/libiberty/xmemdup.c
index f780041aa13..fdb17a547f3 100644
--- a/libiberty/xmemdup.c
+++ b/libiberty/xmemdup.c
@@ -9,6 +9,9 @@
#include "libiberty.h"
#include <sys/types.h> /* For size_t. */
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
PTR
xmemdup (input, copy_size, alloc_size)
diff --git a/ltmain.sh b/ltmain.sh
index c32939ee833..a171502c77f 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -2779,6 +2779,11 @@ static const void *lt_preloaded_setup() {
# Quote the relink command for shipping.
if test -n "$relink_command"; then
+ # Preserve any variables that may affect compiler behavior
+ variables_saved_for_relink="GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+ for var in $variables_saved_for_relink; do
+ relink_command="$var=\""`eval \$echo \"X'$'$var\" | $Xsed -e "$sed_quote_subst"`"\"; export $var; $relink_command"
+ done
relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
fi
diff --git a/mmalloc/ChangeLog b/mmalloc/ChangeLog
index 31df15f250d..20339a535fb 100644
--- a/mmalloc/ChangeLog
+++ b/mmalloc/ChangeLog
@@ -1,3 +1,8 @@
+2000-05-17 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * Makefile.in (install-info): Make sure $(infodir) exists. Run
+ install-info program on the installed Info files.
+
2000-03-20 Eli Zaretskii <eliz@is.elta.co.il>
* Makefile.in (install): Append "n", not ".n" to libmmalloc.a,
diff --git a/mmalloc/Makefile.in b/mmalloc/Makefile.in
index 3c0c94e85ba..cde39897aaa 100644
--- a/mmalloc/Makefile.in
+++ b/mmalloc/Makefile.in
@@ -110,8 +110,13 @@ mmalloc.dvi: mmalloc.texi
rm -f mmalloc.?? mmalloc.??s mmalloc.log mmalloc.aux mmalloc.toc
install-info: info
+ $(SHELL) $(srcdir)/../mkinstalldirs $(infodir)
if test ! -f mmalloc.info ; then cd $(srcdir); fi; \
$(INSTALL_DATA) mmalloc.info $(infodir)/mmalloc.info
+ @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
+ echo " install-info --info-dir=$(infodir) $(infodir)/mmalloc.info";\
+ install-info --info-dir=$(infodir) $(infodir)/mmalloc.info || :;\
+ else : ; fi
check: test1.c
# $(CC) -g $(srcdir)/test1.c libmmalloc.a
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 8ef0f7cedd5..201f3d28dd4 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,210 @@
+2000-06-02 Kazu Hirata <kazu@hxi.com>=0A=
+
+ * h8300-dis.c: Follow the GNU coding style.
+ (bfd_h8_disassemble) Fix a typo.
+
+2000-06-02 Nick Clifton <nickc@cygnus.com>
+
+ * h8300-dis.c (bfd_h8_disassemble):
+
+2000-06-01 Kazu Hirata <kazu@hxi.com>
+
+ * h8300-dis.c (bfd_h8_disassemble_init): Fix a typo.
+ (bfd_h8_disassemble): Distinguish the operand size of inc/dev.[wl]
+ correctly. Fix a typo.
+
+2000-05-31 Nick Clifton <nickc@cygnus.com>
+
+ * opintl.h (_(String)): Explain why dgettext is used instead of
+ gettext.
+
+2000-05-30 Nick Clifton <nickc@cygnus.com>
+
+ * opintl.h (gettext, dgettext, dcgettext, textdomain,
+ bindtextdomain): Replace defines with those from intl/libgettext.h
+ to quieten gcc warnings.
+
+2000-05-26 Alan Modra <alan@linuxcare.com.au>
+
+ * Makefile.am: Update dependencies with "make dep-am"
+ * Makefile.in: Regenerate.
+
+Thu May 25 22:53:20 2000 Alexandre Oliva <aoliva@cygnus.com>
+
+ * m10300-dis.c (disassemble): Don't assume 32-bit longs when
+ sign-extending operands.
+
+Mon May 15 15:18:07 2000 Donald Lindsay <dlindsay@cygnus.com>
+
+ * d10v-opc.c (d10v_opcodes): add ALONE tag to all short branches
+ except brf's.
+
+2000-05-21 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.am (LIBIBERTY): Define.
+
+Fri May 19 12:29:27 EDT 2000 Diego Novillo <dnovillo@redhat.com>
+
+ * mips-dis.c (REGISTER_NAMES): Rename to STD_REGISTER_NAMES.
+ (STD_REGISTER_NAMES): New name for REGISTER_NAMES.
+ (reg_names): Rename to std_reg_names. Change it to a char **
+ static variable.
+ (std_reg_names): New name for reg_names.
+ (set_mips_isa_type): Set reg_names to point to std_reg_names by
+ default.
+
+2000-05-16 Frank Ch. Eigler <fche@redhat.com>
+
+ * fr30-desc.h: Partially regenerated to account for changed
+ CGEN_MAX_* -> CGEN_ACTUAL_MAX_* macros.
+ * m32r-desc.h: Ditto.
+
+2000-05-15 Nick Clifton <nickc@cygnus.com>
+
+ * arm-opc.h: Use upper case for flasg in MSR and MRS
+ instructions. Allow any bit to be set in the field_mask of
+ the MSR instruction.
+
+ * arm-dis.c (print_insn_arm): Decode _x and _s bits of the
+ field_mask of an MSR instruction.
+
+2000-05-11 Thomas de Lellis <tdel@windriver.com>
+
+ * arm-opc.c: Disassembly of thumb ldsb/ldsh
+ instructions changed to ldrsb/ldrsh.
+
+2000-05-11 Ulf Carlsson <ulfc@engr.sgi.com>
+
+ * mips-dis.c (print_insn_arg): Don't mask top 32 bits of 64-bit
+ target addresses for 'jal' and 'j'.
+
+2000-05-10 Geoff Keating <geoffk@cygnus.com>
+
+ * ppc-opc.c (powerpc_opcodes): Make the predicted-branch opcodes
+ also available in common mode when powerpc syntax is being used.
+
+2000-05-08 Alan Modra <alan@linuxcare.com.au>
+
+ * m68k-dis.c (dummy_printer): Add ATTRIBUTE_UNUSED to args.
+ (dummy_print_address): Ditto.
+
+2000-05-04 Timothy Wall <twall@cygnus.com>
+
+ * tic54x-opc.c: New.
+ * tic54x-dis.c: New.
+ * disassemble.c (disassembler): Add ARCH_tic54x.
+ * configure.in: Added tic54x target.
+ * configure: Ditto.
+ * Makefile.am: Add tic54x dependencies.
+ * Makefile.in: Ditto.
+
+2000-05-03 J.T. Conklin <jtc@redback.com>
+
+ * ppc-opc.c (VA, VB, VC, VD, VS, SIMM, UIMM, SHB): New macros, for
+ vector unit operands.
+ (VX, VX_MASK, VXA, VXA_MASK, VXR, VXR_MASK): New macros, for vector
+ unit instruction formats.
+ (PPCVEC): New macro, mask for vector instructions.
+ (powerpc_operands): Add table entries for above operand types.
+ (powerpc_opcodes): Add table entries for vector instructions.
+
+ * ppc-dis.c (print_insn_big_powerpc): Add PPC_OPCODE_ALTIVEC to mask.
+ (print_insn_little_powerpc): Likewise.
+ (print_insn_powerpc): Prepend 'v' when printing vector registers.
+
+Sun Apr 23 17:54:14 2000 Denis Chertykov <denisc@overta.ru>
+
+ * avr-dis.c (reg_fmul_d): New. Extract destination register from
+ FMUL instruction.
+ (reg_fmul_r): New. Extract source register from FMUL instruction.
+ (reg_muls_d): New. Extract destination register from MULS instruction.
+ (reg_muls_r): New. Extract source register from MULS instruction.
+ (reg_movw_d): New. Extract destination register from MOVW instruction.
+ (reg_movw_r): New. Extract source register from MOVW instruction.
+ (print_insn_avr): Handle MOVW, MULS, MULSU, FMUL, FMULS, FMULSU,
+ EICALL, EIJMP, LPM r,Z, ELPM r,Z, SPM, ESPM instructions.
+
+Mon Apr 24 15:21:35 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * configure.in: Add bfd_powerpc_64_arch.
+ * disassemble.c (disassembler): Use print_insn_big_powerpc for
+ 64 bit code.
+
+2000-04-24 Nick Clifton <nickc@cygnus.com>
+
+ * fr30-desc.c (fr30_cgen_cpu_open): Initialise signed_overflow
+ field.
+
+2000-04-22 Timothy Wall <twall@cygnus.com>
+
+ * ia64-gen.c (general): Add an ordered table of primary
+ opcode names, as well as priority fields to disassembly data
+ structures to enforce a preferred disassembly format based on the
+ ordering of the opcode tables.
+ (load_insn_classes): Show a useful message if IC tables are missing.
+ (load_depfile): Ditto.
+ * ia64-asmtab.h (struct ia64_dis_names ): Add priority flag to
+ distinguish preferred disassembly.
+ * ia64-opc-f.c: Reorder some insn for preferred disassembly
+ format. Fix incorrect flag on fma.s/fma.s.s0.
+ * ia64-opc.c: Scan *all* disassembly matches and use the one with
+ the highest priority.
+ * ia64-opc-b.c: Use more abbreviations.
+ * ia64-asmtab.c: Regenerate.
+
+Fri Apr 21 16:03:39 2000 Jason Eckhardt <jle@cygnus.com>
+
+ * hppa-dis.c (extract_16): New function.
+ (print_insn_hppa): Fix incorrect handling of 'fe'. Added handling of
+ new operand types l,y,&,fe,fE,fx.
+
+Fri Apr 21 13:20:53 2000 Richard Henderson <rth@cygnus.com>
+ David Mosberger <davidm@hpl.hp.com>
+ Timothy Wall <twall@cygnus.com>
+ Bob Manson <manson@charmed.cygnus.com>
+ Jim Wilson <wilson@cygnus.com>
+
+ * Makefile.am (HFILES): Add ia64-asmtab.h, ia64-opc.h.
+ (CFILES): Add ia64-dis.c, ia64-opc-a.c, ia64-opc-b.c, ia64-opc-f.c,
+ ia64-opc-i.c, ia64-opc-m.c, ia64-opc-d.c, ia64-opc.c, ia64-gen.c,
+ ia64-asmtab.c.
+ (ALL_MACHINES): Add ia64-dis.lo, ia64-opc.lo.
+ (ia64-ic.tbl, ia64-raw.tbl, ia64-waw.tbl, ia64-war.tbl, ia64-gen,
+ ia64-gen.o, ia64-asmtab.c, ia64-dis.lo, ia64-opc.lo): New rules.
+ * Makefile.in: Rebuild.
+ * configure Rebuild.
+ * configure.in (bfd_ia64_arch): New target.
+ * disassemble.c (ARCH_ia64): Define.
+ (disassembler): Support ARCH_ia64.
+ * ia64-asmtab.c, ia64-asmtab.h, ia64-dis.c, ia64-gen.c ia64-ic.tbl,
+ ia64-opc-a.c, ia64-opc-b.c, ia64-opc-d.c ia64-opc-f.c, ia64-opc-i.c,
+ ia64-opc-m.c, ia64-opc-x.c, ia64-opc.c, ia64-opc.h, ia64-raw.tbl,
+ ia64-war.tbl, ia64-waw.tbl): New files.
+
+2000-04-20 Alexandre Oliva <aoliva@cygnus.com>
+
+ * m10300-dis.c (HAVE_AM30, HAVE_AM33): Define.
+ (disassemble): Use them.
+
+2000-04-14 Alan Modra <alan@linuxcare.com.au>
+
+ * sysdep.h: Include "ansidecl.h" not <ansidecl.h>
+ * Makefile.am: Update dependencies.
+ * Makefile.in: Regenerate.
+
+2000-04-14 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * a29k-dis.c, alpha-dis.c, alpha-opc.c, arc-dis.c, arc-opc.c,
+ avr-dis.c, d10v-dis.c, d10v-opc.c, d30v-dis.c, d30v-opc.c,
+ disassemble.c, h8300-dis.c, h8500-dis.c, hppa-dis.c, i370-dis.c,
+ i370-opc.c, i960-dis.c, m10200-dis.c, m10200-opc.c, m10300-dis.c,
+ m10300-opc.c, m68k-dis.c, m68k-opc.c, m88k-dis.c, mcore-dis.c,
+ mips-dis.c, mips-opc.c, mips16-opc.c, pj-dis.c, pj-opc.c,
+ ppc-dis.c, ppc-opc.c, sh-dis.c, sparc-dis.c, sparc-opc.c,
+ tic80-dis.c, tic80-opc.c, v850-dis.c, v850-opc.c, vax-dis.c,
+ w65-dis.c, z8k-dis.c, z8kgen.c: Include sysdep.h. Remove
+ ansidecl.h as sysdep.h includes it.
+
Fri Apr 7 15:56:57 2000 Andrew Cagney <cagney@b1.cygnus.com>
* configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add
diff --git a/opcodes/Makefile.am b/opcodes/Makefile.am
index d4392c5f4d7..9b2385cc9b0 100644
--- a/opcodes/Makefile.am
+++ b/opcodes/Makefile.am
@@ -16,6 +16,9 @@ lib_LTLIBRARIES = libopcodes.la
# This is where bfd.h lives.
BFD_H = ../bfd/bfd.h
+# This is where libiberty lives.
+LIBIBERTY = ../libiberty/libiberty.a
+
# Header files.
HFILES = \
arm-opc.h \
@@ -25,6 +28,8 @@ HFILES = \
mcore-opc.h \
sh-opc.h \
sysdep.h \
+ ia64-asmtab.h \
+ ia64-opc.h \
w65-opc.h \
z8k-opc.h
@@ -58,6 +63,16 @@ CFILES = \
i370-opc.c \
i386-dis.c \
i960-dis.c \
+ ia64-dis.c \
+ ia64-opc-a.c \
+ ia64-opc-b.c \
+ ia64-opc-f.c \
+ ia64-opc-i.c \
+ ia64-opc-m.c \
+ ia64-opc-d.c \
+ ia64-opc.c \
+ ia64-gen.c \
+ ia64-asmtab.c \
m32r-asm.c \
m32r-desc.c \
m32r-dis.c \
@@ -84,6 +99,8 @@ CFILES = \
sparc-dis.c \
sparc-opc.c \
tic30-dis.c \
+ tic54x-dis.c \
+ tic54x-opc.c \
tic80-dis.c \
tic80-opc.c \
v850-dis.c \
@@ -120,6 +137,8 @@ ALL_MACHINES = \
i370-dis.lo \
i370-opc.lo \
i960-dis.lo \
+ ia64-dis.lo \
+ ia64-opc.lo \
m32r-asm.lo \
m32r-desc.lo \
m32r-dis.lo \
@@ -146,6 +165,8 @@ ALL_MACHINES = \
sparc-dis.lo \
sparc-opc.lo \
tic30-dis.lo \
+ tic54x-dis.lo \
+ tic54x-opc.lo \
tic80-dis.lo \
tic80-opc.lo \
v850-dis.lo \
@@ -202,6 +223,23 @@ CLEANFILES = \
+ia64-ic.tbl: $(srcdir)/ia64-ic.tbl
+ $(LN_S) -f $(srcdir)/ia64-ic.tbl
+ia64-raw.tbl: $(srcdir)/ia64-raw.tbl
+ $(LN_S) -f $(srcdir)/ia64-raw.tbl
+ia64-waw.tbl: $(srcdir)/ia64-waw.tbl
+ $(LN_S) -f $(srcdir)/ia64-waw.tbl
+ia64-war.tbl: $(srcdir)/ia64-war.tbl
+ $(LN_S) -f $(srcdir)/ia64-war.tbl
+
+ia64-gen: ia64-gen.o
+ $(LINK) ia64-gen.o $(LIBIBERTY)
+
+ia64-gen.o: ia64-gen.c ia64-opc.c ia64-opc-a.c ia64-opc-b.c ia64-opc-f.c \
+ ia64-opc-i.c ia64-opc-m.c ia64-opc-d.c ia64-opc.h
+
+ia64-asmtab.c: @MAINT@ ia64-gen ia64-ic.tbl ia64-raw.tbl ia64-waw.tbl ia64-war.tbl
+ ./ia64-gen > $(srcdir)/ia64-asmtab.c
# This dependency stuff is copied from BFD.
@@ -245,139 +283,177 @@ dep-am: DEP
# DO NOT DELETE THIS LINE -- mkdep uses it.
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
-a29k-dis.lo: a29k-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/opcode/a29k.h
-alpha-dis.lo: alpha-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/alpha.h
-alpha-opc.lo: alpha-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/alpha.h \
- $(BFD_H) opintl.h
-arc-dis.lo: arc-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/opcode/arc.h $(BFDDIR)/elf-bfd.h \
+a29k-dis.lo: a29k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/a29k.h
+alpha-dis.lo: alpha-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/alpha.h
+alpha-opc.lo: alpha-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/alpha.h $(BFD_H) opintl.h
+arc-dis.lo: arc-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/arc.h \
+ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h \
+ $(INCDIR)/elf/reloc-macros.h opintl.h
+arc-opc.lo: arc-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/arc.h opintl.h
+arm-dis.lo: arm-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) arm-opc.h $(INCDIR)/coff/internal.h \
+ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h opintl.h $(BFDDIR)/elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h \
- opintl.h
-arc-opc.lo: arc-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/arc.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) opintl.h
+cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h \
opintl.h
-arm-dis.lo: arm-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) arm-opc.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \
- $(INCDIR)/bfdlink.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 $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h opintl.h
-cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/libiberty.h \
- $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h \
+cgen-dis.lo: cgen-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
+cgen-opc.lo: cgen-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
+d10v-dis.lo: d10v-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d10v.h $(INCDIR)/dis-asm.h $(BFD_H)
+d10v-opc.lo: d10v-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d10v.h
+d30v-dis.lo: d30v-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d30v.h $(INCDIR)/dis-asm.h $(BFD_H) \
opintl.h
-cgen-dis.lo: cgen-dis.c sysdep.h config.h $(INCDIR)/libiberty.h \
- $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
-cgen-opc.lo: cgen-opc.c sysdep.h config.h $(INCDIR)/libiberty.h \
- $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
-d10v-dis.lo: d10v-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/d10v.h \
- $(INCDIR)/dis-asm.h $(BFD_H)
-d10v-opc.lo: d10v-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/d10v.h
-d30v-dis.lo: d30v-dis.c $(INCDIR)/opcode/d30v.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h opintl.h
-d30v-opc.lo: d30v-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/d30v.h
-dis-buf.lo: dis-buf.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) opintl.h
-disassemble.lo: disassemble.c $(INCDIR)/ansidecl.h \
+d30v-opc.lo: d30v-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d30v.h
+dis-buf.lo: dis-buf.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
+disassemble.lo: disassemble.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/dis-asm.h $(BFD_H)
-fr30-asm.lo: fr30-asm.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
- fr30-opc.h opintl.h
-fr30-desc.lo: fr30-desc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
- fr30-opc.h opintl.h
-fr30-dis.lo: fr30-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+fr30-asm.lo: fr30-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
fr30-opc.h opintl.h
-fr30-ibld.lo: fr30-ibld.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+fr30-desc.lo: fr30-desc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
fr30-opc.h opintl.h
-fr30-opc.lo: fr30-opc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
+fr30-dis.lo: fr30-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h fr30-desc.h \
+ $(INCDIR)/opcode/cgen.h fr30-opc.h opintl.h
+fr30-ibld.lo: fr30-ibld.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h fr30-desc.h \
+ $(INCDIR)/opcode/cgen.h fr30-opc.h opintl.h
+fr30-opc.lo: fr30-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(BFD_H) $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
fr30-opc.h
-h8300-dis.lo: h8300-dis.c $(INCDIR)/opcode/h8300.h \
- $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h opintl.h
-h8500-dis.lo: h8500-dis.c h8500-opc.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h opintl.h
-hppa-dis.lo: hppa-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h
-i370-dis.lo: i370-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/i370.h
-i370-opc.lo: i370-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/i370.h
+h8300-dis.lo: h8300-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/h8300.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ opintl.h
+h8500-dis.lo: h8500-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ h8500-opc.h $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
+hppa-dis.lo: hppa-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h
+i370-dis.lo: i370-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/i370.h
+i370-opc.lo: i370-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/i370.h
i386-dis.lo: i386-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
$(INCDIR)/ansidecl.h sysdep.h config.h opintl.h
-i960-dis.lo: i960-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h
-m32r-asm.lo: m32r-asm.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
- m32r-opc.h opintl.h
-m32r-desc.lo: m32r-desc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
- m32r-opc.h opintl.h
-m32r-dis.lo: m32r-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+i960-dis.lo: i960-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H)
+ia64-dis.lo: ia64-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
+ $(INCDIR)/ansidecl.h $(INCDIR)/opcode/ia64.h
+ia64-opc-a.lo: ia64-opc-a.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-b.lo: ia64-opc-b.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-f.lo: ia64-opc-f.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-i.lo: ia64-opc-i.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-m.lo: ia64-opc-m.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-d.lo: ia64-opc-d.c
+ia64-opc.lo: ia64-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
+ sysdep.h config.h ia64-asmtab.h $(INCDIR)/opcode/ia64.h \
+ ia64-asmtab.c
+ia64-gen.lo: ia64-gen.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
+ sysdep.h config.h ia64-opc.h $(INCDIR)/opcode/ia64.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-asmtab.lo: ia64-asmtab.c
+m32r-asm.lo: m32r-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h opintl.h
-m32r-ibld.lo: m32r-ibld.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+m32r-desc.lo: m32r-desc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h opintl.h
-m32r-opc.lo: m32r-opc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
+m32r-dis.lo: m32r-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h \
+ $(INCDIR)/opcode/cgen.h m32r-opc.h opintl.h
+m32r-ibld.lo: m32r-ibld.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h \
+ $(INCDIR)/opcode/cgen.h m32r-opc.h opintl.h
+m32r-opc.lo: m32r-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h
-m32r-opinst.lo: m32r-opinst.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
+m32r-opinst.lo: m32r-opinst.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h
-m68k-dis.lo: m68k-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/floatformat.h opintl.h \
+m68k-dis.lo: m68k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/floatformat.h \
+ opintl.h $(INCDIR)/opcode/m68k.h
+m68k-opc.lo: m68k-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/opcode/m68k.h
-m68k-opc.lo: m68k-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/m68k.h
-m88k-dis.lo: m88k-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/opcode/m88k.h opintl.h
-mcore-dis.lo: mcore-dis.c mcore-opc.h $(INCDIR)/ansidecl.h \
- $(INCDIR)/dis-asm.h $(BFD_H)
-mips-dis.lo: mips-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/opcode/mips.h opintl.h $(BFDDIR)/elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h
-mips-opc.lo: mips-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mips.h
-mips16-opc.lo: mips16-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mips.h
-m10200-dis.lo: m10200-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10200.h \
- $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
-m10200-opc.lo: m10200-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10200.h
-m10300-dis.lo: m10300-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10300.h \
- $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
-m10300-opc.lo: m10300-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10300.h
+m88k-dis.lo: m88k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/m88k.h \
+ opintl.h
+mcore-dis.lo: mcore-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ mcore-opc.h $(INCDIR)/dis-asm.h $(BFD_H)
+mips-dis.lo: mips-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/mips.h \
+ opintl.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h
+mips-opc.lo: mips-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mips.h
+mips16-opc.lo: mips16-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mips.h
+m10200-dis.lo: m10200-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10200.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ opintl.h
+m10200-opc.lo: m10200-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10200.h
+m10300-dis.lo: m10300-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10300.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ opintl.h
+m10300-opc.lo: m10300-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10300.h
ns32k-dis.lo: ns32k-dis.c $(BFD_H) $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/dis-asm.h $(INCDIR)/opcode/ns32k.h \
opintl.h
-pj-dis.lo: pj-dis.c $(INCDIR)/opcode/pj.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h
-pj-opc.lo: pj-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/pj.h
-ppc-dis.lo: ppc-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/ppc.h
-ppc-opc.lo: ppc-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/ppc.h \
- opintl.h
-sh-dis.lo: sh-dis.c sh-opc.h $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h
-sparc-dis.lo: sparc-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/opcode/sparc.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/libiberty.h opintl.h
-sparc-opc.lo: sparc-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/sparc.h
-tic30-dis.lo: tic30-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/opcode/tic30.h
-tic80-dis.lo: tic80-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/tic80.h \
- $(INCDIR)/dis-asm.h $(BFD_H)
-tic80-opc.lo: tic80-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/tic80.h
-v850-dis.lo: v850-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/v850.h \
- $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
-v850-opc.lo: v850-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/v850.h \
+pj-dis.lo: pj-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/pj.h $(INCDIR)/dis-asm.h $(BFD_H)
+pj-opc.lo: pj-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/pj.h
+ppc-dis.lo: ppc-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/ppc.h
+ppc-opc.lo: ppc-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/ppc.h opintl.h
+sh-dis.lo: sh-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ sh-opc.h $(INCDIR)/dis-asm.h $(BFD_H)
+sparc-dis.lo: sparc-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/sparc.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ $(INCDIR)/libiberty.h opintl.h
+sparc-opc.lo: sparc-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/sparc.h
+tic30-dis.lo: tic30-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/tic30.h
+tic54x-dis.lo: tic54x-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
+ $(INCDIR)/ansidecl.h $(INCDIR)/opcode/tic54x.h $(INCDIR)/coff/tic54x.h \
+ $(INCDIR)/coff/ti.h
+tic54x-opc.lo: tic54x-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/tic54x.h
+tic80-dis.lo: tic80-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/tic80.h $(INCDIR)/dis-asm.h $(BFD_H)
+tic80-opc.lo: tic80-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/tic80.h
+v850-dis.lo: v850-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/v850.h $(INCDIR)/dis-asm.h $(BFD_H) \
opintl.h
-vax-dis.lo: vax-dis.c $(INCDIR)/opcode/vax.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h
-w65-dis.lo: w65-dis.c w65-opc.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h
-z8k-dis.lo: z8k-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) z8k-opc.h
-z8kgen.lo: z8kgen.c sysdep.h config.h
+v850-opc.lo: v850-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/v850.h opintl.h
+vax-dis.lo: vax-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/vax.h $(INCDIR)/dis-asm.h $(BFD_H)
+w65-dis.lo: w65-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ w65-opc.h $(INCDIR)/dis-asm.h $(BFD_H)
+z8k-dis.lo: z8k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) z8k-opc.h
+z8kgen.lo: z8kgen.c sysdep.h config.h $(INCDIR)/ansidecl.h
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/opcodes/Makefile.in b/opcodes/Makefile.in
index f3d82d5b41c..c5c1d01020e 100644
--- a/opcodes/Makefile.in
+++ b/opcodes/Makefile.in
@@ -119,6 +119,9 @@ lib_LTLIBRARIES = libopcodes.la
# This is where bfd.h lives.
BFD_H = ../bfd/bfd.h
+# This is where libiberty lives.
+LIBIBERTY = ../libiberty/libiberty.a
+
# Header files.
HFILES = \
arm-opc.h \
@@ -128,6 +131,8 @@ HFILES = \
mcore-opc.h \
sh-opc.h \
sysdep.h \
+ ia64-asmtab.h \
+ ia64-opc.h \
w65-opc.h \
z8k-opc.h
@@ -162,6 +167,16 @@ CFILES = \
i370-opc.c \
i386-dis.c \
i960-dis.c \
+ ia64-dis.c \
+ ia64-opc-a.c \
+ ia64-opc-b.c \
+ ia64-opc-f.c \
+ ia64-opc-i.c \
+ ia64-opc-m.c \
+ ia64-opc-d.c \
+ ia64-opc.c \
+ ia64-gen.c \
+ ia64-asmtab.c \
m32r-asm.c \
m32r-desc.c \
m32r-dis.c \
@@ -188,6 +203,8 @@ CFILES = \
sparc-dis.c \
sparc-opc.c \
tic30-dis.c \
+ tic54x-dis.c \
+ tic54x-opc.c \
tic80-dis.c \
tic80-opc.c \
v850-dis.c \
@@ -225,6 +242,8 @@ ALL_MACHINES = \
i370-dis.lo \
i370-opc.lo \
i960-dis.lo \
+ ia64-dis.lo \
+ ia64-opc.lo \
m32r-asm.lo \
m32r-desc.lo \
m32r-dis.lo \
@@ -251,6 +270,8 @@ ALL_MACHINES = \
sparc-dis.lo \
sparc-opc.lo \
tic30-dis.lo \
+ tic54x-dis.lo \
+ tic54x-opc.lo \
tic80-dis.lo \
tic80-opc.lo \
v850-dis.lo \
@@ -700,6 +721,24 @@ config.status: $(srcdir)/configure $(srcdir)/../bfd/configure.in
# The start marker is written this way to pass through automake unscathed.
+ia64-ic.tbl: $(srcdir)/ia64-ic.tbl
+ $(LN_S) -f $(srcdir)/ia64-ic.tbl
+ia64-raw.tbl: $(srcdir)/ia64-raw.tbl
+ $(LN_S) -f $(srcdir)/ia64-raw.tbl
+ia64-waw.tbl: $(srcdir)/ia64-waw.tbl
+ $(LN_S) -f $(srcdir)/ia64-waw.tbl
+ia64-war.tbl: $(srcdir)/ia64-war.tbl
+ $(LN_S) -f $(srcdir)/ia64-war.tbl
+
+ia64-gen: ia64-gen.o
+ $(LINK) ia64-gen.o $(LIBIBERTY)
+
+ia64-gen.o: ia64-gen.c ia64-opc.c ia64-opc-a.c ia64-opc-b.c ia64-opc-f.c \
+ ia64-opc-i.c ia64-opc-m.c ia64-opc-d.c ia64-opc.h
+
+ia64-asmtab.c: @MAINT@ ia64-gen ia64-ic.tbl ia64-raw.tbl ia64-waw.tbl ia64-war.tbl
+ ./ia64-gen > $(srcdir)/ia64-asmtab.c
+
# This dependency stuff is copied from BFD.
DEP: dep.sed $(CFILES) $(HFILES) config.h
@@ -742,141 +781,179 @@ dep-am: DEP
# DO NOT DELETE THIS LINE -- mkdep uses it.
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
-a29k-dis.lo: a29k-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/opcode/a29k.h
-alpha-dis.lo: alpha-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/alpha.h
-alpha-opc.lo: alpha-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/alpha.h \
- $(BFD_H) opintl.h
-arc-dis.lo: arc-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/opcode/arc.h $(BFDDIR)/elf-bfd.h \
+a29k-dis.lo: a29k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/a29k.h
+alpha-dis.lo: alpha-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/alpha.h
+alpha-opc.lo: alpha-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/alpha.h $(BFD_H) opintl.h
+arc-dis.lo: arc-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/arc.h \
+ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h \
+ $(INCDIR)/elf/reloc-macros.h opintl.h
+arc-opc.lo: arc-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/arc.h opintl.h
+arm-dis.lo: arm-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) arm-opc.h $(INCDIR)/coff/internal.h \
+ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h opintl.h $(BFDDIR)/elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h \
- opintl.h
-arc-opc.lo: arc-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/arc.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) opintl.h
+cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h \
opintl.h
-arm-dis.lo: arm-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) arm-opc.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \
- $(INCDIR)/bfdlink.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 $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h opintl.h
-cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/libiberty.h \
- $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h \
+cgen-dis.lo: cgen-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
+cgen-opc.lo: cgen-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
+d10v-dis.lo: d10v-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d10v.h $(INCDIR)/dis-asm.h $(BFD_H)
+d10v-opc.lo: d10v-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d10v.h
+d30v-dis.lo: d30v-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d30v.h $(INCDIR)/dis-asm.h $(BFD_H) \
opintl.h
-cgen-dis.lo: cgen-dis.c sysdep.h config.h $(INCDIR)/libiberty.h \
- $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
-cgen-opc.lo: cgen-opc.c sysdep.h config.h $(INCDIR)/libiberty.h \
- $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
-d10v-dis.lo: d10v-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/d10v.h \
- $(INCDIR)/dis-asm.h $(BFD_H)
-d10v-opc.lo: d10v-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/d10v.h
-d30v-dis.lo: d30v-dis.c $(INCDIR)/opcode/d30v.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h opintl.h
-d30v-opc.lo: d30v-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/d30v.h
-dis-buf.lo: dis-buf.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) opintl.h
-disassemble.lo: disassemble.c $(INCDIR)/ansidecl.h \
+d30v-opc.lo: d30v-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d30v.h
+dis-buf.lo: dis-buf.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
+disassemble.lo: disassemble.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/dis-asm.h $(BFD_H)
-fr30-asm.lo: fr30-asm.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
- fr30-opc.h opintl.h
-fr30-desc.lo: fr30-desc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
- fr30-opc.h opintl.h
-fr30-dis.lo: fr30-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+fr30-asm.lo: fr30-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
fr30-opc.h opintl.h
-fr30-ibld.lo: fr30-ibld.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+fr30-desc.lo: fr30-desc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
fr30-opc.h opintl.h
-fr30-opc.lo: fr30-opc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
+fr30-dis.lo: fr30-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h fr30-desc.h \
+ $(INCDIR)/opcode/cgen.h fr30-opc.h opintl.h
+fr30-ibld.lo: fr30-ibld.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h fr30-desc.h \
+ $(INCDIR)/opcode/cgen.h fr30-opc.h opintl.h
+fr30-opc.lo: fr30-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(BFD_H) $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
fr30-opc.h
-h8300-dis.lo: h8300-dis.c $(INCDIR)/opcode/h8300.h \
- $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h opintl.h
-h8500-dis.lo: h8500-dis.c h8500-opc.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h opintl.h
-hppa-dis.lo: hppa-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h
-i370-dis.lo: i370-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/i370.h
-i370-opc.lo: i370-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/i370.h
+h8300-dis.lo: h8300-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/h8300.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ opintl.h
+h8500-dis.lo: h8500-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ h8500-opc.h $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
+hppa-dis.lo: hppa-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h
+i370-dis.lo: i370-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/i370.h
+i370-opc.lo: i370-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/i370.h
i386-dis.lo: i386-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
$(INCDIR)/ansidecl.h sysdep.h config.h opintl.h
-i960-dis.lo: i960-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h
-m32r-asm.lo: m32r-asm.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
- m32r-opc.h opintl.h
-m32r-desc.lo: m32r-desc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
- m32r-opc.h opintl.h
-m32r-dis.lo: m32r-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+i960-dis.lo: i960-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H)
+ia64-dis.lo: ia64-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
+ $(INCDIR)/ansidecl.h $(INCDIR)/opcode/ia64.h
+ia64-opc-a.lo: ia64-opc-a.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-b.lo: ia64-opc-b.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-f.lo: ia64-opc-f.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-i.lo: ia64-opc-i.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-m.lo: ia64-opc-m.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-d.lo: ia64-opc-d.c
+ia64-opc.lo: ia64-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
+ sysdep.h config.h ia64-asmtab.h $(INCDIR)/opcode/ia64.h \
+ ia64-asmtab.c
+ia64-gen.lo: ia64-gen.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
+ sysdep.h config.h ia64-opc.h $(INCDIR)/opcode/ia64.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-asmtab.lo: ia64-asmtab.c
+m32r-asm.lo: m32r-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h opintl.h
-m32r-ibld.lo: m32r-ibld.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+m32r-desc.lo: m32r-desc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h opintl.h
-m32r-opc.lo: m32r-opc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
+m32r-dis.lo: m32r-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h \
+ $(INCDIR)/opcode/cgen.h m32r-opc.h opintl.h
+m32r-ibld.lo: m32r-ibld.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h \
+ $(INCDIR)/opcode/cgen.h m32r-opc.h opintl.h
+m32r-opc.lo: m32r-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h
-m32r-opinst.lo: m32r-opinst.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
+m32r-opinst.lo: m32r-opinst.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h
-m68k-dis.lo: m68k-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/floatformat.h opintl.h \
+m68k-dis.lo: m68k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/floatformat.h \
+ opintl.h $(INCDIR)/opcode/m68k.h
+m68k-opc.lo: m68k-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/opcode/m68k.h
-m68k-opc.lo: m68k-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/m68k.h
-m88k-dis.lo: m88k-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/opcode/m88k.h opintl.h
-mcore-dis.lo: mcore-dis.c mcore-opc.h $(INCDIR)/ansidecl.h \
- $(INCDIR)/dis-asm.h $(BFD_H)
-mips-dis.lo: mips-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/opcode/mips.h opintl.h $(BFDDIR)/elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h
-mips-opc.lo: mips-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mips.h
-mips16-opc.lo: mips16-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mips.h
-m10200-dis.lo: m10200-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10200.h \
- $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
-m10200-opc.lo: m10200-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10200.h
-m10300-dis.lo: m10300-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10300.h \
- $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
-m10300-opc.lo: m10300-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10300.h
+m88k-dis.lo: m88k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/m88k.h \
+ opintl.h
+mcore-dis.lo: mcore-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ mcore-opc.h $(INCDIR)/dis-asm.h $(BFD_H)
+mips-dis.lo: mips-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/mips.h \
+ opintl.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h
+mips-opc.lo: mips-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mips.h
+mips16-opc.lo: mips16-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mips.h
+m10200-dis.lo: m10200-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10200.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ opintl.h
+m10200-opc.lo: m10200-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10200.h
+m10300-dis.lo: m10300-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10300.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ opintl.h
+m10300-opc.lo: m10300-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10300.h
ns32k-dis.lo: ns32k-dis.c $(BFD_H) $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/dis-asm.h $(INCDIR)/opcode/ns32k.h \
opintl.h
-pj-dis.lo: pj-dis.c $(INCDIR)/opcode/pj.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h
-pj-opc.lo: pj-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/pj.h
-ppc-dis.lo: ppc-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/ppc.h
-ppc-opc.lo: ppc-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/ppc.h \
- opintl.h
-sh-dis.lo: sh-dis.c sh-opc.h $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h
-sparc-dis.lo: sparc-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/opcode/sparc.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/libiberty.h opintl.h
-sparc-opc.lo: sparc-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/sparc.h
-tic30-dis.lo: tic30-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/opcode/tic30.h
-tic80-dis.lo: tic80-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/tic80.h \
- $(INCDIR)/dis-asm.h $(BFD_H)
-tic80-opc.lo: tic80-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/tic80.h
-v850-dis.lo: v850-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/v850.h \
- $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
-v850-opc.lo: v850-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/v850.h \
+pj-dis.lo: pj-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/pj.h $(INCDIR)/dis-asm.h $(BFD_H)
+pj-opc.lo: pj-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/pj.h
+ppc-dis.lo: ppc-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/ppc.h
+ppc-opc.lo: ppc-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/ppc.h opintl.h
+sh-dis.lo: sh-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ sh-opc.h $(INCDIR)/dis-asm.h $(BFD_H)
+sparc-dis.lo: sparc-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/sparc.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ $(INCDIR)/libiberty.h opintl.h
+sparc-opc.lo: sparc-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/sparc.h
+tic30-dis.lo: tic30-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/tic30.h
+tic54x-dis.lo: tic54x-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
+ $(INCDIR)/ansidecl.h $(INCDIR)/opcode/tic54x.h $(INCDIR)/coff/tic54x.h \
+ $(INCDIR)/coff/ti.h
+tic54x-opc.lo: tic54x-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/tic54x.h
+tic80-dis.lo: tic80-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/tic80.h $(INCDIR)/dis-asm.h $(BFD_H)
+tic80-opc.lo: tic80-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/tic80.h
+v850-dis.lo: v850-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/v850.h $(INCDIR)/dis-asm.h $(BFD_H) \
opintl.h
-vax-dis.lo: vax-dis.c $(INCDIR)/opcode/vax.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h
-w65-dis.lo: w65-dis.c w65-opc.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h
-z8k-dis.lo: z8k-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) z8k-opc.h
-z8kgen.lo: z8kgen.c sysdep.h config.h
+v850-opc.lo: v850-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/v850.h opintl.h
+vax-dis.lo: vax-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/vax.h $(INCDIR)/dis-asm.h $(BFD_H)
+w65-dis.lo: w65-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ w65-opc.h $(INCDIR)/dis-asm.h $(BFD_H)
+z8k-dis.lo: z8k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) z8k-opc.h
+z8kgen.lo: z8kgen.c sysdep.h config.h $(INCDIR)/ansidecl.h
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/opcodes/a29k-dis.c b/opcodes/a29k-dis.c
index 72959c975d9..7b8b1b775a9 100644
--- a/opcodes/a29k-dis.c
+++ b/opcodes/a29k-dis.c
@@ -18,6 +18,7 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+#include "sysdep.h"
#include "dis-asm.h"
#include "opcode/a29k.h"
diff --git a/opcodes/alpha-dis.c b/opcodes/alpha-dis.c
index db2d8fac021..ce770bb41c8 100644
--- a/opcodes/alpha-dis.c
+++ b/opcodes/alpha-dis.c
@@ -21,7 +21,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
#include "sysdep.h"
#include "dis-asm.h"
#include "opcode/alpha.h"
diff --git a/opcodes/alpha-opc.c b/opcodes/alpha-opc.c
index 7a8ca593523..99458916ad3 100644
--- a/opcodes/alpha-opc.c
+++ b/opcodes/alpha-opc.c
@@ -21,7 +21,7 @@
02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/alpha.h"
#include "bfd.h"
#include "opintl.h"
diff --git a/opcodes/arc-dis.c b/opcodes/arc-dis.c
index 802b07b9521..03f13795275 100644
--- a/opcodes/arc-dis.c
+++ b/opcodes/arc-dis.c
@@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+#include "sysdep.h"
#include "dis-asm.h"
#include "opcode/arc.h"
#include "elf-bfd.h"
diff --git a/opcodes/arc-opc.c b/opcodes/arc-opc.c
index 0f8f6895965..f17ffc086fe 100644
--- a/opcodes/arc-opc.c
+++ b/opcodes/arc-opc.c
@@ -17,7 +17,7 @@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/arc.h"
#include "opintl.h"
diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c
index f131adafebf..a3e7112b3fc 100644
--- a/opcodes/arm-dis.c
+++ b/opcodes/arm-dis.c
@@ -420,7 +420,7 @@ print_insn_arm (pc, info, given)
break;
case 'C':
- switch (given & 0x00090000)
+ switch (given & 0x000f0000)
{
default:
func (stream, "_???");
@@ -429,10 +429,16 @@ print_insn_arm (pc, info, given)
func (stream, "_all");
break;
case 0x10000:
- func (stream, "_ctl");
+ func (stream, "_c");
+ break;
+ case 0x20000:
+ func (stream, "_x");
+ break;
+ case 0x40000:
+ func (stream, "_s");
break;
case 0x80000:
- func (stream, "_flg");
+ func (stream, "_f");
break;
}
break;
diff --git a/opcodes/arm-opc.h b/opcodes/arm-opc.h
index 44a16a425f0..5ecde4be6ad 100644
--- a/opcodes/arm-opc.h
+++ b/opcodes/arm-opc.h
@@ -1,6 +1,6 @@
/* Opcode table for the ARM.
- Copyright 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+ Copyright 1994, 1995, 1996, 1997, 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
@@ -93,8 +93,8 @@ static struct arm_opcode arm_opcodes[] =
{0x00a00000, 0x0de00000, "adc%c%20's\t%12-15r, %16-19r, %o"},
{0x00c00000, 0x0de00000, "sbc%c%20's\t%12-15r, %16-19r, %o"},
{0x00e00000, 0x0de00000, "rsc%c%20's\t%12-15r, %16-19r, %o"},
- {0x0120f000, 0x0db6f000, "msr%c\t%22?scpsr%C, %o"},
- {0x010f0000, 0x0fbf0fff, "mrs%c\t%12-15r, %22?scpsr"},
+ {0x0120f000, 0x0db0f000, "msr%c\t%22?SCPSR%C, %o"},
+ {0x010f0000, 0x0fbf0fff, "mrs%c\t%12-15r, %22?SCPSR"},
{0x01000000, 0x0de00000, "tst%c%p\t%16-19r, %o"},
{0x01200000, 0x0de00000, "teq%c%p\t%16-19r, %o"},
{0x01400000, 0x0de00000, "cmp%c%p\t%16-19r, %o"},
@@ -164,7 +164,7 @@ static struct arm_opcode arm_opcodes[] =
{0x0e000010, 0x0f100010, "mcr%c\t%8-11d, %21-23d, %12-15r, cr%16-19d, cr%0-3d, {%5-7d}"},
{0x0c000000, 0x0e100000, "stc%c%22'l\t%8-11d, cr%12-15d, %A"},
{0x0c100000, 0x0e100000, "ldc%c%22'l\t%8-11d, cr%12-15d, %A"},
-
+
/* The rest. */
{0x00000000, 0x00000000, "undefined instruction %0-31x"},
{0x00000000, 0x00000000, 0}
@@ -213,7 +213,7 @@ static struct thumb_opcode thumb_opcodes[] =
/* format 8 */
{0x5200, 0xFE00, "strh\t%0-2r, [%3-5r, %6-8r]"},
{0x5A00, 0xFE00, "ldrh\t%0-2r, [%3-5r, %6-8r]"},
- {0x5600, 0xF600, "lds%11?hb\t%0-2r, [%3-5r, %6-8r]"},
+ {0x5600, 0xF600, "ldrs%11?hb\t%0-2r, [%3-5r, %6-8r]"},
/* format 7 */
{0x5000, 0xFA00, "str%10'b\t%0-2r, [%3-5r, %6-8r]"},
{0x5800, 0xFA00, "ldr%10'b\t%0-2r, [%3-5r, %6-8r]"},
diff --git a/opcodes/avr-dis.c b/opcodes/avr-dis.c
index 78766869ffa..6fcd58cc6f8 100644
--- a/opcodes/avr-dis.c
+++ b/opcodes/avr-dis.c
@@ -18,6 +18,7 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+#include "sysdep.h"
#include "dis-asm.h"
#include "opintl.h"
@@ -28,7 +29,7 @@ typedef unsigned long u32;
#define IFMASK(a,b) ((opcode & (a)) == (b))
static char* SREG_flags = "CZNVSHTI";
-static char* sect94[] = {"COM","NEG","SWAP","INC","NULL","ASR","LSR","ROR",
+static char* sect94[] = {"COM","NEG","SWAP","INC",0,"ASR","LSR","ROR",
0,0,"DEC",0,0,0,0,0};
static char* sect98[] = {"CBI","SBIC","SBI","SBIS"};
static char* branchs[] = {
@@ -114,6 +115,72 @@ reg20w (opcode, dest)
}
+static void reg_fmul_d PARAMS ((u16, char *));
+
+static void
+reg_fmul_d (opcode, dest)
+ u16 opcode;
+ char *dest;
+{
+ sprintf(dest, "R%d", 16 + ((opcode >> 4) & 7));
+}
+
+
+static void reg_fmul_r PARAMS ((u16, char *));
+
+static void
+reg_fmul_r (opcode, dest)
+ u16 opcode;
+ char *dest;
+{
+ sprintf(dest, "R%d", 16 + (opcode & 7));
+}
+
+
+static void reg_muls_d PARAMS ((u16, char *));
+
+static void
+reg_muls_d (opcode, dest)
+ u16 opcode;
+ char *dest;
+{
+ sprintf(dest, "R%d", 16 + ((opcode >> 4) & 0xf));
+}
+
+
+static void reg_muls_r PARAMS ((u16, char *));
+
+static void
+reg_muls_r (opcode, dest)
+ u16 opcode;
+ char *dest;
+{
+ sprintf(dest, "R%d", 16 + (opcode & 0xf));
+}
+
+
+static void reg_movw_d PARAMS ((u16, char *));
+
+static void
+reg_movw_d (opcode, dest)
+ u16 opcode;
+ char *dest;
+{
+ sprintf(dest, "R%d", 2 * ((opcode >> 4) & 0xf));
+}
+
+
+static void reg_movw_r PARAMS ((u16, char *));
+
+static void
+reg_movw_r (opcode, dest)
+ u16 opcode;
+ char *dest;
+{
+ sprintf(dest, "R%d", 2 * (opcode & 0xf));
+}
+
+
static void lit404 PARAMS ((u16, char *));
static void
@@ -222,7 +289,33 @@ print_insn_avr(addr, info)
switch (opcode & 0x0c00)
{
case 0x0000:
- (*prin) (stream, " NOP");
+ switch (opcode & 0x0300)
+ {
+ case 0x0000:
+ (*prin) (stream, " NOP");
+ break;
+ case 0x0100:
+ reg_movw_d(opcode, rd);
+ reg_movw_r(opcode, rr);
+ (*prin) (stream, " MOVW %s,%s", rd, rr);
+ break;
+ case 0x0200:
+ reg_muls_d(opcode, rd);
+ reg_muls_r(opcode, rr);
+ (*prin) (stream, " MULS %s,%s", rd, rr);
+ break;
+ case 0x0300:
+ reg_fmul_d(opcode, rd);
+ reg_fmul_r(opcode, rr);
+ if (IFMASK(0x88, 0))
+ (*prin) (stream, " MULSU %s,%s", rd, rr);
+ else if (IFMASK(0x88, 8))
+ (*prin) (stream, " FMUL %s,%s", rd, rr);
+ else if (IFMASK(0x88, 0x80))
+ (*prin) (stream, " FMULS %s,%s", rd, rr);
+ else
+ (*prin) (stream, " FMULSU %s,%s", rd, rr);
+ }
break;
case 0x0400:
(*prin) (stream, " CPC %s,%s", rd, rr);
@@ -335,6 +428,18 @@ print_insn_avr(addr, info)
case 0x2:
(*prin) (stream, " LD %s,-Z", rd);
break;
+ case 0x4:
+ (*prin) (stream, " LPM %s,Z", rd);
+ break;
+ case 0x5:
+ (*prin) (stream, " LPM %s,Z+", rd);
+ break;
+ case 0x6:
+ (*prin) (stream, " ELPM %s,Z", rd);
+ break;
+ case 0x7:
+ (*prin) (stream, " ELPM %s,Z+", rd);
+ break;
case 0x9:
(*prin) (stream, " LD %s,Y+", rd);
break;
@@ -421,13 +526,20 @@ print_insn_avr(addr, info)
else
(*prin) (stream, " SE%c", SREG_flags[sf]);
}
- else if (IFMASK(0x000f, 0x0009))
+ else if (IFMASK(0x001f, 0x0009))
{
if (opcode & 0x0100)
(*prin) (stream, " ICALL");
else
(*prin) (stream, " IJMP");
}
+ else if (IFMASK(0x001f, 0x0019))
+ {
+ if (opcode & 0x0100)
+ (*prin) (stream, " EICALL");
+ else
+ (*prin) (stream, " EIJMP");
+ }
else if (IFMASK(0x010f, 0x0108))
{
if (IFMASK(0x0090, 0x0000))
@@ -442,6 +554,10 @@ print_insn_avr(addr, info)
(*prin) (stream, " LPM");
else if (IFMASK(0x00f0, 0x00d0))
(*prin) (stream, " ELPM");
+ else if (IFMASK(0x00f0, 0x00e0))
+ (*prin) (stream, " SPM");
+ else if (IFMASK(0x00f0, 0x00f0))
+ (*prin) (stream, " ESPM");
else
(*prin) (stream, " ????");
}
diff --git a/opcodes/configure b/opcodes/configure
index 1b30f7e0565..1655fe78145 100755
--- a/opcodes/configure
+++ b/opcodes/configure
@@ -3955,6 +3955,7 @@ if test x${all_targets} = xfalse ; then
bfd_i386_arch) ta="$ta i386-dis.lo" ;;
bfd_i860_arch) ;;
bfd_i960_arch) ta="$ta i960-dis.lo" ;;
+ bfd_ia64_arch) ta="$ta ia64-dis.lo ia64-opc.lo" ;;
bfd_m32r_arch) ta="$ta m32r-asm.lo m32r-desc.lo m32r-dis.lo m32r-ibld.lo m32r-opc.lo m32r-opinst.lo" using_cgen=yes ;;
bfd_m68k_arch) ta="$ta m68k-dis.lo m68k-opc.lo" ;;
bfd_m88k_arch) ta="$ta m88k-dis.lo" ;;
@@ -3968,10 +3969,12 @@ if test x${all_targets} = xfalse ; then
bfd_pyramid_arch) ;;
bfd_romp_arch) ;;
bfd_rs6000_arch) ta="$ta ppc-dis.lo ppc-opc.lo" ;;
+ bfd_powerpc_64_arch) ta="$ta ppc-dis.lo ppc-opc.lo" ;;
bfd_sh_arch) ta="$ta sh-dis.lo" ;;
bfd_sparc_arch) ta="$ta sparc-dis.lo sparc-opc.lo" ;;
bfd_tahoe_arch) ;;
bfd_tic30_arch) ta="$ta tic30-dis.lo" ;;
+ bfd_tic54x_arch) ta="$ta tic54x-dis.lo tic54x-opc.lo" ;;
bfd_tic80_arch) ta="$ta tic80-dis.lo tic80-opc.lo" ;;
bfd_v850_arch) ta="$ta v850-opc.lo v850-dis.lo" ;;
bfd_v850e_arch) ta="$ta v850-opc.lo v850-dis.lo" ;;
diff --git a/opcodes/configure.in b/opcodes/configure.in
index 6895c57908e..6f94bfcd87b 100644
--- a/opcodes/configure.in
+++ b/opcodes/configure.in
@@ -166,6 +166,7 @@ if test x${all_targets} = xfalse ; then
bfd_i386_arch) ta="$ta i386-dis.lo" ;;
bfd_i860_arch) ;;
bfd_i960_arch) ta="$ta i960-dis.lo" ;;
+ bfd_ia64_arch) ta="$ta ia64-dis.lo ia64-opc.lo" ;;
bfd_m32r_arch) ta="$ta m32r-asm.lo m32r-desc.lo m32r-dis.lo m32r-ibld.lo m32r-opc.lo m32r-opinst.lo" using_cgen=yes ;;
bfd_m68k_arch) ta="$ta m68k-dis.lo m68k-opc.lo" ;;
bfd_m88k_arch) ta="$ta m88k-dis.lo" ;;
@@ -179,10 +180,12 @@ if test x${all_targets} = xfalse ; then
bfd_pyramid_arch) ;;
bfd_romp_arch) ;;
bfd_rs6000_arch) ta="$ta ppc-dis.lo ppc-opc.lo" ;;
+ bfd_powerpc_64_arch) ta="$ta ppc-dis.lo ppc-opc.lo" ;;
bfd_sh_arch) ta="$ta sh-dis.lo" ;;
bfd_sparc_arch) ta="$ta sparc-dis.lo sparc-opc.lo" ;;
bfd_tahoe_arch) ;;
bfd_tic30_arch) ta="$ta tic30-dis.lo" ;;
+ bfd_tic54x_arch) ta="$ta tic54x-dis.lo tic54x-opc.lo" ;;
bfd_tic80_arch) ta="$ta tic80-dis.lo tic80-opc.lo" ;;
bfd_v850_arch) ta="$ta v850-opc.lo v850-dis.lo" ;;
bfd_v850e_arch) ta="$ta v850-opc.lo v850-dis.lo" ;;
diff --git a/opcodes/d10v-dis.c b/opcodes/d10v-dis.c
index fb1a7d30dd2..92da134eb9f 100644
--- a/opcodes/d10v-dis.c
+++ b/opcodes/d10v-dis.c
@@ -18,7 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/d10v.h"
#include "dis-asm.h"
diff --git a/opcodes/d10v-opc.c b/opcodes/d10v-opc.c
index c4bb098b65c..e1be2cc50cf 100644
--- a/opcodes/d10v-opc.c
+++ b/opcodes/d10v-opc.c
@@ -19,7 +19,7 @@ along with this file; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/d10v.h"
@@ -179,11 +179,11 @@ const struct d10v_opcode d10v_opcodes[] = {
{ "and3", LONG_L, 1, MU, SEQ, 0x6000000, 0x3f000000, { RDST, RSRC, NUM16 } },
{ "bclri", SHORT_2, 1, IU, PAR, 0xc01, 0x7e01, { RDST, UNUM4 } },
{ "bl", OPCODE_FAKE, 0, 0, 0, 0, 0, { 0, 8, 16, 0 } },
- { "bl.s", SHORT_B, 3, MU, BRANCH_LINK|PAR, 0x4900, 0x7f00, { ANUM8 } },
+ { "bl.s", SHORT_B, 3, MU, ALONE|BRANCH_LINK|PAR, 0x4900, 0x7f00, { ANUM8 } },
{ "bl.l", LONG_B, 3, MU, BRANCH_LINK|SEQ, 0x24800000, 0x3fff0000, { ANUM16 } },
{ "bnoti", SHORT_2, 1, IU, PAR, 0xa01, 0x7e01, { RDST, UNUM4 } },
{ "bra", OPCODE_FAKE, 0, 0, 0, 0, 0, { 0, 8, 16, 0 } },
- { "bra.s", SHORT_B, 3, MU, BRANCH|PAR, 0x4800, 0x7f00, { ANUM8 } },
+ { "bra.s", SHORT_B, 3, MU, ALONE|BRANCH|PAR, 0x4800, 0x7f00, { ANUM8 } },
{ "bra.l", LONG_B, 3, MU, BRANCH|SEQ, 0x24000000, 0x3fff0000, { ANUM16 } },
{ "brf0f", OPCODE_FAKE, 0, 0, 0, 0, 0, { 0, 8, 16, 0 } },
{ "brf0f.s", SHORT_B, 3, MU, BRANCH|PAR|RF0, 0x4a00, 0x7f00, { ANUM8 } },
@@ -208,7 +208,7 @@ const struct d10v_opcode d10v_opcodes[] = {
{ "cmpui", LONG_L, 1, MU, SEQ, 0x23000000, 0x3f0f0000, { RSRC2, UNUM16 } },
{ "cpfg", SHORT_2, 1, MU, PAR, 0x4e0f, 0x7fdf, { FDST, CFSRC } },
{ "cpfg", SHORT_2, 1, MU, PAR, 0x4e09, 0x7fd9, { FDST, FFSRC } },
- { "dbt", SHORT_2, 5, MU, PAR, 0x5f20, 0x7fff, { 0 } },
+ { "dbt", SHORT_2, 5, MU, ALONE|PAR, 0x5f20, 0x7fff, { 0 } },
{ "divs", LONG_L, 1, BOTH, SEQ, 0x14002800, 0x3f10fe21, { RDSTE, RSRC } },
{ "exef0f", SHORT_2, 1, EITHER, PARONLY, 0x4e04, 0x7fff, { 0 } },
{ "exef0t", SHORT_2, 1, EITHER, PARONLY, 0x4e24, 0x7fff, { 0 } },
@@ -220,8 +220,8 @@ const struct d10v_opcode d10v_opcodes[] = {
{ "exetat", SHORT_2, 1, EITHER, PARONLY, 0x4e22, 0x7fff, { 0 } },
{ "exp", LONG_R, 1, IU, SEQ, 0x15002a00, 0x3ffffe03, { RDST, RSRCE } },
{ "exp", LONG_R, 1, IU, SEQ, 0x15002a02, 0x3ffffe0f, { RDST, ASRC } },
- { "jl", SHORT_2, 3, MU, BRANCH_LINK|PAR, 0x4d00, 0x7fe1, { RSRC } },
- { "jmp", SHORT_2, 3, MU, BRANCH|PAR, 0x4c00, 0x7fe1, { RSRC } },
+ { "jl", SHORT_2, 3, MU, ALONE|BRANCH_LINK|PAR, 0x4d00, 0x7fe1, { RSRC } },
+ { "jmp", SHORT_2, 3, MU, ALONE|BRANCH|PAR, 0x4c00, 0x7fe1, { RSRC } },
{ "ld", LONG_L, 1, MU, SEQ, 0x30000000, 0x3f000000, { RDST, ATPAR, NUM16, RSRC } },
{ "ld", SHORT_2, 1, MU, PAR|RMEM, 0x6401, 0x7e01, { RDST, ATSIGN, RSRC, MINUS } },
{ "ld", SHORT_2, 1, MU, PAR|RMEM, 0x6001, 0x7e01, { RDST, ATSIGN, RSRC, PLUS } },
@@ -288,13 +288,13 @@ const struct d10v_opcode d10v_opcodes[] = {
{ "rachi", SHORT_2, 1, IU, PAR|WF0, 0x4201, 0x7e01, { RDST, ASRC, NUM3 } },
{ "rep", LONG_L, 2, MU, SEQ, 0x27000000, 0x3ff00000, { RSRC, ANUM16 } },
{ "repi", LONG_L, 2, MU, SEQ, 0x2f000000, 0x3f000000, { UNUM8, ANUM16 } },
- { "rtd", SHORT_2, 3, MU, PAR, 0x5f60, 0x7fff, { 0 } },
- { "rte", SHORT_2, 3, MU, PAR, 0x5f40, 0x7fff, { 0 } },
+ { "rtd", SHORT_2, 3, MU, ALONE|PAR, 0x5f60, 0x7fff, { 0 } },
+ { "rte", SHORT_2, 3, MU, ALONE|PAR, 0x5f40, 0x7fff, { 0 } },
{ "sadd", SHORT_2, 1, IU, PAR, 0x1223, 0x7eef, { ADST, ASRC } },
{ "setf0f", SHORT_2, 1, MU, PAR|RF0, 0x4611, 0x7e1f, { RDST } },
{ "setf0t", SHORT_2, 1, MU, PAR|RF0, 0x4613, 0x7e1f, { RDST } },
{ "slae", SHORT_2, 1, IU, PAR, 0x3220, 0x7ee1, { ADST, RSRC } },
- { "sleep", SHORT_2, 1, MU, PAR, 0x5fc0, 0x7fff, { 0 } },
+ { "sleep", SHORT_2, 1, MU, ALONE|PAR, 0x5fc0, 0x7fff, { 0 } },
{ "sll", SHORT_2, 1, IU, PAR, 0x2200, 0x7e01, { RDST, RSRC } },
{ "sll", SHORT_2, 1, IU, PAR, 0x3200, 0x7ee1, { ADST, RSRC } },
{ "slli", SHORT_2, 1, IU, PAR, 0x2201, 0x7e01, { RDST, UNUM4 } },
@@ -323,7 +323,7 @@ const struct d10v_opcode d10v_opcodes[] = {
{ "st2w", LONG_L, 1, MU, SEQ, 0x37010000, 0x3f1f0000, { RSRC2E, ATSIGN, NUM16 } },
{ "stb", LONG_L, 1, MU, SEQ, 0x3c000000, 0x3f000000, { RSRC2, ATPAR, NUM16, RSRC } },
{ "stb", SHORT_2, 1, MU, PAR|WMEM, 0x7800, 0x7e01, { RSRC2, ATSIGN, RSRC } },
- { "stop", SHORT_2, 1, MU, PAR, 0x5fe0, 0x7fff, { 0 } },
+ { "stop", SHORT_2, 1, MU, ALONE|PAR, 0x5fe0, 0x7fff, { 0 } },
{ "sub", SHORT_2, 1, EITHER, PAR|WCAR, 0x0, 0x7e01, { RDST, RSRC } },
{ "sub", SHORT_2, 1, IU, PAR, 0x1001, 0x7ee3, { ADST, RSRC } },
{ "sub", SHORT_2, 1, IU, PAR, 0x1003, 0x7eef, { ADST, ASRC } },
@@ -333,10 +333,10 @@ const struct d10v_opcode d10v_opcodes[] = {
{ "subac3s", LONG_R, 1, IU, SEQ, 0x17001000, 0x3ffffe22, { RDSTE, RSRCE, ASRC0 } },
{ "subac3s", LONG_R, 1, IU, SEQ, 0x17001002, 0x3ffffe2e, { RDSTE, ASRC, ASRC0 } },
{ "subi", SHORT_2, 1, EITHER, PAR, 0x1, 0x7e01, { RDST, UNUM4S } },
- { "trap", SHORT_2, 5, MU, BRANCH_LINK|PAR, 0x5f00, 0x7fe1, { UNUM4 } },
+ { "trap", SHORT_2, 5, MU, ALONE|BRANCH_LINK|PAR, 0x5f00, 0x7fe1, { UNUM4 } },
{ "tst0i", LONG_L, 1, MU, SEQ, 0x7000000, 0x3f0f0000, { RSRC2, NUM16 } },
{ "tst1i", LONG_L, 1, MU, SEQ, 0xf000000, 0x3f0f0000, { RSRC2, NUM16 } },
- { "wait", SHORT_2, 1, MU, PAR, 0x5f80, 0x7fff, { 0 } },
+ { "wait", SHORT_2, 1, MU, ALONE|PAR, 0x5f80, 0x7fff, { 0 } },
{ "xor", SHORT_2, 1, EITHER, PAR, 0xa00, 0x7e01, { RDST, RSRC } },
{ "xor3", LONG_L, 1, MU, SEQ, 0x5000000, 0x3f000000, { RDST, RSRC, NUM16 } },
{ 0, 0, 0, 0, 0, 0, 0, { 0 } },
diff --git a/opcodes/d30v-dis.c b/opcodes/d30v-dis.c
index 9cdad69d809..065203689dc 100644
--- a/opcodes/d30v-dis.c
+++ b/opcodes/d30v-dis.c
@@ -16,6 +16,7 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
+#include "sysdep.h"
#include "opcode/d30v.h"
#include "dis-asm.h"
#include "opintl.h"
diff --git a/opcodes/d30v-opc.c b/opcodes/d30v-opc.c
index 2a33f442eb9..9dcc156a4d4 100644
--- a/opcodes/d30v-opc.c
+++ b/opcodes/d30v-opc.c
@@ -19,7 +19,7 @@ along with this file; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/d30v.h"
/* This table is sorted. */
diff --git a/opcodes/disassemble.c b/opcodes/disassemble.c
index 3d7de906275..072aa42d4ba 100644
--- a/opcodes/disassemble.c
+++ b/opcodes/disassemble.c
@@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-#include "ansidecl.h"
+#include "sysdep.h"
#include "dis-asm.h"
#ifdef ARCH_all
@@ -33,6 +33,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ARCH_i370
#define ARCH_i386
#define ARCH_i960
+#define ARCH_ia64
#define ARCH_fr30
#define ARCH_m32r
#define ARCH_m68k
@@ -48,6 +49,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ARCH_sh
#define ARCH_sparc
#define ARCH_tic30
+#define ARCH_tic54x
#define ARCH_tic80
#define ARCH_v850
#define ARCH_vax
@@ -147,6 +149,11 @@ disassembler (abfd)
disassemble = print_insn_i960;
break;
#endif
+#ifdef ARCH_ia64
+ case bfd_arch_ia64:
+ disassemble = print_insn_ia64;
+ break;
+#endif
#ifdef ARCH_fr30
case bfd_arch_fr30:
disassemble = print_insn_fr30;
@@ -210,7 +217,10 @@ disassembler (abfd)
#endif
#ifdef ARCH_rs6000
case bfd_arch_rs6000:
- disassemble = print_insn_rs6000;
+ if (bfd_get_mach (abfd) == 620)
+ disassemble = print_insn_big_powerpc;
+ else
+ disassemble = print_insn_rs6000;
break;
#endif
#ifdef ARCH_sh
@@ -231,6 +241,11 @@ disassembler (abfd)
disassemble = print_insn_tic30;
break;
#endif
+#ifdef ARCH_tic54x
+ case bfd_arch_tic54x:
+ disassemble = print_insn_tic54x;
+ break;
+#endif
#ifdef ARCH_tic80
case bfd_arch_tic80:
disassemble = print_insn_tic80;
@@ -267,7 +282,7 @@ disassembler (abfd)
void
disassembler_usage (stream)
- FILE *stream ATTRIBUTE_UNUSED;
+ FILE * stream ATTRIBUTE_UNUSED;
{
#ifdef ARCH_arm
print_arm_disassembler_options (stream);
diff --git a/opcodes/fr30-desc.c b/opcodes/fr30-desc.c
index 810f04b9dcc..51e11e0ca1d 100644
--- a/opcodes/fr30-desc.c
+++ b/opcodes/fr30-desc.c
@@ -1609,6 +1609,9 @@ fr30_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
cd->rebuild_tables = fr30_cgen_rebuild_tables;
fr30_cgen_rebuild_tables (cd);
+ /* Initialise flags. */
+ cd->signed_overflow_ok_p = 0;
+
return (CGEN_CPU_DESC) cd;
}
diff --git a/opcodes/fr30-desc.h b/opcodes/fr30-desc.h
index 97e29cd1bdb..9d592191d8c 100644
--- a/opcodes/fr30-desc.h
+++ b/opcodes/fr30-desc.h
@@ -43,18 +43,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#define CGEN_INT_INSN_P 0
-/* FIXME: Need to compute CGEN_MAX_SYNTAX_BYTES. */
+/* Maximum number of syntax bytes in an instruction. */
+#define CGEN_ACTUAL_MAX_SYNTAX_BYTES 15
/* CGEN_MNEMONIC_OPERANDS is defined if mnemonics have operands.
e.g. In "b,a foo" the ",a" is an operand. If mnemonics have operands
we can't hash on everything up to the space. */
#define CGEN_MNEMONIC_OPERANDS
-/* Maximum number of operands any insn or macro-insn has. */
-#define CGEN_MAX_INSN_OPERANDS 16
-
/* Maximum number of fields in an instruction. */
-#define CGEN_MAX_IFMT_OPERANDS 7
+#define CGEN_ACTUAL_MAX_IFMT_OPERANDS 7
/* Enums. */
diff --git a/opcodes/h8300-dis.c b/opcodes/h8300-dis.c
index 57753a98d54..7afdbc96f85 100644
--- a/opcodes/h8300-dis.c
+++ b/opcodes/h8300-dis.c
@@ -1,5 +1,5 @@
/* Disassemble h8300 instructions.
- Copyright (C) 1993, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1998, 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
@@ -17,6 +17,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define DEFINE_TABLE
+#include "sysdep.h"
#define h8_opcodes h8ops
#include "opcode/h8300.h"
#include "dis-asm.h"
@@ -24,14 +25,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Run through the opcodes and sort them into order to make them easy
- to disassemble
- */
+ to disassemble. */
static void
bfd_h8_disassemble_init ()
{
unsigned int i;
-
-
struct h8_opcode *p;
for (p = h8_opcodes; p->name; p++)
@@ -40,27 +38,25 @@ bfd_h8_disassemble_init ()
int n2 = 0;
if ((int) p->data.nib[0] < 16)
- {
- n1 = (int) p->data.nib[0];
- }
+ n1 = (int) p->data.nib[0];
else
n1 = 0;
+
if ((int) p->data.nib[1] < 16)
- {
- n2 = (int) p->data.nib[1];
- }
+ n2 = (int) p->data.nib[1];
else
n2 = 0;
/* Just make sure there are an even number of nibbles in it, and
- that the count is the same s the length */
+ that the count is the same as the length. */
for (i = 0; p->data.nib[i] != E; i++)
- /*EMPTY*/ ;
+ /*EMPTY*/;
+
if (i & 1)
abort ();
+
p->length = i / 2;
}
-
}
@@ -70,25 +66,22 @@ bfd_h8_disassemble (addr, info, mode)
disassemble_info *info;
int mode;
{
- /* Find the first entry in the table for this opcode */
+ /* Find the first entry in the table for this opcode. */
static CONST char *regnames[] =
{
"r0h", "r1h", "r2h", "r3h", "r4h", "r5h", "r6h", "r7h",
- "r0l", "r1l", "r2l", "r3l", "r4l", "r5l", "r6l", "r7l"};
-
+ "r0l", "r1l", "r2l", "r3l", "r4l", "r5l", "r6l", "r7l"
+ };
static CONST char *wregnames[] =
{
"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
"e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7"
- };
-
+ };
static CONST char *lregnames[] =
{
"er0", "er1", "er2", "er3", "er4", "er5", "er6", "er7",
"er0", "er1", "er2", "er3", "er4", "er5", "er6", "er7"
- }
- ;
-
+ };
int rs = 0;
int rd = 0;
int rdisp = 0;
@@ -100,8 +93,7 @@ bfd_h8_disassemble (addr, info, mode)
char CONST **pregnames = mode != 0 ? lregnames : wregnames;
int status;
int l;
-
- unsigned char data[20];
+ unsigned char data[20];
void *stream = info->stream;
fprintf_ftype fprintf = info->fprintf_func;
@@ -111,20 +103,17 @@ bfd_h8_disassemble (addr, info, mode)
init = 1;
}
- status = info->read_memory_func(addr, data, 2, info);
- if (status != 0)
+ status = info->read_memory_func (addr, data, 2, info);
+ if (status != 0)
{
- info->memory_error_func(status, addr, info);
+ info->memory_error_func (status, addr, info);
return -1;
}
- for (l = 2; status == 0 && l < 10; l+=2)
- {
- status = info->read_memory_func(addr+l, data+l, 2, info);
- }
-
+ for (l = 2; status == 0 && l < 10; l += 2)
+ status = info->read_memory_func (addr + l, data+l, 2, info);
- /* Find the exact opcode/arg combo */
+ /* Find the exact opcode/arg combo. */
while (q->name)
{
op_type *nib;
@@ -139,83 +128,77 @@ bfd_h8_disassemble (addr, info, mode)
thisnib = (len & 1) ? (thisnib & 0xf) : ((thisnib >> 4) & 0xf);
- if (looking_for < 16 && looking_for >=0)
+ if (looking_for < 16 && looking_for >= 0)
{
-
- if (looking_for != thisnib)
+ if (looking_for != thisnib)
goto fail;
}
-
- else
+ else
{
-
if ((int) looking_for & (int) B31)
{
- if (! (((int) thisnib & 0x8) != 0))
+ if (! (((int) thisnib & 0x8) != 0))
goto fail;
+
looking_for = (op_type) ((int) looking_for & ~(int) B31);
}
+
if ((int) looking_for & (int) B30)
{
- if (!(((int) thisnib & 0x8) == 0))
+ if (!(((int) thisnib & 0x8) == 0))
goto fail;
+
looking_for = (op_type) ((int) looking_for & ~(int) B30);
}
if (looking_for & DBIT)
{
- if ((looking_for & 5) != (thisnib &5)) goto fail;
+ if ((looking_for & 2) != (thisnib & 2))
+ goto fail;
+
abs = (thisnib & 0x8) ? 2 : 1;
- }
-
- else if (looking_for & (REG | IND|INC|DEC))
+ }
+ else if (looking_for & (REG | IND | INC | DEC))
{
if (looking_for & SRC)
- {
- rs = thisnib;
- }
+ rs = thisnib;
else
- {
- rd = thisnib;
- }
+ rd = thisnib;
}
else if (looking_for & L_16)
{
abs = (data[len >> 1]) * 256 + data[(len + 2) >> 1];
plen = 16;
-
}
- else if(looking_for & ABSJMP)
+ else if (looking_for & ABSJMP)
{
- abs =
- (data[1] << 16)
- | (data[2] << 8)
- | (data[3]);
+ abs = (data[1] << 16) | (data[2] << 8) | (data[3]);
}
- else if(looking_for & MEMIND)
+ else if (looking_for & MEMIND)
{
abs = data[1];
}
else if (looking_for & L_32)
{
int i = len >> 1;
+
abs = (data[i] << 24)
| (data[i + 1] << 16)
- | (data[i + 2] << 8)
- | (data[i+ 3]);
+ | (data[i + 2] << 8)
+ | (data[i+ 3]);
- plen =32;
-
+ plen = 32;
}
else if (looking_for & L_24)
{
int i = len >> 1;
- abs = (data[i] << 16) | (data[i + 1] << 8)| (data[i+2]);
- plen =24;
+
+ abs = (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]);
+ plen = 24;
}
else if (looking_for & IGNORE)
{
-
+ ;
}
else if (looking_for & DISPREG)
{
@@ -223,7 +206,7 @@ bfd_h8_disassemble (addr, info, mode)
}
else if (looking_for & KBIT)
{
- switch (thisnib)
+ switch (thisnib)
{
case 9:
abs = 4;
@@ -240,7 +223,7 @@ bfd_h8_disassemble (addr, info, mode)
}
else if (looking_for & L_8)
{
- plen = 8;
+ plen = 8;
abs = data[len >> 1];
}
else if (looking_for & L_3)
@@ -258,19 +241,14 @@ bfd_h8_disassemble (addr, info, mode)
}
else if (looking_for == E)
{
+ int i;
- {
- int i;
-
- for (i = 0; i < q->length; i++)
- {
- fprintf (stream, "%02x ", data[i]);
- }
- for (; i < 6; i++)
- {
- fprintf (stream, " ");
- }
- }
+ for (i = 0; i < q->length; i++)
+ fprintf (stream, "%02x ", data[i]);
+
+ for (; i < 6; i++)
+ fprintf (stream, " ");
+
fprintf (stream, "%s\t", q->name);
/* Gross. Disgusting. */
@@ -296,27 +274,26 @@ bfd_h8_disassemble (addr, info, mode)
return q->length;
}
- /* Fill in the args */
+ /* Fill in the args. */
{
op_type *args = q->args.nib;
int hadone = 0;
-
while (*args != E)
{
int x = *args;
+
if (hadone)
fprintf (stream, ",");
-
if (x & L_3)
{
fprintf (stream, "#0x%x", (unsigned) bit);
}
- else if (x & (IMM|KBIT|DBIT))
+ else if (x & (IMM | KBIT | DBIT))
{
/* Bletch. For shal #2,er0 and friends. */
- if (*(args+1) & SRC_IN_DST)
+ if (*(args + 1) & SRC_IN_DST)
abs = 2;
fprintf (stream, "#0x%x", (unsigned) abs);
@@ -324,6 +301,7 @@ bfd_h8_disassemble (addr, info, mode)
else if (x & REG)
{
int rn = (x & DST) ? rd : rs;
+
switch (x & SIZE)
{
case L_8:
@@ -336,7 +314,6 @@ bfd_h8_disassemble (addr, info, mode)
case L_32:
fprintf (stream, "%s", lregnames[rn]);
break;
-
}
}
else if (x & MACREG)
@@ -351,46 +328,44 @@ bfd_h8_disassemble (addr, info, mode)
{
fprintf (stream, "@-%s", pregnames[rd]);
}
-
else if (x & IND)
{
int rn = (x & DST) ? rd : rs;
fprintf (stream, "@%s", pregnames[rn]);
}
-
else if (x & ABS8MEM)
{
fprintf (stream, "@0x%x:8", (unsigned) abs);
}
-
- else if (x & (ABS|ABSJMP))
+ else if (x & (ABS | ABSJMP))
{
fprintf (stream, "@0x%x:%d", (unsigned) abs, plen);
}
-
else if (x & MEMIND)
{
fprintf (stream, "@@%d (%x)", abs, abs);
}
-
else if (x & PCREL)
{
- if (x & L_16)
+ if (x & L_16)
+ {
+ abs += 2;
+ fprintf (stream,
+ ".%s%d (%x)", (short) abs > 0 ? "+" : "",
+ (short) abs, addr + (short) abs + 2);
+ }
+ else
{
- abs +=2;
- fprintf (stream, ".%s%d (%x)", (short) abs > 0 ? "+" : "", (short) abs,
- addr + (short) abs + 2);
+ fprintf (stream,
+ ".%s%d (%x)", (char) abs > 0 ? "+" : "",
+ (char) abs, addr + (char) abs + 2);
}
- else {
- fprintf (stream, ".%s%d (%x)", (char) abs > 0 ? "+" : "", (char) abs,
- addr + (char) abs + 2);
- }
}
else if (x & DISP)
{
- fprintf (stream, "@(0x%x:%d,%s)", abs,plen, pregnames[rdisp]);
+ fprintf (stream, "@(0x%x:%d,%s)",
+ abs,plen, pregnames[rdisp]);
}
-
else if (x & CCR)
{
fprintf (stream, "ccr");
@@ -402,19 +377,17 @@ bfd_h8_disassemble (addr, info, mode)
else
/* xgettext:c-format */
fprintf (stream, _("Hmmmm %x"), x);
+
hadone = 1;
args++;
}
}
+
return q->length;
}
-
-
else
- {
- /* xgettext:c-format */
- fprintf (stream, _("Don't understand %x \n"), looking_for);
- }
+ /* xgettext:c-format */
+ fprintf (stream, _("Don't understand %x \n"), looking_for);
}
len++;
@@ -425,33 +398,34 @@ bfd_h8_disassemble (addr, info, mode)
q++;
}
- /* Fell of the end */
+ /* Fell off the end. */
fprintf (stream, "%02x %02x .word\tH'%x,H'%x",
data[0], data[1],
data[0], data[1]);
+
return 2;
}
-int
+int
print_insn_h8300 (addr, info)
-bfd_vma addr;
-disassemble_info *info;
+ bfd_vma addr;
+ disassemble_info *info;
{
- return bfd_h8_disassemble (addr, info , 0);
+ return bfd_h8_disassemble (addr, info, 0);
}
-int
+int
print_insn_h8300h (addr, info)
-bfd_vma addr;
-disassemble_info *info;
+ bfd_vma addr;
+ disassemble_info *info;
{
- return bfd_h8_disassemble (addr, info , 1);
+ return bfd_h8_disassemble (addr, info, 1);
}
-int
+int
print_insn_h8300s (addr, info)
-bfd_vma addr;
-disassemble_info *info;
+ bfd_vma addr;
+ disassemble_info *info;
{
- return bfd_h8_disassemble (addr, info , 2);
+ return bfd_h8_disassemble (addr, info, 2);
}
diff --git a/opcodes/h8500-dis.c b/opcodes/h8500-dis.c
index 16858c98fa6..d5e15d4fdb6 100644
--- a/opcodes/h8500-dis.c
+++ b/opcodes/h8500-dis.c
@@ -20,6 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define DISASSEMBLER_TABLE
#define DEFINE_TABLE
+#include "sysdep.h"
#include "h8500-opc.h"
#include "dis-asm.h"
#include "opintl.h"
diff --git a/opcodes/hppa-dis.c b/opcodes/hppa-dis.c
index fa34fdc757d..23c926ae771 100644
--- a/opcodes/hppa-dis.c
+++ b/opcodes/hppa-dis.c
@@ -18,7 +18,6 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-#include <ansidecl.h>
#include "sysdep.h"
#include "dis-asm.h"
#include "libhppa.h"
@@ -43,12 +42,13 @@ static const char *const fp_reg_names[] =
typedef unsigned int CORE_ADDR;
-/* Get at various relevent fields of an instruction word. */
+/* Get at various relevent fields of an instruction word. */
#define MASK_5 0x1f
#define MASK_10 0x3ff
#define MASK_11 0x7ff
#define MASK_14 0x3fff
+#define MASK_16 0xffff
#define MASK_21 0x1fffff
/* This macro gets bit fields using HP's numbering (MSB = 0) */
@@ -133,7 +133,7 @@ static const char *const read_write_names[] = {",r", ",w"};
static const char *const add_compl_names[] = { 0, "", ",l", ",tsv" };
/* For a bunch of different instructions form an index into a
- completer name table. */
+ completer name table. */
#define GET_COMPL(insn) (GET_FIELD (insn, 26, 26) | \
GET_FIELD (insn, 18, 18) << 1)
@@ -182,7 +182,7 @@ fput_creg (reg, info)
(*info->fprintf_func) (info->stream, control_reg[reg]);
}
-/* print constants with sign */
+/* Print constants with sign. */
static void
fput_const (num, info)
@@ -196,9 +196,9 @@ fput_const (num, info)
}
/* Routines to extract various sized constants out of hppa
- instructions. */
+ instructions. */
-/* extract a 3-bit space register number from a be, ble, mtsp or mfsp */
+/* Extract a 3-bit space register number from a be, ble, mtsp or mfsp. */
static int
extract_3 (word)
unsigned word;
@@ -213,7 +213,7 @@ extract_5_load (word)
return low_sign_extend (word >> 16 & MASK_5, 5);
}
-/* extract the immediate field from a st{bhw}s instruction */
+/* Extract the immediate field from a st{bhw}s instruction. */
static int
extract_5_store (word)
unsigned word;
@@ -221,7 +221,7 @@ extract_5_store (word)
return low_sign_extend (word & MASK_5, 5);
}
-/* extract the immediate field from a break instruction */
+/* Extract the immediate field from a break instruction. */
static unsigned
extract_5r_store (word)
unsigned word;
@@ -229,7 +229,7 @@ extract_5r_store (word)
return (word & MASK_5);
}
-/* extract the immediate field from a {sr}sm instruction */
+/* Extract the immediate field from a {sr}sm instruction. */
static unsigned
extract_5R_store (word)
unsigned word;
@@ -237,7 +237,7 @@ extract_5R_store (word)
return (word >> 16 & MASK_5);
}
-/* extract the 10 bit immediate field from a {sr}sm instruction */
+/* Extract the 10 bit immediate field from a {sr}sm instruction. */
static unsigned
extract_10U_store (word)
unsigned word;
@@ -245,7 +245,7 @@ extract_10U_store (word)
return (word >> 16 & MASK_10);
}
-/* extract the immediate field from a bb instruction */
+/* Extract the immediate field from a bb instruction. */
static unsigned
extract_5Q_store (word)
unsigned word;
@@ -253,7 +253,7 @@ extract_5Q_store (word)
return (word >> 21 & MASK_5);
}
-/* extract an 11 bit immediate field */
+/* Extract an 11 bit immediate field. */
static int
extract_11 (word)
unsigned word;
@@ -261,7 +261,7 @@ extract_11 (word)
return low_sign_extend (word & MASK_11, 11);
}
-/* extract a 14 bit immediate field */
+/* Extract a 14 bit immediate field. */
static int
extract_14 (word)
unsigned word;
@@ -269,7 +269,21 @@ extract_14 (word)
return low_sign_extend (word & MASK_14, 14);
}
-/* extract a 21 bit constant */
+/* Extract a 16 bit immediate field (PA2.0 wide only). */
+static int
+extract_16 (word)
+ unsigned word;
+{
+ int m15, m0, m1;
+ m0 = GET_BIT (word, 16);
+ m1 = GET_BIT (word, 17);
+ m15 = GET_BIT (word, 31);
+ word = (word >> 1) & 0x1fff;
+ word = word | (m15 << 15) | ((m15 ^ m0) << 14) | ((m15 ^ m1) << 13);
+ return sign_extend (word, 16);
+}
+
+/* Extract a 21 bit constant. */
static int
extract_21 (word)
@@ -291,7 +305,7 @@ extract_21 (word)
return sign_extend (val, 21) << 11;
}
-/* extract a 12 bit constant from branch instructions */
+/* Extract a 12 bit constant from branch instructions. */
static int
extract_12 (word)
@@ -302,8 +316,8 @@ extract_12 (word)
(word & 0x1) << 11, 12) << 2;
}
-/* extract a 17 bit constant from branch instructions, returning the
- 19 bit signed value. */
+/* Extract a 17 bit constant from branch instructions, returning the
+ 19 bit signed value. */
static int
extract_17 (word)
@@ -353,7 +367,10 @@ print_insn_hppa (memaddr, info)
if ((insn & opcode->mask) == opcode->match)
{
register const char *s;
-
+#ifndef BFD64
+ if (opcode->arch == pa20w)
+ continue;
+#endif
(*info->fprintf_func) (info->stream, "%s", opcode->name);
if (!strchr ("cfCY?-+nHNZFIuv", opcode->args[0]))
@@ -474,13 +491,25 @@ print_insn_hppa (memaddr, info)
fput_fp_reg (reg, info);
break;
}
+
+ /* 'fe' will not generate a space before the register
+ name. Normally that is fine. Except that it
+ causes problems with fstw fe,y(b) which has no FP
+ format completer. */
+ case 'E':
+ fputs_filtered (" ", info);
+
+ /* FALLTHRU */
+
case 'e':
- if (GET_FIELD (insn, 25, 25))
+ if (GET_FIELD (insn, 30, 30))
fput_fp_reg_r (GET_FIELD (insn, 11, 15), info);
else
fput_fp_reg (GET_FIELD (insn, 11, 15), info);
break;
-
+ case 'x':
+ fput_fp_reg (GET_FIELD (insn, 11, 15), info);
+ break;
}
break;
@@ -836,6 +865,10 @@ print_insn_hppa (memaddr, info)
case 'k':
fput_const (extract_21 (insn), info);
break;
+ case 'l':
+ /* 16-bit long disp., PA2.0 wide only. */
+ fput_const (extract_16 (insn), info);
+ break;
case 'n':
if (insn & 0x2)
(*info->fprintf_func) (info->stream, ",n ");
@@ -1042,6 +1075,24 @@ print_insn_hppa (memaddr, info)
break;
}
+ case 'y':
+ {
+ /* 16-bit long disp., PA2.0 wide only. */
+ int disp = extract_16 (insn);
+ disp &= ~3;
+ fput_const (disp, info);
+ break;
+ }
+
+ case '&':
+ {
+ /* 16-bit long disp., PA2.0 wide only. */
+ int disp = extract_16 (insn);
+ disp &= ~7;
+ fput_const (disp, info);
+ break;
+ }
+
/* ?!? FIXME */
case '_':
case '{':
diff --git a/opcodes/i370-dis.c b/opcodes/i370-dis.c
index a992c7635d2..51c0ff1dd3e 100644
--- a/opcodes/i370-dis.c
+++ b/opcodes/i370-dis.c
@@ -21,7 +21,6 @@ along with this file; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
#include "sysdep.h"
#include "dis-asm.h"
#include "opcode/i370.h"
diff --git a/opcodes/i370-opc.c b/opcodes/i370-opc.c
index 632f16b71ce..678f374bae9 100644
--- a/opcodes/i370-opc.c
+++ b/opcodes/i370-opc.c
@@ -21,7 +21,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/i370.h"
/* This file holds the i370 opcode table. The opcode table
diff --git a/opcodes/i960-dis.c b/opcodes/i960-dis.c
index c0bd84837aa..79820850b4f 100644
--- a/opcodes/i960-dis.c
+++ b/opcodes/i960-dis.c
@@ -16,6 +16,7 @@ along with this program; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
+#include "sysdep.h"
#include "dis-asm.h"
static const char *const reg_names[] = {
diff --git a/opcodes/ia64-asmtab.c b/opcodes/ia64-asmtab.c
new file mode 100644
index 00000000000..4bad1c42927
--- /dev/null
+++ b/opcodes/ia64-asmtab.c
@@ -0,0 +1,7049 @@
+/* This file is automatically generated by ia64-gen. Do not edit! */
+static const char *ia64_strings[] = {
+ "", "0", "1", "a", "acq", "add", "addl", "addp4", "adds", "alloc", "and",
+ "andcm", "b", "bias", "br", "break", "brl", "brp", "bsw", "c", "call",
+ "cexit", "chk", "cloop", "clr", "clrrrb", "cmp", "cmp4", "cmpxchg1",
+ "cmpxchg2", "cmpxchg4", "cmpxchg8", "cond", "cover", "ctop", "czx1",
+ "czx2", "d", "dep", "dpnt", "dptk", "e", "epc", "eq", "excl", "exit",
+ "exp", "extr", "f", "fabs", "fadd", "famax", "famin", "fand", "fandcm",
+ "fault", "fc", "fchkf", "fclass", "fclrf", "fcmp", "fcvt", "fetchadd4",
+ "fetchadd8", "few", "fill", "flushrs", "fma", "fmax", "fmerge", "fmin",
+ "fmix", "fmpy", "fms", "fneg", "fnegabs", "fnma", "fnmpy", "fnorm", "for",
+ "fpabs", "fpack", "fpamax", "fpamin", "fpcmp", "fpcvt", "fpma", "fpmax",
+ "fpmerge", "fpmin", "fpmpy", "fpms", "fpneg", "fpnegabs", "fpnma",
+ "fpnmpy", "fprcpa", "fprsqrta", "fpsub", "frcpa", "frsqrta", "fselect",
+ "fsetc", "fsub", "fswap", "fsxt", "fwb", "fx", "fxor", "fxu", "g", "ga",
+ "ge", "getf", "geu", "gt", "gtu", "h", "hu", "i", "ia", "imp", "invala",
+ "itc", "itr", "l", "ld1", "ld2", "ld4", "ld8", "ldf", "ldf8", "ldfd",
+ "ldfe", "ldfp8", "ldfpd", "ldfps", "ldfs", "le", "leu", "lfetch",
+ "loadrs", "loop", "lr", "lt", "ltu", "lu", "m", "many", "mf", "mix1",
+ "mix2", "mix4", "mov", "movl", "mux1", "mux2", "nc", "ne", "neq", "nge",
+ "ngt", "nl", "nle", "nlt", "nm", "nop", "nr", "ns", "nt1", "nt2", "nta",
+ "nz", "or", "orcm", "ord", "pack2", "pack4", "padd1", "padd2", "padd4",
+ "pavg1", "pavg2", "pavgsub1", "pavgsub2", "pcmp1", "pcmp2", "pcmp4",
+ "pmax1", "pmax2", "pmin1", "pmin2", "pmpy2", "pmpyshr2", "popcnt", "pr",
+ "probe", "psad1", "pshl2", "pshl4", "pshladd2", "pshr2", "pshr4",
+ "pshradd2", "psub1", "psub2", "psub4", "ptc", "ptr", "r", "raz", "rel",
+ "ret", "rfi", "rsm", "rum", "rw", "s", "s0", "s1", "s2", "s3", "sa", "se",
+ "setf", "shl", "shladd", "shladdp4", "shr", "shrp", "sig", "spill",
+ "spnt", "sptk", "srlz", "ssm", "sss", "st1", "st2", "st4", "st8", "stf",
+ "stf8", "stfd", "stfe", "stfs", "sub", "sum", "sxt1", "sxt2", "sxt4",
+ "sync", "tak", "tbit", "thash", "tnat", "tpa", "trunc", "ttag", "u",
+ "unc", "unord", "unpack1", "unpack2", "unpack4", "uss", "uus", "uuu", "w",
+ "wexit", "wtop", "x", "xchg1", "xchg2", "xchg4", "xchg8", "xf", "xma",
+ "xmpy", "xor", "xuf", "z", "zxt1", "zxt2", "zxt4",
+};
+
+static const struct ia64_dependency
+dependencies[] = {
+ { "ALAT", 0, 0, 0, -1, },
+ { "AR[BSP]", 25, 0, 2, 17, },
+ { "AR[BSPSTORE]", 25, 0, 2, 18, },
+ { "AR[CCV]", 25, 0, 2, 32, },
+ { "AR[EC]", 25, 0, 2, 66, },
+ { "AR[FPSR].sf0.controls", 29, 0, 2, -1, },
+ { "AR[FPSR].sf1.controls", 29, 0, 2, -1, },
+ { "AR[FPSR].sf2.controls", 29, 0, 2, -1, },
+ { "AR[FPSR].sf3.controls", 29, 0, 2, -1, },
+ { "AR[FPSR].sf0.flags", 29, 0, 2, -1, },
+ { "AR[FPSR].sf1.flags", 29, 0, 2, -1, },
+ { "AR[FPSR].sf2.flags", 29, 0, 2, -1, },
+ { "AR[FPSR].sf3.flags", 29, 0, 2, -1, },
+ { "AR[FPSR].traps", 29, 0, 2, -1, },
+ { "AR[FPSR].rv", 29, 0, 2, -1, },
+ { "AR[ITC]", 25, 0, 2, 44, },
+ { "AR[K%], % in 0 - 7", 1, 0, 2, -1, },
+ { "AR[LC]", 25, 0, 2, 65, },
+ { "AR[PFS]", 25, 0, 2, 64, },
+ { "AR[PFS]", 25, 0, 2, 64, },
+ { "AR[PFS]", 25, 0, 0, 64, },
+ { "AR[RNAT]", 25, 0, 2, 19, },
+ { "AR[RSC]", 25, 0, 2, 16, },
+ { "AR[UNAT]{%}, % in 0 - 63", 2, 0, 2, -1, },
+ { "AR%, % in 8-15, 20, 22-23, 31, 33-35, 37-39, 41-43, 45-47, 67-111", 3, 0, 0, -1, },
+ { "AR%, % in 48-63, 112-127", 4, 0, 2, -1, },
+ { "BR%, % in 0 - 7", 5, 0, 2, -1, },
+ { "BR%, % in 0 - 7", 5, 0, 0, -1, },
+ { "BR%, % in 0 - 7", 5, 0, 2, -1, },
+ { "CFM", 6, 0, 2, -1, },
+ { "CFM", 6, 0, 2, -1, },
+ { "CFM", 6, 0, 2, -1, },
+ { "CFM", 6, 0, 2, -1, },
+ { "CFM", 6, 0, 0, -1, },
+ { "CPUID#", 7, 0, 5, -1, },
+ { "CR[CMCV]", 26, 0, 3, 74, },
+ { "CR[DCR]", 26, 0, 3, 0, },
+ { "CR[EOI]", 26, 0, 6, 67, "SC Section 10.8.3.4", },
+ { "CR[GPTA]", 26, 0, 3, 9, },
+ { "CR[IFA]", 26, 0, 1, 20, },
+ { "CR[IFA]", 26, 0, 3, 20, },
+ { "CR[IFS]", 26, 0, 3, 23, },
+ { "CR[IFS]", 26, 0, 1, 23, },
+ { "CR[IFS]", 26, 0, 1, 23, },
+ { "CR[IHA]", 26, 0, 3, 25, },
+ { "CR[IIM]", 26, 0, 3, 24, },
+ { "CR[IIP]", 26, 0, 3, 19, },
+ { "CR[IIP]", 26, 0, 1, 19, },
+ { "CR[IIPA]", 26, 0, 3, 22, },
+ { "CR[IPSR]", 26, 0, 3, 16, },
+ { "CR[IPSR]", 26, 0, 1, 16, },
+ { "CR[IRR%], % in 0 - 3", 8, 0, 3, -1, },
+ { "CR[ISR]", 26, 0, 3, 17, },
+ { "CR[ITIR]", 26, 0, 3, 21, },
+ { "CR[ITIR]", 26, 0, 1, 21, },
+ { "CR[ITM]", 26, 0, 3, 1, },
+ { "CR[ITV]", 26, 0, 3, 72, },
+ { "CR[IVA]", 26, 0, 4, 2, },
+ { "CR[IVR]", 26, 0, 6, 65, "SC Section 10.8.3.2", },
+ { "CR[LID]", 26, 0, 6, 64, "SC Section 10.8.3.1", },
+ { "CR[LRR%], % in 0 - 1", 9, 0, 3, -1, },
+ { "CR[PMV]", 26, 0, 3, 73, },
+ { "CR[PTA]", 26, 0, 3, 8, },
+ { "CR[TPR]", 26, 0, 3, 66, },
+ { "CR[TPR]", 26, 0, 6, 66, "SC Section 10.8.3.3", },
+ { "CR%, % in 3-7, 10-15, 18, 26-63, 75-79, 82-127", 10, 0, 0, -1, },
+ { "DBR#", 11, 0, 2, -1, },
+ { "DBR#", 11, 0, 3, -1, },
+ { "DTC", 0, 0, 3, -1, },
+ { "DTC", 0, 0, 2, -1, },
+ { "DTC", 0, 0, 0, -1, },
+ { "DTC", 0, 0, 2, -1, },
+ { "DTC_LIMIT*", 0, 0, 2, -1, },
+ { "DTR", 0, 0, 3, -1, },
+ { "DTR", 0, 0, 2, -1, },
+ { "DTR", 0, 0, 3, -1, },
+ { "DTR", 0, 0, 0, -1, },
+ { "DTR", 0, 0, 2, -1, },
+ { "FR%, % in 0 - 1", 12, 0, 0, -1, },
+ { "FR%, % in 2 - 127", 13, 0, 2, -1, },
+ { "FR%, % in 2 - 127", 13, 0, 0, -1, },
+ { "GR0", 14, 0, 0, -1, },
+ { "GR%, % in 1 - 127", 15, 0, 0, -1, },
+ { "GR%, % in 1 - 127", 15, 0, 2, -1, },
+ { "IBR#", 16, 0, 2, -1, },
+ { "InService*", 17, 0, 3, -1, },
+ { "InService*", 17, 0, 2, -1, },
+ { "InService*", 17, 0, 2, -1, },
+ { "IP", 0, 0, 0, -1, },
+ { "ITC", 0, 0, 4, -1, },
+ { "ITC", 0, 0, 2, -1, },
+ { "ITC", 0, 0, 0, -1, },
+ { "ITC", 0, 0, 4, -1, },
+ { "ITC", 0, 0, 2, -1, },
+ { "ITC_LIMIT*", 0, 0, 2, -1, },
+ { "ITR", 0, 0, 2, -1, },
+ { "ITR", 0, 0, 4, -1, },
+ { "ITR", 0, 0, 2, -1, },
+ { "ITR", 0, 0, 0, -1, },
+ { "ITR", 0, 0, 4, -1, },
+ { "memory", 0, 0, 0, -1, },
+ { "MSR#", 18, 0, 5, -1, },
+ { "PKR#", 19, 0, 3, -1, },
+ { "PKR#", 19, 0, 0, -1, },
+ { "PKR#", 19, 0, 2, -1, },
+ { "PKR#", 19, 0, 2, -1, },
+ { "PMC#", 20, 0, 2, -1, },
+ { "PMC#", 20, 0, 6, -1, "SC+3 Section 12.1.1", },
+ { "PMD#", 21, 0, 2, -1, },
+ { "PR0", 0, 0, 0, -1, },
+ { "PR%, % in 1 - 62", 22, 0, 2, -1, },
+ { "PR%, % in 1 - 62", 22, 0, 2, -1, },
+ { "PR%, % in 1 - 62", 22, 0, 0, -1, },
+ { "PR63", 23, 0, 2, -1, },
+ { "PR63", 23, 0, 2, -1, },
+ { "PR63", 23, 0, 0, -1, },
+ { "PSR.ac", 27, 0, 1, 3, },
+ { "PSR.ac", 27, 0, 3, 3, },
+ { "PSR.ac", 27, 0, 2, 3, },
+ { "PSR.be", 27, 0, 1, 1, },
+ { "PSR.be", 27, 0, 3, 1, },
+ { "PSR.be", 27, 0, 2, 1, },
+ { "PSR.bn", 27, 0, 2, 44, },
+ { "PSR.cpl", 27, 0, 1, 32, },
+ { "PSR.da", 27, 0, 3, 38, },
+ { "PSR.db", 27, 0, 3, 24, },
+ { "PSR.db", 27, 0, 2, 24, },
+ { "PSR.db", 27, 0, 3, 24, },
+ { "PSR.dd", 27, 0, 3, 39, },
+ { "PSR.dfh", 27, 0, 3, 19, },
+ { "PSR.dfh", 27, 0, 2, 19, },
+ { "PSR.dfl", 27, 0, 3, 18, },
+ { "PSR.dfl", 27, 0, 2, 18, },
+ { "PSR.di", 27, 0, 3, 22, },
+ { "PSR.di", 27, 0, 2, 22, },
+ { "PSR.dt", 27, 0, 3, 17, },
+ { "PSR.dt", 27, 0, 2, 17, },
+ { "PSR.ed", 27, 0, 3, 43, },
+ { "PSR.i", 27, 0, 2, 14, },
+ { "PSR.i", 27, 0, 3, 14, },
+ { "PSR.ia", 27, 0, 0, 14, },
+ { "PSR.ic", 27, 0, 2, 13, },
+ { "PSR.ic", 27, 0, 3, 13, },
+ { "PSR.id", 27, 0, 0, 14, },
+ { "PSR.is", 27, 0, 0, 14, },
+ { "PSR.it", 27, 0, 3, 14, },
+ { "PSR.lp", 27, 0, 2, 25, },
+ { "PSR.lp", 27, 0, 3, 25, },
+ { "PSR.lp", 27, 0, 3, 25, },
+ { "PSR.mc", 27, 0, 0, 35, },
+ { "PSR.mfh", 27, 0, 2, 5, },
+ { "PSR.mfl", 27, 0, 2, 4, },
+ { "PSR.pk", 27, 0, 3, 15, },
+ { "PSR.pk", 27, 0, 2, 15, },
+ { "PSR.pp", 27, 0, 2, 21, },
+ { "PSR.ri", 27, 0, 0, 41, },
+ { "PSR.rt", 27, 0, 2, 27, },
+ { "PSR.rt", 27, 0, 3, 27, },
+ { "PSR.rt", 27, 0, 3, 27, },
+ { "PSR.si", 27, 0, 2, 23, },
+ { "PSR.si", 27, 0, 3, 23, },
+ { "PSR.sp", 27, 0, 2, 20, },
+ { "PSR.sp", 27, 0, 3, 20, },
+ { "PSR.ss", 27, 0, 3, 40, },
+ { "PSR.tb", 27, 0, 3, 26, },
+ { "PSR.tb", 27, 0, 2, 26, },
+ { "PSR.up", 27, 0, 2, 2, },
+ { "RR#", 24, 0, 3, -1, },
+ { "RR#", 24, 0, 2, -1, },
+ { "RSE", 28, 0, 2, -1, },
+ { "ALAT", 0, 1, 0, -1, },
+ { "AR[BSP]", 25, 1, 2, 17, },
+ { "AR[BSPSTORE]", 25, 1, 2, 18, },
+ { "AR[CCV]", 25, 1, 2, 32, },
+ { "AR[EC]", 25, 1, 2, 66, },
+ { "AR[FPSR].sf0.controls", 29, 1, 2, -1, },
+ { "AR[FPSR].sf1.controls", 29, 1, 2, -1, },
+ { "AR[FPSR].sf2.controls", 29, 1, 2, -1, },
+ { "AR[FPSR].sf3.controls", 29, 1, 2, -1, },
+ { "AR[FPSR].sf0.flags", 29, 1, 0, -1, },
+ { "AR[FPSR].sf0.flags", 29, 1, 2, -1, },
+ { "AR[FPSR].sf0.flags", 29, 1, 2, -1, },
+ { "AR[FPSR].sf1.flags", 29, 1, 0, -1, },
+ { "AR[FPSR].sf1.flags", 29, 1, 2, -1, },
+ { "AR[FPSR].sf1.flags", 29, 1, 2, -1, },
+ { "AR[FPSR].sf2.flags", 29, 1, 0, -1, },
+ { "AR[FPSR].sf2.flags", 29, 1, 2, -1, },
+ { "AR[FPSR].sf2.flags", 29, 1, 2, -1, },
+ { "AR[FPSR].sf3.flags", 29, 1, 0, -1, },
+ { "AR[FPSR].sf3.flags", 29, 1, 2, -1, },
+ { "AR[FPSR].sf3.flags", 29, 1, 2, -1, },
+ { "AR[FPSR].rv", 29, 1, 2, -1, },
+ { "AR[FPSR].traps", 29, 1, 2, -1, },
+ { "AR[ITC]", 25, 1, 2, 44, },
+ { "AR[K%], % in 0 - 7", 1, 1, 2, -1, },
+ { "AR[LC]", 25, 1, 2, 65, },
+ { "AR[PFS]", 25, 1, 0, 64, },
+ { "AR[PFS]", 25, 1, 2, 64, },
+ { "AR[PFS]", 25, 1, 2, 64, },
+ { "AR[RNAT]", 25, 1, 2, 19, },
+ { "AR[RSC]", 25, 1, 2, 16, },
+ { "AR[UNAT]{%}, % in 0 - 63", 2, 1, 2, -1, },
+ { "AR%, % in 8-15, 20, 22-23, 31, 33-35, 37-39, 41-43, 45-47, 67-111", 3, 1, 0, -1, },
+ { "AR%, % in 48 - 63, 112-127", 4, 1, 2, -1, },
+ { "BR%, % in 0 - 7", 5, 1, 2, -1, },
+ { "BR%, % in 0 - 7", 5, 1, 2, -1, },
+ { "BR%, % in 0 - 7", 5, 1, 2, -1, },
+ { "BR%, % in 0 - 7", 5, 1, 0, -1, },
+ { "CFM", 6, 1, 2, -1, },
+ { "CPUID#", 7, 1, 0, -1, },
+ { "CR[CMCV]", 26, 1, 2, 74, },
+ { "CR[DCR]", 26, 1, 2, 0, },
+ { "CR[EOI]", 26, 1, 6, 67, "SC Section 10.8.3.4", },
+ { "CR[GPTA]", 26, 1, 2, 9, },
+ { "CR[IFA]", 26, 1, 2, 20, },
+ { "CR[IFS]", 26, 1, 2, 23, },
+ { "CR[IHA]", 26, 1, 2, 25, },
+ { "CR[IIM]", 26, 1, 2, 24, },
+ { "CR[IIP]", 26, 1, 2, 19, },
+ { "CR[IIPA]", 26, 1, 2, 22, },
+ { "CR[IPSR]", 26, 1, 2, 16, },
+ { "CR[IRR%], % in 0 - 3", 8, 1, 2, -1, },
+ { "CR[ISR]", 26, 1, 2, 17, },
+ { "CR[ITIR]", 26, 1, 2, 21, },
+ { "CR[ITM]", 26, 1, 2, 1, },
+ { "CR[ITV]", 26, 1, 2, 72, },
+ { "CR[IVA]", 26, 1, 2, 2, },
+ { "CR[IVR]", 26, 1, 6, 65, "SC", },
+ { "CR[LID]", 26, 1, 6, 64, "SC", },
+ { "CR[LRR%], % in 0 - 1", 9, 1, 2, -1, },
+ { "CR[PMV]", 26, 1, 2, 73, },
+ { "CR[PTA]", 26, 1, 2, 8, },
+ { "CR[TPR]", 26, 1, 2, 66, },
+ { "CR%, % in 3-7, 10-15, 18, 26-63, 75-79, 82-127", 10, 1, 0, -1, },
+ { "DBR#", 11, 1, 2, -1, },
+ { "DTC", 0, 1, 0, -1, },
+ { "DTC", 0, 1, 2, -1, },
+ { "DTC", 0, 1, 2, -1, },
+ { "DTC_LIMIT*", 0, 1, 2, -1, },
+ { "DTR", 0, 1, 2, -1, },
+ { "DTR", 0, 1, 2, -1, },
+ { "DTR", 0, 1, 2, -1, },
+ { "DTR", 0, 1, 0, -1, },
+ { "FR%, % in 0 - 1", 12, 1, 0, -1, },
+ { "FR%, % in 2 - 127", 13, 1, 2, -1, },
+ { "GR0", 14, 1, 0, -1, },
+ { "GR%, % in 1 - 127", 15, 1, 2, -1, },
+ { "IBR#", 16, 1, 2, -1, },
+ { "InService*", 17, 1, 6, -1, "SC", },
+ { "IP", 0, 1, 0, -1, },
+ { "ITC", 0, 1, 0, -1, },
+ { "ITC", 0, 1, 2, -1, },
+ { "ITC", 0, 1, 2, -1, },
+ { "ITR", 0, 1, 2, -1, },
+ { "ITR", 0, 1, 2, -1, },
+ { "ITR", 0, 1, 0, -1, },
+ { "memory", 0, 1, 0, -1, },
+ { "MSR#", 18, 1, 6, -1, "SC", },
+ { "PKR#", 19, 1, 0, -1, },
+ { "PKR#", 19, 1, 0, -1, },
+ { "PKR#", 19, 1, 2, -1, },
+ { "PMC#", 20, 1, 2, -1, },
+ { "PMD#", 21, 1, 2, -1, },
+ { "PR0", 0, 1, 0, -1, },
+ { "PR%, % in 1 - 62", 22, 1, 0, -1, },
+ { "PR%, % in 1 - 62", 22, 1, 0, -1, },
+ { "PR%, % in 1 - 62", 22, 1, 2, -1, },
+ { "PR%, % in 1 - 62", 22, 1, 2, -1, },
+ { "PR63", 23, 1, 0, -1, },
+ { "PR63", 23, 1, 0, -1, },
+ { "PR63", 23, 1, 2, -1, },
+ { "PR63", 23, 1, 2, -1, },
+ { "PSR.ac", 27, 1, 2, 3, },
+ { "PSR.be", 27, 1, 2, 1, },
+ { "PSR.bn", 27, 1, 2, 44, },
+ { "PSR.cpl", 27, 1, 2, 32, },
+ { "PSR.da", 27, 1, 2, 38, },
+ { "PSR.db", 27, 1, 2, 24, },
+ { "PSR.dd", 27, 1, 2, 39, },
+ { "PSR.dfh", 27, 1, 2, 19, },
+ { "PSR.dfl", 27, 1, 2, 18, },
+ { "PSR.di", 27, 1, 2, 22, },
+ { "PSR.dt", 27, 1, 2, 17, },
+ { "PSR.ed", 27, 1, 2, 43, },
+ { "PSR.i", 27, 1, 2, 14, },
+ { "PSR.ia", 27, 1, 2, 14, },
+ { "PSR.ic", 27, 1, 2, 13, },
+ { "PSR.id", 27, 1, 2, 14, },
+ { "PSR.is", 27, 1, 2, 14, },
+ { "PSR.it", 27, 1, 2, 14, },
+ { "PSR.lp", 27, 1, 2, 25, },
+ { "PSR.mc", 27, 1, 2, 35, },
+ { "PSR.mfh", 27, 1, 0, 5, },
+ { "PSR.mfh", 27, 1, 2, 5, },
+ { "PSR.mfh", 27, 1, 2, 5, },
+ { "PSR.mfl", 27, 1, 0, 4, },
+ { "PSR.mfl", 27, 1, 2, 4, },
+ { "PSR.mfl", 27, 1, 2, 4, },
+ { "PSR.pk", 27, 1, 2, 15, },
+ { "PSR.pp", 27, 1, 2, 21, },
+ { "PSR.ri", 27, 1, 2, 41, },
+ { "PSR.rt", 27, 1, 2, 27, },
+ { "PSR.si", 27, 1, 2, 23, },
+ { "PSR.sp", 27, 1, 2, 20, },
+ { "PSR.ss", 27, 1, 2, 40, },
+ { "PSR.tb", 27, 1, 2, 26, },
+ { "PSR.up", 27, 1, 2, 2, },
+ { "RR#", 24, 1, 2, -1, },
+ { "RSE", 28, 1, 2, -1, },
+ { "PR63", 23, 2, 2, -1, },
+};
+
+static const short dep0[] = {
+ 2131, 2294,
+};
+
+static const short dep1[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 20602,
+};
+
+static const short dep2[] = {
+ 32, 33, 2129, 2130, 2131, 2294, 4127, 20602,
+};
+
+static const short dep3[] = {
+ 32, 33, 81, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 20602,
+};
+
+static const short dep4[] = {
+ 2314, 2315, 2318, 2319,
+};
+
+static const short dep5[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 2314, 2315, 2318, 2319, 4127,
+ 20602,
+};
+
+static const short dep6[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 4127, 20602,
+};
+
+static const short dep7[] = {
+ 2312, 2314, 2316, 2318,
+};
+
+static const short dep8[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 2312, 2315, 2316, 2319, 4127,
+ 20602,
+};
+
+static const short dep9[] = {
+ 2313, 2315, 2317, 2319,
+};
+
+static const short dep10[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 2313, 2314, 2317, 2318, 4127,
+ 20602,
+};
+
+static const short dep11[] = {
+ 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319,
+};
+
+static const short dep12[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 2312, 2313, 2314, 2315, 2316,
+ 2317, 2318, 2319, 4127, 20602,
+};
+
+static const short dep13[] = {
+ 2357,
+};
+
+static const short dep14[] = {
+ 145, 164, 2074, 2075, 2157, 2159, 2160, 2162, 2163,
+};
+
+static const short dep15[] = {
+ 144, 288, 2357,
+};
+
+static const short dep16[] = {
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22,
+ 23, 24, 25, 133, 145, 164, 288, 2074, 2075, 2157, 2159, 2160, 2162, 2163,
+
+};
+
+static const short dep17[] = {
+ 1, 4, 32, 123, 171, 174, 208, 275, 2357,
+};
+
+static const short dep18[] = {
+ 1, 18, 20, 30, 32, 33, 145, 147, 148, 164, 171, 174, 208, 275, 2074, 2075,
+ 2157, 2159, 2160, 2162, 2163, 4127,
+};
+
+static const short dep19[] = {
+ 1, 32, 43, 171, 208, 215,
+};
+
+static const short dep20[] = {
+ 1, 30, 32, 33, 142, 171, 208, 215, 4127,
+};
+
+static const short dep21[] = {
+ 32, 208,
+};
+
+static const short dep22[] = {
+ 208,
+};
+
+static const short dep23[] = {
+ 1, 32, 117, 118, 120, 121, 122, 123, 124, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 139, 140, 141, 142, 143, 144, 145, 148, 149, 150, 151,
+ 152, 153, 154, 155, 158, 159, 160, 161, 162, 163, 164, 165, 166, 171, 208,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 293, 294, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306,
+};
+
+static const short dep24[] = {
+ 1, 30, 32, 33, 42, 43, 47, 50, 64, 171, 208, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 293,
+ 294, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 4127,
+};
+
+static const short dep25[] = {
+ 122, 274,
+};
+
+static const short dep26[] = {
+ 274,
+};
+
+static const short dep27[] = {
+ 123, 275,
+};
+
+static const short dep28[] = {
+ 18, 19, 89, 92, 96, 99, 123, 145, 275,
+};
+
+static const short dep29[] = {
+ 2157, 2159, 2160, 2162, 2163,
+};
+
+static const short dep30[] = {
+ 1, 18, 32, 171, 196, 197, 208, 2074, 2252, 2255, 2357,
+};
+
+static const short dep31[] = {
+ 1, 4, 30, 32, 33, 123, 145, 164, 171, 196, 198, 208, 2074, 2075, 2157, 2159,
+ 2160, 2162, 2163, 2253, 2255, 4127,
+};
+
+static const short dep32[] = {
+ 2074, 2076,
+};
+
+static const short dep33[] = {
+ 145, 164, 2157, 2159, 2160, 2162, 2163,
+};
+
+static const short dep34[] = {
+ 4, 29, 30, 31, 113, 114, 174, 208, 270, 271, 2357,
+};
+
+static const short dep35[] = {
+ 4, 29, 32, 33, 145, 164, 174, 208, 270, 271, 309, 2157, 2159, 2160, 2162,
+ 2163, 4127,
+};
+
+static const short dep36[] = {
+ 17, 195, 2357,
+};
+
+static const short dep37[] = {
+ 17, 145, 164, 195, 2157, 2159, 2160, 2162, 2163,
+};
+
+static const short dep38[] = {
+ 4, 17, 29, 30, 31, 113, 114, 174, 195, 208, 270, 271, 2357,
+};
+
+static const short dep39[] = {
+ 4, 17, 29, 32, 33, 145, 164, 174, 195, 208, 270, 271, 309, 2157, 2159, 2160,
+ 2162, 2163, 4127,
+};
+
+static const short dep40[] = {
+ 1, 4, 30, 32, 33, 123, 145, 164, 171, 196, 198, 208, 2157, 2159, 2160, 2162,
+ 2163, 2253, 2255, 4127,
+};
+
+static const short dep41[] = {
+ 9, 179, 180, 2127, 2292, 18582, 18583, 18724, 18725, 18727, 18728,
+};
+
+static const short dep42[] = {
+ 5, 13, 14, 32, 33, 179, 181, 2126, 2127, 2128, 2157, 2158, 2161, 2292, 4127,
+ 16513, 16515, 18724, 18726, 18727, 18729,
+};
+
+static const short dep43[] = {
+ 9, 10, 11, 12, 179, 180, 182, 183, 185, 186, 188, 189, 2127, 2292, 18582,
+ 18583, 18724, 18725, 18727, 18728,
+};
+
+static const short dep44[] = {
+ 5, 6, 7, 8, 13, 14, 32, 33, 179, 181, 182, 184, 185, 187, 188, 190, 2126,
+ 2127, 2128, 2157, 2158, 2161, 2292, 4127, 16513, 16515, 18724, 18726, 18727,
+ 18729,
+};
+
+static const short dep45[] = {
+ 10, 182, 183, 2127, 2292, 18582, 18583, 18724, 18725, 18727, 18728,
+};
+
+static const short dep46[] = {
+ 6, 13, 14, 32, 33, 182, 184, 2126, 2127, 2128, 2157, 2158, 2161, 2292, 4127,
+ 16513, 16515, 18724, 18726, 18727, 18729,
+};
+
+static const short dep47[] = {
+ 11, 185, 186, 2127, 2292, 18582, 18583, 18724, 18725, 18727, 18728,
+};
+
+static const short dep48[] = {
+ 7, 13, 14, 32, 33, 185, 187, 2126, 2127, 2128, 2157, 2158, 2161, 2292, 4127,
+ 16513, 16515, 18724, 18726, 18727, 18729,
+};
+
+static const short dep49[] = {
+ 12, 188, 189, 2127, 2292, 18582, 18583, 18724, 18725, 18727, 18728,
+};
+
+static const short dep50[] = {
+ 8, 13, 14, 32, 33, 188, 190, 2126, 2127, 2128, 2157, 2158, 2161, 2292, 4127,
+ 16513, 16515, 18724, 18726, 18727, 18729,
+};
+
+static const short dep51[] = {
+ 2127, 2292, 18582, 18583, 18724, 18725, 18727, 18728,
+};
+
+static const short dep52[] = {
+ 32, 33, 2126, 2127, 2128, 2157, 2158, 2161, 2292, 4127, 16513, 16515, 18724,
+ 18726, 18727, 18729,
+};
+
+static const short dep53[] = {
+ 5, 175,
+};
+
+static const short dep54[] = {
+ 5, 175, 2157, 2158, 2161,
+};
+
+static const short dep55[] = {
+ 5, 2157, 2158, 2161,
+};
+
+static const short dep56[] = {
+ 6, 176,
+};
+
+static const short dep57[] = {
+ 5, 176, 2157, 2158, 2161,
+};
+
+static const short dep58[] = {
+ 7, 177,
+};
+
+static const short dep59[] = {
+ 5, 177, 2157, 2158, 2161,
+};
+
+static const short dep60[] = {
+ 8, 178,
+};
+
+static const short dep61[] = {
+ 5, 178, 2157, 2158, 2161,
+};
+
+static const short dep62[] = {
+ 9, 180, 181,
+};
+
+static const short dep63[] = {
+ 180, 181, 2157, 2158, 2161,
+};
+
+static const short dep64[] = {
+ 2157, 2158, 2161,
+};
+
+static const short dep65[] = {
+ 10, 183, 184,
+};
+
+static const short dep66[] = {
+ 183, 184, 2157, 2158, 2161,
+};
+
+static const short dep67[] = {
+ 11, 186, 187,
+};
+
+static const short dep68[] = {
+ 186, 187, 2157, 2158, 2161,
+};
+
+static const short dep69[] = {
+ 12, 189, 190,
+};
+
+static const short dep70[] = {
+ 189, 190, 2157, 2158, 2161,
+};
+
+static const short dep71[] = {
+ 9, 13, 14, 145, 164, 2157, 2158, 2161,
+};
+
+static const short dep72[] = {
+ 9, 10, 13, 14, 145, 164, 2157, 2158, 2161,
+};
+
+static const short dep73[] = {
+ 9, 11, 13, 14, 145, 164, 2157, 2158, 2161,
+};
+
+static const short dep74[] = {
+ 9, 12, 13, 14, 145, 164, 2157, 2158, 2161,
+};
+
+static const short dep75[] = {
+ 9, 179, 180,
+};
+
+static const short dep76[] = {
+ 5, 13, 14, 179, 181, 2157, 2158, 2161,
+};
+
+static const short dep77[] = {
+ 9, 10, 11, 12, 179, 180, 182, 183, 185, 186, 188, 189,
+};
+
+static const short dep78[] = {
+ 5, 6, 7, 8, 13, 14, 179, 181, 182, 184, 185, 187, 188, 190, 2157, 2158, 2161,
+
+};
+
+static const short dep79[] = {
+ 10, 182, 183,
+};
+
+static const short dep80[] = {
+ 6, 13, 14, 182, 184, 2157, 2158, 2161,
+};
+
+static const short dep81[] = {
+ 11, 185, 186,
+};
+
+static const short dep82[] = {
+ 7, 13, 14, 185, 187, 2157, 2158, 2161,
+};
+
+static const short dep83[] = {
+ 12, 188, 189,
+};
+
+static const short dep84[] = {
+ 8, 13, 14, 188, 190, 2157, 2158, 2161,
+};
+
+static const short dep85[] = {
+ 9, 179, 180, 2314, 2315, 2318, 2319,
+};
+
+static const short dep86[] = {
+ 5, 13, 14, 179, 181, 2157, 2158, 2161, 2314, 2315, 2318, 2319,
+};
+
+static const short dep87[] = {
+ 9, 10, 11, 12, 179, 180, 182, 183, 185, 186, 188, 189, 2314, 2315, 2318, 2319,
+
+};
+
+static const short dep88[] = {
+ 5, 6, 7, 8, 13, 14, 179, 181, 182, 184, 185, 187, 188, 190, 2157, 2158, 2161,
+ 2314, 2315, 2318, 2319,
+};
+
+static const short dep89[] = {
+ 10, 182, 183, 2314, 2315, 2318, 2319,
+};
+
+static const short dep90[] = {
+ 6, 13, 14, 182, 184, 2157, 2158, 2161, 2314, 2315, 2318, 2319,
+};
+
+static const short dep91[] = {
+ 11, 185, 186, 2314, 2315, 2318, 2319,
+};
+
+static const short dep92[] = {
+ 7, 13, 14, 185, 187, 2157, 2158, 2161, 2314, 2315, 2318, 2319,
+};
+
+static const short dep93[] = {
+ 12, 188, 189, 2314, 2315, 2318, 2319,
+};
+
+static const short dep94[] = {
+ 8, 13, 14, 188, 190, 2157, 2158, 2161, 2314, 2315, 2318, 2319,
+};
+
+static const short dep95[] = {
+ 32, 33, 2126, 2127, 2128, 2157, 2158, 2161, 2314, 2315, 2318, 2319, 4127,
+ 16513, 16515,
+};
+
+static const short dep96[] = {
+ 32, 33, 2126, 2127, 2128, 2157, 2158, 2161, 4127, 16513, 16515,
+};
+
+static const short dep97[] = {
+ 13, 14, 32, 33, 2126, 2127, 2128, 2157, 2158, 2161, 2292, 4127, 16513, 16515,
+ 18724, 18726, 18727, 18729,
+};
+
+static const short dep98[] = {
+ 32, 33, 145, 164, 2129, 2130, 2131, 2157, 2158, 2161, 4127, 20602,
+};
+
+static const short dep99[] = {
+ 2075, 2076, 2253, 2254,
+};
+
+static const short dep100[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 2252, 2254, 4127, 20602,
+};
+
+static const short dep101[] = {
+ 32, 33, 2074, 2076, 2157, 2158, 2161, 2294, 4127, 20602,
+};
+
+static const short dep102[] = {
+ 14446, 14448, 14449, 14451, 14602, 14603, 14606, 14607,
+};
+
+static const short dep103[] = {
+ 32, 33, 2129, 2130, 2131, 4127, 14602, 14603, 14606, 14607, 20602, 24685,
+ 24686, 24689,
+};
+
+static const short dep104[] = {
+ 110, 112, 113, 115, 14602, 14603, 14606, 14607,
+};
+
+static const short dep105[] = {
+ 14602, 14603, 14606, 14607, 24685, 24686, 24689,
+};
+
+static const short dep106[] = {
+ 32, 33, 2157, 2158, 2161, 2294, 4127, 20602,
+};
+
+static const short dep107[] = {
+ 32, 33, 110, 113, 2294, 4127, 20602, 24685,
+};
+
+static const short dep108[] = {
+ 4, 17, 19, 20, 174, 195, 198, 2073, 2251,
+};
+
+static const short dep109[] = {
+ 32, 33, 174, 195, 197, 2129, 2130, 2131, 2157, 2158, 2161, 2251, 4127, 20602,
+
+};
+
+static const short dep110[] = {
+ 4, 17, 18, 19, 32, 33, 2073, 2157, 2158, 2161, 2294, 4127, 20602,
+};
+
+static const short dep111[] = {
+ 32, 33, 2129, 2130, 2131, 2314, 2315, 2318, 2319, 4127, 20602,
+};
+
+static const short dep112[] = {
+ 32, 33, 2129, 2130, 2131, 4127, 20602,
+};
+
+static const short dep113[] = {
+ 32, 33, 2129, 2130, 2131, 2312, 2315, 2316, 2319, 4127, 20602,
+};
+
+static const short dep114[] = {
+ 32, 33, 2129, 2130, 2131, 2313, 2314, 2317, 2318, 4127, 20602,
+};
+
+static const short dep115[] = {
+ 32, 33, 2129, 2130, 2131, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319,
+ 4127, 20602,
+};
+
+static const short dep116[] = {
+ 0, 32, 33, 145, 164, 2157, 2158, 2161, 4127,
+};
+
+static const short dep117[] = {
+ 0, 170,
+};
+
+static const short dep118[] = {
+ 0, 32, 33, 145, 164, 170, 2157, 2158, 2161, 4127,
+};
+
+static const short dep119[] = {
+ 170, 2157, 2158, 2161,
+};
+
+static const short dep120[] = {
+ 2, 21, 172, 199,
+};
+
+static const short dep121[] = {
+ 1, 2, 21, 22, 157, 158, 172, 199,
+};
+
+static const short dep122[] = {
+ 1, 21, 22, 30, 32, 33, 157, 158, 172, 199, 4127,
+};
+
+static const short dep123[] = {
+ 0, 32, 33, 170, 2157, 2158, 2161, 4127,
+};
+
+static const short dep124[] = {
+ 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21, 22, 23, 171, 172, 173,
+ 175, 176, 177, 178, 180, 181, 183, 184, 186, 187, 189, 190, 191, 192, 193,
+ 199, 200, 201, 2064, 2073, 2242, 2251,
+};
+
+static const short dep125[] = {
+ 22, 32, 33, 123, 171, 172, 173, 175, 176, 177, 178, 180, 181, 183, 184, 186,
+ 187, 189, 190, 191, 192, 193, 199, 200, 201, 2129, 2130, 2131, 2157, 2158,
+ 2161, 2242, 2251, 4127, 20602,
+};
+
+static const short dep126[] = {
+ 162, 2157, 2158, 2161,
+};
+
+static const short dep127[] = {
+ 162,
+};
+
+static const short dep128[] = {
+ 64, 2157, 2158, 2161,
+};
+
+static const short dep129[] = {
+ 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21, 22, 23, 32, 33, 123, 160,
+ 2064, 2073, 2157, 2158, 2161, 2294, 4127, 20602,
+};
+
+static const short dep130[] = {
+ 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55,
+ 56, 57, 59, 61, 62, 63, 64, 85, 87, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 222, 223, 224, 225, 226, 228, 230, 231, 232, 248, 2108, 2277,
+
+};
+
+static const short dep131[] = {
+ 32, 33, 87, 142, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 222,
+ 223, 224, 225, 226, 228, 230, 231, 232, 248, 2129, 2130, 2131, 2157, 2158,
+ 2161, 2277, 4127, 20602,
+};
+
+static const short dep132[] = {
+ 51, 86, 221, 248, 2131, 2294,
+};
+
+static const short dep133[] = {
+ 32, 33, 35, 36, 38, 40, 41, 43, 44, 45, 46, 48, 49, 52, 53, 55, 56, 57, 58,
+ 59, 61, 62, 63, 85, 86, 142, 221, 248, 2099, 2108, 2157, 2158, 2161, 2294,
+ 4127, 20602,
+};
+
+static const short dep134[] = {
+ 2, 21, 33, 172, 199, 208, 2131, 2294,
+};
+
+static const short dep135[] = {
+ 2, 18, 19, 21, 22, 30, 32, 33, 157, 158, 172, 199, 208, 2294, 4127, 20602,
+
+};
+
+static const short dep136[] = {
+ 117, 118, 120, 121, 125, 126, 129, 130, 131, 132, 133, 134, 135, 136, 138,
+ 141, 142, 146, 147, 150, 151, 152, 153, 154, 156, 157, 159, 160, 161, 162,
+ 164, 165, 166, 272, 273, 277, 279, 280, 281, 282, 284, 286, 290, 293, 294,
+ 296, 297, 298, 299, 301, 302, 303, 305, 306,
+};
+
+static const short dep137[] = {
+ 32, 33, 64, 272, 273, 277, 279, 280, 281, 282, 284, 286, 290, 293, 294, 296,
+ 297, 298, 299, 301, 302, 303, 305, 306, 2129, 2130, 2131, 2157, 2158, 2161,
+ 4127, 20602,
+};
+
+static const short dep138[] = {
+ 116, 118, 119, 121, 150, 151, 166, 272, 273, 293, 294, 296, 297, 306,
+};
+
+static const short dep139[] = {
+ 32, 33, 162, 272, 273, 293, 294, 296, 297, 306, 2129, 2130, 2131, 2157, 2158,
+ 2161, 4127, 20602,
+};
+
+static const short dep140[] = {
+ 32, 33, 118, 121, 126, 127, 130, 132, 134, 136, 138, 139, 141, 145, 146, 148,
+ 149, 150, 151, 153, 154, 156, 158, 159, 161, 165, 166, 2157, 2158, 2161, 2294,
+ 4127, 20602,
+};
+
+static const short dep141[] = {
+ 32, 33, 118, 121, 150, 151, 166, 2157, 2158, 2161, 2294, 4127, 20602,
+};
+
+static const short dep142[] = {
+ 68, 69, 92, 93, 236, 237, 251, 252,
+};
+
+static const short dep143[] = {
+ 32, 33, 39, 54, 69, 71, 77, 90, 93, 142, 167, 236, 237, 251, 252, 2129, 2130,
+ 2131, 2157, 2158, 2161, 4127, 20602,
+};
+
+static const short dep144[] = {
+ 32, 33, 39, 54, 69, 71, 90, 93, 95, 97, 142, 167, 236, 237, 251, 252, 2129,
+ 2130, 2131, 2157, 2158, 2161, 4127, 20602,
+};
+
+static const short dep145[] = {
+ 12455, 12456, 12595,
+};
+
+static const short dep146[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 4127, 12595, 20602,
+};
+
+static const short dep147[] = {
+ 6210, 6211, 6378,
+};
+
+static const short dep148[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 4127, 6378, 20602,
+};
+
+static const short dep149[] = {
+ 6228, 6391,
+};
+
+static const short dep150[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 4127, 6391, 20602,
+};
+
+static const short dep151[] = {
+ 6246, 6247, 6248, 6249, 6402, 6404, 8451,
+};
+
+static const short dep152[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 4127, 6249, 6403, 6404, 8295,
+ 8450, 20602,
+};
+
+static const short dep153[] = {
+ 6250, 6251, 6405,
+};
+
+static const short dep154[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 4127, 6405, 20602,
+};
+
+static const short dep155[] = {
+ 6252, 6406,
+};
+
+static const short dep156[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 4127, 6406, 20602,
+};
+
+static const short dep157[] = {
+ 10341, 10497,
+};
+
+static const short dep158[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 4127, 10497, 20602,
+};
+
+static const short dep159[] = {
+ 68, 69, 73, 74, 92, 93, 236, 237, 239, 240, 251, 252,
+};
+
+static const short dep160[] = {
+ 32, 33, 39, 69, 71, 74, 77, 90, 93, 142, 167, 236, 237, 239, 241, 251, 252,
+ 2129, 2130, 2131, 2157, 2158, 2161, 4127, 20602,
+};
+
+static const short dep161[] = {
+ 68, 69, 92, 93, 95, 96, 236, 237, 251, 252, 253, 254,
+};
+
+static const short dep162[] = {
+ 32, 33, 39, 54, 69, 71, 90, 93, 95, 97, 142, 167, 236, 237, 251, 252, 253,
+ 254, 2129, 2130, 2131, 2157, 2158, 2161, 4127, 20602,
+};
+
+static const short dep163[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 12456, 20602,
+};
+
+static const short dep164[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 6210, 20602,
+};
+
+static const short dep165[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 6228, 20602,
+};
+
+static const short dep166[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 6248, 8294, 20602,
+
+};
+
+static const short dep167[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 6250, 20602,
+};
+
+static const short dep168[] = {
+ 32, 33, 123, 162, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 6251, 6252,
+ 20602,
+};
+
+static const short dep169[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 10341, 20602,
+};
+
+static const short dep170[] = {
+ 32, 33, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 6178, 20602,
+};
+
+static const short dep171[] = {
+ 68, 70, 71, 89, 90, 91, 235, 236, 250, 251,
+};
+
+static const short dep172[] = {
+ 32, 33, 69, 70, 74, 76, 91, 93, 95, 98, 167, 235, 237, 250, 252, 2129, 2130,
+ 2131, 2157, 2158, 2161, 4127, 20602,
+};
+
+static const short dep173[] = {
+ 68, 70, 71, 72, 89, 90, 91, 94, 235, 236, 238, 250, 251,
+};
+
+static const short dep174[] = {
+ 32, 33, 69, 70, 72, 74, 76, 91, 93, 94, 95, 98, 167, 235, 237, 238, 250, 252,
+ 2129, 2130, 2131, 2157, 2158, 2161, 4127, 20602,
+};
+
+static const short dep175[] = {
+ 68, 70, 71, 75, 76, 77, 89, 90, 91, 235, 236, 241, 242, 250, 251,
+};
+
+static const short dep176[] = {
+ 32, 33, 69, 70, 74, 76, 91, 93, 167, 235, 237, 240, 242, 250, 252, 2129, 2130,
+ 2131, 2157, 2158, 2161, 4127, 20602,
+};
+
+static const short dep177[] = {
+ 68, 70, 71, 89, 90, 91, 97, 98, 99, 235, 236, 250, 251, 254, 255,
+};
+
+static const short dep178[] = {
+ 32, 33, 69, 70, 91, 93, 95, 98, 167, 235, 237, 250, 252, 253, 255, 2129, 2130,
+ 2131, 2157, 2158, 2161, 4127, 20602,
+};
+
+static const short dep179[] = {
+ 32, 33, 38, 62, 167, 2129, 2130, 2131, 2294, 4127, 20602,
+};
+
+static const short dep180[] = {
+ 32, 33, 167, 2129, 2130, 2131, 2294, 4127, 20602,
+};
+
+static const short dep181[] = {
+ 32, 33, 68, 73, 75, 167, 2129, 2130, 2131, 2294, 4127, 20602,
+};
+
+static const short dep182[] = {
+ 32, 33, 68, 73, 75, 167, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 20602,
+
+};
+
+static const short dep183[] = {
+ 32, 33, 145, 164, 2126, 2127, 2128, 2129, 2130, 2131, 2157, 2158, 2161, 4127,
+ 16513, 16515, 20602,
+};
+
+static const short dep184[] = {
+ 32, 33, 68, 73, 75, 2129, 2130, 2131, 2157, 2158, 2161, 4127, 20602,
+};
+
+static const short dep185[] = {
+ 32, 33, 69, 70, 91, 235, 237, 250, 252, 2129, 2130, 2131, 2157, 2158, 2161,
+ 4127, 20602,
+};
+
+static const short dep186[] = {
+ 32, 33, 67, 68, 73, 75, 100, 102, 116, 117, 119, 120, 123, 124, 125, 127,
+ 128, 135, 152, 167, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 20602,
+
+};
+
+static const short dep187[] = {
+ 32, 33, 36, 67, 68, 73, 75, 100, 102, 116, 117, 119, 120, 123, 124, 125, 127,
+ 128, 135, 137, 152, 167, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 20602,
+
+};
+
+static const short dep188[] = {
+ 0, 170, 2131, 2294,
+};
+
+static const short dep189[] = {
+ 0, 32, 33, 67, 68, 73, 75, 100, 102, 116, 117, 119, 120, 123, 124, 125, 127,
+ 128, 135, 152, 167, 170, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 20602,
+
+};
+
+static const short dep190[] = {
+ 0, 32, 33, 36, 67, 68, 73, 75, 100, 102, 116, 117, 119, 120, 123, 124, 125,
+ 127, 128, 135, 137, 152, 167, 170, 2129, 2130, 2131, 2157, 2158, 2161, 2294,
+ 4127, 20602,
+};
+
+static const short dep191[] = {
+ 23, 32, 33, 67, 68, 73, 75, 100, 102, 116, 117, 119, 120, 123, 124, 125, 127,
+ 128, 135, 152, 167, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 20602,
+
+};
+
+static const short dep192[] = {
+ 0, 170, 2294, 26706,
+};
+
+static const short dep193[] = {
+ 23, 201,
+};
+
+static const short dep194[] = {
+ 201,
+};
+
+static const short dep195[] = {
+ 0, 100, 170, 256, 2131, 2294,
+};
+
+static const short dep196[] = {
+ 0, 3, 32, 33, 67, 68, 73, 75, 100, 102, 116, 117, 119, 120, 123, 124, 125,
+ 127, 128, 135, 152, 167, 170, 256, 2129, 2130, 2131, 2157, 2158, 2161, 2294,
+ 4127, 20602,
+};
+
+static const short dep197[] = {
+ 0, 32, 33, 67, 68, 73, 75, 100, 102, 116, 117, 119, 120, 123, 124, 125, 127,
+ 128, 135, 152, 167, 170, 256, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127,
+ 20602,
+};
+
+static const short dep198[] = {
+ 32, 33, 2126, 2127, 2128, 2157, 2158, 2161, 2294, 4127, 16513, 16515, 20602,
+
+};
+
+static const short dep199[] = {
+ 32, 33, 67, 68, 73, 75, 100, 102, 116, 117, 119, 120, 123, 124, 125, 127,
+ 128, 135, 152, 167, 2129, 2130, 2131, 2157, 2158, 2161, 2292, 4127, 16513,
+ 16515, 18724, 18726, 18727, 18729, 20602,
+};
+
+static const short dep200[] = {
+ 32, 33, 36, 67, 68, 73, 75, 100, 102, 116, 117, 119, 120, 123, 124, 125, 127,
+ 128, 135, 137, 152, 167, 2129, 2130, 2131, 2157, 2158, 2161, 2292, 4127, 16513,
+ 16515, 18724, 18726, 18727, 18729, 20602,
+};
+
+static const short dep201[] = {
+ 0, 170, 2127, 2292, 18582, 18583, 18724, 18725, 18727, 18728,
+};
+
+static const short dep202[] = {
+ 0, 32, 33, 67, 68, 73, 75, 100, 102, 116, 117, 119, 120, 123, 124, 125, 127,
+ 128, 135, 152, 167, 170, 2129, 2130, 2131, 2157, 2158, 2161, 2292, 4127, 16513,
+ 16515, 18724, 18726, 18727, 18729, 20602,
+};
+
+static const short dep203[] = {
+ 0, 32, 33, 36, 67, 68, 73, 75, 100, 102, 116, 117, 119, 120, 123, 124, 125,
+ 127, 128, 135, 137, 152, 167, 170, 2129, 2130, 2131, 2157, 2158, 2161, 2292,
+ 4127, 16513, 16515, 18724, 18726, 18727, 18729, 20602,
+};
+
+static const short dep204[] = {
+ 0, 170, 2128, 2292, 18582, 18583, 18724, 18725, 18727, 18728,
+};
+
+static const short dep205[] = {
+ 0, 100, 170, 256,
+};
+
+static const short dep206[] = {
+ 0, 32, 33, 67, 68, 73, 75, 102, 116, 117, 119, 120, 123, 124, 125, 127, 128,
+ 135, 152, 167, 170, 256, 2129, 2130, 2131, 2157, 2158, 2161, 4127, 20602,
+
+};
+
+static const short dep207[] = {
+ 67, 123, 137, 2157, 2158, 2161,
+};
+
+static const short dep208[] = {
+ 67, 123, 124, 128, 137, 2157, 2158, 2161,
+};
+
+static const short dep209[] = {
+ 32, 33, 67, 123, 137, 2129, 2130, 2131, 2157, 2158, 2161, 2294, 4127, 20602,
+
+};
+
+static const short dep210[] = {
+ 32, 33, 67, 123, 124, 128, 137, 2129, 2130, 2131, 2157, 2158, 2161, 2294,
+ 4127, 20602,
+};
+
+static const short dep211[] = {
+ 2157, 2158, 2159, 2160, 2161, 2162, 2163,
+};
+
+static const short dep212[] = {
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 20, 21, 22, 23,
+ 171, 172, 173, 174, 175, 176, 177, 178, 180, 181, 183, 184, 186, 187, 189,
+ 190, 191, 192, 193, 195, 198, 199, 200, 201, 2064, 2073, 2131, 2242, 2251,
+ 2294,
+};
+
+static const short dep213[] = {
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23,
+ 32, 33, 123, 160, 171, 172, 173, 174, 175, 176, 177, 178, 180, 181, 183, 184,
+ 186, 187, 189, 190, 191, 192, 193, 195, 197, 199, 200, 201, 2064, 2073, 2129,
+ 2130, 2131, 2157, 2158, 2161, 2242, 2251, 2294, 4127, 20602,
+};
+
+#define NELS(X) (sizeof(X)/sizeof(X[0]))
+static const struct ia64_opcode_dependency
+op_dependencies[] = {
+ { NELS(dep1), dep1, NELS(dep0), dep0, },
+ { NELS(dep2), dep2, NELS(dep0), dep0, },
+ { 0, NULL, 0, NULL, },
+ { NELS(dep3), dep3, NELS(dep0), dep0, },
+ { NELS(dep5), dep5, NELS(dep4), dep4, },
+ { NELS(dep6), dep6, 0, NULL, },
+ { NELS(dep8), dep8, NELS(dep7), dep7, },
+ { NELS(dep10), dep10, NELS(dep9), dep9, },
+ { NELS(dep12), dep12, NELS(dep11), dep11, },
+ { NELS(dep14), dep14, NELS(dep13), dep13, },
+ { NELS(dep16), dep16, NELS(dep15), dep15, },
+ { NELS(dep18), dep18, NELS(dep17), dep17, },
+ { NELS(dep20), dep20, NELS(dep19), dep19, },
+ { NELS(dep22), dep22, NELS(dep21), dep21, },
+ { NELS(dep24), dep24, NELS(dep23), dep23, },
+ { NELS(dep26), dep26, NELS(dep25), dep25, },
+ { NELS(dep28), dep28, NELS(dep27), dep27, },
+ { NELS(dep29), dep29, NELS(dep13), dep13, },
+ { NELS(dep31), dep31, NELS(dep30), dep30, },
+ { NELS(dep32), dep32, 0, NULL, },
+ { NELS(dep33), dep33, NELS(dep13), dep13, },
+ { NELS(dep35), dep35, NELS(dep34), dep34, },
+ { NELS(dep37), dep37, NELS(dep36), dep36, },
+ { NELS(dep39), dep39, NELS(dep38), dep38, },
+ { NELS(dep40), dep40, NELS(dep30), dep30, },
+ { NELS(dep42), dep42, NELS(dep41), dep41, },
+ { NELS(dep44), dep44, NELS(dep43), dep43, },
+ { NELS(dep46), dep46, NELS(dep45), dep45, },
+ { NELS(dep48), dep48, NELS(dep47), dep47, },
+ { NELS(dep50), dep50, NELS(dep49), dep49, },
+ { NELS(dep52), dep52, NELS(dep51), dep51, },
+ { NELS(dep54), dep54, NELS(dep53), dep53, },
+ { NELS(dep55), dep55, 0, NULL, },
+ { NELS(dep57), dep57, NELS(dep56), dep56, },
+ { NELS(dep59), dep59, NELS(dep58), dep58, },
+ { NELS(dep61), dep61, NELS(dep60), dep60, },
+ { NELS(dep63), dep63, NELS(dep62), dep62, },
+ { NELS(dep64), dep64, 0, NULL, },
+ { NELS(dep66), dep66, NELS(dep65), dep65, },
+ { NELS(dep68), dep68, NELS(dep67), dep67, },
+ { NELS(dep70), dep70, NELS(dep69), dep69, },
+ { NELS(dep71), dep71, 0, NULL, },
+ { NELS(dep72), dep72, 0, NULL, },
+ { NELS(dep73), dep73, 0, NULL, },
+ { NELS(dep74), dep74, 0, NULL, },
+ { NELS(dep76), dep76, NELS(dep75), dep75, },
+ { NELS(dep78), dep78, NELS(dep77), dep77, },
+ { NELS(dep80), dep80, NELS(dep79), dep79, },
+ { NELS(dep82), dep82, NELS(dep81), dep81, },
+ { NELS(dep84), dep84, NELS(dep83), dep83, },
+ { NELS(dep86), dep86, NELS(dep85), dep85, },
+ { NELS(dep88), dep88, NELS(dep87), dep87, },
+ { NELS(dep90), dep90, NELS(dep89), dep89, },
+ { NELS(dep92), dep92, NELS(dep91), dep91, },
+ { NELS(dep94), dep94, NELS(dep93), dep93, },
+ { NELS(dep95), dep95, NELS(dep4), dep4, },
+ { NELS(dep96), dep96, 0, NULL, },
+ { NELS(dep97), dep97, NELS(dep51), dep51, },
+ { NELS(dep98), dep98, 0, NULL, },
+ { NELS(dep100), dep100, NELS(dep99), dep99, },
+ { NELS(dep101), dep101, NELS(dep0), dep0, },
+ { NELS(dep103), dep103, NELS(dep102), dep102, },
+ { NELS(dep105), dep105, NELS(dep104), dep104, },
+ { NELS(dep106), dep106, NELS(dep0), dep0, },
+ { NELS(dep107), dep107, NELS(dep0), dep0, },
+ { NELS(dep109), dep109, NELS(dep108), dep108, },
+ { NELS(dep110), dep110, NELS(dep0), dep0, },
+ { NELS(dep111), dep111, NELS(dep4), dep4, },
+ { NELS(dep112), dep112, 0, NULL, },
+ { NELS(dep113), dep113, NELS(dep7), dep7, },
+ { NELS(dep114), dep114, NELS(dep9), dep9, },
+ { NELS(dep115), dep115, NELS(dep11), dep11, },
+ { NELS(dep116), dep116, 0, NULL, },
+ { NELS(dep118), dep118, NELS(dep117), dep117, },
+ { NELS(dep119), dep119, NELS(dep117), dep117, },
+ { NELS(dep121), dep121, NELS(dep120), dep120, },
+ { NELS(dep122), dep122, NELS(dep120), dep120, },
+ { NELS(dep123), dep123, NELS(dep117), dep117, },
+ { NELS(dep125), dep125, NELS(dep124), dep124, },
+ { NELS(dep126), dep126, 0, NULL, },
+ { NELS(dep127), dep127, 0, NULL, },
+ { NELS(dep128), dep128, 0, NULL, },
+ { NELS(dep129), dep129, NELS(dep0), dep0, },
+ { NELS(dep131), dep131, NELS(dep130), dep130, },
+ { NELS(dep133), dep133, NELS(dep132), dep132, },
+ { NELS(dep135), dep135, NELS(dep134), dep134, },
+ { NELS(dep137), dep137, NELS(dep136), dep136, },
+ { NELS(dep139), dep139, NELS(dep138), dep138, },
+ { NELS(dep140), dep140, NELS(dep0), dep0, },
+ { NELS(dep141), dep141, NELS(dep0), dep0, },
+ { NELS(dep143), dep143, NELS(dep142), dep142, },
+ { NELS(dep144), dep144, NELS(dep142), dep142, },
+ { NELS(dep146), dep146, NELS(dep145), dep145, },
+ { NELS(dep148), dep148, NELS(dep147), dep147, },
+ { NELS(dep150), dep150, NELS(dep149), dep149, },
+ { NELS(dep152), dep152, NELS(dep151), dep151, },
+ { NELS(dep154), dep154, NELS(dep153), dep153, },
+ { NELS(dep156), dep156, NELS(dep155), dep155, },
+ { NELS(dep158), dep158, NELS(dep157), dep157, },
+ { NELS(dep160), dep160, NELS(dep159), dep159, },
+ { NELS(dep162), dep162, NELS(dep161), dep161, },
+ { NELS(dep163), dep163, NELS(dep0), dep0, },
+ { NELS(dep164), dep164, NELS(dep0), dep0, },
+ { NELS(dep165), dep165, NELS(dep0), dep0, },
+ { NELS(dep166), dep166, NELS(dep0), dep0, },
+ { NELS(dep167), dep167, NELS(dep0), dep0, },
+ { NELS(dep168), dep168, NELS(dep0), dep0, },
+ { NELS(dep169), dep169, NELS(dep0), dep0, },
+ { NELS(dep170), dep170, NELS(dep0), dep0, },
+ { NELS(dep172), dep172, NELS(dep171), dep171, },
+ { NELS(dep174), dep174, NELS(dep173), dep173, },
+ { NELS(dep176), dep176, NELS(dep175), dep175, },
+ { NELS(dep178), dep178, NELS(dep177), dep177, },
+ { NELS(dep179), dep179, NELS(dep0), dep0, },
+ { NELS(dep180), dep180, NELS(dep0), dep0, },
+ { NELS(dep181), dep181, NELS(dep0), dep0, },
+ { NELS(dep182), dep182, NELS(dep0), dep0, },
+ { NELS(dep183), dep183, 0, NULL, },
+ { NELS(dep184), dep184, 0, NULL, },
+ { NELS(dep185), dep185, NELS(dep171), dep171, },
+ { NELS(dep186), dep186, NELS(dep0), dep0, },
+ { NELS(dep187), dep187, NELS(dep0), dep0, },
+ { NELS(dep189), dep189, NELS(dep188), dep188, },
+ { NELS(dep190), dep190, NELS(dep188), dep188, },
+ { NELS(dep191), dep191, NELS(dep0), dep0, },
+ { NELS(dep189), dep189, NELS(dep192), dep192, },
+ { NELS(dep194), dep194, NELS(dep193), dep193, },
+ { NELS(dep196), dep196, NELS(dep195), dep195, },
+ { NELS(dep197), dep197, NELS(dep195), dep195, },
+ { NELS(dep198), dep198, NELS(dep0), dep0, },
+ { NELS(dep199), dep199, NELS(dep51), dep51, },
+ { NELS(dep200), dep200, NELS(dep51), dep51, },
+ { NELS(dep202), dep202, NELS(dep201), dep201, },
+ { NELS(dep203), dep203, NELS(dep201), dep201, },
+ { NELS(dep202), dep202, NELS(dep204), dep204, },
+ { NELS(dep206), dep206, NELS(dep205), dep205, },
+ { NELS(dep207), dep207, 0, NULL, },
+ { NELS(dep208), dep208, 0, NULL, },
+ { NELS(dep209), dep209, NELS(dep0), dep0, },
+ { NELS(dep210), dep210, NELS(dep0), dep0, },
+ { NELS(dep211), dep211, NELS(dep13), dep13, },
+ { NELS(dep213), dep213, NELS(dep212), dep212, },
+};
+
+static const struct ia64_completer_table
+completer_table[] = {
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 1 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 1 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 85 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, 417, -1, 0, 1, 9 },
+ { 0x0, 0x0, 0, 480, -1, 0, 1, 20 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 140 },
+ { 0x0, 0x0, 0, 579, -1, 0, 1, 20 },
+ { 0x0, 0x0, 0, 1739, -1, 0, 1, 13 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 12 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 63 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 63 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 16 },
+ { 0x1, 0x1, 0, -1, -1, 13, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 0, 1912, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 118 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 41 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 37 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 75 },
+ { 0x0, 0x0, 0, 1779, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, 1955, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, 1783, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 0, 1785, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, 1964, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, 1967, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, 1985, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, 1988, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, 1991, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 32 },
+ { 0x0, 0x0, 0, 1997, -1, 0, 1, 26 },
+ { 0x0, 0x0, 0, 1118, -1, 0, 1, 30 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 37 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 74 },
+ { 0x0, 0x0, 0, 1151, -1, 0, 1, 120 },
+ { 0x0, 0x0, 0, 1160, -1, 0, 1, 120 },
+ { 0x0, 0x0, 0, 1169, -1, 0, 1, 120 },
+ { 0x0, 0x0, 0, 1178, -1, 0, 1, 120 },
+ { 0x0, 0x0, 0, 1187, -1, 0, 1, 120 },
+ { 0x0, 0x0, 0, 1196, -1, 0, 1, 120 },
+ { 0x0, 0x0, 0, 1205, -1, 0, 1, 120 },
+ { 0x0, 0x0, 0, 1214, -1, 0, 1, 120 },
+ { 0x0, 0x0, 0, 1223, -1, 0, 1, 120 },
+ { 0x0, 0x0, 0, 1233, -1, 0, 1, 120 },
+ { 0x0, 0x0, 0, 1243, -1, 0, 1, 120 },
+ { 0x0, 0x0, 0, 1253, -1, 0, 1, 120 },
+ { 0x0, 0x0, 0, 1262, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1268, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1274, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1280, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1286, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1292, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1298, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1304, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1310, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1316, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1322, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1328, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1334, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1340, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1346, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1352, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1358, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1364, -1, 0, 1, 130 },
+ { 0x0, 0x0, 0, 1368, -1, 0, 1, 136 },
+ { 0x0, 0x0, 0, 1372, -1, 0, 1, 138 },
+ { 0x0, 0x0, 0, 1376, -1, 0, 1, 138 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 76 },
+ { 0x0, 0x0, 0, 250, -1, 0, 1, 37 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 1 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 1 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 3 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 59 },
+ { 0x1, 0x1, 0, 933, -1, 20, 1, 59 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 60 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 61 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 62 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 63 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 64 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 83 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 84 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 86 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 87 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 88 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 89 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 92 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 93 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 94 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 95 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 96 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 97 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 98 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 101 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 102 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 103 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 104 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 105 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 106 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 107 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 108 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 141 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 141 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 141 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 63 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 140 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, 2283, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, 2284, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, 1751, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, 1752, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, 2298, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 2299, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 2300, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 2301, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 2302, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 2285, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 2286, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 14 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 81 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 80 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x1, 0x1, 0, -1, -1, 13, 1, 0 },
+ { 0x0, 0x0, 0, 2304, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 81 },
+ { 0x0, 0x0, 0, 1640, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1642, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1644, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1646, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1648, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1650, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1653, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1656, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1659, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1660, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1661, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1662, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1663, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1664, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1665, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1666, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 79 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 116 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 113 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 115 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 114 },
+ { 0x0, 0x0, 0, 1377, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1378, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1379, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, 1380, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 1 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 1 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 2 },
+ { 0x0, 0x0, 0, -1, -1, 0, 1, 2 },
+ { 0x0, 0x0, 1, 217, -1, 0, 1, 15 },
+ { 0x1, 0x1, 2, -1, -1, 27, 1, 15 },
+ { 0x0, 0x0, 3, -1, 1062, 0, 0, -1 },
+ { 0x0, 0x0, 3, -1, 1063, 0, 0, -1 },
+ { 0x1, 0x1, 3, 2174, 1144, 33, 1, 122 },
+ { 0x1, 0x1, 3, 2175, 1153, 33, 1, 122 },
+ { 0x1, 0x1, 3, 2176, 1162, 33, 1, 122 },
+ { 0x1, 0x1, 3, 2177, 1171, 33, 1, 122 },
+ { 0x1, 0x1, 3, 2178, 1180, 33, 1, 122 },
+ { 0x1, 0x1, 3, 2179, 1189, 33, 1, 122 },
+ { 0x1, 0x1, 3, 2180, 1198, 33, 1, 122 },
+ { 0x1, 0x1, 3, 2181, 1207, 33, 1, 122 },
+ { 0x1, 0x1, 3, 2182, 1216, 33, 1, 122 },
+ { 0x1, 0x1, 3, 2183, 1225, 33, 1, 122 },
+ { 0x1, 0x1, 3, 2184, 1235, 33, 1, 122 },
+ { 0x1, 0x1, 3, 2185, 1245, 33, 1, 122 },
+ { 0x1, 0x1, 3, 2186, 1258, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2187, 1264, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2188, 1270, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2189, 1276, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2190, 1282, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2191, 1288, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2192, 1294, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2193, 1300, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2194, 1306, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2195, 1312, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2196, 1318, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2197, 1324, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2198, 1330, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2199, 1336, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2200, 1342, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2201, 1348, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2202, 1354, 33, 1, 132 },
+ { 0x1, 0x1, 3, 2203, 1360, 33, 1, 132 },
+ { 0x1, 0x1, 3, -1, -1, 27, 1, 37 },
+ { 0x0, 0x0, 4, 1753, 1131, 0, 1, 127 },
+ { 0x0, 0x0, 4, 1754, 1133, 0, 1, 127 },
+ { 0x0, 0x0, 4, 1755, 1135, 0, 1, 127 },
+ { 0x0, 0x0, 4, 1756, 1137, 0, 1, 127 },
+ { 0x0, 0x0, 4, 1757, 1139, 0, 1, 128 },
+ { 0x0, 0x0, 4, 1758, 1141, 0, 1, 128 },
+ { 0x1, 0x1, 4, -1, 1148, 33, 1, 125 },
+ { 0x5, 0x5, 4, 375, 1147, 32, 1, 120 },
+ { 0x1, 0x1, 4, -1, 1157, 33, 1, 125 },
+ { 0x5, 0x5, 4, 376, 1156, 32, 1, 120 },
+ { 0x1, 0x1, 4, -1, 1166, 33, 1, 125 },
+ { 0x5, 0x5, 4, 377, 1165, 32, 1, 120 },
+ { 0x1, 0x1, 4, -1, 1175, 33, 1, 125 },
+ { 0x5, 0x5, 4, 378, 1174, 32, 1, 120 },
+ { 0x1, 0x1, 4, -1, 1184, 33, 1, 125 },
+ { 0x5, 0x5, 4, 379, 1183, 32, 1, 120 },
+ { 0x1, 0x1, 4, -1, 1193, 33, 1, 125 },
+ { 0x5, 0x5, 4, 380, 1192, 32, 1, 120 },
+ { 0x1, 0x1, 4, -1, 1202, 33, 1, 125 },
+ { 0x5, 0x5, 4, 381, 1201, 32, 1, 120 },
+ { 0x1, 0x1, 4, -1, 1211, 33, 1, 125 },
+ { 0x5, 0x5, 4, 382, 1210, 32, 1, 120 },
+ { 0x1, 0x1, 4, -1, 1220, 33, 1, 125 },
+ { 0x5, 0x5, 4, 383, 1219, 32, 1, 120 },
+ { 0x1, 0x1, 4, -1, 1230, 33, 1, 125 },
+ { 0x5, 0x5, 4, 849, 1228, 32, 1, 120 },
+ { 0x1, 0x1, 4, -1, 1240, 33, 1, 125 },
+ { 0x5, 0x5, 4, 850, 1238, 32, 1, 120 },
+ { 0x1, 0x1, 4, -1, 1250, 33, 1, 125 },
+ { 0x5, 0x5, 4, 851, 1248, 32, 1, 120 },
+ { 0x1, 0x21, 10, 1675, -1, 33, 1, 6 },
+ { 0x200001, 0x200001, 10, 1676, -1, 12, 1, 6 },
+ { 0x0, 0x0, 10, 1677, -1, 0, 1, 6 },
+ { 0x1, 0x1, 10, 1678, -1, 12, 1, 6 },
+ { 0x1, 0x1, 10, 1679, -1, 33, 1, 6 },
+ { 0x200001, 0x200001, 10, 1680, -1, 12, 1, 6 },
+ { 0x1, 0x21, 10, 1681, -1, 33, 1, 6 },
+ { 0x200001, 0x200001, 10, 1682, -1, 12, 1, 6 },
+ { 0x0, 0x0, 10, -1, 1703, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1704, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1705, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1706, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1707, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1708, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1709, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1710, 0, 0, -1 },
+ { 0x1, 0x21, 10, 1683, -1, 33, 1, 6 },
+ { 0x200001, 0x200001, 10, 1684, -1, 12, 1, 6 },
+ { 0x0, 0x0, 10, 1685, -1, 0, 1, 6 },
+ { 0x1, 0x1, 10, 1686, -1, 12, 1, 6 },
+ { 0x1, 0x1, 10, 1687, -1, 33, 1, 6 },
+ { 0x200001, 0x200001, 10, 1688, -1, 12, 1, 6 },
+ { 0x1, 0x21, 10, 1689, -1, 33, 1, 6 },
+ { 0x200001, 0x200001, 10, 1690, -1, 12, 1, 6 },
+ { 0x0, 0x0, 10, -1, 1719, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1720, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1721, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1722, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1723, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1724, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1725, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1726, 0, 0, -1 },
+ { 0x1, 0x1, 10, 1691, -1, 36, 1, 69 },
+ { 0x1000001, 0x1000001, 10, 1692, -1, 12, 1, 69 },
+ { 0x0, 0x0, 10, -1, 1727, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1729, 0, 0, -1 },
+ { 0x1, 0x1, 10, 1693, -1, 36, 1, 69 },
+ { 0x1000001, 0x1000001, 10, 1694, -1, 12, 1, 69 },
+ { 0x0, 0x0, 10, -1, 1731, 0, 0, -1 },
+ { 0x0, 0x0, 10, -1, 1733, 0, 0, -1 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x0, 0x0, 11, 1695, -1, 0, 1, 6 },
+ { 0x1, 0x1, 11, 1696, -1, 12, 1, 6 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x0, 0x0, 11, 1697, -1, 0, 1, 6 },
+ { 0x1, 0x1, 11, 1698, -1, 12, 1, 6 },
+ { 0x1, 0x1, 11, 1699, -1, 33, 1, 6 },
+ { 0x200001, 0x200001, 11, 1700, -1, 12, 1, 6 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x0, 0x0, 11, 1701, -1, 0, 1, 6 },
+ { 0x1, 0x1, 11, 1702, -1, 12, 1, 6 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x0, 0x0, 11, 1711, -1, 0, 1, 6 },
+ { 0x1, 0x1, 11, 1712, -1, 12, 1, 6 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x0, 0x0, 11, 1713, -1, 0, 1, 6 },
+ { 0x1, 0x1, 11, 1714, -1, 12, 1, 6 },
+ { 0x1, 0x1, 11, 1715, -1, 33, 1, 6 },
+ { 0x200001, 0x200001, 11, 1716, -1, 12, 1, 6 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x2, 0x3, 11, -1, -1, 37, 1, 8 },
+ { 0x0, 0x0, 11, 1717, -1, 0, 1, 6 },
+ { 0x1, 0x1, 11, 1718, -1, 12, 1, 6 },
+ { 0x1, 0x1, 11, -1, -1, 36, 1, 71 },
+ { 0x1, 0x1, 11, -1, -1, 36, 1, 71 },
+ { 0x1, 0x1, 11, 1728, -1, 36, 1, 69 },
+ { 0x1000001, 0x1000001, 11, 1730, -1, 12, 1, 69 },
+ { 0x1, 0x1, 11, -1, -1, 36, 1, 71 },
+ { 0x1, 0x1, 11, -1, -1, 36, 1, 71 },
+ { 0x1, 0x1, 11, 1732, -1, 36, 1, 69 },
+ { 0x1000001, 0x1000001, 11, 1734, -1, 12, 1, 69 },
+ { 0x0, 0x0, 12, -1, -1, 0, 1, 17 },
+ { 0x0, 0x0, 12, -1, -1, 0, 1, 17 },
+ { 0x1, 0x1, 13, 258, 1146, 34, 1, 120 },
+ { 0x1, 0x1, 13, 260, 1155, 34, 1, 120 },
+ { 0x1, 0x1, 13, 262, 1164, 34, 1, 120 },
+ { 0x1, 0x1, 13, 264, 1173, 34, 1, 120 },
+ { 0x1, 0x1, 13, 266, 1182, 34, 1, 120 },
+ { 0x1, 0x1, 13, 268, 1191, 34, 1, 120 },
+ { 0x1, 0x1, 13, 270, 1200, 34, 1, 120 },
+ { 0x1, 0x1, 13, 272, 1209, 34, 1, 120 },
+ { 0x1, 0x1, 13, 274, 1218, 34, 1, 120 },
+ { 0x1, 0x1, 13, 276, 1227, 34, 1, 120 },
+ { 0x1, 0x1, 13, 278, 1237, 34, 1, 120 },
+ { 0x1, 0x1, 13, 280, 1247, 34, 1, 120 },
+ { 0x0, 0x0, 19, -1, 618, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 619, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 620, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 621, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 622, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 623, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 624, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 625, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 626, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 627, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 628, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 629, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 630, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 631, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 632, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 633, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 634, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 635, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 636, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 637, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 638, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 639, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 640, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 641, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 642, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 643, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 644, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 645, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 646, 0, 0, -1 },
+ { 0x0, 0x0, 19, -1, 647, 0, 0, -1 },
+ { 0x0, 0x0, 20, -1, 2252, 0, 0, -1 },
+ { 0x0, 0x0, 20, -1, 2253, 0, 0, -1 },
+ { 0x0, 0x0, 20, -1, 2268, 0, 0, -1 },
+ { 0x0, 0x0, 20, -1, 2269, 0, 0, -1 },
+ { 0x0, 0x0, 20, -1, 2274, 0, 0, -1 },
+ { 0x0, 0x0, 20, -1, 2275, 0, 0, -1 },
+ { 0x0, 0x0, 21, 654, 2264, 0, 0, -1 },
+ { 0x0, 0x0, 21, 655, 2266, 0, 0, -1 },
+ { 0x0, 0x0, 23, -1, 2262, 0, 0, -1 },
+ { 0x0, 0x0, 23, -1, 2263, 0, 0, -1 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, 995, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 10 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 10 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 10 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 10 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 10 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 10 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 10 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 10 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 9 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 10 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 10 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 10 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 10 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 11 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 11 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 11 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 11 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 11 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 11 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 11 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 11 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 11 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 11 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 11 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 11 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, 1016, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 23 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, 1049, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 35, 1, 24 },
+ { 0x1, 0x1, 24, -1, -1, 33, 1, 73 },
+ { 0x1, 0x1, 24, -1, -1, 33, 1, 73 },
+ { 0x1, 0x1, 24, 1064, 1149, 35, 1, 125 },
+ { 0x1, 0x1, 24, 1065, 1158, 35, 1, 125 },
+ { 0x1, 0x1, 24, 1066, 1167, 35, 1, 125 },
+ { 0x1, 0x1, 24, 1067, 1176, 35, 1, 125 },
+ { 0x1, 0x1, 24, 1068, 1185, 35, 1, 125 },
+ { 0x1, 0x1, 24, 1069, 1194, 35, 1, 125 },
+ { 0x1, 0x1, 24, 1070, 1203, 35, 1, 125 },
+ { 0x1, 0x1, 24, 1071, 1212, 35, 1, 125 },
+ { 0x1, 0x1, 24, 1072, 1221, 35, 1, 125 },
+ { 0x1, 0x1, 24, 1073, 1231, 35, 1, 125 },
+ { 0x1, 0x1, 24, 1074, 1241, 35, 1, 125 },
+ { 0x1, 0x1, 24, 1075, 1251, 35, 1, 125 },
+ { 0x1, 0x1, 24, 1076, 1260, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1077, 1266, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1078, 1272, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1079, 1278, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1080, 1284, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1081, 1290, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1082, 1296, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1083, 1302, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1084, 1308, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1085, 1314, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1086, 1320, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1087, 1326, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1088, 1332, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1089, 1338, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1090, 1344, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1091, 1350, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1092, 1356, 35, 1, 134 },
+ { 0x1, 0x1, 24, 1093, 1362, 35, 1, 134 },
+ { 0x0, 0x0, 32, 2246, 2244, 0, 0, -1 },
+ { 0x0, 0x0, 32, 2249, 2247, 0, 0, -1 },
+ { 0x0, 0x0, 32, 2255, 2254, 0, 0, -1 },
+ { 0x0, 0x0, 32, 2257, 2256, 0, 0, -1 },
+ { 0x0, 0x0, 32, 2271, 2270, 0, 0, -1 },
+ { 0x0, 0x0, 32, 2273, 2272, 0, 0, -1 },
+ { 0x0, 0x0, 34, -1, 2265, 0, 0, -1 },
+ { 0x0, 0x0, 34, -1, 2267, 0, 0, -1 },
+ { 0x1, 0x1, 37, -1, 1823, 37, 1, 26 },
+ { 0x1, 0x1, 37, -1, 1858, 37, 1, 26 },
+ { 0x0, 0x0, 37, -1, 1861, 0, 0, -1 },
+ { 0x1, 0x1, 37, -1, -1, 37, 1, 26 },
+ { 0x1, 0x1, 37, -1, 1866, 37, 1, 26 },
+ { 0x0, 0x0, 37, -1, 1869, 0, 0, -1 },
+ { 0x1, 0x1, 37, -1, -1, 37, 1, 26 },
+ { 0x0, 0x0, 37, -1, 1872, 0, 0, -1 },
+ { 0x1, 0x1, 37, -1, -1, 37, 1, 26 },
+ { 0x1, 0x1, 37, -1, 1875, 37, 1, 26 },
+ { 0x1, 0x1, 37, -1, 1878, 37, 1, 26 },
+ { 0x1, 0x1, 37, -1, 1908, 37, 1, 26 },
+ { 0x3, 0x3, 37, -1, -1, 30, 1, 129 },
+ { 0x0, 0x0, 37, 909, -1, 0, 1, 90 },
+ { 0x0, 0x0, 37, -1, -1, 0, 1, 99 },
+ { 0x0, 0x0, 37, 915, -1, 0, 1, 111 },
+ { 0x3, 0x3, 37, -1, -1, 30, 1, 5 },
+ { 0x0, 0x0, 37, 916, -1, 0, 1, 37 },
+ { 0x0, 0x0, 39, -1, 786, 0, 0, -1 },
+ { 0x0, 0x0, 39, -1, 794, 0, 0, -1 },
+ { 0x0, 0x0, 39, 918, 790, 0, 0, -1 },
+ { 0x3, 0x3, 39, -1, 445, 33, 1, 9 },
+ { 0x18000001, 0x18000001, 39, -1, 453, 6, 1, 10 },
+ { 0x3, 0x3, 39, 919, 449, 33, 1, 9 },
+ { 0x0, 0x0, 39, -1, 798, 0, 0, -1 },
+ { 0x3, 0x3, 39, -1, 465, 33, 1, 11 },
+ { 0x0, 0x0, 39, -1, 802, 0, 0, -1 },
+ { 0x3, 0x3, 39, -1, 477, 33, 1, 18 },
+ { 0x0, 0x0, 39, -1, 807, 0, 0, -1 },
+ { 0x0, 0x0, 39, -1, 811, 0, 0, -1 },
+ { 0x3, 0x3, 39, -1, 500, 33, 1, 20 },
+ { 0x3, 0x3, 39, -1, 504, 33, 1, 20 },
+ { 0x0, 0x0, 39, -1, 815, 0, 0, -1 },
+ { 0x0, 0x0, 39, -1, 819, 0, 0, -1 },
+ { 0x3, 0x3, 39, -1, 524, 33, 1, 21 },
+ { 0x18000001, 0x18000001, 39, -1, 528, 6, 1, 21 },
+ { 0x0, 0x0, 39, -1, 823, 0, 0, -1 },
+ { 0x3, 0x3, 39, -1, 540, 33, 1, 22 },
+ { 0x0, 0x0, 39, -1, 827, 0, 0, -1 },
+ { 0x0, 0x0, 39, -1, 831, 0, 0, -1 },
+ { 0x3, 0x3, 39, -1, 560, 33, 1, 23 },
+ { 0x18000001, 0x18000001, 39, -1, 564, 6, 1, 23 },
+ { 0x0, 0x0, 39, -1, 835, 0, 0, -1 },
+ { 0x3, 0x3, 39, -1, 576, 33, 1, 24 },
+ { 0x0, 0x0, 39, -1, 840, 0, 0, -1 },
+ { 0x0, 0x0, 39, -1, 844, 0, 0, -1 },
+ { 0x3, 0x3, 39, -1, 599, 33, 1, 20 },
+ { 0x3, 0x3, 39, -1, 603, 33, 1, 20 },
+ { 0x0, 0x0, 39, -1, 848, 0, 0, -1 },
+ { 0x3, 0x3, 39, -1, 615, 33, 1, 24 },
+ { 0x0, 0x0, 40, 674, 785, 0, 0, -1 },
+ { 0x0, 0x0, 40, 675, 793, 0, 0, -1 },
+ { 0x0, 0x0, 40, 676, 789, 0, 0, -1 },
+ { 0x1, 0x1, 40, 677, 444, 34, 1, 9 },
+ { 0x10000001, 0x10000001, 40, 678, 452, 6, 1, 10 },
+ { 0x1, 0x1, 40, 679, 448, 34, 1, 9 },
+ { 0x0, 0x0, 40, 680, 797, 0, 0, -1 },
+ { 0x1, 0x1, 40, 681, 464, 34, 1, 11 },
+ { 0x0, 0x0, 40, 682, 801, 0, 0, -1 },
+ { 0x1, 0x1, 40, 683, 476, 34, 1, 18 },
+ { 0x0, 0x0, 40, 684, 806, 0, 0, -1 },
+ { 0x0, 0x0, 40, 685, 810, 0, 0, -1 },
+ { 0x1, 0x1, 40, 686, 499, 34, 1, 20 },
+ { 0x1, 0x1, 40, 687, 503, 34, 1, 20 },
+ { 0x0, 0x0, 40, 688, 814, 0, 0, -1 },
+ { 0x0, 0x0, 40, 689, 818, 0, 0, -1 },
+ { 0x1, 0x1, 40, 690, 523, 34, 1, 21 },
+ { 0x10000001, 0x10000001, 40, 691, 527, 6, 1, 21 },
+ { 0x0, 0x0, 40, 692, 822, 0, 0, -1 },
+ { 0x1, 0x1, 40, 693, 539, 34, 1, 22 },
+ { 0x0, 0x0, 40, 694, 826, 0, 0, -1 },
+ { 0x0, 0x0, 40, 695, 830, 0, 0, -1 },
+ { 0x1, 0x1, 40, 696, 559, 34, 1, 23 },
+ { 0x10000001, 0x10000001, 40, 697, 563, 6, 1, 23 },
+ { 0x0, 0x0, 40, 698, 834, 0, 0, -1 },
+ { 0x1, 0x1, 40, 699, 575, 34, 1, 24 },
+ { 0x0, 0x0, 40, 700, 839, 0, 0, -1 },
+ { 0x0, 0x0, 40, 701, 843, 0, 0, -1 },
+ { 0x1, 0x1, 40, 702, 598, 34, 1, 20 },
+ { 0x1, 0x1, 40, 703, 602, 34, 1, 20 },
+ { 0x0, 0x0, 40, 704, 847, 0, 0, -1 },
+ { 0x1, 0x1, 40, 705, 614, 34, 1, 24 },
+ { 0x800001, 0x800001, 40, -1, 923, 4, 1, 19 },
+ { 0x1, 0x1, 40, 1769, 921, 4, 1, 19 },
+ { 0x1, 0x1, 40, 771, 926, 4, 1, 2 },
+ { 0x2, 0x3, 40, -1, 931, 20, 1, 59 },
+ { 0x1, 0x1, 40, 1770, 929, 21, 1, 59 },
+ { 0x0, 0x0, 41, -1, -1, 0, 1, 77 },
+ { 0x0, 0x0, 41, -1, -1, 0, 1, 77 },
+ { 0x0, 0x0, 41, -1, -1, 0, 1, 119 },
+ { 0x1, 0x1, 43, 1094, 281, 38, 1, 4 },
+ { 0x0, 0x0, 43, -1, 324, 0, 0, -1 },
+ { 0x1, 0x1, 43, 1097, 287, 38, 1, 4 },
+ { 0x0, 0x0, 43, -1, 336, 0, 0, -1 },
+ { 0x0, 0x0, 43, -1, 290, 0, 0, -1 },
+ { 0x0, 0x0, 43, -1, 296, 0, 0, -1 },
+ { 0x1, 0x1, 43, 1102, 297, 38, 1, 4 },
+ { 0x0, 0x0, 43, -1, 340, 0, 0, -1 },
+ { 0x1, 0x1, 43, 1105, 303, 38, 1, 4 },
+ { 0x0, 0x0, 43, -1, 352, 0, 0, -1 },
+ { 0x0, 0x0, 43, -1, 306, 0, 0, -1 },
+ { 0x0, 0x0, 43, -1, 312, 0, 0, -1 },
+ { 0x0, 0x0, 43, 978, 1830, 0, 0, -1 },
+ { 0x0, 0x0, 43, 979, 2351, 0, 1, 51 },
+ { 0x0, 0x0, 43, 980, 1882, 0, 0, -1 },
+ { 0x0, 0x0, 43, 981, -1, 0, 1, 46 },
+ { 0x0, 0x0, 43, 893, -1, 0, 1, 0 },
+ { 0x0, 0x0, 43, 894, -1, 0, 1, 0 },
+ { 0x0, 0x0, 43, 895, -1, 0, 1, 0 },
+ { 0x1, 0x1, 44, -1, 1366, 30, 1, 137 },
+ { 0x1, 0x1, 44, 776, 1365, 30, 1, 136 },
+ { 0x1, 0x1, 44, -1, 1370, 30, 1, 139 },
+ { 0x1, 0x1, 44, 777, 1369, 30, 1, 138 },
+ { 0x1, 0x1, 44, -1, 1374, 30, 1, 139 },
+ { 0x1, 0x1, 44, 778, 1373, 30, 1, 138 },
+ { 0x3, 0x3, 45, -1, 927, 3, 1, 2 },
+ { 0x1, 0x1, 46, 1790, -1, 30, 1, 129 },
+ { 0x1, 0x1, 46, 1821, -1, 30, 1, 5 },
+ { 0x0, 0x0, 48, -1, -1, 0, 1, 37 },
+ { 0x0, 0x0, 48, -1, -1, 0, 1, 37 },
+ { 0x1, 0x1, 55, -1, 1367, 31, 1, 137 },
+ { 0x1, 0x1, 55, -1, 1371, 31, 1, 139 },
+ { 0x1, 0x1, 55, -1, 1375, 31, 1, 139 },
+ { 0x0, 0x0, 55, -1, -1, 0, 1, 2 },
+ { 0x2, 0x3, 55, -1, -1, 27, 1, 2 },
+ { 0x1, 0x1, 55, -1, -1, 28, 1, 2 },
+ { 0x0, 0x0, 64, 12, 415, 0, 1, 9 },
+ { 0x0, 0x0, 64, 996, 418, 0, 1, 9 },
+ { 0x1, 0x1, 64, 997, 420, 33, 1, 9 },
+ { 0x1, 0x1, 64, 998, 422, 34, 1, 9 },
+ { 0x3, 0x3, 64, 999, 424, 33, 1, 9 },
+ { 0x0, 0x0, 64, 1000, 426, 0, 1, 9 },
+ { 0x1, 0x1, 64, 1001, 428, 33, 1, 9 },
+ { 0x1, 0x1, 64, 1002, 430, 34, 1, 9 },
+ { 0x3, 0x3, 64, 1003, 432, 33, 1, 9 },
+ { 0x1, 0x1, 64, 1004, 434, 6, 1, 10 },
+ { 0x8000001, 0x8000001, 64, 1005, 436, 6, 1, 10 },
+ { 0x10000001, 0x10000001, 64, 1006, 438, 6, 1, 10 },
+ { 0x18000001, 0x18000001, 64, 1007, 440, 6, 1, 10 },
+ { 0x0, 0x0, 64, 1008, 454, 0, 1, 11 },
+ { 0x1, 0x1, 64, 1009, 456, 33, 1, 11 },
+ { 0x1, 0x1, 64, 1010, 458, 34, 1, 11 },
+ { 0x3, 0x3, 64, 1011, 460, 33, 1, 11 },
+ { 0x0, 0x0, 64, 1012, 466, 0, 1, 18 },
+ { 0x1, 0x1, 64, 1013, 468, 33, 1, 18 },
+ { 0x1, 0x1, 64, 1014, 470, 34, 1, 18 },
+ { 0x3, 0x3, 64, 1015, 472, 33, 1, 18 },
+ { 0x0, 0x0, 64, 13, 478, 0, 1, 20 },
+ { 0x0, 0x0, 64, 1017, 481, 0, 1, 20 },
+ { 0x1, 0x1, 64, 1018, 483, 33, 1, 20 },
+ { 0x1, 0x1, 64, 1019, 485, 34, 1, 20 },
+ { 0x3, 0x3, 64, 1020, 487, 33, 1, 20 },
+ { 0x0, 0x0, 64, 1021, 489, 0, 1, 20 },
+ { 0x1, 0x1, 64, 1022, 491, 33, 1, 20 },
+ { 0x1, 0x1, 64, 1023, 493, 34, 1, 20 },
+ { 0x3, 0x3, 64, 1024, 495, 33, 1, 20 },
+ { 0x0, 0x0, 64, 1025, 505, 0, 1, 21 },
+ { 0x1, 0x1, 64, 1026, 507, 33, 1, 21 },
+ { 0x1, 0x1, 64, 1027, 509, 34, 1, 21 },
+ { 0x3, 0x3, 64, 1028, 511, 33, 1, 21 },
+ { 0x1, 0x1, 64, 1029, 513, 6, 1, 21 },
+ { 0x8000001, 0x8000001, 64, 1030, 515, 6, 1, 21 },
+ { 0x10000001, 0x10000001, 64, 1031, 517, 6, 1, 21 },
+ { 0x18000001, 0x18000001, 64, 1032, 519, 6, 1, 21 },
+ { 0x0, 0x0, 64, 1033, 529, 0, 1, 22 },
+ { 0x1, 0x1, 64, 1034, 531, 33, 1, 22 },
+ { 0x1, 0x1, 64, 1035, 533, 34, 1, 22 },
+ { 0x3, 0x3, 64, 1036, 535, 33, 1, 22 },
+ { 0x0, 0x0, 64, 1037, 541, 0, 1, 23 },
+ { 0x1, 0x1, 64, 1038, 543, 33, 1, 23 },
+ { 0x1, 0x1, 64, 1039, 545, 34, 1, 23 },
+ { 0x3, 0x3, 64, 1040, 547, 33, 1, 23 },
+ { 0x1, 0x1, 64, 1041, 549, 6, 1, 23 },
+ { 0x8000001, 0x8000001, 64, 1042, 551, 6, 1, 23 },
+ { 0x10000001, 0x10000001, 64, 1043, 553, 6, 1, 23 },
+ { 0x18000001, 0x18000001, 64, 1044, 555, 6, 1, 23 },
+ { 0x0, 0x0, 64, 1045, 565, 0, 1, 24 },
+ { 0x1, 0x1, 64, 1046, 567, 33, 1, 24 },
+ { 0x1, 0x1, 64, 1047, 569, 34, 1, 24 },
+ { 0x3, 0x3, 64, 1048, 571, 33, 1, 24 },
+ { 0x0, 0x0, 64, 15, 577, 0, 1, 20 },
+ { 0x0, 0x0, 64, 1050, 580, 0, 1, 20 },
+ { 0x1, 0x1, 64, 1051, 582, 33, 1, 20 },
+ { 0x1, 0x1, 64, 1052, 584, 34, 1, 20 },
+ { 0x3, 0x3, 64, 1053, 586, 33, 1, 20 },
+ { 0x0, 0x0, 64, 1054, 588, 0, 1, 20 },
+ { 0x1, 0x1, 64, 1055, 590, 33, 1, 20 },
+ { 0x1, 0x1, 64, 1056, 592, 34, 1, 20 },
+ { 0x3, 0x3, 64, 1057, 594, 33, 1, 20 },
+ { 0x0, 0x0, 64, 1058, 604, 0, 1, 24 },
+ { 0x1, 0x1, 64, 1059, 606, 33, 1, 24 },
+ { 0x1, 0x1, 64, 1060, 608, 34, 1, 24 },
+ { 0x3, 0x3, 64, 1061, 610, 33, 1, 24 },
+ { 0x3, 0x3, 65, 384, 1229, 33, 1, 124 },
+ { 0x3, 0x3, 65, 385, 1239, 33, 1, 124 },
+ { 0x3, 0x3, 65, 386, 1249, 33, 1, 124 },
+ { 0x0, 0x0, 65, -1, 1254, 0, 1, 130 },
+ { 0x0, 0x0, 65, -1, 1255, 0, 1, 130 },
+ { 0x0, 0x0, 65, -1, 1256, 0, 1, 130 },
+ { 0x0, 0x0, 107, 859, 1854, 0, 0, -1 },
+ { 0x0, 0x0, 107, 860, 2289, 0, 1, 26 },
+ { 0x0, 0x0, 107, 861, 1891, 0, 0, -1 },
+ { 0x0, 0x0, 107, 862, 2293, 0, 1, 26 },
+ { 0x0, 0x0, 109, -1, 1856, 0, 0, -1 },
+ { 0x1, 0x1, 109, -1, 2290, 27, 1, 26 },
+ { 0x0, 0x0, 109, -1, 1893, 0, 0, -1 },
+ { 0x1, 0x1, 109, -1, 2294, 27, 1, 26 },
+ { 0x0, 0x0, 110, 864, -1, 0, 1, 110 },
+ { 0x1, 0x1, 111, -1, -1, 27, 1, 110 },
+ { 0x0, 0x0, 112, 877, 2312, 0, 1, 4 },
+ { 0x0, 0x0, 112, 969, 285, 0, 0, -1 },
+ { 0x0, 0x0, 112, -1, 332, 0, 0, -1 },
+ { 0x0, 0x0, 112, 878, 2320, 0, 1, 4 },
+ { 0x0, 0x0, 112, -1, 294, 0, 0, -1 },
+ { 0x0, 0x0, 112, 879, 2332, 0, 1, 4 },
+ { 0x0, 0x0, 112, 974, 301, 0, 0, -1 },
+ { 0x0, 0x0, 112, -1, 348, 0, 0, -1 },
+ { 0x0, 0x0, 112, 1106, 2339, 0, 1, 4 },
+ { 0x0, 0x0, 112, -1, 310, 0, 0, -1 },
+ { 0x0, 0x0, 112, -1, 1840, 0, 0, -1 },
+ { 0x1, 0x9, 112, -1, 2358, 33, 1, 51 },
+ { 0x1, 0x1, 114, 1095, 2313, 37, 1, 4 },
+ { 0x1, 0x1, 114, 1098, 2321, 37, 1, 4 },
+ { 0x1, 0x1, 114, 1103, 2333, 37, 1, 4 },
+ { 0x0, 0x0, 114, -1, 2344, 0, 1, 4 },
+ { 0x0, 0x0, 115, 896, 2310, 0, 1, 4 },
+ { 0x0, 0x0, 115, 949, 283, 0, 0, -1 },
+ { 0x0, 0x0, 115, 970, 330, 0, 0, -1 },
+ { 0x0, 0x0, 115, -1, 2319, 0, 1, 4 },
+ { 0x0, 0x0, 115, 972, 292, 0, 0, -1 },
+ { 0x0, 0x0, 115, 898, 2330, 0, 1, 4 },
+ { 0x0, 0x0, 115, 954, 299, 0, 0, -1 },
+ { 0x0, 0x0, 115, 975, 346, 0, 0, -1 },
+ { 0x0, 0x0, 115, -1, 2338, 0, 1, 4 },
+ { 0x0, 0x0, 115, 977, 308, 0, 0, -1 },
+ { 0x0, 0x0, 115, 875, 1838, 0, 0, -1 },
+ { 0x0, 0x0, 115, 876, 2357, 0, 1, 51 },
+ { 0x1, 0x1, 115, -1, -1, 27, 1, 0 },
+ { 0x1, 0x1, 115, -1, -1, 27, 1, 0 },
+ { 0x1, 0x1, 115, -1, -1, 27, 1, 0 },
+ { 0x1, 0x1, 116, -1, 2311, 37, 1, 4 },
+ { 0x0, 0x0, 116, -1, 2324, 0, 1, 4 },
+ { 0x1, 0x1, 116, -1, 2331, 37, 1, 4 },
+ { 0x0, 0x0, 116, -1, 2343, 0, 1, 4 },
+ { 0x0, 0x0, 117, 943, -1, 0, 1, 2 },
+ { 0x0, 0x0, 117, 944, -1, 0, 1, 2 },
+ { 0x0, 0x0, 117, 945, -1, 0, 1, 2 },
+ { 0x3, 0x3, 117, 905, -1, 34, 1, 30 },
+ { 0x3, 0x3, 117, 906, -1, 34, 1, 2 },
+ { 0x1, 0x1, 118, -1, -1, 35, 1, 30 },
+ { 0x1, 0x1, 118, -1, -1, 35, 1, 2 },
+ { 0x0, 0x0, 119, -1, -1, 0, 1, 37 },
+ { 0x0, 0x0, 119, -1, -1, 0, 1, 58 },
+ { 0x1, 0x1, 119, -1, -1, 27, 1, 91 },
+ { 0x0, 0x0, 119, -1, -1, 0, 1, 100 },
+ { 0x0, 0x0, 119, -1, -1, 0, 1, 65 },
+ { 0x0, 0x0, 119, -1, -1, 0, 1, 65 },
+ { 0x0, 0x0, 119, -1, -1, 0, 1, 66 },
+ { 0x0, 0x0, 119, -1, -1, 0, 1, 37 },
+ { 0x1, 0x1, 119, -1, -1, 27, 1, 112 },
+ { 0x1, 0x1, 119, -1, -1, 27, 1, 37 },
+ { 0x0, 0x0, 119, -1, -1, 0, 1, 37 },
+ { 0x0, 0x0, 120, -1, 2245, 0, 0, -1 },
+ { 0x0, 0x0, 120, -1, 2248, 0, 0, -1 },
+ { 0x1, 0x1, 121, -1, -1, 35, 1, 19 },
+ { 0x1, 0x1, 121, -1, -1, 35, 1, 19 },
+ { 0x1, 0x1, 121, -1, -1, 35, 1, 19 },
+ { 0x1, 0x1, 121, -1, -1, 35, 1, 19 },
+ { 0x1, 0x1, 121, -1, -1, 35, 1, 2 },
+ { 0x1, 0x1, 121, -1, -1, 35, 1, 2 },
+ { 0x1, 0x1, 121, -1, -1, 35, 1, 2 },
+ { 0x1, 0x1, 121, -1, -1, 35, 1, 2 },
+ { 0x1, 0x1, 121, -1, -1, 23, 1, 59 },
+ { 0x1, 0x1, 121, -1, -1, 23, 1, 59 },
+ { 0x1, 0x1, 121, -1, -1, 23, 1, 59 },
+ { 0x1, 0x1, 121, -1, -1, 23, 1, 59 },
+ { 0x1, 0x1, 121, 741, -1, 23, 1, 59 },
+ { 0x9, 0x9, 121, 742, -1, 20, 1, 59 },
+ { 0x0, 0x0, 125, 1740, -1, 0, 1, 0 },
+ { 0x0, 0x0, 125, 1741, -1, 0, 1, 0 },
+ { 0x1, 0x1, 125, -1, -1, 28, 1, 30 },
+ { 0x1, 0x1, 125, -1, -1, 27, 1, 30 },
+ { 0x1, 0x1, 125, -1, -1, 29, 1, 0 },
+ { 0x1, 0x1, 125, -1, -1, 29, 1, 0 },
+ { 0x1, 0x1, 125, -1, -1, 29, 1, 0 },
+ { 0x1, 0x1, 125, -1, -1, 29, 1, 0 },
+ { 0x0, 0x0, 125, -1, -1, 0, 1, 109 },
+ { 0x1, 0x1, 125, -1, -1, 29, 1, 2 },
+ { 0x1, 0x1, 125, -1, -1, 29, 1, 2 },
+ { 0x1, 0x1, 125, -1, -1, 29, 1, 2 },
+ { 0x0, 0x0, 125, 903, -1, 0, 1, 30 },
+ { 0x0, 0x0, 125, 987, -1, 0, 1, 2 },
+ { 0x0, 0x0, 138, 962, 2308, 0, 1, 4 },
+ { 0x0, 0x0, 138, 866, 284, 0, 0, -1 },
+ { 0x0, 0x0, 138, 883, 329, 0, 0, -1 },
+ { 0x0, 0x0, 138, -1, 2318, 0, 1, 4 },
+ { 0x0, 0x0, 138, 885, 291, 0, 0, -1 },
+ { 0x0, 0x0, 138, 964, 2328, 0, 1, 4 },
+ { 0x0, 0x0, 138, 871, 300, 0, 0, -1 },
+ { 0x0, 0x0, 138, 888, 345, 0, 0, -1 },
+ { 0x0, 0x0, 138, -1, 2337, 0, 1, 4 },
+ { 0x0, 0x0, 138, 890, 307, 0, 0, -1 },
+ { 0x0, 0x0, 138, 2375, 1834, 0, 0, -1 },
+ { 0x1, 0x1, 138, 2376, 2353, 33, 1, 51 },
+ { 0x0, 0x0, 138, 2377, 1884, 0, 0, -1 },
+ { 0x1, 0x1, 138, 2378, -1, 28, 1, 46 },
+ { 0x1, 0x1, 139, -1, 2309, 37, 1, 4 },
+ { 0x0, 0x0, 139, -1, 2323, 0, 1, 4 },
+ { 0x1, 0x1, 139, -1, 2329, 37, 1, 4 },
+ { 0x0, 0x0, 139, -1, 2342, 0, 1, 4 },
+ { 0x1, 0x1, 142, 740, 925, 3, 1, 2 },
+ { 0x0, 0x0, 143, 1742, -1, 0, 1, 30 },
+ { 0x0, 0x0, 144, 746, 2305, 0, 1, 4 },
+ { 0x0, 0x0, 144, -1, 286, 0, 0, -1 },
+ { 0x0, 0x0, 144, 867, 331, 0, 0, -1 },
+ { 0x0, 0x0, 144, 748, 2315, 0, 1, 4 },
+ { 0x0, 0x0, 144, 869, 293, 0, 0, -1 },
+ { 0x0, 0x0, 144, 752, 2325, 0, 1, 4 },
+ { 0x0, 0x0, 144, -1, 302, 0, 0, -1 },
+ { 0x0, 0x0, 144, 872, 347, 0, 0, -1 },
+ { 0x0, 0x0, 144, 754, 2335, 0, 1, 4 },
+ { 0x0, 0x0, 144, 874, 309, 0, 0, -1 },
+ { 0x0, 0x0, 144, 958, 1832, 0, 0, -1 },
+ { 0x1, 0x1, 144, 959, 2352, 36, 1, 51 },
+ { 0x0, 0x0, 144, 960, 1883, 0, 0, -1 },
+ { 0x1, 0x1, 144, 961, -1, 27, 1, 46 },
+ { 0x1, 0x1, 145, -1, 2307, 37, 1, 4 },
+ { 0x1, 0x1, 145, -1, 2317, 37, 1, 4 },
+ { 0x1, 0x1, 145, -1, 2327, 37, 1, 4 },
+ { 0x0, 0x0, 145, -1, 2341, 0, 1, 4 },
+ { 0x0, 0x0, 146, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 146, 904, -1, 0, 1, 2 },
+ { 0x0, 0x0, 147, -1, -1, 0, 1, 37 },
+ { 0x0, 0x0, 147, -1, -1, 0, 1, 58 },
+ { 0x0, 0x0, 147, -1, 2345, 0, 1, 55 },
+ { 0x0, 0x0, 147, -1, -1, 0, 1, 78 },
+ { 0x0, 0x0, 147, -1, -1, 0, 1, 78 },
+ { 0x0, 0x0, 147, -1, -1, 0, 1, 82 },
+ { 0x0, 0x0, 147, -1, -1, 0, 1, 37 },
+ { 0x1, 0x1, 148, -1, 416, 12, 1, 9 },
+ { 0x1, 0x1, 148, -1, 419, 12, 1, 9 },
+ { 0x200001, 0x200001, 148, -1, 421, 12, 1, 9 },
+ { 0x400001, 0x400001, 148, -1, 423, 12, 1, 9 },
+ { 0x600001, 0x600001, 148, -1, 425, 12, 1, 9 },
+ { 0x1, 0x1, 148, -1, 427, 12, 1, 9 },
+ { 0x200001, 0x200001, 148, -1, 429, 12, 1, 9 },
+ { 0x400001, 0x400001, 148, -1, 431, 12, 1, 9 },
+ { 0x600001, 0x600001, 148, -1, 433, 12, 1, 9 },
+ { 0x41, 0x41, 148, -1, 435, 6, 1, 10 },
+ { 0x8000041, 0x8000041, 148, -1, 437, 6, 1, 10 },
+ { 0x10000041, 0x10000041, 148, -1, 439, 6, 1, 10 },
+ { 0x18000041, 0x18000041, 148, -1, 441, 6, 1, 10 },
+ { 0x1, 0x1, 148, -1, 455, 12, 1, 11 },
+ { 0x200001, 0x200001, 148, -1, 457, 12, 1, 11 },
+ { 0x400001, 0x400001, 148, -1, 459, 12, 1, 11 },
+ { 0x600001, 0x600001, 148, -1, 461, 12, 1, 11 },
+ { 0x1, 0x1, 148, -1, 467, 12, 1, 18 },
+ { 0x200001, 0x200001, 148, -1, 469, 12, 1, 18 },
+ { 0x400001, 0x400001, 148, -1, 471, 12, 1, 18 },
+ { 0x600001, 0x600001, 148, -1, 473, 12, 1, 18 },
+ { 0x1, 0x1, 148, -1, 479, 12, 1, 20 },
+ { 0x1, 0x1, 148, -1, 482, 12, 1, 20 },
+ { 0x200001, 0x200001, 148, -1, 484, 12, 1, 20 },
+ { 0x400001, 0x400001, 148, -1, 486, 12, 1, 20 },
+ { 0x600001, 0x600001, 148, -1, 488, 12, 1, 20 },
+ { 0x1, 0x1, 148, -1, 490, 12, 1, 20 },
+ { 0x200001, 0x200001, 148, -1, 492, 12, 1, 20 },
+ { 0x400001, 0x400001, 148, -1, 494, 12, 1, 20 },
+ { 0x600001, 0x600001, 148, -1, 496, 12, 1, 20 },
+ { 0x1, 0x1, 148, -1, 506, 12, 1, 21 },
+ { 0x200001, 0x200001, 148, -1, 508, 12, 1, 21 },
+ { 0x400001, 0x400001, 148, -1, 510, 12, 1, 21 },
+ { 0x600001, 0x600001, 148, -1, 512, 12, 1, 21 },
+ { 0x41, 0x41, 148, -1, 514, 6, 1, 21 },
+ { 0x8000041, 0x8000041, 148, -1, 516, 6, 1, 21 },
+ { 0x10000041, 0x10000041, 148, -1, 518, 6, 1, 21 },
+ { 0x18000041, 0x18000041, 148, -1, 520, 6, 1, 21 },
+ { 0x1, 0x1, 148, -1, 530, 12, 1, 22 },
+ { 0x200001, 0x200001, 148, -1, 532, 12, 1, 22 },
+ { 0x400001, 0x400001, 148, -1, 534, 12, 1, 22 },
+ { 0x600001, 0x600001, 148, -1, 536, 12, 1, 22 },
+ { 0x1, 0x1, 148, -1, 542, 12, 1, 23 },
+ { 0x200001, 0x200001, 148, -1, 544, 12, 1, 23 },
+ { 0x400001, 0x400001, 148, -1, 546, 12, 1, 23 },
+ { 0x600001, 0x600001, 148, -1, 548, 12, 1, 23 },
+ { 0x41, 0x41, 148, -1, 550, 6, 1, 23 },
+ { 0x8000041, 0x8000041, 148, -1, 552, 6, 1, 23 },
+ { 0x10000041, 0x10000041, 148, -1, 554, 6, 1, 23 },
+ { 0x18000041, 0x18000041, 148, -1, 556, 6, 1, 23 },
+ { 0x1, 0x1, 148, -1, 566, 12, 1, 24 },
+ { 0x200001, 0x200001, 148, -1, 568, 12, 1, 24 },
+ { 0x400001, 0x400001, 148, -1, 570, 12, 1, 24 },
+ { 0x600001, 0x600001, 148, -1, 572, 12, 1, 24 },
+ { 0x1, 0x1, 148, -1, 578, 12, 1, 20 },
+ { 0x1, 0x1, 148, -1, 581, 12, 1, 20 },
+ { 0x200001, 0x200001, 148, -1, 583, 12, 1, 20 },
+ { 0x400001, 0x400001, 148, -1, 585, 12, 1, 20 },
+ { 0x600001, 0x600001, 148, -1, 587, 12, 1, 20 },
+ { 0x1, 0x1, 148, -1, 589, 12, 1, 20 },
+ { 0x200001, 0x200001, 148, -1, 591, 12, 1, 20 },
+ { 0x400001, 0x400001, 148, -1, 593, 12, 1, 20 },
+ { 0x600001, 0x600001, 148, -1, 595, 12, 1, 20 },
+ { 0x1, 0x1, 148, -1, 605, 12, 1, 24 },
+ { 0x200001, 0x200001, 148, -1, 607, 12, 1, 24 },
+ { 0x400001, 0x400001, 148, -1, 609, 12, 1, 24 },
+ { 0x600001, 0x600001, 148, -1, 611, 12, 1, 24 },
+ { 0x0, 0x0, 157, 616, -1, 0, 1, 72 },
+ { 0x0, 0x0, 157, 617, -1, 0, 1, 72 },
+ { 0x9, 0x9, 157, -1, 1150, 32, 1, 125 },
+ { 0x9, 0x9, 157, -1, 1159, 32, 1, 125 },
+ { 0x9, 0x9, 157, -1, 1168, 32, 1, 125 },
+ { 0x9, 0x9, 157, -1, 1177, 32, 1, 125 },
+ { 0x9, 0x9, 157, -1, 1186, 32, 1, 125 },
+ { 0x9, 0x9, 157, -1, 1195, 32, 1, 125 },
+ { 0x9, 0x9, 157, -1, 1204, 32, 1, 125 },
+ { 0x9, 0x9, 157, -1, 1213, 32, 1, 125 },
+ { 0x9, 0x9, 157, -1, 1222, 32, 1, 125 },
+ { 0x9, 0x9, 157, -1, 1232, 32, 1, 125 },
+ { 0x9, 0x9, 157, -1, 1242, 32, 1, 125 },
+ { 0x9, 0x9, 157, -1, 1252, 32, 1, 125 },
+ { 0x9, 0x9, 157, -1, 1261, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1267, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1273, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1279, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1285, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1291, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1297, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1303, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1309, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1315, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1321, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1327, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1333, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1339, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1345, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1351, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1357, 32, 1, 134 },
+ { 0x9, 0x9, 157, -1, 1363, 32, 1, 134 },
+ { 0x0, 0x0, 158, 982, 282, 0, 0, -1 },
+ { 0x1, 0x1, 158, -1, 2314, 38, 1, 4 },
+ { 0x0, 0x0, 158, 747, 323, 0, 0, -1 },
+ { 0x0, 0x0, 158, 983, 288, 0, 0, -1 },
+ { 0x1, 0x1, 158, -1, 2322, 38, 1, 4 },
+ { 0x0, 0x0, 158, 749, 335, 0, 0, -1 },
+ { 0x0, 0x0, 158, 750, 289, 0, 0, -1 },
+ { 0x0, 0x0, 158, 751, 295, 0, 0, -1 },
+ { 0x0, 0x0, 158, 984, 298, 0, 0, -1 },
+ { 0x1, 0x1, 158, -1, 2334, 38, 1, 4 },
+ { 0x0, 0x0, 158, 753, 339, 0, 0, -1 },
+ { 0x0, 0x0, 158, -1, 304, 0, 0, -1 },
+ { 0x1, 0x1, 158, -1, 2340, 38, 1, 4 },
+ { 0x0, 0x0, 158, 755, 351, 0, 0, -1 },
+ { 0x0, 0x0, 158, 756, 305, 0, 0, -1 },
+ { 0x0, 0x0, 158, 757, 311, 0, 0, -1 },
+ { 0x0, 0x0, 159, 1123, 1842, 0, 0, -1 },
+ { 0x0, 0x0, 159, 1124, 2363, 0, 1, 51 },
+ { 0x0, 0x0, 159, 1125, 1886, 0, 0, -1 },
+ { 0x1, 0x1, 159, 1126, -1, 29, 1, 46 },
+ { 0x0, 0x0, 160, -1, 1852, 0, 0, -1 },
+ { 0x1, 0x9, 160, -1, 2370, 33, 1, 51 },
+ { 0x0, 0x0, 161, 1114, 1850, 0, 0, -1 },
+ { 0x0, 0x0, 161, 1115, 2369, 0, 1, 51 },
+ { 0x1, 0x1, 162, 1128, -1, 27, 1, 30 },
+ { 0x0, 0x0, 163, 1735, 1846, 0, 0, -1 },
+ { 0x1, 0x1, 163, 1736, 2365, 33, 1, 51 },
+ { 0x0, 0x0, 163, 1737, 1888, 0, 0, -1 },
+ { 0x3, 0x3, 163, 1738, -1, 28, 1, 46 },
+ { 0x0, 0x0, 164, 1119, 1844, 0, 0, -1 },
+ { 0x1, 0x1, 164, 1120, 2364, 36, 1, 51 },
+ { 0x0, 0x0, 164, 1121, 1887, 0, 0, -1 },
+ { 0x5, 0x5, 164, 1122, -1, 27, 1, 46 },
+ { 0x0, 0x0, 165, -1, 2346, 0, 1, 55 },
+ { 0x1, 0x1, 167, -1, -1, 28, 1, 30 },
+ { 0x1, 0x1, 168, 2204, -1, 27, 1, 30 },
+ { 0x1, 0x1, 168, 2205, -1, 27, 1, 30 },
+ { 0x1, 0x1, 169, 1393, -1, 28, 1, 127 },
+ { 0x1, 0x1, 169, 1394, -1, 28, 1, 127 },
+ { 0x1, 0x1, 169, 1395, -1, 28, 1, 127 },
+ { 0x1, 0x1, 169, 1396, -1, 28, 1, 127 },
+ { 0x1, 0x1, 169, 1397, -1, 28, 1, 127 },
+ { 0x1, 0x1, 169, 1398, -1, 28, 1, 127 },
+ { 0x1, 0x1, 169, 1399, -1, 28, 1, 127 },
+ { 0x1, 0x1, 169, 1400, -1, 28, 1, 127 },
+ { 0x1, 0x1, 169, 1401, -1, 28, 1, 128 },
+ { 0x1, 0x1, 169, 1402, -1, 28, 1, 128 },
+ { 0x1, 0x1, 169, 1403, -1, 28, 1, 128 },
+ { 0x1, 0x1, 169, 1404, -1, 28, 1, 128 },
+ { 0x1, 0x1, 169, 1405, -1, 28, 1, 121 },
+ { 0x1, 0x1, 169, 1406, -1, 28, 1, 122 },
+ { 0x1, 0x1, 169, 1407, -1, 28, 1, 123 },
+ { 0x1, 0x1, 169, 1408, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1409, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1410, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1411, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1412, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1413, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1414, -1, 28, 1, 121 },
+ { 0x1, 0x1, 169, 1415, -1, 28, 1, 122 },
+ { 0x1, 0x1, 169, 1416, -1, 28, 1, 123 },
+ { 0x1, 0x1, 169, 1417, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1418, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1419, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1420, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1421, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1422, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1423, -1, 28, 1, 121 },
+ { 0x1, 0x1, 169, 1424, -1, 28, 1, 122 },
+ { 0x1, 0x1, 169, 1425, -1, 28, 1, 123 },
+ { 0x1, 0x1, 169, 1426, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1427, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1428, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1429, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1430, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1431, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1432, -1, 28, 1, 121 },
+ { 0x1, 0x1, 169, 1433, -1, 28, 1, 122 },
+ { 0x1, 0x1, 169, 1434, -1, 28, 1, 123 },
+ { 0x1, 0x1, 169, 1435, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1436, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1437, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1438, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1439, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1440, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1441, -1, 28, 1, 121 },
+ { 0x1, 0x1, 169, 1442, -1, 28, 1, 122 },
+ { 0x1, 0x1, 169, 1443, -1, 28, 1, 123 },
+ { 0x1, 0x1, 169, 1444, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1445, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1446, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1447, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1448, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1449, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1450, -1, 28, 1, 121 },
+ { 0x1, 0x1, 169, 1451, -1, 28, 1, 122 },
+ { 0x1, 0x1, 169, 1452, -1, 28, 1, 123 },
+ { 0x1, 0x1, 169, 1453, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1454, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1455, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1456, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1457, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1458, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1459, -1, 28, 1, 121 },
+ { 0x1, 0x1, 169, 1460, -1, 28, 1, 122 },
+ { 0x1, 0x1, 169, 1461, -1, 28, 1, 123 },
+ { 0x1, 0x1, 169, 1462, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1463, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1464, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1465, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1466, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1467, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1468, -1, 28, 1, 121 },
+ { 0x1, 0x1, 169, 1469, -1, 28, 1, 122 },
+ { 0x1, 0x1, 169, 1470, -1, 28, 1, 123 },
+ { 0x1, 0x1, 169, 1471, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1472, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1473, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1474, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1475, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1476, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1477, -1, 28, 1, 121 },
+ { 0x1, 0x1, 169, 1478, -1, 28, 1, 122 },
+ { 0x1, 0x1, 169, 1479, -1, 28, 1, 123 },
+ { 0x1, 0x1, 169, 1480, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1481, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1482, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1483, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1484, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1485, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1486, -1, 28, 1, 121 },
+ { 0x1, 0x1, 169, 1487, -1, 28, 1, 122 },
+ { 0x1, 0x1, 169, 1488, -1, 28, 1, 123 },
+ { 0x1, 0x1, 169, 1489, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1490, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1491, -1, 28, 1, 124 },
+ { 0x1, 0x1, 169, 1492, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1493, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1494, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1495, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1496, -1, 28, 1, 121 },
+ { 0x1, 0x1, 169, 1497, -1, 28, 1, 122 },
+ { 0x1, 0x1, 169, 1498, -1, 28, 1, 123 },
+ { 0x1, 0x1, 169, 1499, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1500, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1501, -1, 28, 1, 124 },
+ { 0x1, 0x1, 169, 1502, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1503, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1504, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1505, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1506, -1, 28, 1, 121 },
+ { 0x1, 0x1, 169, 1507, -1, 28, 1, 122 },
+ { 0x1, 0x1, 169, 1508, -1, 28, 1, 123 },
+ { 0x1, 0x1, 169, 1509, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1510, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1511, -1, 28, 1, 124 },
+ { 0x1, 0x1, 169, 1512, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1513, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1514, -1, 28, 1, 125 },
+ { 0x1, 0x1, 169, 1515, -1, 28, 1, 120 },
+ { 0x1, 0x1, 169, 1516, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1517, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1518, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1519, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1520, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1521, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1522, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1523, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1524, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1525, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1526, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1527, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1528, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1529, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1530, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1531, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1532, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1533, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1534, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1535, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1536, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1537, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1538, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1539, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1540, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1541, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1542, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1543, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1544, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1545, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1546, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1547, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1548, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1549, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1550, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1551, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1552, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1553, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1554, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1555, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1556, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1557, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1558, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1559, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1560, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1561, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1562, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1563, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1564, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1565, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1566, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1567, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1568, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1569, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1570, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1571, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1572, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1573, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1574, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1575, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1576, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1577, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1578, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1579, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1580, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1581, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1582, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1583, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1584, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1585, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1586, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1587, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1588, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1589, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1590, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1591, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1592, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1593, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1594, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1595, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1596, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1597, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1598, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1599, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1600, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1601, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1602, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1603, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1604, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1605, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1606, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1607, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1608, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1609, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1610, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1611, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1612, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1613, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1614, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1615, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1616, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1617, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1618, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1619, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1620, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1621, -1, 28, 1, 131 },
+ { 0x1, 0x1, 169, 1622, -1, 28, 1, 132 },
+ { 0x1, 0x1, 169, 1623, -1, 28, 1, 133 },
+ { 0x1, 0x1, 169, 1624, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1625, -1, 28, 1, 134 },
+ { 0x1, 0x1, 169, 1626, -1, 28, 1, 130 },
+ { 0x1, 0x1, 169, 1381, -1, 28, 1, 136 },
+ { 0x1, 0x1, 169, 1382, -1, 28, 1, 137 },
+ { 0x1, 0x1, 169, 1383, -1, 28, 1, 137 },
+ { 0x1, 0x1, 169, 1384, -1, 28, 1, 136 },
+ { 0x1, 0x1, 169, 1385, -1, 28, 1, 138 },
+ { 0x1, 0x1, 169, 1386, -1, 28, 1, 139 },
+ { 0x1, 0x1, 169, 1387, -1, 28, 1, 139 },
+ { 0x1, 0x1, 169, 1388, -1, 28, 1, 138 },
+ { 0x1, 0x1, 169, 1389, -1, 28, 1, 138 },
+ { 0x1, 0x1, 169, 1390, -1, 28, 1, 139 },
+ { 0x1, 0x1, 169, 1391, -1, 28, 1, 139 },
+ { 0x1, 0x1, 169, 1392, -1, 28, 1, 138 },
+ { 0x1, 0x1, 169, 1667, -1, 28, 1, 2 },
+ { 0x1, 0x1, 169, 1668, -1, 28, 1, 2 },
+ { 0x1, 0x1, 169, 1669, -1, 28, 1, 2 },
+ { 0x1, 0x1, 169, 1670, -1, 28, 1, 2 },
+ { 0x1, 0x1, 170, 1627, -1, 29, 1, 136 },
+ { 0x1, 0x1, 170, 1628, -1, 29, 1, 137 },
+ { 0x1, 0x1, 170, 1629, -1, 29, 1, 137 },
+ { 0x1, 0x1, 170, 1630, -1, 29, 1, 136 },
+ { 0x1, 0x1, 170, 1631, -1, 29, 1, 138 },
+ { 0x1, 0x1, 170, 1632, -1, 29, 1, 139 },
+ { 0x1, 0x1, 170, 1633, -1, 29, 1, 139 },
+ { 0x1, 0x1, 170, 1634, -1, 29, 1, 138 },
+ { 0x1, 0x1, 170, 1635, -1, 29, 1, 138 },
+ { 0x1, 0x1, 170, 1636, -1, 29, 1, 139 },
+ { 0x1, 0x1, 170, 1637, -1, 29, 1, 139 },
+ { 0x1, 0x1, 170, 1638, -1, 29, 1, 138 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 127 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 127 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 127 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 127 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 127 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 127 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 127 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 127 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 128 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 128 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 128 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 128 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 121 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 122 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 123 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 257, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 1791, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 121 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 122 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 123 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 259, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 1792, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 121 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 122 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 123 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 261, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 1793, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 121 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 122 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 123 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 263, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 1794, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 121 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 122 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 123 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 265, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 1795, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 121 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 122 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 123 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 267, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 1796, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 121 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 122 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 123 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 269, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 1797, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 121 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 122 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 123 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 271, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 1798, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 121 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 122 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 123 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 273, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 1799, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 121 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 122 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 123 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 124 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 275, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 1800, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 121 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 122 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 123 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 124 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 277, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 1801, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 121 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 122 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 123 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 124 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 279, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 125 },
+ { 0x3, 0x3, 171, 1802, -1, 28, 1, 120 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1803, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1804, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1805, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1806, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1807, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1808, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1809, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1810, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1811, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1812, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1813, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1814, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1815, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1816, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1817, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1818, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1819, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 131 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 132 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 133 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 134 },
+ { 0x3, 0x3, 171, 1820, -1, 28, 1, 130 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 136 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 137 },
+ { 0x3, 0x3, 171, 765, -1, 28, 1, 137 },
+ { 0x3, 0x3, 171, 766, -1, 28, 1, 136 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 138 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 139 },
+ { 0x3, 0x3, 171, 767, -1, 28, 1, 139 },
+ { 0x3, 0x3, 171, 768, -1, 28, 1, 138 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 138 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 139 },
+ { 0x3, 0x3, 171, 769, -1, 28, 1, 139 },
+ { 0x3, 0x3, 171, 770, -1, 28, 1, 138 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, 1759, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, 1760, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, 1761, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, 1762, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, 1763, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, 1764, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 126 },
+ { 0x3, 0x3, 171, 1765, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 126 },
+ { 0x3, 0x3, 171, 1766, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 135 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 135 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x3, 0x3, 171, -1, -1, 28, 1, 2 },
+ { 0x0, 0x0, 172, -1, 314, 0, 0, -1 },
+ { 0x0, 0x0, 172, 2402, 2372, 0, 1, 67 },
+ { 0x0, 0x0, 172, -1, 318, 0, 0, -1 },
+ { 0x0, 0x0, 172, 2404, 2374, 0, 1, 67 },
+ { 0x11, 0x31, 173, 2306, 321, 33, 1, 7 },
+ { 0x2200001, 0x2200001, 173, -1, 322, 12, 1, 7 },
+ { 0x1, 0x1, 173, -1, 325, 37, 1, 7 },
+ { 0x2000001, 0x2000001, 173, -1, 326, 12, 1, 7 },
+ { 0x11, 0x11, 173, -1, 327, 33, 1, 7 },
+ { 0x2200001, 0x2200001, 173, -1, 328, 12, 1, 7 },
+ { 0x11, 0x31, 173, 2316, 333, 33, 1, 7 },
+ { 0x2200001, 0x2200001, 173, -1, 334, 12, 1, 7 },
+ { 0x11, 0x31, 173, 2326, 337, 33, 1, 7 },
+ { 0x2200001, 0x2200001, 173, -1, 338, 12, 1, 7 },
+ { 0x1, 0x1, 173, -1, 341, 37, 1, 7 },
+ { 0x2000001, 0x2000001, 173, -1, 342, 12, 1, 7 },
+ { 0x11, 0x11, 173, -1, 343, 33, 1, 7 },
+ { 0x2200001, 0x2200001, 173, -1, 344, 12, 1, 7 },
+ { 0x11, 0x31, 173, 2336, 349, 33, 1, 7 },
+ { 0x2200001, 0x2200001, 173, -1, 350, 12, 1, 7 },
+ { 0x1, 0x1, 173, -1, 353, 33, 1, 70 },
+ { 0x200001, 0x200001, 173, -1, 354, 12, 1, 70 },
+ { 0x1, 0x1, 173, -1, 357, 33, 1, 70 },
+ { 0x200001, 0x200001, 173, -1, 358, 12, 1, 70 },
+ { 0x1, 0x1, 174, -1, -1, 37, 1, 7 },
+ { 0x2000001, 0x2000001, 174, -1, -1, 12, 1, 7 },
+ { 0x1, 0x1, 174, -1, -1, 37, 1, 7 },
+ { 0x2000001, 0x2000001, 174, -1, -1, 12, 1, 7 },
+ { 0x11, 0x11, 174, -1, -1, 33, 1, 7 },
+ { 0x2200001, 0x2200001, 174, -1, -1, 12, 1, 7 },
+ { 0x1, 0x1, 174, -1, -1, 37, 1, 7 },
+ { 0x2000001, 0x2000001, 174, -1, -1, 12, 1, 7 },
+ { 0x0, 0x0, 174, -1, -1, 0, 1, 8 },
+ { 0x1, 0x1, 174, -1, -1, 12, 1, 8 },
+ { 0x0, 0x0, 174, -1, -1, 0, 1, 8 },
+ { 0x1, 0x1, 174, -1, -1, 12, 1, 8 },
+ { 0x1, 0x1, 174, -1, -1, 33, 1, 8 },
+ { 0x200001, 0x200001, 174, -1, -1, 12, 1, 8 },
+ { 0x0, 0x0, 174, -1, -1, 0, 1, 8 },
+ { 0x1, 0x1, 174, -1, -1, 12, 1, 8 },
+ { 0x1, 0x1, 174, -1, -1, 37, 1, 7 },
+ { 0x2000001, 0x2000001, 174, -1, -1, 12, 1, 7 },
+ { 0x1, 0x1, 174, -1, -1, 37, 1, 7 },
+ { 0x2000001, 0x2000001, 174, -1, -1, 12, 1, 7 },
+ { 0x11, 0x11, 174, -1, -1, 33, 1, 7 },
+ { 0x2200001, 0x2200001, 174, -1, -1, 12, 1, 7 },
+ { 0x1, 0x1, 174, -1, -1, 37, 1, 7 },
+ { 0x2000001, 0x2000001, 174, -1, -1, 12, 1, 7 },
+ { 0x0, 0x0, 174, -1, -1, 0, 1, 8 },
+ { 0x1, 0x1, 174, -1, -1, 12, 1, 8 },
+ { 0x0, 0x0, 174, -1, -1, 0, 1, 8 },
+ { 0x1, 0x1, 174, -1, -1, 12, 1, 8 },
+ { 0x1, 0x1, 174, -1, -1, 33, 1, 8 },
+ { 0x200001, 0x200001, 174, -1, -1, 12, 1, 8 },
+ { 0x0, 0x0, 174, -1, -1, 0, 1, 8 },
+ { 0x1, 0x1, 174, -1, -1, 12, 1, 8 },
+ { 0x9, 0x9, 174, -1, -1, 33, 1, 71 },
+ { 0x1, 0x1, 174, 315, -1, 33, 1, 70 },
+ { 0x1200001, 0x1200001, 174, -1, -1, 12, 1, 71 },
+ { 0x200001, 0x200001, 174, 316, -1, 12, 1, 70 },
+ { 0x9, 0x9, 174, -1, -1, 33, 1, 71 },
+ { 0x1, 0x1, 174, 319, -1, 33, 1, 70 },
+ { 0x1200001, 0x1200001, 174, -1, -1, 12, 1, 71 },
+ { 0x200001, 0x200001, 174, 320, -1, 12, 1, 70 },
+ { 0x0, 0x0, 175, -1, 1848, 0, 0, -1 },
+ { 0x9, 0x9, 175, -1, 2366, 33, 1, 46 },
+ { 0x0, 0x0, 175, -1, 1889, 0, 0, -1 },
+ { 0x7, 0x7, 175, -1, -1, 27, 1, 46 },
+ { 0x1, 0x1, 195, -1, -1, 27, 1, 13 },
+ { 0x1, 0x1, 209, -1, -1, 29, 1, 0 },
+ { 0x1, 0x1, 209, -1, -1, 29, 1, 0 },
+ { 0x2, 0x3, 209, 936, -1, 27, 1, 30 },
+ { 0x0, 0x0, 209, 937, -1, 0, 1, 30 },
+ { 0x0, 0x0, 209, 938, -1, 0, 1, 0 },
+ { 0x0, 0x0, 209, 939, -1, 0, 1, 0 },
+ { 0x0, 0x0, 209, 940, -1, 0, 1, 0 },
+ { 0x0, 0x0, 209, 941, -1, 0, 1, 0 },
+ { 0x0, 0x0, 209, 2388, -1, 0, 1, 2 },
+ { 0x0, 0x0, 209, 2389, -1, 0, 1, 2 },
+ { 0x0, 0x0, 209, 2390, 780, 0, 0, -1 },
+ { 0x1, 0x1, 210, -1, -1, 27, 1, 0 },
+ { 0x1, 0x1, 210, -1, -1, 27, 1, 0 },
+ { 0x1, 0x1, 211, -1, 1132, 32, 1, 127 },
+ { 0x1, 0x1, 211, -1, 1134, 32, 1, 127 },
+ { 0x1, 0x1, 211, -1, 1136, 32, 1, 127 },
+ { 0x1, 0x1, 211, -1, 1138, 32, 1, 127 },
+ { 0x1, 0x1, 211, -1, 1140, 32, 1, 128 },
+ { 0x1, 0x1, 211, -1, 1142, 32, 1, 128 },
+ { 0x1, 0x1, 211, -1, 1639, 32, 1, 2 },
+ { 0x1, 0x1, 211, -1, 1641, 32, 1, 2 },
+ { 0x1, 0x1, 211, -1, 1643, 32, 1, 2 },
+ { 0x1, 0x1, 211, -1, 1645, 32, 1, 2 },
+ { 0x1, 0x1, 211, -1, 1647, 32, 1, 2 },
+ { 0x1, 0x1, 211, -1, 1649, 32, 1, 2 },
+ { 0x1, 0x1, 211, 2208, 1651, 32, 1, 2 },
+ { 0x1, 0x1, 211, 2209, 1654, 32, 1, 2 },
+ { 0x0, 0x0, 212, -1, 2250, 0, 0, -1 },
+ { 0x0, 0x0, 212, -1, 2251, 0, 0, -1 },
+ { 0x0, 0x0, 212, -1, 2276, 0, 0, -1 },
+ { 0x5, 0x5, 212, -1, 2279, 20, 1, 59 },
+ { 0x0, 0x0, 216, 1750, 779, 0, 0, -1 },
+ { 0x0, 0x0, 217, -1, 908, 0, 0, -1 },
+ { 0x0, 0x0, 217, -1, 989, 0, 0, -1 },
+ { 0x0, 0x0, 217, -1, -1, 0, 1, 117 },
+ { 0x0, 0x0, 217, -1, -1, 0, 1, 58 },
+ { 0x1, 0x1, 217, 656, 1822, 36, 1, 57 },
+ { 0x1, 0x1, 217, 657, 1857, 36, 1, 57 },
+ { 0x0, 0x0, 217, 658, 1860, 0, 0, -1 },
+ { 0x1, 0x1, 217, 659, -1, 36, 1, 57 },
+ { 0x0, 0x0, 217, 1129, -1, 0, 1, 30 },
+ { 0x1, 0x1, 217, 660, 1865, 36, 1, 57 },
+ { 0x0, 0x0, 217, 661, 1868, 0, 0, -1 },
+ { 0x1, 0x1, 217, 662, -1, 36, 1, 57 },
+ { 0x0, 0x0, 217, 663, 1871, 0, 0, -1 },
+ { 0x1, 0x1, 217, 664, -1, 36, 1, 57 },
+ { 0x1, 0x1, 217, 665, 1874, 36, 1, 57 },
+ { 0x1, 0x1, 217, 666, 1877, 36, 1, 57 },
+ { 0x0, 0x0, 217, 1130, -1, 0, 1, 30 },
+ { 0x1, 0x1, 217, 667, 1907, 36, 1, 57 },
+ { 0x1, 0x1, 217, 668, -1, 31, 1, 129 },
+ { 0x1, 0x1, 217, 220, 1143, 32, 1, 121 },
+ { 0x1, 0x1, 217, 221, 1152, 32, 1, 121 },
+ { 0x1, 0x1, 217, 222, 1161, 32, 1, 121 },
+ { 0x1, 0x1, 217, 223, 1170, 32, 1, 121 },
+ { 0x1, 0x1, 217, 224, 1179, 32, 1, 121 },
+ { 0x1, 0x1, 217, 225, 1188, 32, 1, 121 },
+ { 0x1, 0x1, 217, 226, 1197, 32, 1, 121 },
+ { 0x1, 0x1, 217, 227, 1206, 32, 1, 121 },
+ { 0x1, 0x1, 217, 228, 1215, 32, 1, 121 },
+ { 0x1, 0x1, 217, 229, 1224, 32, 1, 121 },
+ { 0x1, 0x1, 217, 230, 1234, 32, 1, 121 },
+ { 0x1, 0x1, 217, 231, 1244, 32, 1, 121 },
+ { 0x1, 0x1, 217, 232, 1257, 32, 1, 131 },
+ { 0x1, 0x1, 217, 233, 1263, 32, 1, 131 },
+ { 0x1, 0x1, 217, 234, 1269, 32, 1, 131 },
+ { 0x1, 0x1, 217, 235, 1275, 32, 1, 131 },
+ { 0x1, 0x1, 217, 236, 1281, 32, 1, 131 },
+ { 0x1, 0x1, 217, 237, 1287, 32, 1, 131 },
+ { 0x1, 0x1, 217, 238, 1293, 32, 1, 131 },
+ { 0x1, 0x1, 217, 239, 1299, 32, 1, 131 },
+ { 0x1, 0x1, 217, 240, 1305, 32, 1, 131 },
+ { 0x1, 0x1, 217, 241, 1311, 32, 1, 131 },
+ { 0x1, 0x1, 217, 242, 1317, 32, 1, 131 },
+ { 0x1, 0x1, 217, 243, 1323, 32, 1, 131 },
+ { 0x1, 0x1, 217, 244, 1329, 32, 1, 131 },
+ { 0x1, 0x1, 217, 245, 1335, 32, 1, 131 },
+ { 0x1, 0x1, 217, 246, 1341, 32, 1, 131 },
+ { 0x1, 0x1, 217, 247, 1347, 32, 1, 131 },
+ { 0x1, 0x1, 217, 248, 1353, 32, 1, 131 },
+ { 0x1, 0x1, 217, 249, 1359, 32, 1, 131 },
+ { 0x1, 0x1, 217, 672, -1, 31, 1, 5 },
+ { 0x0, 0x0, 218, 1910, -1, 0, 1, 57 },
+ { 0x0, 0x0, 218, 1911, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 23, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1913, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1914, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1915, -1, 0, 1, 41 },
+ { 0x0, 0x0, 218, 1916, -1, 0, 1, 36 },
+ { 0x1, 0x1, 218, 1917, -1, 12, 1, 45 },
+ { 0x0, 0x0, 218, 1918, -1, 0, 1, 50 },
+ { 0x1000001, 0x1000001, 218, 1919, -1, 12, 1, 45 },
+ { 0x1, 0x1, 218, 1920, -1, 36, 1, 50 },
+ { 0x200001, 0x200001, 218, 1921, -1, 12, 1, 45 },
+ { 0x1, 0x1, 218, 1922, -1, 33, 1, 50 },
+ { 0x1200001, 0x1200001, 218, 1923, -1, 12, 1, 45 },
+ { 0x9, 0x9, 218, 1924, -1, 33, 1, 45 },
+ { 0x1, 0x1, 218, 1925, -1, 12, 1, 45 },
+ { 0x0, 0x0, 218, 1926, -1, 0, 1, 50 },
+ { 0x200001, 0x1200001, 218, 1927, -1, 12, 1, 45 },
+ { 0x1, 0x9, 218, 1928, -1, 33, 1, 50 },
+ { 0x1, 0x1, 218, 1929, -1, 12, 1, 45 },
+ { 0x0, 0x0, 218, 1930, -1, 0, 1, 50 },
+ { 0x1000001, 0x1000001, 218, 1931, -1, 12, 1, 45 },
+ { 0x1, 0x1, 218, 1932, -1, 36, 1, 50 },
+ { 0x200001, 0x200001, 218, 1933, -1, 12, 1, 45 },
+ { 0x1, 0x1, 218, 1934, -1, 33, 1, 50 },
+ { 0x1200001, 0x1200001, 218, 1935, -1, 12, 1, 45 },
+ { 0x9, 0x9, 218, 1936, -1, 33, 1, 45 },
+ { 0x1, 0x1, 218, 1937, -1, 12, 1, 45 },
+ { 0x0, 0x0, 218, 1938, -1, 0, 1, 50 },
+ { 0x200001, 0x1200001, 218, 1939, -1, 12, 1, 45 },
+ { 0x1, 0x9, 218, 1940, -1, 33, 1, 50 },
+ { 0x1, 0x1, 218, 1941, -1, 28, 1, 25 },
+ { 0x0, 0x0, 218, 1942, -1, 0, 1, 25 },
+ { 0x3, 0x3, 218, 1943, -1, 27, 1, 25 },
+ { 0x1, 0x1, 218, 1944, -1, 27, 1, 25 },
+ { 0x0, 0x0, 218, 1945, -1, 0, 1, 57 },
+ { 0x0, 0x0, 218, 1946, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1947, -1, 0, 1, 25 },
+ { 0x1, 0x1, 218, 1948, -1, 36, 1, 57 },
+ { 0x1, 0x1, 218, 1949, -1, 37, 1, 25 },
+ { 0x0, 0x0, 218, 1950, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1951, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1952, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1953, -1, 0, 1, 57 },
+ { 0x0, 0x0, 218, 1954, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 35, -1, 0, 1, 25 },
+ { 0x1, 0x1, 218, 1956, -1, 36, 1, 57 },
+ { 0x1, 0x1, 218, 1957, -1, 37, 1, 25 },
+ { 0x0, 0x0, 218, 1958, -1, 0, 1, 25 },
+ { 0x1, 0x1, 218, 1959, -1, 36, 1, 57 },
+ { 0x1, 0x1, 218, 1960, -1, 37, 1, 25 },
+ { 0x0, 0x0, 218, 1961, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1962, -1, 0, 1, 57 },
+ { 0x0, 0x0, 218, 1963, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 40, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1965, -1, 0, 1, 57 },
+ { 0x0, 0x0, 218, 1966, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 41, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1968, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1969, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1970, -1, 0, 1, 45 },
+ { 0x1, 0x1, 218, 1971, -1, 27, 1, 45 },
+ { 0x1, 0x1, 218, 1972, -1, 28, 1, 45 },
+ { 0x3, 0x3, 218, 1973, -1, 27, 1, 45 },
+ { 0x1, 0x1, 218, 1974, -1, 29, 1, 45 },
+ { 0x5, 0x5, 218, 1975, -1, 27, 1, 45 },
+ { 0x3, 0x3, 218, 1976, -1, 28, 1, 45 },
+ { 0x7, 0x7, 218, 1977, -1, 27, 1, 45 },
+ { 0x1, 0x1, 218, 1978, -1, 28, 1, 25 },
+ { 0x0, 0x0, 218, 1979, -1, 0, 1, 25 },
+ { 0x3, 0x3, 218, 1980, -1, 27, 1, 25 },
+ { 0x1, 0x1, 218, 1981, -1, 27, 1, 25 },
+ { 0x0, 0x0, 218, 1982, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1983, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1984, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 50, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1986, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1987, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 55, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1989, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1990, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 58, -1, 0, 1, 2 },
+ { 0x0, 0x0, 218, 1992, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1993, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 1994, -1, 0, 1, 31 },
+ { 0x0, 0x0, 218, 1995, -1, 0, 1, 57 },
+ { 0x0, 0x0, 218, 1996, -1, 0, 1, 25 },
+ { 0x0, 0x0, 218, 63, -1, 0, 1, 25 },
+ { 0x1, 0x1, 219, 1998, -1, 34, 1, 57 },
+ { 0x1, 0x1, 219, 1999, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2000, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2001, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2002, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2003, -1, 34, 1, 42 },
+ { 0x1, 0x1, 219, 2004, -1, 34, 1, 38 },
+ { 0x400001, 0x400001, 219, 2005, -1, 12, 1, 47 },
+ { 0x1, 0x1, 219, 2006, -1, 34, 1, 52 },
+ { 0x1400001, 0x1400001, 219, 2007, -1, 12, 1, 47 },
+ { 0x5, 0x5, 219, 2008, -1, 34, 1, 52 },
+ { 0x600001, 0x600001, 219, 2009, -1, 12, 1, 47 },
+ { 0x3, 0x3, 219, 2010, -1, 33, 1, 52 },
+ { 0x1600001, 0x1600001, 219, 2011, -1, 12, 1, 47 },
+ { 0xb, 0xb, 219, 2012, -1, 33, 1, 47 },
+ { 0x400001, 0x400001, 219, 2013, -1, 12, 1, 47 },
+ { 0x1, 0x1, 219, 2014, -1, 34, 1, 52 },
+ { 0x600001, 0x1600001, 219, 2015, -1, 12, 1, 47 },
+ { 0x3, 0xb, 219, 2016, -1, 33, 1, 52 },
+ { 0x400001, 0x400001, 219, 2017, -1, 12, 1, 47 },
+ { 0x1, 0x1, 219, 2018, -1, 34, 1, 52 },
+ { 0x1400001, 0x1400001, 219, 2019, -1, 12, 1, 47 },
+ { 0x5, 0x5, 219, 2020, -1, 34, 1, 52 },
+ { 0x600001, 0x600001, 219, 2021, -1, 12, 1, 47 },
+ { 0x3, 0x3, 219, 2022, -1, 33, 1, 52 },
+ { 0x1600001, 0x1600001, 219, 2023, -1, 12, 1, 47 },
+ { 0xb, 0xb, 219, 2024, -1, 33, 1, 47 },
+ { 0x400001, 0x400001, 219, 2025, -1, 12, 1, 47 },
+ { 0x1, 0x1, 219, 2026, -1, 34, 1, 52 },
+ { 0x600001, 0x1600001, 219, 2027, -1, 12, 1, 47 },
+ { 0x3, 0xb, 219, 2028, -1, 33, 1, 52 },
+ { 0x41, 0x41, 219, 2029, -1, 28, 1, 27 },
+ { 0x1, 0x1, 219, 2030, -1, 34, 1, 27 },
+ { 0x83, 0x83, 219, 2031, -1, 27, 1, 27 },
+ { 0x81, 0x81, 219, 2032, -1, 27, 1, 27 },
+ { 0x1, 0x1, 219, 2033, -1, 34, 1, 57 },
+ { 0x1, 0x1, 219, 2034, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2035, -1, 34, 1, 27 },
+ { 0x5, 0x5, 219, 2036, -1, 34, 1, 57 },
+ { 0x9, 0x9, 219, 2037, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2038, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2039, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2040, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2041, -1, 34, 1, 57 },
+ { 0x1, 0x1, 219, 2042, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2043, -1, 34, 1, 27 },
+ { 0x5, 0x5, 219, 2044, -1, 34, 1, 57 },
+ { 0x9, 0x9, 219, 2045, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2046, -1, 34, 1, 27 },
+ { 0x5, 0x5, 219, 2047, -1, 34, 1, 57 },
+ { 0x9, 0x9, 219, 2048, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2049, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2050, -1, 34, 1, 57 },
+ { 0x1, 0x1, 219, 2051, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2052, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2053, -1, 34, 1, 57 },
+ { 0x1, 0x1, 219, 2054, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2055, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2056, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2057, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2058, -1, 34, 1, 47 },
+ { 0x81, 0x81, 219, 2059, -1, 27, 1, 47 },
+ { 0x41, 0x41, 219, 2060, -1, 28, 1, 47 },
+ { 0x83, 0x83, 219, 2061, -1, 27, 1, 47 },
+ { 0x21, 0x21, 219, 2062, -1, 29, 1, 47 },
+ { 0x85, 0x85, 219, 2063, -1, 27, 1, 47 },
+ { 0x43, 0x43, 219, 2064, -1, 28, 1, 47 },
+ { 0x87, 0x87, 219, 2065, -1, 27, 1, 47 },
+ { 0x41, 0x41, 219, 2066, -1, 28, 1, 27 },
+ { 0x1, 0x1, 219, 2067, -1, 34, 1, 27 },
+ { 0x83, 0x83, 219, 2068, -1, 27, 1, 27 },
+ { 0x81, 0x81, 219, 2069, -1, 27, 1, 27 },
+ { 0x1, 0x1, 219, 2070, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2071, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2072, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2073, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2074, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2075, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2076, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2077, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2078, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2079, -1, 34, 1, 2 },
+ { 0x1, 0x1, 219, 2080, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2081, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2082, -1, 34, 1, 33 },
+ { 0x1, 0x1, 219, 2083, -1, 34, 1, 57 },
+ { 0x1, 0x1, 219, 2084, -1, 34, 1, 27 },
+ { 0x1, 0x1, 219, 2085, -1, 34, 1, 27 },
+ { 0x1, 0x1, 220, 2086, -1, 35, 1, 57 },
+ { 0x1, 0x1, 220, 2087, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2088, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2089, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2090, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2091, -1, 35, 1, 43 },
+ { 0x1, 0x1, 220, 2092, -1, 35, 1, 39 },
+ { 0x800001, 0x800001, 220, 2093, -1, 12, 1, 48 },
+ { 0x1, 0x1, 220, 2094, -1, 35, 1, 53 },
+ { 0x1800001, 0x1800001, 220, 2095, -1, 12, 1, 48 },
+ { 0x3, 0x3, 220, 2096, -1, 35, 1, 53 },
+ { 0xa00001, 0xa00001, 220, 2097, -1, 12, 1, 48 },
+ { 0x5, 0x5, 220, 2098, -1, 33, 1, 53 },
+ { 0x1a00001, 0x1a00001, 220, 2099, -1, 12, 1, 48 },
+ { 0xd, 0xd, 220, 2100, -1, 33, 1, 48 },
+ { 0x800001, 0x800001, 220, 2101, -1, 12, 1, 48 },
+ { 0x1, 0x1, 220, 2102, -1, 35, 1, 53 },
+ { 0xa00001, 0x1a00001, 220, 2103, -1, 12, 1, 48 },
+ { 0x5, 0xd, 220, 2104, -1, 33, 1, 53 },
+ { 0x800001, 0x800001, 220, 2105, -1, 12, 1, 48 },
+ { 0x1, 0x1, 220, 2106, -1, 35, 1, 53 },
+ { 0x1800001, 0x1800001, 220, 2107, -1, 12, 1, 48 },
+ { 0x3, 0x3, 220, 2108, -1, 35, 1, 53 },
+ { 0xa00001, 0xa00001, 220, 2109, -1, 12, 1, 48 },
+ { 0x5, 0x5, 220, 2110, -1, 33, 1, 53 },
+ { 0x1a00001, 0x1a00001, 220, 2111, -1, 12, 1, 48 },
+ { 0xd, 0xd, 220, 2112, -1, 33, 1, 48 },
+ { 0x800001, 0x800001, 220, 2113, -1, 12, 1, 48 },
+ { 0x1, 0x1, 220, 2114, -1, 35, 1, 53 },
+ { 0xa00001, 0x1a00001, 220, 2115, -1, 12, 1, 48 },
+ { 0x5, 0xd, 220, 2116, -1, 33, 1, 53 },
+ { 0x81, 0x81, 220, 2117, -1, 28, 1, 28 },
+ { 0x1, 0x1, 220, 2118, -1, 35, 1, 28 },
+ { 0x103, 0x103, 220, 2119, -1, 27, 1, 28 },
+ { 0x101, 0x101, 220, 2120, -1, 27, 1, 28 },
+ { 0x1, 0x1, 220, 2121, -1, 35, 1, 57 },
+ { 0x1, 0x1, 220, 2122, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2123, -1, 35, 1, 28 },
+ { 0x3, 0x3, 220, 2124, -1, 35, 1, 57 },
+ { 0x5, 0x5, 220, 2125, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2126, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2127, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2128, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2129, -1, 35, 1, 57 },
+ { 0x1, 0x1, 220, 2130, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2131, -1, 35, 1, 28 },
+ { 0x3, 0x3, 220, 2132, -1, 35, 1, 57 },
+ { 0x5, 0x5, 220, 2133, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2134, -1, 35, 1, 28 },
+ { 0x3, 0x3, 220, 2135, -1, 35, 1, 57 },
+ { 0x5, 0x5, 220, 2136, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2137, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2138, -1, 35, 1, 57 },
+ { 0x1, 0x1, 220, 2139, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2140, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2141, -1, 35, 1, 57 },
+ { 0x1, 0x1, 220, 2142, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2143, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2144, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2145, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2146, -1, 35, 1, 48 },
+ { 0x101, 0x101, 220, 2147, -1, 27, 1, 48 },
+ { 0x81, 0x81, 220, 2148, -1, 28, 1, 48 },
+ { 0x103, 0x103, 220, 2149, -1, 27, 1, 48 },
+ { 0x41, 0x41, 220, 2150, -1, 29, 1, 48 },
+ { 0x105, 0x105, 220, 2151, -1, 27, 1, 48 },
+ { 0x83, 0x83, 220, 2152, -1, 28, 1, 48 },
+ { 0x107, 0x107, 220, 2153, -1, 27, 1, 48 },
+ { 0x81, 0x81, 220, 2154, -1, 28, 1, 28 },
+ { 0x1, 0x1, 220, 2155, -1, 35, 1, 28 },
+ { 0x103, 0x103, 220, 2156, -1, 27, 1, 28 },
+ { 0x101, 0x101, 220, 2157, -1, 27, 1, 28 },
+ { 0x1, 0x1, 220, 2158, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2159, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2160, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2161, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2162, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2163, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2164, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2165, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2166, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2167, -1, 35, 1, 2 },
+ { 0x1, 0x1, 220, 2168, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2169, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2170, -1, 35, 1, 34 },
+ { 0x1, 0x1, 220, 2171, -1, 35, 1, 57 },
+ { 0x1, 0x1, 220, 2172, -1, 35, 1, 28 },
+ { 0x1, 0x1, 220, 2173, -1, 35, 1, 28 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 57 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, 1776, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 44 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 40 },
+ { 0xc00001, 0xc00001, 221, -1, -1, 12, 1, 49 },
+ { 0x3, 0x3, 221, 2347, -1, 34, 1, 54 },
+ { 0x1c00001, 0x1c00001, 221, -1, -1, 12, 1, 49 },
+ { 0x7, 0x7, 221, 2348, -1, 34, 1, 54 },
+ { 0xe00001, 0xe00001, 221, -1, -1, 12, 1, 49 },
+ { 0x7, 0x7, 221, 2349, -1, 33, 1, 54 },
+ { 0x1e00001, 0x1e00001, 221, -1, -1, 12, 1, 49 },
+ { 0xf, 0xf, 221, 2350, -1, 33, 1, 49 },
+ { 0xc00001, 0xc00001, 221, -1, -1, 12, 1, 49 },
+ { 0x3, 0x3, 221, 2355, -1, 34, 1, 54 },
+ { 0xe00001, 0x1e00001, 221, -1, -1, 12, 1, 49 },
+ { 0x7, 0xf, 221, 2356, -1, 33, 1, 54 },
+ { 0xc00001, 0xc00001, 221, -1, -1, 12, 1, 49 },
+ { 0x3, 0x3, 221, 2359, -1, 34, 1, 54 },
+ { 0x1c00001, 0x1c00001, 221, -1, -1, 12, 1, 49 },
+ { 0x7, 0x7, 221, 2360, -1, 34, 1, 54 },
+ { 0xe00001, 0xe00001, 221, -1, -1, 12, 1, 49 },
+ { 0x7, 0x7, 221, 2361, -1, 33, 1, 54 },
+ { 0x1e00001, 0x1e00001, 221, -1, -1, 12, 1, 49 },
+ { 0xf, 0xf, 221, 2362, -1, 33, 1, 49 },
+ { 0xc00001, 0xc00001, 221, -1, -1, 12, 1, 49 },
+ { 0x3, 0x3, 221, 2367, -1, 34, 1, 54 },
+ { 0xe00001, 0x1e00001, 221, -1, -1, 12, 1, 49 },
+ { 0x7, 0xf, 221, 2368, -1, 33, 1, 54 },
+ { 0xc1, 0xc1, 221, -1, -1, 28, 1, 29 },
+ { 0x3, 0x3, 221, 2287, -1, 34, 1, 29 },
+ { 0x183, 0x183, 221, -1, -1, 27, 1, 29 },
+ { 0x181, 0x181, 221, 2288, -1, 27, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 57 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, 1777, -1, 34, 1, 29 },
+ { 0x7, 0x7, 221, -1, -1, 34, 1, 57 },
+ { 0xb, 0xb, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, 1778, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 57 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, 1781, -1, 34, 1, 29 },
+ { 0x7, 0x7, 221, -1, -1, 34, 1, 57 },
+ { 0xb, 0xb, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, 1782, -1, 34, 1, 29 },
+ { 0x7, 0x7, 221, -1, -1, 34, 1, 57 },
+ { 0xb, 0xb, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, 1784, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 57 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, 1786, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 57 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, 1787, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 49 },
+ { 0x181, 0x181, 221, -1, -1, 27, 1, 49 },
+ { 0xc1, 0xc1, 221, -1, -1, 28, 1, 49 },
+ { 0x183, 0x183, 221, -1, -1, 27, 1, 49 },
+ { 0x61, 0x61, 221, -1, -1, 29, 1, 49 },
+ { 0x185, 0x185, 221, -1, -1, 27, 1, 49 },
+ { 0xc3, 0xc3, 221, -1, -1, 28, 1, 49 },
+ { 0x187, 0x187, 221, -1, -1, 27, 1, 49 },
+ { 0xc1, 0xc1, 221, -1, -1, 28, 1, 29 },
+ { 0x3, 0x3, 221, 2291, -1, 34, 1, 29 },
+ { 0x183, 0x183, 221, -1, -1, 27, 1, 29 },
+ { 0x181, 0x181, 221, 2292, -1, 27, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 2 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 35 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 57 },
+ { 0x3, 0x3, 221, -1, -1, 34, 1, 29 },
+ { 0x3, 0x3, 221, 1789, -1, 34, 1, 29 },
+ { 0x3, 0x3, 222, 363, 1145, 32, 1, 123 },
+ { 0x3, 0x3, 222, 364, 1154, 32, 1, 123 },
+ { 0x3, 0x3, 222, 365, 1163, 32, 1, 123 },
+ { 0x3, 0x3, 222, 366, 1172, 32, 1, 123 },
+ { 0x3, 0x3, 222, 367, 1181, 32, 1, 123 },
+ { 0x3, 0x3, 222, 368, 1190, 32, 1, 123 },
+ { 0x3, 0x3, 222, 369, 1199, 32, 1, 123 },
+ { 0x3, 0x3, 222, 370, 1208, 32, 1, 123 },
+ { 0x3, 0x3, 222, 371, 1217, 32, 1, 123 },
+ { 0x3, 0x3, 222, 372, 1226, 32, 1, 123 },
+ { 0x3, 0x3, 222, 373, 1236, 32, 1, 123 },
+ { 0x3, 0x3, 222, 374, 1246, 32, 1, 123 },
+ { 0x3, 0x3, 222, 387, 1259, 32, 1, 133 },
+ { 0x3, 0x3, 222, 388, 1265, 32, 1, 133 },
+ { 0x3, 0x3, 222, 389, 1271, 32, 1, 133 },
+ { 0x3, 0x3, 222, 390, 1277, 32, 1, 133 },
+ { 0x3, 0x3, 222, 391, 1283, 32, 1, 133 },
+ { 0x3, 0x3, 222, 392, 1289, 32, 1, 133 },
+ { 0x3, 0x3, 222, 393, 1295, 32, 1, 133 },
+ { 0x3, 0x3, 222, 394, 1301, 32, 1, 133 },
+ { 0x3, 0x3, 222, 395, 1307, 32, 1, 133 },
+ { 0x3, 0x3, 222, 396, 1313, 32, 1, 133 },
+ { 0x3, 0x3, 222, 397, 1319, 32, 1, 133 },
+ { 0x3, 0x3, 222, 398, 1325, 32, 1, 133 },
+ { 0x3, 0x3, 222, 399, 1331, 32, 1, 133 },
+ { 0x3, 0x3, 222, 400, 1337, 32, 1, 133 },
+ { 0x3, 0x3, 222, 401, 1343, 32, 1, 133 },
+ { 0x3, 0x3, 222, 402, 1349, 32, 1, 133 },
+ { 0x3, 0x3, 222, 403, 1355, 32, 1, 133 },
+ { 0x3, 0x3, 222, 404, 1361, 32, 1, 133 },
+ { 0x1, 0x1, 223, -1, -1, 28, 1, 30 },
+ { 0x1, 0x1, 223, -1, -1, 28, 1, 30 },
+ { 0x0, 0x0, 230, 772, -1, 0, 1, 129 },
+ { 0x0, 0x0, 230, 773, -1, 0, 1, 5 },
+ { 0x1, 0x1, 231, -1, 1652, 33, 1, 126 },
+ { 0x1, 0x1, 231, -1, 1655, 33, 1, 126 },
+ { 0x0, 0x0, 231, -1, 1657, 0, 1, 135 },
+ { 0x0, 0x0, 231, -1, 1658, 0, 1, 135 },
+ { 0x0, 0x0, 232, 706, 784, 0, 0, -1 },
+ { 0x0, 0x0, 232, 707, 792, 0, 0, -1 },
+ { 0x0, 0x0, 232, 708, 788, 0, 0, -1 },
+ { 0x1, 0x1, 232, 709, 443, 33, 1, 9 },
+ { 0x8000001, 0x8000001, 232, 710, 451, 6, 1, 10 },
+ { 0x1, 0x1, 232, 711, 447, 33, 1, 9 },
+ { 0x0, 0x0, 232, 712, 796, 0, 0, -1 },
+ { 0x1, 0x1, 232, 713, 463, 33, 1, 11 },
+ { 0x0, 0x0, 232, 714, 800, 0, 0, -1 },
+ { 0x1, 0x1, 232, 715, 475, 33, 1, 18 },
+ { 0x0, 0x0, 232, 716, 805, 0, 0, -1 },
+ { 0x0, 0x0, 232, 717, 809, 0, 0, -1 },
+ { 0x1, 0x1, 232, 718, 498, 33, 1, 20 },
+ { 0x1, 0x1, 232, 719, 502, 33, 1, 20 },
+ { 0x0, 0x0, 232, 720, 813, 0, 0, -1 },
+ { 0x0, 0x0, 232, 721, 817, 0, 0, -1 },
+ { 0x1, 0x1, 232, 722, 522, 33, 1, 21 },
+ { 0x8000001, 0x8000001, 232, 723, 526, 6, 1, 21 },
+ { 0x0, 0x0, 232, 724, 821, 0, 0, -1 },
+ { 0x1, 0x1, 232, 725, 538, 33, 1, 22 },
+ { 0x0, 0x0, 232, 726, 825, 0, 0, -1 },
+ { 0x0, 0x0, 232, 727, 829, 0, 0, -1 },
+ { 0x1, 0x1, 232, 728, 558, 33, 1, 23 },
+ { 0x8000001, 0x8000001, 232, 729, 562, 6, 1, 23 },
+ { 0x0, 0x0, 232, 730, 833, 0, 0, -1 },
+ { 0x1, 0x1, 232, 731, 574, 33, 1, 24 },
+ { 0x0, 0x0, 232, 732, 838, 0, 0, -1 },
+ { 0x0, 0x0, 232, 733, 842, 0, 0, -1 },
+ { 0x1, 0x1, 232, 734, 597, 33, 1, 20 },
+ { 0x1, 0x1, 232, 735, 601, 33, 1, 20 },
+ { 0x0, 0x0, 232, 736, 846, 0, 0, -1 },
+ { 0x1, 0x1, 232, 737, 613, 33, 1, 24 },
+ { 0x0, 0x0, 233, 2212, 783, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2213, 791, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2214, 787, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2215, 442, 0, 1, 9 },
+ { 0x1, 0x1, 233, 2216, 450, 6, 1, 10 },
+ { 0x0, 0x0, 233, 2217, 446, 0, 1, 9 },
+ { 0x0, 0x0, 233, 2218, 795, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2219, 462, 0, 1, 11 },
+ { 0x0, 0x0, 233, 2220, 799, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2221, 474, 0, 1, 18 },
+ { 0x0, 0x0, 233, 2222, 804, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2223, 808, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2224, 497, 0, 1, 20 },
+ { 0x0, 0x0, 233, 2225, 501, 0, 1, 20 },
+ { 0x0, 0x0, 233, 2226, 812, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2227, 816, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2228, 521, 0, 1, 21 },
+ { 0x1, 0x1, 233, 2229, 525, 6, 1, 21 },
+ { 0x0, 0x0, 233, 2230, 820, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2231, 537, 0, 1, 22 },
+ { 0x0, 0x0, 233, 2232, 824, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2233, 828, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2234, 557, 0, 1, 23 },
+ { 0x1, 0x1, 233, 2235, 561, 6, 1, 23 },
+ { 0x0, 0x0, 233, 2236, 832, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2237, 573, 0, 1, 24 },
+ { 0x0, 0x0, 233, 2238, 837, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2239, 841, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2240, 596, 0, 1, 20 },
+ { 0x0, 0x0, 233, 2241, 600, 0, 1, 20 },
+ { 0x0, 0x0, 233, 2242, 845, 0, 0, -1 },
+ { 0x0, 0x0, 233, 2243, 612, 0, 1, 24 },
+ { 0x1, 0x1, 233, 738, 922, 27, 1, 19 },
+ { 0x0, 0x0, 233, 739, 920, 0, 1, 19 },
+ { 0x0, 0x0, 233, 966, 924, 0, 1, 2 },
+ { 0x0, 0x1, 233, 932, 930, 20, 1, 59 },
+ { 0x0, 0x0, 233, 108, 928, 0, 1, 59 },
+ { 0x1, 0x1, 236, -1, -1, 29, 1, 0 },
+ { 0x0, 0x0, 236, -1, -1, 0, 1, 0 },
+ { 0x1, 0x1, 236, 2384, -1, 27, 1, 0 },
+ { 0x1, 0x1, 236, 2385, -1, 27, 1, 0 },
+ { 0x1, 0x1, 236, 2386, -1, 27, 1, 2 },
+ { 0x1, 0x1, 236, 2387, -1, 27, 1, 2 },
+ { 0x0, 0x0, 257, -1, 1853, 0, 0, -1 },
+ { 0x0, 0x0, 257, -1, 1855, 0, 0, -1 },
+ { 0x1, 0x1, 257, -1, -1, 28, 1, 26 },
+ { 0x1, 0x1, 257, -1, -1, 28, 1, 26 },
+ { 0x0, 0x0, 257, -1, 1890, 0, 0, -1 },
+ { 0x0, 0x0, 257, -1, 1892, 0, 0, -1 },
+ { 0x1, 0x1, 257, -1, -1, 28, 1, 26 },
+ { 0x1, 0x1, 257, -1, -1, 28, 1, 26 },
+ { 0x0, 0x0, 259, 21, -1, 0, 1, 0 },
+ { 0x0, 0x0, 259, -1, -1, 0, 1, 0 },
+ { 0x0, 0x0, 259, -1, -1, 0, 1, 0 },
+ { 0x0, 0x1, 259, -1, -1, 29, 1, 0 },
+ { 0x0, 0x1, 259, -1, -1, 29, 1, 2 },
+ { 0x0, 0x1, 259, -1, -1, 29, 1, 2 },
+ { 0x0, 0x1, 259, -1, -1, 29, 1, 2 },
+ { 0x0, 0x1, 259, -1, -1, 29, 1, 2 },
+ { 0x0, 0x0, 259, 176, -1, 0, 1, 0 },
+ { 0x0, 0x1, 259, -1, -1, 29, 1, 0 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 5 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 56 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 56 },
+ { 0x0, 0x0, 260, -1, 1829, 0, 0, -1 },
+ { 0x0, 0x0, 260, -1, 1831, 0, 0, -1 },
+ { 0x0, 0x0, 260, -1, 1833, 0, 0, -1 },
+ { 0x0, 0x0, 260, -1, 1835, 0, 0, -1 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 46 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 46 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 46 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 46 },
+ { 0x0, 0x0, 260, -1, 1837, 0, 0, -1 },
+ { 0x0, 0x0, 260, -1, 1839, 0, 0, -1 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 46 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 46 },
+ { 0x0, 0x0, 260, -1, 1841, 0, 0, -1 },
+ { 0x0, 0x0, 260, -1, 1843, 0, 0, -1 },
+ { 0x0, 0x0, 260, -1, 1845, 0, 0, -1 },
+ { 0x0, 0x0, 260, -1, 1847, 0, 0, -1 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 46 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 46 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 46 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 46 },
+ { 0x0, 0x0, 260, -1, 1849, 0, 0, -1 },
+ { 0x0, 0x0, 260, -1, 1851, 0, 0, -1 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 46 },
+ { 0x1, 0x1, 260, -1, -1, 12, 1, 46 },
+ { 0x1, 0x1, 260, 313, -1, 12, 1, 68 },
+ { 0x1, 0x1, 260, 355, -1, 12, 1, 68 },
+ { 0x1, 0x1, 260, 317, -1, 12, 1, 68 },
+ { 0x1, 0x1, 260, 359, -1, 12, 1, 68 },
+ { 0x0, 0x0, 261, -1, 1836, 0, 0, -1 },
+ { 0x9, 0x9, 261, -1, 2354, 33, 1, 46 },
+ { 0x0, 0x0, 261, 1112, 1885, 0, 0, -1 },
+ { 0x3, 0x3, 261, 1113, -1, 27, 1, 46 },
+ { 0x0, 0x0, 265, 2281, -1, 0, 1, 0 },
+ { 0x3, 0x3, 266, -1, -1, 27, 1, 0 },
+ { 0x3, 0x3, 266, -1, -1, 27, 1, 0 },
+ { 0x3, 0x3, 266, -1, -1, 27, 1, 2 },
+ { 0x3, 0x3, 266, -1, -1, 27, 1, 2 },
+ { 0x1, 0x1, 267, 2380, -1, 28, 1, 0 },
+ { 0x1, 0x1, 267, 2381, -1, 28, 1, 0 },
+ { 0x1, 0x1, 267, 2382, -1, 28, 1, 2 },
+ { 0x1, 0x1, 267, 2383, -1, 28, 1, 2 },
+ { 0x1, 0x1, 268, -1, -1, 27, 1, 2 },
+ { 0x1, 0x1, 268, -1, -1, 27, 1, 2 },
+ { 0x0, 0x0, 268, -1, 781, 0, 0, -1 },
+ { 0x0, 0x0, 269, 2393, 2258, 0, 0, -1 },
+ { 0x0, 0x0, 269, 2394, 2260, 0, 0, -1 },
+ { 0x0, 0x0, 270, -1, 2259, 0, 0, -1 },
+ { 0x0, 0x0, 270, -1, 2261, 0, 0, -1 },
+ { 0x0, 0x0, 271, -1, -1, 0, 1, 37 },
+ { 0x0, 0x0, 271, -1, -1, 0, 1, 37 },
+ { 0x0, 0x0, 276, -1, -1, 0, 1, 30 },
+ { 0x0, 0x0, 280, -1, 1859, 0, 1, 26 },
+ { 0x0, 0x0, 281, -1, -1, 0, 1, 63 },
+ { 0x0, 0x0, 281, -1, -1, 0, 1, 63 },
+ { 0x0, 0x0, 281, 1671, 2371, 0, 1, 67 },
+ { 0x0, 0x0, 281, -1, 356, 0, 0, -1 },
+ { 0x0, 0x0, 281, 1673, 2373, 0, 1, 67 },
+ { 0x0, 0x0, 281, -1, 360, 0, 0, -1 },
+};
+
+static const struct ia64_main_table
+main_table[] = {
+ { 5, 1, 1, 0x10000000000ull, 0x1eff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 0, },
+ { 5, 1, 1, 0x10008000000ull, 0x1eff8000000ull, { 23, 24, 25, 3, 0 }, 0x0, 1, },
+ { 5, 7, 1, 0x0ull, 0x0ull, { 23, 65, 25, 0, 0 }, 0x0, 2, },
+ { 6, 1, 1, 0x12000000000ull, 0x1e000000000ull, { 23, 65, 26, 0, 0 }, 0x0, 3, },
+ { 7, 1, 1, 0x10040000000ull, 0x1eff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 4, },
+ { 7, 1, 1, 0x10c00000000ull, 0x1ee00000000ull, { 23, 62, 25, 0, 0 }, 0x0, 5, },
+ { 8, 1, 1, 0x10800000000ull, 0x1ee00000000ull, { 23, 62, 25, 0, 0 }, 0x0, 6, },
+ { 9, 3, 1, 0x2c00000000ull, 0x1ee00000000ull, { 23, 2, 51, 52, 53 }, 0x221, 7, },
+ { 10, 1, 1, 0x10060000000ull, 0x1eff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 8, },
+ { 10, 1, 1, 0x10160000000ull, 0x1eff8000000ull, { 23, 54, 25, 0, 0 }, 0x0, 9, },
+ { 11, 1, 1, 0x10068000000ull, 0x1eff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 10, },
+ { 11, 1, 1, 0x10168000000ull, 0x1eff8000000ull, { 23, 54, 25, 0, 0 }, 0x0, 11, },
+ { 14, 4, 0, 0x100000000ull, 0x1eff80011ffull, { 15, 0, 0, 0, 0 }, 0x40, 782, },
+ { 14, 4, 0, 0x100000000ull, 0x1eff80011c0ull, { 15, 0, 0, 0, 0 }, 0x0, 648, },
+ { 14, 4, 0, 0x100000000ull, 0x1eff80011c0ull, { 15, 0, 0, 0, 0 }, 0x40, 649, },
+ { 14, 4, 0, 0x108000100ull, 0x1eff80011c0ull, { 15, 0, 0, 0, 0 }, 0x200, 1767, },
+ { 14, 4, 0, 0x108000100ull, 0x1eff80011c0ull, { 15, 0, 0, 0, 0 }, 0x240, 1768, },
+ { 14, 4, 1, 0x2000000000ull, 0x1ee00001000ull, { 14, 15, 0, 0, 0 }, 0x0, 405, },
+ { 14, 4, 1, 0x2000000000ull, 0x1ee00001000ull, { 14, 15, 0, 0, 0 }, 0x40, 406, },
+ { 14, 4, 0, 0x8000000000ull, 0x1ee000011ffull, { 80, 0, 0, 0, 0 }, 0x40, 803, },
+ { 14, 4, 0, 0x8000000000ull, 0x1ee000011c0ull, { 80, 0, 0, 0, 0 }, 0x0, 650, },
+ { 14, 4, 0, 0x8000000000ull, 0x1ee000011c0ull, { 80, 0, 0, 0, 0 }, 0x40, 651, },
+ { 14, 4, 0, 0x8000000080ull, 0x1ee000011c0ull, { 80, 0, 0, 0, 0 }, 0x210, 2391, },
+ { 14, 4, 0, 0x8000000080ull, 0x1ee000011c0ull, { 80, 0, 0, 0, 0 }, 0x250, 2392, },
+ { 14, 4, 0, 0x8000000140ull, 0x1ee000011c0ull, { 80, 0, 0, 0, 0 }, 0x30, 413, },
+ { 14, 4, 0, 0x8000000140ull, 0x1ee000011c0ull, { 80, 0, 0, 0, 0 }, 0x70, 414, },
+ { 14, 4, 0, 0x8000000180ull, 0x1ee000011c0ull, { 80, 0, 0, 0, 0 }, 0x230, 411, },
+ { 14, 4, 0, 0x8000000180ull, 0x1ee000011c0ull, { 80, 0, 0, 0, 0 }, 0x270, 412, },
+ { 14, 4, 1, 0xa000000000ull, 0x1ee00001000ull, { 14, 80, 0, 0, 0 }, 0x0, 407, },
+ { 14, 4, 1, 0xa000000000ull, 0x1ee00001000ull, { 14, 80, 0, 0, 0 }, 0x40, 408, },
+ { 15, 4, 0, 0x0ull, 0x1e1f8000000ull, { 64, 0, 0, 0, 0 }, 0x0, 361, },
+ { 15, 5, 0, 0x0ull, 0x1e3f8000000ull, { 64, 0, 0, 0, 0 }, 0x0, 774, },
+ { 15, 2, 0, 0x0ull, 0x1eff8000000ull, { 64, 0, 0, 0, 0 }, 0x2, 907, },
+ { 15, 3, 0, 0x0ull, 0x1eff8000000ull, { 64, 0, 0, 0, 0 }, 0x0, 988, },
+ { 15, 6, 0, 0x0ull, 0x1eff8000000ull, { 68, 0, 0, 0, 0 }, 0x0, 2395, },
+ { 15, 7, 0, 0x0ull, 0x0ull, { 64, 0, 0, 0, 0 }, 0x0, 14, },
+ { 16, 6, 0, 0x18000000000ull, 0x1ee000011ffull, { 81, 0, 0, 0, 0 }, 0x40, 836, },
+ { 16, 6, 0, 0x18000000000ull, 0x1ee000011c0ull, { 81, 0, 0, 0, 0 }, 0x0, 652, },
+ { 16, 6, 0, 0x18000000000ull, 0x1ee000011c0ull, { 81, 0, 0, 0, 0 }, 0x40, 653, },
+ { 16, 6, 1, 0x1a000000000ull, 0x1ee00001000ull, { 14, 81, 0, 0, 0 }, 0x0, 409, },
+ { 16, 6, 1, 0x1a000000000ull, 0x1ee00001000ull, { 14, 81, 0, 0, 0 }, 0x40, 410, },
+ { 17, 4, 0, 0x4080000000ull, 0x1e9f8000018ull, { 15, 76, 0, 0, 0 }, 0x20, 2277, },
+ { 17, 4, 0, 0xe000000000ull, 0x1e800000018ull, { 80, 76, 0, 0, 0 }, 0x20, 2278, },
+ { 18, 4, 0, 0x60000000ull, 0x1e1f8000000ull, { 0, 0, 0, 0, 0 }, 0x2c, 216, },
+ { 22, 2, 0, 0x200000000ull, 0x1ee00000000ull, { 24, 79, 0, 0, 0 }, 0x0, 1772, },
+ { 22, 3, 0, 0x800000000ull, 0x1ee00000000ull, { 23, 80, 0, 0, 0 }, 0x0, 218, },
+ { 22, 3, 0, 0xc00000000ull, 0x1ee00000000ull, { 17, 80, 0, 0, 0 }, 0x0, 219, },
+ { 22, 3, 0, 0x2200000000ull, 0x1ee00000000ull, { 24, 79, 0, 0, 0 }, 0x0, 1773, },
+ { 22, 3, 0, 0x2600000000ull, 0x1ee00000000ull, { 18, 79, 0, 0, 0 }, 0x0, 1774, },
+ { 22, 7, 0, 0x0ull, 0x0ull, { 24, 79, 0, 0, 0 }, 0x0, 1775, },
+ { 25, 4, 0, 0x20000000ull, 0x1e1f8000000ull, { 0, 0, 0, 0, 0 }, 0x224, 16, },
+ { 26, 1, 2, 0x18000000000ull, 0x1fe00001000ull, { 21, 22, 24, 25, 0 }, 0x0, 968, },
+ { 26, 1, 2, 0x18000000000ull, 0x1fe00001000ull, { 22, 21, 25, 24, 0 }, 0x0, 948, },
+ { 26, 1, 2, 0x18000000000ull, 0x1fe00001000ull, { 21, 22, 25, 24, 0 }, 0x0, 881, },
+ { 26, 1, 2, 0x18000000000ull, 0x1fe00001000ull, { 22, 21, 24, 25, 0 }, 0x0, 865, },
+ { 26, 1, 2, 0x18200000000ull, 0x1fe00001000ull, { 21, 22, 24, 25, 0 }, 0x40, 1096, },
+ { 26, 1, 2, 0x19000000000ull, 0x1fe00001000ull, { 21, 22, 6, 25, 0 }, 0x0, 882, },
+ { 26, 1, 2, 0x19000000000ull, 0x1fe00001000ull, { 21, 22, 6, 25, 0 }, 0x40, 950, },
+ { 26, 1, 2, 0x18800000000ull, 0x1ee00001000ull, { 21, 22, 54, 25, 0 }, 0x0, 971, },
+ { 26, 1, 2, 0x18800000000ull, 0x1ee00001000ull, { 21, 22, 56, 25, 0 }, 0x0, 951, },
+ { 26, 1, 2, 0x18800000000ull, 0x1ee00001000ull, { 22, 21, 56, 25, 0 }, 0x0, 884, },
+ { 26, 1, 2, 0x18800000000ull, 0x1ee00001000ull, { 22, 21, 54, 25, 0 }, 0x0, 868, },
+ { 26, 1, 2, 0x18a00000000ull, 0x1ee00001000ull, { 21, 22, 54, 25, 0 }, 0x40, 1099, },
+ { 26, 1, 2, 0x1a800000000ull, 0x1ee00001000ull, { 21, 22, 58, 25, 0 }, 0x0, 963, },
+ { 26, 1, 2, 0x1a800000000ull, 0x1ee00001000ull, { 22, 21, 58, 25, 0 }, 0x0, 897, },
+ { 26, 1, 2, 0x1c200000000ull, 0x1fe00001000ull, { 22, 21, 24, 25, 0 }, 0x40, 1100, },
+ { 26, 1, 2, 0x1d000000000ull, 0x1fe00001000ull, { 22, 21, 6, 25, 0 }, 0x40, 952, },
+ { 26, 1, 2, 0x1ca00000000ull, 0x1ee00001000ull, { 22, 21, 54, 25, 0 }, 0x40, 1101, },
+ { 27, 1, 2, 0x18400000000ull, 0x1fe00001000ull, { 21, 22, 24, 25, 0 }, 0x0, 973, },
+ { 27, 1, 2, 0x18400000000ull, 0x1fe00001000ull, { 22, 21, 25, 24, 0 }, 0x0, 953, },
+ { 27, 1, 2, 0x18400000000ull, 0x1fe00001000ull, { 21, 22, 25, 24, 0 }, 0x0, 886, },
+ { 27, 1, 2, 0x18400000000ull, 0x1fe00001000ull, { 22, 21, 24, 25, 0 }, 0x0, 870, },
+ { 27, 1, 2, 0x18600000000ull, 0x1fe00001000ull, { 21, 22, 24, 25, 0 }, 0x40, 1104, },
+ { 27, 1, 2, 0x19400000000ull, 0x1fe00001000ull, { 21, 22, 6, 25, 0 }, 0x0, 887, },
+ { 27, 1, 2, 0x19400000000ull, 0x1fe00001000ull, { 21, 22, 6, 25, 0 }, 0x40, 955, },
+ { 27, 1, 2, 0x18c00000000ull, 0x1ee00001000ull, { 21, 22, 54, 25, 0 }, 0x0, 976, },
+ { 27, 1, 2, 0x18c00000000ull, 0x1ee00001000ull, { 21, 22, 56, 25, 0 }, 0x0, 956, },
+ { 27, 1, 2, 0x18c00000000ull, 0x1ee00001000ull, { 22, 21, 56, 25, 0 }, 0x0, 889, },
+ { 27, 1, 2, 0x18c00000000ull, 0x1ee00001000ull, { 22, 21, 54, 25, 0 }, 0x0, 873, },
+ { 27, 1, 2, 0x18e00000000ull, 0x1ee00001000ull, { 21, 22, 54, 25, 0 }, 0x40, 1107, },
+ { 27, 1, 2, 0x1ac00000000ull, 0x1ee00001000ull, { 21, 22, 55, 25, 0 }, 0x0, 985, },
+ { 27, 1, 2, 0x1ac00000000ull, 0x1ee00001000ull, { 21, 22, 57, 25, 0 }, 0x0, 965, },
+ { 27, 1, 2, 0x1ac00000000ull, 0x1ee00001000ull, { 22, 21, 57, 25, 0 }, 0x0, 899, },
+ { 27, 1, 2, 0x1ac00000000ull, 0x1ee00001000ull, { 22, 21, 55, 25, 0 }, 0x0, 880, },
+ { 27, 1, 2, 0x1c600000000ull, 0x1fe00001000ull, { 22, 21, 24, 25, 0 }, 0x40, 1108, },
+ { 27, 1, 2, 0x1d400000000ull, 0x1fe00001000ull, { 22, 21, 6, 25, 0 }, 0x40, 957, },
+ { 27, 1, 2, 0x1ce00000000ull, 0x1ee00001000ull, { 22, 21, 54, 25, 0 }, 0x40, 1109, },
+ { 28, 3, 1, 0x8008000000ull, 0x1fff8000000ull, { 23, 32, 24, 1, 0 }, 0x0, 251, },
+ { 29, 3, 1, 0x8048000000ull, 0x1fff8000000ull, { 23, 32, 24, 1, 0 }, 0x0, 252, },
+ { 30, 3, 1, 0x8088000000ull, 0x1fff8000000ull, { 23, 32, 24, 1, 0 }, 0x0, 253, },
+ { 31, 3, 1, 0x80c8000000ull, 0x1fff8000000ull, { 23, 32, 24, 1, 0 }, 0x0, 254, },
+ { 33, 4, 0, 0x10000000ull, 0x1e1f8000000ull, { 0, 0, 0, 0, 0 }, 0x224, 17, },
+ { 35, 2, 1, 0xc0000000ull, 0x1eff8000000ull, { 23, 25, 0, 0, 0 }, 0x0, 934, },
+ { 36, 2, 1, 0xc8000000ull, 0x1eff8000000ull, { 23, 25, 0, 0, 0 }, 0x0, 935, },
+ { 38, 2, 1, 0x8000000000ull, 0x1e000000000ull, { 23, 24, 25, 46, 71 }, 0x0, 18, },
+ { 38, 2, 1, 0xa600000000ull, 0x1ee04000000ull, { 23, 24, 44, 72, 0 }, 0x0, 2399, },
+ { 38, 2, 1, 0xa604000000ull, 0x1ee04000000ull, { 23, 54, 44, 72, 0 }, 0x0, 2400, },
+ { 38, 2, 1, 0xae00000000ull, 0x1ee00000000ull, { 23, 47, 25, 45, 72 }, 0x0, 19, },
+ { 42, 4, 0, 0x80000000ull, 0x1e1f8000000ull, { 0, 0, 0, 0, 0 }, 0x20, 20, },
+ { 47, 2, 1, 0xa400000000ull, 0x1ee00002000ull, { 23, 25, 75, 72, 0 }, 0x0, 2295, },
+ { 49, 5, 1, 0x80000000ull, 0x1e3f80fe000ull, { 17, 19, 0, 0, 0 }, 0x40, 22, },
+ { 50, 5, 1, 0x10008000000ull, 0x1fff8000000ull, { 17, 19, 18, 0, 0 }, 0x40, 1824, },
+ { 51, 5, 1, 0xb8000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 1825, },
+ { 51, 5, 1, 0xb8000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x40, 24, },
+ { 52, 5, 1, 0xb0000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 1826, },
+ { 52, 5, 1, 0xb0000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x40, 25, },
+ { 53, 5, 1, 0x160000000ull, 0x1e3f8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 26, },
+ { 54, 5, 1, 0x168000000ull, 0x1e3f8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 27, },
+ { 56, 3, 0, 0x2180000000ull, 0x1eff8000000ull, { 25, 0, 0, 0, 0 }, 0x0, 28, },
+ { 57, 5, 0, 0x40000000ull, 0x1eff8000000ull, { 78, 0, 0, 0, 0 }, 0x0, 1827, },
+ { 57, 5, 0, 0x40000000ull, 0x1eff8000000ull, { 78, 0, 0, 0, 0 }, 0x40, 29, },
+ { 58, 5, 2, 0xa000000000ull, 0x1e000001000ull, { 21, 22, 18, 59, 0 }, 0x0, 990, },
+ { 58, 5, 2, 0xa000000000ull, 0x1e000001000ull, { 22, 21, 18, 59, 0 }, 0x40, 1127, },
+ { 59, 5, 0, 0x28000000ull, 0x1eff8000000ull, { 0, 0, 0, 0, 0 }, 0x0, 1828, },
+ { 59, 5, 0, 0x28000000ull, 0x1eff8000000ull, { 0, 0, 0, 0, 0 }, 0x40, 30, },
+ { 60, 5, 2, 0x8000000000ull, 0x1fe00001000ull, { 21, 22, 18, 19, 0 }, 0x0, 758, },
+ { 60, 5, 2, 0x8000000000ull, 0x1fe00001000ull, { 21, 22, 18, 19, 0 }, 0x40, 759, },
+ { 60, 5, 2, 0x9000000000ull, 0x1fe00001000ull, { 21, 22, 19, 18, 0 }, 0x0, 891, },
+ { 60, 5, 2, 0x9000000000ull, 0x1fe00001000ull, { 21, 22, 19, 18, 0 }, 0x40, 892, },
+ { 60, 5, 2, 0x8000000000ull, 0x1fe00001000ull, { 22, 21, 18, 19, 0 }, 0x0, 1110, },
+ { 60, 5, 2, 0x8000000000ull, 0x1fe00001000ull, { 22, 21, 18, 19, 0 }, 0x40, 1111, },
+ { 60, 5, 2, 0x9000000000ull, 0x1fe00001000ull, { 22, 21, 19, 18, 0 }, 0x0, 1116, },
+ { 60, 5, 2, 0x9000000000ull, 0x1fe00001000ull, { 22, 21, 19, 18, 0 }, 0x40, 1117, },
+ { 61, 5, 1, 0xc0000000ull, 0x1eff8000000ull, { 17, 18, 0, 0, 0 }, 0x0, 855, },
+ { 61, 5, 1, 0xc0000000ull, 0x1eff8000000ull, { 17, 18, 0, 0, 0 }, 0x40, 856, },
+ { 61, 5, 1, 0xe0000000ull, 0x1e3f8000000ull, { 17, 18, 0, 0, 0 }, 0x0, 2397, },
+ { 61, 5, 1, 0x10008000000ull, 0x1fff80fe000ull, { 17, 19, 0, 0, 0 }, 0x40, 2398, },
+ { 62, 3, 1, 0x8488000000ull, 0x1fff8000000ull, { 23, 32, 70, 0, 0 }, 0x0, 255, },
+ { 63, 3, 1, 0x84c8000000ull, 0x1fff8000000ull, { 23, 32, 70, 0, 0 }, 0x0, 256, },
+ { 66, 3, 0, 0x60000000ull, 0x1eff8000000ull, { 0, 0, 0, 0, 0 }, 0x21, 31, },
+ { 67, 5, 1, 0x10000000000ull, 0x1fc00000000ull, { 17, 19, 20, 18, 0 }, 0x0, 1862, },
+ { 67, 5, 1, 0x10000000000ull, 0x1fc00000000ull, { 17, 19, 20, 18, 0 }, 0x40, 32, },
+ { 68, 5, 1, 0xa8000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 1863, },
+ { 68, 5, 1, 0xa8000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x40, 33, },
+ { 69, 5, 1, 0x80000000ull, 0x1e3f8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 1780, },
+ { 70, 5, 1, 0xa0000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 1864, },
+ { 70, 5, 1, 0xa0000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x40, 34, },
+ { 71, 5, 1, 0x1c8000000ull, 0x1e3f8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 967, },
+ { 72, 5, 1, 0x10000000000ull, 0x1fc000fe000ull, { 17, 19, 20, 0, 0 }, 0x40, 1867, },
+ { 73, 5, 1, 0x14000000000ull, 0x1fc00000000ull, { 17, 19, 20, 18, 0 }, 0x0, 1870, },
+ { 73, 5, 1, 0x14000000000ull, 0x1fc00000000ull, { 17, 19, 20, 18, 0 }, 0x40, 36, },
+ { 74, 5, 1, 0x88000000ull, 0x1e3f8000000ull, { 17, 19, 0, 0, 0 }, 0xc0, 37, },
+ { 75, 5, 1, 0x88000000ull, 0x1e3f80fe000ull, { 17, 19, 0, 0, 0 }, 0x40, 38, },
+ { 76, 5, 1, 0x18000000000ull, 0x1fc00000000ull, { 17, 19, 20, 18, 0 }, 0x0, 1873, },
+ { 76, 5, 1, 0x18000000000ull, 0x1fc00000000ull, { 17, 19, 20, 18, 0 }, 0x40, 39, },
+ { 77, 5, 1, 0x18000000000ull, 0x1fc000fe000ull, { 17, 19, 20, 0, 0 }, 0x40, 1876, },
+ { 78, 5, 1, 0x10008000000ull, 0x1fff80fe000ull, { 17, 19, 0, 0, 0 }, 0x40, 1879, },
+ { 79, 5, 1, 0x170000000ull, 0x1e3f8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 42, },
+ { 80, 5, 1, 0x2080000000ull, 0x1e3f80fe000ull, { 17, 19, 0, 0, 0 }, 0x40, 43, },
+ { 81, 5, 1, 0x140000000ull, 0x1e3f8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 44, },
+ { 82, 5, 1, 0x20b8000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 1880, },
+ { 82, 5, 1, 0x20b8000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x40, 45, },
+ { 83, 5, 1, 0x20b0000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 1881, },
+ { 83, 5, 1, 0x20b0000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x40, 46, },
+ { 84, 5, 1, 0x2180000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 760, },
+ { 84, 5, 1, 0x2180000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x40, 761, },
+ { 85, 5, 1, 0x20c0000000ull, 0x1eff8000000ull, { 17, 18, 0, 0, 0 }, 0x0, 857, },
+ { 85, 5, 1, 0x20c0000000ull, 0x1eff8000000ull, { 17, 18, 0, 0, 0 }, 0x40, 858, },
+ { 86, 5, 1, 0x13000000000ull, 0x1fc00000000ull, { 17, 19, 20, 18, 0 }, 0x0, 1894, },
+ { 86, 5, 1, 0x13000000000ull, 0x1fc00000000ull, { 17, 19, 20, 18, 0 }, 0x40, 47, },
+ { 87, 5, 1, 0x20a8000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 1895, },
+ { 87, 5, 1, 0x20a8000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x40, 48, },
+ { 88, 5, 1, 0x2080000000ull, 0x1e3f8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 1788, },
+ { 89, 5, 1, 0x20a0000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 1896, },
+ { 89, 5, 1, 0x20a0000000ull, 0x1eff8000000ull, { 17, 18, 19, 0, 0 }, 0x40, 49, },
+ { 90, 5, 1, 0x13000000000ull, 0x1fc000fe000ull, { 17, 19, 20, 0, 0 }, 0x40, 1897, },
+ { 91, 5, 1, 0x17000000000ull, 0x1fc00000000ull, { 17, 19, 20, 18, 0 }, 0x0, 1898, },
+ { 91, 5, 1, 0x17000000000ull, 0x1fc00000000ull, { 17, 19, 20, 18, 0 }, 0x40, 51, },
+ { 92, 5, 1, 0x2088000000ull, 0x1e3f8000000ull, { 17, 19, 0, 0, 0 }, 0xc0, 52, },
+ { 93, 5, 1, 0x2088000000ull, 0x1e3f80fe000ull, { 17, 19, 0, 0, 0 }, 0x40, 53, },
+ { 94, 5, 1, 0x1b000000000ull, 0x1fc00000000ull, { 17, 19, 20, 18, 0 }, 0x0, 1899, },
+ { 94, 5, 1, 0x1b000000000ull, 0x1fc00000000ull, { 17, 19, 20, 18, 0 }, 0x40, 54, },
+ { 95, 5, 1, 0x1b000000000ull, 0x1fc000fe000ull, { 17, 19, 20, 0, 0 }, 0x40, 1900, },
+ { 96, 5, 2, 0x2200000000ull, 0x1fe00000000ull, { 17, 22, 18, 19, 0 }, 0x0, 1901, },
+ { 96, 5, 2, 0x2200000000ull, 0x1fe00000000ull, { 17, 22, 18, 19, 0 }, 0x40, 56, },
+ { 97, 5, 2, 0x3200000000ull, 0x1fe00000000ull, { 17, 22, 19, 0, 0 }, 0x0, 1902, },
+ { 97, 5, 2, 0x3200000000ull, 0x1fe00000000ull, { 17, 22, 19, 0, 0 }, 0x40, 57, },
+ { 98, 5, 1, 0x17008000000ull, 0x1fff8000000ull, { 17, 19, 18, 0, 0 }, 0x40, 1903, },
+ { 99, 5, 2, 0x200000000ull, 0x1fe00000000ull, { 17, 22, 18, 19, 0 }, 0x0, 1904, },
+ { 99, 5, 2, 0x200000000ull, 0x1fe00000000ull, { 17, 22, 18, 19, 0 }, 0x40, 59, },
+ { 100, 5, 2, 0x1200000000ull, 0x1fe00000000ull, { 17, 22, 19, 0, 0 }, 0x0, 1905, },
+ { 100, 5, 2, 0x1200000000ull, 0x1fe00000000ull, { 17, 22, 19, 0, 0 }, 0x40, 60, },
+ { 101, 5, 1, 0x1c000000000ull, 0x1f000000000ull, { 17, 19, 20, 18, 0 }, 0x0, 61, },
+ { 102, 5, 0, 0x20000000ull, 0x1eff8000000ull, { 49, 50, 0, 0, 0 }, 0x0, 1906, },
+ { 102, 5, 0, 0x20000000ull, 0x1eff8000000ull, { 49, 50, 0, 0, 0 }, 0x40, 62, },
+ { 103, 5, 1, 0x14008000000ull, 0x1fff8000000ull, { 17, 19, 18, 0, 0 }, 0x40, 1909, },
+ { 104, 5, 1, 0x1a0000000ull, 0x1e3f8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 64, },
+ { 105, 5, 1, 0x1e0000000ull, 0x1e3f8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 1743, },
+ { 106, 3, 0, 0x100000000ull, 0x1eff8000000ull, { 0, 0, 0, 0, 0 }, 0x0, 65, },
+ { 108, 5, 1, 0x178000000ull, 0x1e3f8000000ull, { 17, 18, 19, 0, 0 }, 0x0, 66, },
+ { 113, 3, 1, 0x8708000000ull, 0x1ffc8000000ull, { 23, 18, 0, 0, 0 }, 0x0, 2206, },
+ { 122, 3, 0, 0x80000000ull, 0x1eff8000000ull, { 0, 0, 0, 0, 0 }, 0x0, 67, },
+ { 122, 3, 0, 0x90000000ull, 0x1eff8000000ull, { 23, 0, 0, 0, 0 }, 0x0, 743, },
+ { 122, 3, 0, 0x98000000ull, 0x1eff8000000ull, { 17, 0, 0, 0, 0 }, 0x0, 744, },
+ { 123, 3, 0, 0x2170000000ull, 0x1eff8000000ull, { 24, 0, 0, 0, 0 }, 0xc, 669, },
+ { 124, 3, 1, 0x2070000000ull, 0x1eff8000000ull, { 29, 24, 0, 0, 0 }, 0x8, 670, },
+ { 124, 3, 1, 0x2078000000ull, 0x1eff8000000ull, { 30, 24, 0, 0, 0 }, 0x8, 910, },
+ { 126, 3, 1, 0x8000000000ull, 0x1fff8000000ull, { 23, 32, 0, 0, 0 }, 0x0, 68, },
+ { 126, 3, 1, 0x9000000000ull, 0x1fff8000000ull, { 23, 32, 24, 0, 0 }, 0x0, 69, },
+ { 126, 3, 1, 0xa000000000ull, 0x1eff0000000ull, { 23, 32, 61, 0, 0 }, 0x0, 70, },
+ { 127, 3, 1, 0x8040000000ull, 0x1fff8000000ull, { 23, 32, 0, 0, 0 }, 0x0, 71, },
+ { 127, 3, 1, 0x9040000000ull, 0x1fff8000000ull, { 23, 32, 24, 0, 0 }, 0x0, 72, },
+ { 127, 3, 1, 0xa040000000ull, 0x1eff0000000ull, { 23, 32, 61, 0, 0 }, 0x0, 73, },
+ { 128, 3, 1, 0x8080000000ull, 0x1fff8000000ull, { 23, 32, 0, 0, 0 }, 0x0, 74, },
+ { 128, 3, 1, 0x9080000000ull, 0x1fff8000000ull, { 23, 32, 24, 0, 0 }, 0x0, 75, },
+ { 128, 3, 1, 0xa080000000ull, 0x1eff0000000ull, { 23, 32, 61, 0, 0 }, 0x0, 76, },
+ { 129, 3, 1, 0x80c0000000ull, 0x1fff8000000ull, { 23, 32, 0, 0, 0 }, 0x0, 77, },
+ { 129, 3, 1, 0x90c0000000ull, 0x1fff8000000ull, { 23, 32, 24, 0, 0 }, 0x0, 78, },
+ { 129, 3, 1, 0xa0c0000000ull, 0x1eff0000000ull, { 23, 32, 61, 0, 0 }, 0x0, 79, },
+ { 130, 3, 1, 0xc6c0000000ull, 0x1fff8000000ull, { 17, 32, 0, 0, 0 }, 0x0, 852, },
+ { 130, 3, 1, 0xd6c0000000ull, 0x1fff8000000ull, { 17, 32, 24, 0, 0 }, 0x0, 853, },
+ { 130, 3, 1, 0xe6c0000000ull, 0x1eff0000000ull, { 17, 32, 61, 0, 0 }, 0x0, 854, },
+ { 131, 3, 1, 0xc040000000ull, 0x1fff8000000ull, { 17, 32, 0, 0, 0 }, 0x0, 80, },
+ { 131, 3, 1, 0xd040000000ull, 0x1fff8000000ull, { 17, 32, 24, 0, 0 }, 0x0, 81, },
+ { 131, 3, 1, 0xe040000000ull, 0x1eff0000000ull, { 17, 32, 61, 0, 0 }, 0x0, 82, },
+ { 132, 3, 1, 0xc0c0000000ull, 0x1fff8000000ull, { 17, 32, 0, 0, 0 }, 0x0, 83, },
+ { 132, 3, 1, 0xd0c0000000ull, 0x1fff8000000ull, { 17, 32, 24, 0, 0 }, 0x0, 84, },
+ { 132, 3, 1, 0xe0c0000000ull, 0x1eff0000000ull, { 17, 32, 61, 0, 0 }, 0x0, 85, },
+ { 133, 3, 1, 0xc000000000ull, 0x1fff8000000ull, { 17, 32, 0, 0, 0 }, 0x0, 86, },
+ { 133, 3, 1, 0xd000000000ull, 0x1fff8000000ull, { 17, 32, 24, 0, 0 }, 0x0, 87, },
+ { 133, 3, 1, 0xe000000000ull, 0x1eff0000000ull, { 17, 32, 61, 0, 0 }, 0x0, 88, },
+ { 134, 3, 2, 0xc048000000ull, 0x1fff8000000ull, { 17, 18, 32, 0, 0 }, 0x0, 89, },
+ { 134, 3, 2, 0xd048000000ull, 0x1fff8000000ull, { 17, 18, 32, 5, 0 }, 0x0, 90, },
+ { 135, 3, 2, 0xc0c8000000ull, 0x1fff8000000ull, { 17, 18, 32, 0, 0 }, 0x0, 91, },
+ { 135, 3, 2, 0xd0c8000000ull, 0x1fff8000000ull, { 17, 18, 32, 5, 0 }, 0x0, 92, },
+ { 136, 3, 2, 0xc088000000ull, 0x1fff8000000ull, { 17, 18, 32, 0, 0 }, 0x0, 93, },
+ { 136, 3, 2, 0xd088000000ull, 0x1fff8000000ull, { 17, 18, 32, 4, 0 }, 0x0, 94, },
+ { 137, 3, 1, 0xc080000000ull, 0x1fff8000000ull, { 17, 32, 0, 0, 0 }, 0x0, 95, },
+ { 137, 3, 1, 0xd080000000ull, 0x1fff8000000ull, { 17, 32, 24, 0, 0 }, 0x0, 96, },
+ { 137, 3, 1, 0xe080000000ull, 0x1eff0000000ull, { 17, 32, 61, 0, 0 }, 0x0, 97, },
+ { 140, 3, 0, 0xcb00000000ull, 0x1fff8000000ull, { 32, 0, 0, 0, 0 }, 0x0, 98, },
+ { 140, 3, 0, 0xdb00000000ull, 0x1fff8000000ull, { 32, 24, 0, 0, 0 }, 0x0, 99, },
+ { 140, 3, 0, 0xeb00000000ull, 0x1eff0000000ull, { 32, 61, 0, 0, 0 }, 0x0, 100, },
+ { 141, 3, 0, 0x50000000ull, 0x1eff8000000ull, { 0, 0, 0, 0, 0 }, 0x21, 101, },
+ { 149, 3, 0, 0x110000000ull, 0x1eff8000000ull, { 0, 0, 0, 0, 0 }, 0x0, 102, },
+ { 150, 2, 1, 0xe880000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 1744, },
+ { 151, 2, 1, 0xea80000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 1745, },
+ { 152, 2, 1, 0xf880000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 1746, },
+ { 153, 1, 1, 0x10800000000ull, 0x1fff80fe000ull, { 23, 25, 0, 0, 0 }, 0x0, 103, },
+ { 153, 1, 1, 0x10800000000ull, 0x1ee07f00000ull, { 23, 62, 0, 0, 0 }, 0x40, 104, },
+ { 153, 1, 1, 0x12000000000ull, 0x1e000300000ull, { 23, 65, 0, 0, 0 }, 0x40, 105, },
+ { 153, 5, 1, 0x80000000ull, 0x1e3f8000000ull, { 17, 19, 0, 0, 0 }, 0xc0, 106, },
+ { 153, 2, 1, 0xe00100000ull, 0x1ee00f00000ull, { 14, 24, 0, 0, 0 }, 0x40, 107, },
+ { 153, 2, 1, 0xe00000000ull, 0x1ee00f00000ull, { 14, 24, 77, 0, 0 }, 0x0, 2280, },
+ { 153, 2, 1, 0x188000000ull, 0x1eff8000000ull, { 23, 15, 0, 0, 0 }, 0x0, 109, },
+ { 153, 2, 1, 0x600000000ull, 0x1ee00000000ull, { 8, 24, 63, 0, 0 }, 0x0, 110, },
+ { 153, 2, 1, 0x400000000ull, 0x1ee00000000ull, { 9, 67, 0, 0, 0 }, 0x0, 111, },
+ { 153, 2, 1, 0x180000000ull, 0x1eff8000000ull, { 23, 7, 0, 0, 0 }, 0x0, 112, },
+ { 153, 2, 1, 0x198000000ull, 0x1eff8000000ull, { 23, 8, 0, 0, 0 }, 0x0, 113, },
+ { 153, 2, 1, 0x150000000ull, 0x1eff8000000ull, { 13, 24, 0, 0, 0 }, 0x0, 911, },
+ { 153, 2, 1, 0x50000000ull, 0x1eff8000000ull, { 13, 54, 0, 0, 0 }, 0x0, 912, },
+ { 153, 2, 1, 0x190000000ull, 0x1eff8000000ull, { 23, 13, 0, 0, 0 }, 0x0, 913, },
+ { 153, 3, 1, 0x140000000ull, 0x1eff8000000ull, { 13, 54, 0, 0, 0 }, 0x0, 991, },
+ { 153, 3, 1, 0x2150000000ull, 0x1eff8000000ull, { 13, 24, 0, 0, 0 }, 0x0, 992, },
+ { 153, 3, 1, 0x2110000000ull, 0x1eff8000000ull, { 23, 13, 0, 0, 0 }, 0x0, 993, },
+ { 153, 3, 1, 0x2160000000ull, 0x1eff8000000ull, { 16, 24, 0, 0, 0 }, 0x8, 114, },
+ { 153, 3, 1, 0x2120000000ull, 0x1eff8000000ull, { 23, 16, 0, 0, 0 }, 0x8, 115, },
+ { 153, 3, 1, 0x2168000000ull, 0x1eff8000000ull, { 11, 24, 0, 0, 0 }, 0x8, 116, },
+ { 153, 3, 1, 0x2148000000ull, 0x1eff8000000ull, { 12, 24, 0, 0, 0 }, 0x0, 117, },
+ { 153, 3, 1, 0x2128000000ull, 0x1eff8000000ull, { 23, 10, 0, 0, 0 }, 0x8, 118, },
+ { 153, 3, 1, 0x2108000000ull, 0x1eff8000000ull, { 23, 12, 0, 0, 0 }, 0x0, 119, },
+ { 153, 3, 1, 0x2000000000ull, 0x1eff8000000ull, { 37, 24, 0, 0, 0 }, 0x8, 120, },
+ { 153, 3, 1, 0x2008000000ull, 0x1eff8000000ull, { 28, 24, 0, 0, 0 }, 0x8, 121, },
+ { 153, 3, 1, 0x2010000000ull, 0x1eff8000000ull, { 31, 24, 0, 0, 0 }, 0x8, 122, },
+ { 153, 3, 1, 0x2018000000ull, 0x1eff8000000ull, { 34, 24, 0, 0, 0 }, 0x8, 123, },
+ { 153, 3, 1, 0x2020000000ull, 0x1eff8000000ull, { 35, 24, 0, 0, 0 }, 0x8, 124, },
+ { 153, 3, 1, 0x2028000000ull, 0x1eff8000000ull, { 36, 24, 0, 0, 0 }, 0x8, 125, },
+ { 153, 3, 1, 0x2030000000ull, 0x1eff8000000ull, { 33, 24, 0, 0, 0 }, 0x8, 126, },
+ { 153, 3, 1, 0x2080000000ull, 0x1eff8000000ull, { 23, 37, 0, 0, 0 }, 0x8, 127, },
+ { 153, 3, 1, 0x2088000000ull, 0x1eff8000000ull, { 23, 28, 0, 0, 0 }, 0x8, 128, },
+ { 153, 3, 1, 0x2090000000ull, 0x1eff8000000ull, { 23, 31, 0, 0, 0 }, 0x8, 129, },
+ { 153, 3, 1, 0x2098000000ull, 0x1eff8000000ull, { 23, 34, 0, 0, 0 }, 0x8, 130, },
+ { 153, 3, 1, 0x20a0000000ull, 0x1eff8000000ull, { 23, 35, 0, 0, 0 }, 0x8, 131, },
+ { 153, 3, 1, 0x20a8000000ull, 0x1eff8000000ull, { 23, 36, 0, 0, 0 }, 0x0, 132, },
+ { 153, 3, 1, 0x20b0000000ull, 0x1eff8000000ull, { 23, 33, 0, 0, 0 }, 0x8, 133, },
+ { 153, 3, 1, 0x20b8000000ull, 0x1eff8000000ull, { 23, 27, 0, 0, 0 }, 0x0, 134, },
+ { 153, 7, 1, 0x0ull, 0x0ull, { 23, 13, 0, 0, 0 }, 0x0, 135, },
+ { 153, 7, 1, 0x0ull, 0x0ull, { 13, 54, 0, 0, 0 }, 0x0, 136, },
+ { 153, 7, 1, 0x0ull, 0x0ull, { 13, 24, 0, 0, 0 }, 0x0, 137, },
+ { 154, 6, 1, 0xc000000000ull, 0x1e000100000ull, { 23, 69, 0, 0, 0 }, 0x0, 138, },
+ { 155, 2, 1, 0xeca0000000ull, 0x1fff0000000ull, { 23, 24, 73, 0, 0 }, 0x0, 139, },
+ { 156, 2, 1, 0xeea0000000ull, 0x1fff0000000ull, { 23, 24, 74, 0, 0 }, 0x0, 140, },
+ { 166, 4, 0, 0x4000000000ull, 0x1e1f8000000ull, { 64, 0, 0, 0, 0 }, 0x0, 362, },
+ { 166, 5, 0, 0x8000000ull, 0x1e3f8000000ull, { 64, 0, 0, 0, 0 }, 0x0, 775, },
+ { 166, 2, 0, 0x8000000ull, 0x1eff8000000ull, { 64, 0, 0, 0, 0 }, 0x2, 914, },
+ { 166, 3, 0, 0x8000000ull, 0x1eff8000000ull, { 64, 0, 0, 0, 0 }, 0x0, 994, },
+ { 166, 6, 0, 0x8000000ull, 0x1eff8000000ull, { 68, 0, 0, 0, 0 }, 0x0, 2396, },
+ { 166, 7, 0, 0x0ull, 0x0ull, { 64, 0, 0, 0, 0 }, 0x0, 141, },
+ { 173, 1, 1, 0x10070000000ull, 0x1eff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 142, },
+ { 173, 1, 1, 0x10170000000ull, 0x1eff8000000ull, { 23, 54, 25, 0, 0 }, 0x0, 143, },
+ { 176, 2, 1, 0xea00000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 2379, },
+ { 177, 2, 1, 0xf820000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 2282, },
+ { 178, 1, 1, 0x10400000000ull, 0x1fff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 144, },
+ { 179, 1, 1, 0x10600000000ull, 0x1fff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 145, },
+ { 180, 1, 1, 0x11400000000ull, 0x1fff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 146, },
+ { 181, 1, 1, 0x10450000000ull, 0x1fff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 147, },
+ { 182, 1, 1, 0x10650000000ull, 0x1fff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 148, },
+ { 183, 1, 1, 0x10470000000ull, 0x1fff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 149, },
+ { 184, 1, 1, 0x10670000000ull, 0x1fff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 150, },
+ { 185, 1, 1, 0x10520000000ull, 0x1fff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 762, },
+ { 186, 1, 1, 0x10720000000ull, 0x1fff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 763, },
+ { 187, 1, 1, 0x11520000000ull, 0x1fff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 764, },
+ { 188, 2, 1, 0xe850000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 2296, },
+ { 189, 2, 1, 0xea70000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 151, },
+ { 190, 2, 1, 0xe810000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 2297, },
+ { 191, 2, 1, 0xea30000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 152, },
+ { 192, 2, 1, 0xead0000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 1747, },
+ { 193, 2, 1, 0xe230000000ull, 0x1ff30000000ull, { 23, 24, 25, 41, 0 }, 0x0, 153, },
+ { 194, 2, 1, 0xe690000000ull, 0x1fff0000000ull, { 23, 25, 0, 0, 0 }, 0x0, 154, },
+ { 196, 3, 1, 0x21c0000000ull, 0x1eff8000000ull, { 23, 25, 24, 0, 0 }, 0x0, 1748, },
+ { 196, 3, 1, 0x20c0000000ull, 0x1eff8000000ull, { 23, 25, 48, 0, 0 }, 0x0, 1749, },
+ { 196, 3, 0, 0x2188000000ull, 0x1eff8000000ull, { 25, 48, 0, 0, 0 }, 0x0, 1771, },
+ { 197, 2, 1, 0xe8b0000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 155, },
+ { 198, 2, 1, 0xe240000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 156, },
+ { 198, 2, 1, 0xee50000000ull, 0x1fff0000000ull, { 23, 24, 38, 0, 0 }, 0x0, 157, },
+ { 199, 2, 1, 0xf040000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 158, },
+ { 199, 2, 1, 0xfc50000000ull, 0x1fff0000000ull, { 23, 24, 38, 0, 0 }, 0x0, 159, },
+ { 200, 1, 1, 0x10680000000ull, 0x1ffe0000000ull, { 23, 24, 40, 25, 0 }, 0x0, 160, },
+ { 201, 2, 1, 0xe220000000ull, 0x1fff0000000ull, { 23, 25, 24, 0, 0 }, 0x0, 161, },
+ { 201, 2, 1, 0xe630000000ull, 0x1fff0000000ull, { 23, 25, 42, 0, 0 }, 0x0, 162, },
+ { 202, 2, 1, 0xf020000000ull, 0x1fff0000000ull, { 23, 25, 24, 0, 0 }, 0x0, 163, },
+ { 202, 2, 1, 0xf430000000ull, 0x1fff0000000ull, { 23, 25, 42, 0, 0 }, 0x0, 164, },
+ { 203, 1, 1, 0x106c0000000ull, 0x1ffe0000000ull, { 23, 24, 40, 25, 0 }, 0x0, 165, },
+ { 204, 1, 1, 0x10420000000ull, 0x1fff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 166, },
+ { 205, 1, 1, 0x10620000000ull, 0x1fff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 167, },
+ { 206, 1, 1, 0x11420000000ull, 0x1fff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 168, },
+ { 207, 3, 0, 0x2048000000ull, 0x1eff8000000ull, { 25, 24, 0, 0, 0 }, 0x8, 942, },
+ { 207, 3, 0, 0x2050000000ull, 0x1eff8000000ull, { 25, 24, 0, 0, 0 }, 0xc, 863, },
+ { 207, 3, 0, 0x21a0000000ull, 0x1eff8000000ull, { 25, 0, 0, 0, 0 }, 0x8, 745, },
+ { 208, 3, 0, 0x2060000000ull, 0x1eff8000000ull, { 25, 24, 0, 0, 0 }, 0x8, 671, },
+ { 213, 4, 0, 0x40000000ull, 0x1e1f8000000ull, { 0, 0, 0, 0, 0 }, 0x22c, 169, },
+ { 214, 3, 0, 0x38000000ull, 0x1ee78000000ull, { 66, 0, 0, 0, 0 }, 0x8, 170, },
+ { 215, 3, 0, 0x28000000ull, 0x1ee78000000ull, { 66, 0, 0, 0, 0 }, 0x0, 171, },
+ { 224, 3, 1, 0xc708000000ull, 0x1ffc8000000ull, { 17, 24, 0, 0, 0 }, 0x0, 2207, },
+ { 225, 2, 1, 0xa600000000ull, 0x1ee04000000ull, { 23, 24, 44, 0, 0 }, 0x140, 172, },
+ { 225, 2, 1, 0xf240000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 173, },
+ { 226, 1, 1, 0x10080000000ull, 0x1efe0000000ull, { 23, 24, 39, 25, 0 }, 0x0, 174, },
+ { 227, 1, 1, 0x100c0000000ull, 0x1efe0000000ull, { 23, 24, 39, 25, 0 }, 0x0, 175, },
+ { 228, 2, 1, 0xa400000000ull, 0x1ee00002000ull, { 23, 25, 75, 0, 0 }, 0x140, 2303, },
+ { 228, 2, 1, 0xf220000000ull, 0x1fff0000000ull, { 23, 25, 24, 0, 0 }, 0x0, 177, },
+ { 229, 2, 1, 0xac00000000ull, 0x1ee00000000ull, { 23, 24, 25, 43, 0 }, 0x0, 178, },
+ { 234, 3, 0, 0x180000000ull, 0x1eff8000000ull, { 0, 0, 0, 0, 0 }, 0x0, 673, },
+ { 235, 3, 0, 0x30000000ull, 0x1ee78000000ull, { 66, 0, 0, 0, 0 }, 0x8, 179, },
+ { 237, 3, 1, 0x8c00000000ull, 0x1fff8000000ull, { 32, 24, 0, 0, 0 }, 0x0, 180, },
+ { 237, 3, 1, 0xac00000000ull, 0x1eff0000000ull, { 32, 24, 60, 0, 0 }, 0x0, 181, },
+ { 238, 3, 1, 0x8c40000000ull, 0x1fff8000000ull, { 32, 24, 0, 0, 0 }, 0x0, 182, },
+ { 238, 3, 1, 0xac40000000ull, 0x1eff0000000ull, { 32, 24, 60, 0, 0 }, 0x0, 183, },
+ { 239, 3, 1, 0x8c80000000ull, 0x1fff8000000ull, { 32, 24, 0, 0, 0 }, 0x0, 184, },
+ { 239, 3, 1, 0xac80000000ull, 0x1eff0000000ull, { 32, 24, 60, 0, 0 }, 0x0, 185, },
+ { 240, 3, 1, 0x8cc0000000ull, 0x1fff8000000ull, { 32, 24, 0, 0, 0 }, 0x0, 186, },
+ { 240, 3, 1, 0xacc0000000ull, 0x1eff0000000ull, { 32, 24, 60, 0, 0 }, 0x0, 187, },
+ { 241, 3, 1, 0xcec0000000ull, 0x1fff8000000ull, { 32, 18, 0, 0, 0 }, 0x0, 2210, },
+ { 241, 3, 1, 0xeec0000000ull, 0x1eff0000000ull, { 32, 18, 60, 0, 0 }, 0x0, 2211, },
+ { 242, 3, 1, 0xcc40000000ull, 0x1fff8000000ull, { 32, 18, 0, 0, 0 }, 0x0, 188, },
+ { 242, 3, 1, 0xec40000000ull, 0x1eff0000000ull, { 32, 18, 60, 0, 0 }, 0x0, 189, },
+ { 243, 3, 1, 0xccc0000000ull, 0x1fff8000000ull, { 32, 18, 0, 0, 0 }, 0x0, 190, },
+ { 243, 3, 1, 0xecc0000000ull, 0x1eff0000000ull, { 32, 18, 60, 0, 0 }, 0x0, 191, },
+ { 244, 3, 1, 0xcc00000000ull, 0x1fff8000000ull, { 32, 18, 0, 0, 0 }, 0x0, 192, },
+ { 244, 3, 1, 0xec00000000ull, 0x1eff0000000ull, { 32, 18, 60, 0, 0 }, 0x0, 193, },
+ { 245, 3, 1, 0xcc80000000ull, 0x1fff8000000ull, { 32, 18, 0, 0, 0 }, 0x0, 194, },
+ { 245, 3, 1, 0xec80000000ull, 0x1eff0000000ull, { 32, 18, 60, 0, 0 }, 0x0, 195, },
+ { 246, 1, 1, 0x10028000000ull, 0x1eff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 196, },
+ { 246, 1, 1, 0x10020000000ull, 0x1eff8000000ull, { 23, 24, 25, 3, 0 }, 0x0, 197, },
+ { 246, 1, 1, 0x10128000000ull, 0x1eff8000000ull, { 23, 54, 25, 0, 0 }, 0x0, 198, },
+ { 247, 3, 0, 0x20000000ull, 0x1ee78000000ull, { 66, 0, 0, 0, 0 }, 0x0, 199, },
+ { 248, 2, 1, 0xa0000000ull, 0x1eff8000000ull, { 23, 25, 0, 0, 0 }, 0x0, 200, },
+ { 249, 2, 1, 0xa8000000ull, 0x1eff8000000ull, { 23, 25, 0, 0, 0 }, 0x0, 201, },
+ { 250, 2, 1, 0xb0000000ull, 0x1eff8000000ull, { 23, 25, 0, 0, 0 }, 0x0, 202, },
+ { 251, 3, 0, 0x198000000ull, 0x1eff8000000ull, { 0, 0, 0, 0, 0 }, 0x0, 917, },
+ { 252, 3, 1, 0x20f8000000ull, 0x1eff8000000ull, { 23, 25, 0, 0, 0 }, 0x8, 203, },
+ { 253, 2, 2, 0xa000000000ull, 0x1fe00003000ull, { 21, 22, 25, 75, 0 }, 0x0, 2401, },
+ { 253, 2, 2, 0xa000000000ull, 0x1fe00003000ull, { 22, 21, 25, 75, 0 }, 0x40, 1672, },
+ { 254, 3, 1, 0x20d0000000ull, 0x1eff8000000ull, { 23, 25, 0, 0, 0 }, 0x0, 204, },
+ { 255, 2, 2, 0xa000002000ull, 0x1fe00003000ull, { 21, 22, 25, 0, 0 }, 0x0, 2403, },
+ { 255, 2, 2, 0xa000002000ull, 0x1fe00003000ull, { 22, 21, 25, 0, 0 }, 0x40, 1674, },
+ { 256, 3, 1, 0x20f0000000ull, 0x1eff8000000ull, { 23, 25, 0, 0, 0 }, 0x8, 205, },
+ { 258, 3, 1, 0x20d8000000ull, 0x1eff8000000ull, { 23, 25, 0, 0, 0 }, 0x0, 206, },
+ { 262, 2, 1, 0xe840000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 900, },
+ { 263, 2, 1, 0xea40000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 901, },
+ { 264, 2, 1, 0xf840000000ull, 0x1fff0000000ull, { 23, 24, 25, 0, 0 }, 0x0, 902, },
+ { 272, 3, 1, 0x8208000000ull, 0x1fff8000000ull, { 23, 32, 24, 0, 0 }, 0x0, 207, },
+ { 273, 3, 1, 0x8248000000ull, 0x1fff8000000ull, { 23, 32, 24, 0, 0 }, 0x0, 208, },
+ { 274, 3, 1, 0x8288000000ull, 0x1fff8000000ull, { 23, 32, 24, 0, 0 }, 0x0, 209, },
+ { 275, 3, 1, 0x82c8000000ull, 0x1fff8000000ull, { 23, 32, 24, 0, 0 }, 0x0, 210, },
+ { 277, 5, 1, 0x1d000000000ull, 0x1fc00000000ull, { 17, 19, 20, 18, 0 }, 0x0, 946, },
+ { 277, 5, 1, 0x1d000000000ull, 0x1fc00000000ull, { 17, 19, 20, 18, 0 }, 0x40, 986, },
+ { 278, 5, 1, 0x1d000000000ull, 0x1fc000fe000ull, { 17, 19, 20, 0, 0 }, 0x40, 947, },
+ { 279, 1, 1, 0x10078000000ull, 0x1eff8000000ull, { 23, 24, 25, 0, 0 }, 0x0, 211, },
+ { 279, 1, 1, 0x10178000000ull, 0x1eff8000000ull, { 23, 54, 25, 0, 0 }, 0x0, 212, },
+ { 282, 2, 1, 0x80000000ull, 0x1eff8000000ull, { 23, 25, 0, 0, 0 }, 0x0, 213, },
+ { 283, 2, 1, 0x88000000ull, 0x1eff8000000ull, { 23, 25, 0, 0, 0 }, 0x0, 214, },
+ { 284, 2, 1, 0x90000000ull, 0x1eff8000000ull, { 23, 25, 0, 0, 0 }, 0x0, 215, },
+};
+
+static const char dis_table[] = {
+0xa0, 0xc2, 0x60, 0xa0, 0x2c, 0x80, 0xa0, 0x2a, 0x80, 0xa0, 0x1a, 0x70,
+0x98, 0xb0, 0x01, 0x40, 0x90, 0x50, 0x90, 0x28, 0x24, 0x30, 0xd0, 0x24,
+0x30, 0xc8, 0x90, 0x28, 0x24, 0x30, 0xc0, 0x24, 0x30, 0xb8, 0x90, 0x50,
+0x90, 0x28, 0x24, 0x30, 0xa8, 0x24, 0x30, 0xa0, 0x90, 0x28, 0x24, 0x30,
+0x98, 0x24, 0x30, 0x90, 0xa8, 0x0b, 0x28, 0x15, 0x00, 0x97, 0x00, 0x95,
+0xa8, 0x9a, 0x98, 0x05, 0x18, 0x90, 0xf8, 0x90, 0x80, 0x90, 0x40, 0x80,
+0xa4, 0x21, 0x18, 0x34, 0x26, 0x80, 0xa4, 0x2e, 0x48, 0x35, 0xce, 0x90,
+0x50, 0x90, 0x28, 0x80, 0x35, 0xc4, 0x80, 0x34, 0x0a, 0x81, 0x33, 0xa6,
+0x90, 0xe0, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x20, 0x30, 0x34, 0x07, 0xa4,
+0x1d, 0x28, 0x34, 0x04, 0x90, 0x38, 0xa4, 0x30, 0x48, 0x36, 0x0f, 0xa4,
+0x2f, 0xf0, 0x36, 0x03, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x2e, 0xc8, 0x35,
+0xe4, 0xa4, 0x2e, 0xa0, 0x35, 0xdf, 0x80, 0xa4, 0x20, 0x10, 0x34, 0x03,
+0x92, 0x18, 0x91, 0xc0, 0x80, 0x91, 0x80, 0x90, 0xf8, 0xdb, 0x84, 0x60,
+0xea, 0x40, 0xc0, 0xc0, 0x80, 0xa4, 0x39, 0xf8, 0x8c, 0x3b, 0x58, 0x84,
+0x37, 0x75, 0xc0, 0xc0, 0x80, 0xa4, 0x39, 0xe8, 0x8c, 0x3b, 0x38, 0x84,
+0x37, 0x73, 0xd3, 0x82, 0x40, 0x50, 0xc0, 0xc0, 0x81, 0x37, 0x27, 0x50,
+0xc0, 0xc0, 0x81, 0x37, 0x25, 0xa4, 0x1d, 0x38, 0x33, 0xa8, 0x80, 0x90,
+0x28, 0x80, 0x33, 0xa4, 0x80, 0x34, 0x0c, 0x81, 0x90, 0x38, 0xa4, 0x20,
+0x98, 0x34, 0x0f, 0xa4, 0x20, 0x68, 0x34, 0x09, 0xc0, 0x40, 0x10, 0x10,
+0x90, 0x38, 0xa4, 0x1d, 0x10, 0x33, 0xa3, 0xa4, 0x1d, 0x00, 0x33, 0xa1,
+0x18, 0x24, 0x21, 0x10, 0x83, 0x90, 0xa8, 0xd3, 0x82, 0xc0, 0xc0, 0xc0,
+0x80, 0xa4, 0x39, 0xc8, 0x37, 0x5f, 0xc0, 0xc0, 0x80, 0xa4, 0x39, 0xb8,
+0x37, 0x5b, 0xd3, 0x82, 0x40, 0x50, 0xc0, 0xc0, 0x81, 0x37, 0x21, 0x50,
+0xc0, 0xc0, 0x81, 0x37, 0x1f, 0x92, 0xb8, 0x99, 0x84, 0x20, 0x88, 0x90,
+0x78, 0x90, 0x50, 0x10, 0x10, 0x80, 0xa4, 0x2e, 0x40, 0x35, 0xcd, 0x82,
+0x35, 0xc3, 0x90, 0x80, 0x10, 0x10, 0x90, 0x38, 0xa4, 0x30, 0x40, 0x36,
+0x0e, 0xa4, 0x2f, 0xe8, 0x36, 0x02, 0x80, 0x90, 0x38, 0xa4, 0x2e, 0xc0,
+0x35, 0xe3, 0xa4, 0x2e, 0x98, 0x35, 0xde, 0x83, 0x90, 0xa8, 0xd3, 0x82,
+0xc0, 0xc0, 0xc0, 0x80, 0xa4, 0x39, 0x98, 0x37, 0x53, 0xc0, 0xc0, 0x80,
+0xa4, 0x39, 0x88, 0x37, 0x4f, 0xd3, 0x82, 0x40, 0x50, 0xc0, 0xc0, 0x81,
+0x37, 0x1b, 0x50, 0xc0, 0xc0, 0x81, 0x37, 0x19, 0x18, 0x24, 0x20, 0x90,
+0x83, 0x90, 0xa8, 0xd3, 0x82, 0xc0, 0xc0, 0xc0, 0x80, 0xa4, 0x39, 0x68,
+0x37, 0x47, 0xc0, 0xc0, 0x80, 0xa4, 0x39, 0x58, 0x37, 0x43, 0xd3, 0x82,
+0x40, 0x50, 0xc0, 0xc0, 0x81, 0x37, 0x15, 0x50, 0xc0, 0xc0, 0x81, 0x37,
+0x13, 0x94, 0x50, 0x92, 0xf8, 0x99, 0x84, 0x1d, 0x68, 0x90, 0x78, 0x90,
+0x50, 0x10, 0x10, 0x80, 0xa4, 0x2e, 0x38, 0x35, 0xcc, 0x82, 0x35, 0xc2,
+0x90, 0x80, 0x10, 0x10, 0x90, 0x38, 0xa4, 0x30, 0x38, 0x36, 0x0d, 0xa4,
+0x2f, 0xe0, 0x36, 0x01, 0x80, 0x90, 0x38, 0xa4, 0x2e, 0xb8, 0x35, 0xe2,
+0xa4, 0x2e, 0x90, 0x35, 0xdd, 0x83, 0x90, 0xe8, 0xd3, 0x83, 0xc0, 0xc0,
+0xc0, 0x80, 0xa4, 0x3a, 0x08, 0x8c, 0x3b, 0x78, 0x84, 0x37, 0x77, 0xc0,
+0xc0, 0x80, 0xa4, 0x39, 0xf0, 0x8c, 0x3b, 0x48, 0x84, 0x37, 0x74, 0xd3,
+0x82, 0x40, 0x50, 0xc0, 0xc0, 0x81, 0x37, 0x29, 0x50, 0xc0, 0xc0, 0x81,
+0x37, 0x26, 0x18, 0x24, 0x1d, 0x60, 0x83, 0x90, 0xa8, 0xd3, 0x82, 0xc0,
+0xc0, 0xc0, 0x80, 0xa4, 0x39, 0xd8, 0x37, 0x63, 0xc0, 0xc0, 0x80, 0xa4,
+0x39, 0xc0, 0x37, 0x5d, 0xd3, 0x82, 0x40, 0x50, 0xc0, 0xc0, 0x81, 0x37,
+0x23, 0x50, 0xc0, 0xc0, 0x81, 0x37, 0x20, 0x92, 0xb8, 0x99, 0x84, 0x1d,
+0x58, 0x90, 0x78, 0x90, 0x50, 0x10, 0x10, 0x80, 0xa4, 0x2e, 0x30, 0x35,
+0xcb, 0x82, 0x35, 0xc1, 0x90, 0x80, 0x10, 0x10, 0x90, 0x38, 0xa4, 0x30,
+0x30, 0x36, 0x0c, 0xa4, 0x2f, 0xd8, 0x36, 0x00, 0x80, 0x90, 0x38, 0xa4,
+0x2e, 0xb0, 0x35, 0xe1, 0xa4, 0x2e, 0x88, 0x35, 0xdc, 0x83, 0x90, 0xa8,
+0xd3, 0x82, 0xc0, 0xc0, 0xc0, 0x80, 0xa4, 0x39, 0xa8, 0x37, 0x57, 0xc0,
+0xc0, 0x80, 0xa4, 0x39, 0x90, 0x37, 0x51, 0xd3, 0x82, 0x40, 0x50, 0xc0,
+0xc0, 0x81, 0x37, 0x1d, 0x50, 0xc0, 0xc0, 0x81, 0x37, 0x1a, 0x18, 0x20,
+0x01, 0x48, 0x83, 0x90, 0xa8, 0xd3, 0x82, 0xc0, 0xc0, 0xc0, 0x80, 0xa4,
+0x39, 0x78, 0x37, 0x4b, 0xc0, 0xc0, 0x80, 0xa4, 0x39, 0x60, 0x37, 0x45,
+0xd3, 0x82, 0x40, 0x50, 0xc0, 0xc0, 0x81, 0x37, 0x17, 0x50, 0xc0, 0xc0,
+0x81, 0x37, 0x14, 0xda, 0x06, 0xe0, 0xea, 0x80, 0x90, 0x60, 0x90, 0x38,
+0xa4, 0x21, 0x00, 0x34, 0x1e, 0x80, 0x34, 0x1b, 0x90, 0x38, 0xa4, 0x20,
+0xa8, 0x34, 0x19, 0x80, 0x34, 0x16, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x20,
+0xe8, 0x34, 0x1f, 0x80, 0x34, 0x1c, 0x90, 0x38, 0xa4, 0x20, 0xc0, 0x34,
+0x1a, 0x80, 0x34, 0x17, 0xc8, 0x40, 0x18, 0x00, 0x91, 0x38, 0x90, 0x40,
+0x82, 0xa4, 0x2d, 0xf8, 0x35, 0xc0, 0x90, 0xc0, 0x80, 0x90, 0x90, 0x90,
+0x48, 0xc9, 0xe1, 0x7e, 0x40, 0x85, 0x35, 0xf8, 0xc9, 0xe1, 0x7d, 0x80,
+0x85, 0x35, 0xf5, 0x80, 0x35, 0xf4, 0x10, 0x10, 0x81, 0x35, 0xd0, 0x90,
+0xa8, 0x10, 0x10, 0x90, 0x28, 0x81, 0x35, 0xee, 0x90, 0x38, 0xa4, 0x2f,
+0x48, 0x35, 0xea, 0xa4, 0x2f, 0x38, 0x35, 0xe8, 0x90, 0x70, 0x10, 0x10,
+0x90, 0x38, 0xa4, 0x2f, 0x60, 0x35, 0xed, 0x80, 0x35, 0xeb, 0x90, 0x60,
+0x90, 0x28, 0x24, 0x2f, 0x98, 0xa4, 0x2f, 0x88, 0x35, 0xf2, 0x80, 0xa4,
+0x2f, 0x78, 0x35, 0xf0, 0x80, 0x90, 0xf8, 0x90, 0x90, 0x90, 0x50, 0x90,
+0x28, 0x80, 0x37, 0x0b, 0x80, 0x37, 0x12, 0x80, 0xa4, 0x38, 0x80, 0x37,
+0x11, 0x90, 0x28, 0x81, 0x37, 0x0f, 0x80, 0xa4, 0x38, 0x68, 0x37, 0x0e,
+0x83, 0x37, 0x0c, 0x98, 0xb0, 0x01, 0x40, 0x90, 0x50, 0x90, 0x28, 0x24,
+0x2d, 0xe8, 0x24, 0x2d, 0xe0, 0x90, 0x28, 0x24, 0x2d, 0xd8, 0x24, 0x2d,
+0xd0, 0x90, 0x50, 0x90, 0x28, 0x24, 0x2d, 0xc0, 0x24, 0x2d, 0xb8, 0x90,
+0x28, 0x24, 0x2d, 0xb0, 0x24, 0x2d, 0xa8, 0xa8, 0x08, 0xe0, 0x0d, 0xe0,
+0x96, 0x38, 0x95, 0xe8, 0x9b, 0x48, 0x05, 0xa8, 0x91, 0xa0, 0x90, 0xd0,
+0x90, 0x70, 0x90, 0x38, 0xa4, 0x1c, 0x88, 0x33, 0x92, 0xa4, 0x1c, 0x78,
+0x33, 0x90, 0x90, 0x38, 0xa4, 0x1c, 0x68, 0x33, 0x8e, 0x80, 0x33, 0x8c,
+0x90, 0x60, 0x90, 0x28, 0x24, 0x1c, 0x28, 0xa4, 0x1c, 0x18, 0x33, 0x84,
+0x90, 0x38, 0xa4, 0x1c, 0x08, 0x33, 0x82, 0xa4, 0x1c, 0x50, 0x33, 0x8b,
+0x90, 0xe0, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x1c, 0x40, 0x33, 0x89, 0xa4,
+0x1c, 0x30, 0x33, 0x87, 0x90, 0x38, 0xa4, 0x2d, 0x60, 0x35, 0xb2, 0xa4,
+0x2d, 0x00, 0x35, 0xa6, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x2a, 0xd8, 0x35,
+0x67, 0xa4, 0x2a, 0xa8, 0x35, 0x61, 0x10, 0x10, 0xa4, 0x1b, 0xf8, 0x33,
+0x80, 0x91, 0x50, 0x90, 0x90, 0x90, 0x50, 0x90, 0x28, 0x24, 0x1c, 0xb8,
+0x80, 0x33, 0x9e, 0x80, 0xa4, 0x1c, 0xc0, 0x33, 0x9c, 0x90, 0x50, 0x90,
+0x28, 0x24, 0x1c, 0xc8, 0x80, 0x33, 0x9f, 0x90, 0x38, 0xa4, 0x1c, 0xd0,
+0x33, 0x9d, 0xa4, 0x1c, 0x98, 0x33, 0x94, 0x90, 0xe0, 0x90, 0x70, 0x90,
+0x38, 0xa4, 0x2c, 0xa0, 0x35, 0x9a, 0xa4, 0x2c, 0x40, 0x35, 0x8e, 0x90,
+0x38, 0xa4, 0x2b, 0xe8, 0x35, 0x82, 0xa4, 0x2b, 0x98, 0x35, 0x78, 0x81,
+0xa4, 0x1c, 0xa8, 0x33, 0x96, 0xe4, 0xe1, 0xc1, 0x40, 0x37, 0x07, 0xed,
+0x21, 0xbf, 0xe0, 0xdf, 0x80, 0x37, 0x01, 0x92, 0x40, 0x99, 0x18, 0x02,
+0x00, 0x10, 0x10, 0x90, 0x80, 0x10, 0x10, 0x90, 0x38, 0xa4, 0x2d, 0x58,
+0x35, 0xb1, 0xa4, 0x2c, 0xf8, 0x35, 0xa5, 0x80, 0x90, 0x38, 0xa4, 0x2a,
+0xd0, 0x35, 0x66, 0xa4, 0x2a, 0xa0, 0x35, 0x60, 0x10, 0x10, 0x80, 0x90,
+0x70, 0x90, 0x38, 0xa4, 0x2c, 0x98, 0x35, 0x99, 0xa4, 0x2c, 0x38, 0x35,
+0x8d, 0x90, 0x38, 0xa4, 0x2b, 0xe0, 0x35, 0x81, 0xa4, 0x2b, 0x90, 0x35,
+0x77, 0xe4, 0xe1, 0xbe, 0x40, 0x36, 0xfb, 0xed, 0x21, 0xbc, 0xe0, 0xdf,
+0x40, 0x36, 0xf5, 0x92, 0x80, 0x92, 0x40, 0x99, 0x18, 0x02, 0x00, 0x10,
+0x10, 0x90, 0x80, 0x10, 0x10, 0x90, 0x38, 0xa4, 0x2d, 0x50, 0x35, 0xb0,
+0xa4, 0x2c, 0xf0, 0x35, 0xa4, 0x80, 0x90, 0x38, 0xa4, 0x2a, 0xc8, 0x35,
+0x65, 0xa4, 0x2a, 0x98, 0x35, 0x5f, 0x10, 0x10, 0x80, 0x90, 0x70, 0x90,
+0x38, 0xa4, 0x2c, 0x90, 0x35, 0x98, 0xa4, 0x2c, 0x30, 0x35, 0x8c, 0x90,
+0x38, 0xa4, 0x2b, 0xd8, 0x35, 0x80, 0xa4, 0x2b, 0x88, 0x35, 0x76, 0xe4,
+0xe1, 0xc1, 0x80, 0x37, 0x09, 0xe5, 0x21, 0xc0, 0x00, 0x37, 0x03, 0x92,
+0x50, 0x99, 0x18, 0x02, 0x00, 0x10, 0x10, 0x90, 0x80, 0x10, 0x10, 0x90,
+0x38, 0xa4, 0x2d, 0x48, 0x35, 0xaf, 0xa4, 0x2c, 0xe8, 0x35, 0xa3, 0x80,
+0x90, 0x38, 0xa4, 0x2a, 0xc0, 0x35, 0x64, 0xa4, 0x2a, 0x90, 0x35, 0x5e,
+0x10, 0x10, 0x80, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x2c, 0x88, 0x35, 0x97,
+0xa4, 0x2c, 0x28, 0x35, 0x8b, 0x90, 0x38, 0xa4, 0x2b, 0xd0, 0x35, 0x7f,
+0xa4, 0x2b, 0x80, 0x35, 0x75, 0xec, 0xe1, 0xbe, 0xa0, 0xe6, 0xc0, 0x36,
+0xfd, 0xe5, 0x21, 0xbd, 0x00, 0x36, 0xf7, 0xc0, 0x40, 0x80, 0x10, 0x10,
+0x81, 0x90, 0x90, 0x90, 0x48, 0xc9, 0xe1, 0x5a, 0xc0, 0x85, 0x35, 0x6f,
+0xc9, 0xe1, 0x5b, 0x40, 0x85, 0x35, 0x6c, 0x80, 0x35, 0x6a, 0x80, 0xd8,
+0x47, 0x80, 0x0d, 0xc0, 0xc0, 0x80, 0x10, 0x10, 0x82, 0x90, 0x58, 0xd5,
+0x81, 0x80, 0x80, 0x36, 0xf1, 0x80, 0x36, 0xef, 0xd5, 0x81, 0x80, 0x80,
+0x36, 0xed, 0x80, 0x36, 0xeb, 0xc0, 0x80, 0x10, 0x10, 0x82, 0x90, 0x58,
+0xd5, 0x81, 0x80, 0x80, 0x36, 0xf2, 0x80, 0x36, 0xf0, 0xd5, 0x81, 0x80,
+0x80, 0x36, 0xee, 0x80, 0x36, 0xec, 0xc0, 0x80, 0x84, 0x36, 0xea, 0xa0,
+0x56, 0x50, 0xa0, 0x40, 0x70, 0xa8, 0x1d, 0x40, 0x33, 0x18, 0xa0, 0x12,
+0x38, 0xa0, 0x0b, 0x48, 0x96, 0x00, 0x9a, 0xf0, 0x05, 0xc0, 0x91, 0x70,
+0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x14, 0x50, 0x33, 0x7c, 0xa4,
+0x14, 0x60, 0x33, 0x7b, 0x10, 0x10, 0xa4, 0x14, 0x58, 0x33, 0x7a, 0x90,
+0x70, 0x90, 0x38, 0xa4, 0x14, 0x20, 0x33, 0x61, 0xa4, 0x14, 0x30, 0x33,
+0x60, 0x10, 0x10, 0xa4, 0x14, 0x28, 0x33, 0x5f, 0x90, 0xb8, 0x90, 0x70,
+0x90, 0x38, 0xa4, 0x13, 0xf0, 0x33, 0x46, 0xa4, 0x14, 0x00, 0x33, 0x45,
+0x10, 0x10, 0xa4, 0x13, 0xf8, 0x33, 0x44, 0x90, 0x70, 0x90, 0x38, 0xa4,
+0x13, 0xc0, 0x33, 0x2b, 0xa4, 0x13, 0xd0, 0x33, 0x2a, 0x10, 0x10, 0xa4,
+0x13, 0xc8, 0x33, 0x29, 0x91, 0x70, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38,
+0xa4, 0x14, 0x38, 0x33, 0x77, 0xa4, 0x14, 0x48, 0x33, 0x79, 0x10, 0x10,
+0xa4, 0x14, 0x40, 0x33, 0x78, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x14, 0x08,
+0x33, 0x5c, 0xa4, 0x14, 0x18, 0x33, 0x5e, 0x10, 0x10, 0xa4, 0x14, 0x10,
+0x33, 0x5d, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x13, 0xd8, 0x33,
+0x41, 0xa4, 0x13, 0xe8, 0x33, 0x43, 0x10, 0x10, 0xa4, 0x13, 0xe0, 0x33,
+0x42, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x13, 0xa8, 0x33, 0x26, 0xa4, 0x13,
+0xb8, 0x33, 0x28, 0x10, 0x10, 0xa4, 0x13, 0xb0, 0x33, 0x27, 0xe4, 0xe1,
+0x51, 0x00, 0x35, 0x4e, 0x9a, 0xf0, 0x05, 0x00, 0x91, 0x70, 0x90, 0xb8,
+0x90, 0x70, 0x90, 0x38, 0xa4, 0x13, 0xa0, 0x33, 0x74, 0xa4, 0x13, 0x98,
+0x33, 0x76, 0x10, 0x10, 0xa4, 0x13, 0x90, 0x33, 0x75, 0x90, 0x70, 0x90,
+0x38, 0xa4, 0x13, 0x88, 0x33, 0x59, 0xa4, 0x13, 0x80, 0x33, 0x5b, 0x10,
+0x10, 0xa4, 0x13, 0x78, 0x33, 0x5a, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38,
+0xa4, 0x13, 0x70, 0x33, 0x3e, 0xa4, 0x13, 0x68, 0x33, 0x40, 0x10, 0x10,
+0xa4, 0x13, 0x60, 0x33, 0x3f, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x13, 0x58,
+0x33, 0x23, 0xa4, 0x13, 0x50, 0x33, 0x25, 0x10, 0x10, 0xa4, 0x13, 0x48,
+0x33, 0x24, 0x91, 0x10, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33,
+0x71, 0x80, 0x33, 0x73, 0x10, 0x10, 0x80, 0x33, 0x72, 0x90, 0x50, 0x90,
+0x28, 0x80, 0x33, 0x56, 0x80, 0x33, 0x58, 0x10, 0x10, 0x80, 0x33, 0x57,
+0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x3b, 0x80, 0x33, 0x3d,
+0x10, 0x10, 0x80, 0x33, 0x3c, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x20,
+0x80, 0x33, 0x22, 0x10, 0x10, 0x80, 0x33, 0x21, 0xe4, 0xe1, 0x3e, 0x80,
+0x35, 0x0e, 0x95, 0x40, 0x9a, 0x90, 0x05, 0x00, 0x91, 0x10, 0x90, 0x88,
+0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x6e, 0x80, 0x33, 0x70, 0x10, 0x10,
+0x80, 0x33, 0x6f, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x53, 0x80, 0x33,
+0x55, 0x10, 0x10, 0x80, 0x33, 0x54, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38,
+0xa4, 0x13, 0x30, 0x33, 0x38, 0xa4, 0x13, 0x40, 0x33, 0x3a, 0x10, 0x10,
+0xa4, 0x13, 0x38, 0x33, 0x39, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x13, 0x00,
+0x33, 0x1d, 0xa4, 0x13, 0x10, 0x33, 0x1f, 0x10, 0x10, 0xa4, 0x13, 0x08,
+0x33, 0x1e, 0x91, 0x10, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33,
+0x6b, 0x80, 0x33, 0x6d, 0x10, 0x10, 0x80, 0x33, 0x6c, 0x90, 0x50, 0x90,
+0x28, 0x80, 0x33, 0x50, 0x80, 0x33, 0x52, 0x10, 0x10, 0x80, 0x33, 0x51,
+0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x13, 0x18, 0x33, 0x35, 0xa4,
+0x13, 0x28, 0x33, 0x37, 0x10, 0x10, 0xa4, 0x13, 0x20, 0x33, 0x36, 0x90,
+0x70, 0x90, 0x38, 0xa4, 0x12, 0xe8, 0x33, 0x1a, 0xa4, 0x12, 0xf8, 0x33,
+0x1c, 0x10, 0x10, 0xa4, 0x12, 0xf0, 0x33, 0x1b, 0xe4, 0xe1, 0x50, 0x80,
+0x35, 0x4c, 0x98, 0xb8, 0x01, 0x68, 0x10, 0x10, 0x10, 0x10, 0x90, 0x50,
+0x90, 0x28, 0x80, 0x33, 0x17, 0x80, 0x33, 0x19, 0x10, 0x10, 0x80, 0x33,
+0x18, 0x90, 0x60, 0x90, 0x30, 0x60, 0xa0, 0x97, 0x00, 0x60, 0xa0, 0x96,
+0xc0, 0x90, 0x30, 0x60, 0xa0, 0x96, 0x80, 0x60, 0xa0, 0x96, 0x40, 0xe4,
+0xe1, 0x3d, 0x80, 0x35, 0x0a, 0x96, 0xe8, 0x94, 0x80, 0x9a, 0x30, 0x04,
+0x40, 0x91, 0x10, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x65,
+0x80, 0x33, 0x6a, 0x10, 0x10, 0x80, 0x33, 0x69, 0x90, 0x50, 0x90, 0x28,
+0x80, 0x33, 0x4a, 0x80, 0x33, 0x4f, 0x10, 0x10, 0x80, 0x33, 0x4e, 0x90,
+0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x2f, 0x80, 0x33, 0x34, 0x10,
+0x10, 0x80, 0x33, 0x33, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x11, 0x80,
+0x33, 0x16, 0x10, 0x10, 0x80, 0x33, 0x15, 0x91, 0x10, 0x90, 0x88, 0x90,
+0x50, 0x90, 0x28, 0x80, 0x33, 0x62, 0x80, 0x33, 0x64, 0x10, 0x10, 0x80,
+0x33, 0x63, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x47, 0x80, 0x33, 0x49,
+0x10, 0x10, 0x80, 0x33, 0x48, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80,
+0x33, 0x2c, 0x80, 0x33, 0x2e, 0x10, 0x10, 0x80, 0x33, 0x2d, 0x90, 0x50,
+0x90, 0x28, 0x80, 0x33, 0x0e, 0x80, 0x33, 0x10, 0x10, 0x10, 0x80, 0x33,
+0x0f, 0xe4, 0xe1, 0x50, 0x00, 0x35, 0x4a, 0x88, 0x02, 0x28, 0x91, 0x10,
+0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x66, 0x80, 0x33, 0x68,
+0x10, 0x10, 0x80, 0x33, 0x67, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x4b,
+0x80, 0x33, 0x4d, 0x10, 0x10, 0x80, 0x33, 0x4c, 0x90, 0x88, 0x90, 0x50,
+0x90, 0x28, 0x80, 0x33, 0x30, 0x80, 0x33, 0x32, 0x10, 0x10, 0x80, 0x33,
+0x31, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x12, 0x80, 0x33, 0x14, 0x10,
+0x10, 0x80, 0x33, 0x13, 0xe4, 0xe1, 0x3c, 0x80, 0x35, 0x06, 0x93, 0x40,
+0x99, 0x90, 0x03, 0x00, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x28, 0x81, 0x32,
+0x9e, 0x10, 0x10, 0x80, 0x32, 0x9d, 0x90, 0x28, 0x81, 0x32, 0x9a, 0x10,
+0x10, 0x80, 0x32, 0x99, 0x90, 0x60, 0x90, 0x28, 0x81, 0x32, 0x96, 0x10,
+0x10, 0x80, 0x32, 0x95, 0x90, 0x28, 0x81, 0x32, 0x92, 0x10, 0x10, 0x80,
+0x32, 0x91, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x28, 0x81, 0x32, 0x9b, 0x10,
+0x10, 0x80, 0x32, 0x9c, 0x90, 0x28, 0x81, 0x32, 0x97, 0x10, 0x10, 0x80,
+0x32, 0x98, 0x90, 0x60, 0x90, 0x28, 0x81, 0x32, 0x93, 0x10, 0x10, 0x80,
+0x32, 0x94, 0x90, 0x28, 0x81, 0x32, 0x8f, 0x10, 0x10, 0x80, 0x32, 0x90,
+0xe4, 0xe1, 0x4f, 0x80, 0x35, 0x48, 0x88, 0x00, 0x88, 0x10, 0x10, 0x10,
+0x10, 0x90, 0x28, 0x81, 0x32, 0x8d, 0x10, 0x10, 0x80, 0x32, 0x8e, 0xe4,
+0xe1, 0x3b, 0x80, 0x35, 0x02, 0xa0, 0x0e, 0x80, 0xa0, 0x09, 0x08, 0x94,
+0x80, 0x9a, 0x30, 0x04, 0x40, 0x91, 0x10, 0x90, 0x88, 0x90, 0x50, 0x90,
+0x28, 0x80, 0x33, 0x0d, 0x80, 0x33, 0x0c, 0x10, 0x10, 0x80, 0x33, 0x0b,
+0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xf2, 0x80, 0x32, 0xf1, 0x10, 0x10,
+0x80, 0x32, 0xf0, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xd7,
+0x80, 0x32, 0xd6, 0x10, 0x10, 0x80, 0x32, 0xd5, 0x90, 0x50, 0x90, 0x28,
+0x80, 0x32, 0xbc, 0x80, 0x32, 0xbb, 0x10, 0x10, 0x80, 0x32, 0xba, 0x91,
+0x10, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x08, 0x80, 0x33,
+0x0a, 0x10, 0x10, 0x80, 0x33, 0x09, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32,
+0xed, 0x80, 0x32, 0xef, 0x10, 0x10, 0x80, 0x32, 0xee, 0x90, 0x88, 0x90,
+0x50, 0x90, 0x28, 0x80, 0x32, 0xd2, 0x80, 0x32, 0xd4, 0x10, 0x10, 0x80,
+0x32, 0xd3, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xb7, 0x80, 0x32, 0xb9,
+0x10, 0x10, 0x80, 0x32, 0xb8, 0xe4, 0xe1, 0x48, 0x80, 0x35, 0x36, 0x9a,
+0x30, 0x04, 0x40, 0x91, 0x10, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80,
+0x33, 0x05, 0x80, 0x33, 0x07, 0x10, 0x10, 0x80, 0x33, 0x06, 0x90, 0x50,
+0x90, 0x28, 0x80, 0x32, 0xea, 0x80, 0x32, 0xec, 0x10, 0x10, 0x80, 0x32,
+0xeb, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xcf, 0x80, 0x32,
+0xd1, 0x10, 0x10, 0x80, 0x32, 0xd0, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32,
+0xb4, 0x80, 0x32, 0xb6, 0x10, 0x10, 0x80, 0x32, 0xb5, 0x91, 0x10, 0x90,
+0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x02, 0x80, 0x33, 0x04, 0x10,
+0x10, 0x80, 0x33, 0x03, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xe7, 0x80,
+0x32, 0xe9, 0x10, 0x10, 0x80, 0x32, 0xe8, 0x90, 0x88, 0x90, 0x50, 0x90,
+0x28, 0x80, 0x32, 0xcc, 0x80, 0x32, 0xce, 0x10, 0x10, 0x80, 0x32, 0xcd,
+0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xb1, 0x80, 0x32, 0xb3, 0x10, 0x10,
+0x80, 0x32, 0xb2, 0xe4, 0xe1, 0x38, 0x00, 0x34, 0xea, 0x94, 0x80, 0x9a,
+0x30, 0x04, 0x40, 0x91, 0x10, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80,
+0x32, 0xff, 0x80, 0x33, 0x01, 0x10, 0x10, 0x80, 0x33, 0x00, 0x90, 0x50,
+0x90, 0x28, 0x80, 0x32, 0xe4, 0x80, 0x32, 0xe6, 0x10, 0x10, 0x80, 0x32,
+0xe5, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xc9, 0x80, 0x32,
+0xcb, 0x10, 0x10, 0x80, 0x32, 0xca, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32,
+0xae, 0x80, 0x32, 0xb0, 0x10, 0x10, 0x80, 0x32, 0xaf, 0x91, 0x10, 0x90,
+0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xfc, 0x80, 0x32, 0xfe, 0x10,
+0x10, 0x80, 0x32, 0xfd, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xe1, 0x80,
+0x32, 0xe3, 0x10, 0x10, 0x80, 0x32, 0xe2, 0x90, 0x88, 0x90, 0x50, 0x90,
+0x28, 0x80, 0x32, 0xc6, 0x80, 0x32, 0xc8, 0x10, 0x10, 0x80, 0x32, 0xc7,
+0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xab, 0x80, 0x32, 0xad, 0x10, 0x10,
+0x80, 0x32, 0xac, 0xe4, 0xe1, 0x47, 0x80, 0x35, 0x32, 0x88, 0x00, 0xb0,
+0x10, 0x10, 0x10, 0x10, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xa8, 0x80,
+0x32, 0xaa, 0x10, 0x10, 0x80, 0x32, 0xa9, 0xe4, 0xe1, 0x37, 0x80, 0x34,
+0xe8, 0x96, 0xe8, 0x94, 0x80, 0x9a, 0x30, 0x04, 0x40, 0x91, 0x10, 0x90,
+0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xf6, 0x80, 0x32, 0xfb, 0x10,
+0x10, 0x80, 0x32, 0xfa, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xdb, 0x80,
+0x32, 0xe0, 0x10, 0x10, 0x80, 0x32, 0xdf, 0x90, 0x88, 0x90, 0x50, 0x90,
+0x28, 0x80, 0x32, 0xc0, 0x80, 0x32, 0xc5, 0x10, 0x10, 0x80, 0x32, 0xc4,
+0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xa2, 0x80, 0x32, 0xa7, 0x10, 0x10,
+0x80, 0x32, 0xa6, 0x91, 0x10, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80,
+0x32, 0xf3, 0x80, 0x32, 0xf5, 0x10, 0x10, 0x80, 0x32, 0xf4, 0x90, 0x50,
+0x90, 0x28, 0x80, 0x32, 0xd8, 0x80, 0x32, 0xda, 0x10, 0x10, 0x80, 0x32,
+0xd9, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xbd, 0x80, 0x32,
+0xbf, 0x10, 0x10, 0x80, 0x32, 0xbe, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32,
+0x9f, 0x80, 0x32, 0xa1, 0x10, 0x10, 0x80, 0x32, 0xa0, 0xe4, 0xe1, 0x46,
+0x80, 0x35, 0x2e, 0x88, 0x02, 0x28, 0x91, 0x10, 0x90, 0x88, 0x90, 0x50,
+0x90, 0x28, 0x80, 0x32, 0xf7, 0x80, 0x32, 0xf9, 0x10, 0x10, 0x80, 0x32,
+0xf8, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xdc, 0x80, 0x32, 0xde, 0x10,
+0x10, 0x80, 0x32, 0xdd, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32,
+0xc1, 0x80, 0x32, 0xc3, 0x10, 0x10, 0x80, 0x32, 0xc2, 0x90, 0x50, 0x90,
+0x28, 0x80, 0x32, 0xa3, 0x80, 0x32, 0xa5, 0x10, 0x10, 0x80, 0x32, 0xa4,
+0xe4, 0xe1, 0x37, 0x00, 0x34, 0xe6, 0x90, 0x40, 0xe5, 0x21, 0x45, 0x80,
+0x35, 0x2a, 0xe5, 0x21, 0x36, 0x80, 0x34, 0xe4, 0x9e, 0xb4, 0x20, 0x08,
+0x93, 0x70, 0x91, 0xd8, 0xd5, 0x07, 0x80, 0xd0, 0xc4, 0x40, 0x90, 0x48,
+0x80, 0x8c, 0x36, 0xe0, 0x84, 0x36, 0xe6, 0xa4, 0x34, 0xc0, 0x36, 0xb0,
+0x90, 0x28, 0x24, 0x34, 0x00, 0xa4, 0x32, 0x80, 0x36, 0x68, 0xd0, 0xc4,
+0x40, 0x90, 0x48, 0x80, 0x8c, 0x36, 0xc0, 0x84, 0x36, 0xe4, 0xa4, 0x34,
+0xb0, 0x36, 0xae, 0x90, 0x28, 0x24, 0x33, 0xf0, 0xa4, 0x32, 0x70, 0x36,
+0x66, 0xd5, 0x06, 0x80, 0xd0, 0xc3, 0x40, 0x90, 0x28, 0x80, 0x36, 0xd0,
+0xa4, 0x34, 0x90, 0x36, 0xaa, 0x90, 0x28, 0x24, 0x33, 0xd0, 0xa4, 0x32,
+0x50, 0x36, 0x62, 0xd0, 0xc3, 0x40, 0x90, 0x28, 0x80, 0x36, 0xcc, 0xa4,
+0x34, 0x80, 0x36, 0xa8, 0x90, 0x28, 0x24, 0x33, 0xc0, 0xa4, 0x32, 0x40,
+0x36, 0x60, 0x91, 0x98, 0xd5, 0x06, 0x80, 0xd0, 0xc3, 0x40, 0x90, 0x28,
+0x80, 0x36, 0xc4, 0xa4, 0x34, 0x60, 0x36, 0xa4, 0x90, 0x28, 0x24, 0x33,
+0xa0, 0xa4, 0x32, 0x20, 0x36, 0x5c, 0xd0, 0xc3, 0x40, 0x90, 0x28, 0x80,
+0x36, 0xc0, 0xa4, 0x34, 0x50, 0x36, 0xa2, 0x90, 0x28, 0x24, 0x33, 0x90,
+0xa4, 0x32, 0x10, 0x36, 0x5a, 0xd5, 0x06, 0x80, 0xd0, 0xc3, 0x40, 0x90,
+0x28, 0x80, 0x36, 0xb8, 0xa4, 0x34, 0x30, 0x36, 0x9e, 0x90, 0x28, 0x24,
+0x33, 0x70, 0xa4, 0x31, 0xf0, 0x36, 0x56, 0xd0, 0xc3, 0x40, 0x90, 0x28,
+0x80, 0x36, 0xb4, 0xa4, 0x34, 0x20, 0x36, 0x9c, 0x90, 0x28, 0x24, 0x33,
+0x60, 0xa4, 0x31, 0xe0, 0x36, 0x54, 0x93, 0x70, 0x91, 0xd8, 0xd5, 0x07,
+0x80, 0xd0, 0xc4, 0x40, 0x90, 0x48, 0x80, 0x8c, 0x37, 0x00, 0x84, 0x36,
+0xe8, 0xa4, 0x34, 0xd0, 0x36, 0xb2, 0x90, 0x28, 0x24, 0x34, 0x10, 0xa4,
+0x32, 0x90, 0x36, 0x6a, 0xd0, 0xc4, 0x40, 0x90, 0x48, 0x80, 0x8c, 0x36,
+0xd0, 0x84, 0x36, 0xe5, 0xa4, 0x34, 0xb8, 0x36, 0xaf, 0x90, 0x28, 0x24,
+0x33, 0xf8, 0xa4, 0x32, 0x78, 0x36, 0x67, 0xd5, 0x06, 0x80, 0xd0, 0xc3,
+0x40, 0x90, 0x28, 0x80, 0x36, 0xd4, 0xa4, 0x34, 0xa0, 0x36, 0xac, 0x90,
+0x28, 0x24, 0x33, 0xe0, 0xa4, 0x32, 0x60, 0x36, 0x64, 0xd0, 0xc3, 0x40,
+0x90, 0x28, 0x80, 0x36, 0xce, 0xa4, 0x34, 0x88, 0x36, 0xa9, 0x90, 0x28,
+0x24, 0x33, 0xc8, 0xa4, 0x32, 0x48, 0x36, 0x61, 0x91, 0x98, 0xd5, 0x06,
+0x80, 0xd0, 0xc3, 0x40, 0x90, 0x28, 0x80, 0x36, 0xc8, 0xa4, 0x34, 0x70,
+0x36, 0xa6, 0x90, 0x28, 0x24, 0x33, 0xb0, 0xa4, 0x32, 0x30, 0x36, 0x5e,
+0xd0, 0xc3, 0x40, 0x90, 0x28, 0x80, 0x36, 0xc2, 0xa4, 0x34, 0x58, 0x36,
+0xa3, 0x90, 0x28, 0x24, 0x33, 0x98, 0xa4, 0x32, 0x18, 0x36, 0x5b, 0xd5,
+0x06, 0x80, 0xd0, 0xc3, 0x40, 0x90, 0x28, 0x80, 0x36, 0xbc, 0xa4, 0x34,
+0x40, 0x36, 0xa0, 0x90, 0x28, 0x24, 0x33, 0x80, 0xa4, 0x32, 0x00, 0x36,
+0x58, 0xd0, 0xc3, 0x40, 0x90, 0x28, 0x80, 0x36, 0xb6, 0xa4, 0x34, 0x28,
+0x36, 0x9d, 0x90, 0x28, 0x24, 0x33, 0x68, 0xa4, 0x31, 0xe8, 0x36, 0x55,
+0x99, 0x08, 0x01, 0xf0, 0x81, 0x90, 0x78, 0xd4, 0xc2, 0x00, 0xa4, 0x1f,
+0xb0, 0x33, 0xee, 0xa4, 0x1f, 0x30, 0x33, 0xde, 0xd4, 0xc2, 0x00, 0xa4,
+0x1f, 0x40, 0x33, 0xf0, 0xa4, 0x1e, 0xc0, 0x33, 0xe0, 0x81, 0x90, 0x78,
+0xd4, 0xc2, 0x00, 0xa4, 0x1f, 0x60, 0x33, 0xf4, 0xa4, 0x1e, 0xe0, 0x33,
+0xe4, 0xd4, 0xc2, 0x00, 0xa4, 0x1f, 0x50, 0x33, 0xf2, 0xa4, 0x1e, 0xd0,
+0x33, 0xe2, 0xa8, 0x0b, 0x18, 0x13, 0xa8, 0x96, 0x80, 0x93, 0x40, 0x99,
+0x90, 0x03, 0x00, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x12, 0xb8,
+0x32, 0x58, 0x24, 0x12, 0xb0, 0x90, 0x38, 0xa4, 0x11, 0xe0, 0x32, 0x3d,
+0x24, 0x11, 0xd8, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x11, 0x08, 0x32, 0x22,
+0x24, 0x11, 0x00, 0x90, 0x38, 0xa4, 0x10, 0x30, 0x32, 0x07, 0x24, 0x10,
+0x28, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x12, 0xa8, 0x32, 0x53,
+0x24, 0x12, 0xa0, 0x90, 0x38, 0xa4, 0x11, 0xd0, 0x32, 0x38, 0x24, 0x11,
+0xc8, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x10, 0xf8, 0x32, 0x1d, 0x24, 0x10,
+0xf0, 0x90, 0x38, 0xa4, 0x10, 0x20, 0x32, 0x02, 0x24, 0x10, 0x18, 0xe4,
+0xe1, 0x8d, 0x80, 0x36, 0x38, 0x99, 0x90, 0x03, 0x00, 0x90, 0xc0, 0x90,
+0x60, 0x90, 0x38, 0xa4, 0x12, 0x90, 0x32, 0x50, 0x24, 0x12, 0x88, 0x90,
+0x38, 0xa4, 0x11, 0xb8, 0x32, 0x35, 0x24, 0x11, 0xb0, 0x90, 0x60, 0x90,
+0x38, 0xa4, 0x10, 0xe0, 0x32, 0x1a, 0x24, 0x10, 0xd8, 0x90, 0x38, 0xa4,
+0x10, 0x08, 0x31, 0xff, 0x24, 0x10, 0x00, 0x90, 0xc0, 0x90, 0x60, 0x90,
+0x38, 0xa4, 0x12, 0x78, 0x32, 0x4d, 0x24, 0x12, 0x70, 0x90, 0x38, 0xa4,
+0x11, 0xa0, 0x32, 0x32, 0x24, 0x11, 0x98, 0x90, 0x60, 0x90, 0x38, 0xa4,
+0x10, 0xc8, 0x32, 0x17, 0x24, 0x10, 0xc0, 0x90, 0x38, 0xa4, 0x0f, 0xf0,
+0x31, 0xfc, 0x24, 0x0f, 0xe8, 0xe4, 0xe1, 0x8c, 0x00, 0x36, 0x32, 0x93,
+0x78, 0x99, 0x90, 0x03, 0x00, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4,
+0x12, 0x60, 0x32, 0x4a, 0x24, 0x12, 0x58, 0x90, 0x38, 0xa4, 0x11, 0x88,
+0x32, 0x2f, 0x24, 0x11, 0x80, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x10, 0xb0,
+0x32, 0x14, 0x24, 0x10, 0xa8, 0x90, 0x38, 0xa4, 0x0f, 0xd8, 0x31, 0xf9,
+0x24, 0x0f, 0xd0, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x12, 0x48,
+0x32, 0x47, 0x24, 0x12, 0x40, 0x90, 0x38, 0xa4, 0x11, 0x70, 0x32, 0x2c,
+0x24, 0x11, 0x68, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x10, 0x98, 0x32, 0x11,
+0x24, 0x10, 0x90, 0x90, 0x38, 0xa4, 0x0f, 0xc0, 0x31, 0xf6, 0x24, 0x0f,
+0xb8, 0xec, 0xa0, 0xff, 0x00, 0x02, 0x00, 0x33, 0xfe, 0xa4, 0x31, 0x50,
+0x36, 0x2c, 0x88, 0x00, 0x88, 0x10, 0x10, 0x10, 0x10, 0x90, 0x38, 0xa4,
+0x0f, 0xa8, 0x31, 0xf3, 0x24, 0x0f, 0xa0, 0xe9, 0x60, 0xfe, 0x40, 0x02,
+0x00, 0x33, 0xfa, 0xe3, 0x61, 0x89, 0x00, 0x36, 0x26, 0x95, 0x08, 0x93,
+0x40, 0x99, 0x90, 0x03, 0x00, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4,
+0x12, 0x30, 0x32, 0x41, 0x24, 0x12, 0x28, 0x90, 0x38, 0xa4, 0x11, 0x58,
+0x32, 0x26, 0x24, 0x11, 0x50, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x10, 0x80,
+0x32, 0x0b, 0x24, 0x10, 0x78, 0x90, 0x38, 0xa4, 0x0f, 0x90, 0x31, 0xed,
+0x24, 0x0f, 0x88, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x12, 0x00,
+0x32, 0x3e, 0x24, 0x11, 0xf8, 0x90, 0x38, 0xa4, 0x11, 0x28, 0x32, 0x23,
+0x24, 0x11, 0x20, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x10, 0x50, 0x32, 0x08,
+0x24, 0x10, 0x48, 0x90, 0x38, 0xa4, 0x0f, 0x60, 0x31, 0xea, 0x24, 0x0f,
+0x58, 0xe4, 0xe1, 0x8d, 0xc0, 0x36, 0x3a, 0x88, 0x01, 0x88, 0x90, 0xc0,
+0x90, 0x60, 0x90, 0x38, 0xa4, 0x12, 0x20, 0x32, 0x42, 0x24, 0x12, 0x18,
+0x90, 0x38, 0xa4, 0x11, 0x48, 0x32, 0x27, 0x24, 0x11, 0x40, 0x90, 0x60,
+0x90, 0x38, 0xa4, 0x10, 0x70, 0x32, 0x0c, 0x24, 0x10, 0x68, 0x90, 0x38,
+0xa4, 0x0f, 0x80, 0x31, 0xee, 0x24, 0x0f, 0x78, 0xe4, 0xe1, 0x8c, 0x40,
+0x36, 0x34, 0x92, 0xd0, 0x99, 0x50, 0x02, 0x80, 0x90, 0xa0, 0x90, 0x50,
+0x90, 0x28, 0x80, 0x31, 0xe9, 0x24, 0x0f, 0x40, 0x90, 0x28, 0x80, 0x31,
+0xe5, 0x24, 0x0f, 0x20, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0xe1, 0x24,
+0x0f, 0x00, 0x90, 0x28, 0x80, 0x31, 0xdd, 0x24, 0x0e, 0xe0, 0x90, 0xa0,
+0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0xe6, 0x24, 0x0f, 0x38, 0x90, 0x28,
+0x80, 0x31, 0xe2, 0x24, 0x0f, 0x18, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31,
+0xde, 0x24, 0x0e, 0xf8, 0x90, 0x28, 0x80, 0x31, 0xda, 0x24, 0x0e, 0xd8,
+0xec, 0xe1, 0x8a, 0xe1, 0x00, 0x00, 0x36, 0x2e, 0x88, 0x00, 0x78, 0x10,
+0x10, 0x10, 0x10, 0x90, 0x28, 0x80, 0x31, 0xd8, 0x24, 0x0e, 0xc8, 0xec,
+0xe1, 0x89, 0x60, 0xfe, 0x00, 0x36, 0x28, 0xe5, 0xa1, 0x36, 0x00, 0x34,
+0xd6, 0xa0, 0x2a, 0x10, 0xa8, 0x16, 0x60, 0x29, 0xd8, 0xa0, 0x0c, 0x48,
+0xa0, 0x0a, 0xc8, 0x95, 0x60, 0x92, 0xb0, 0x91, 0x40, 0x90, 0x88, 0x90,
+0x50, 0x90, 0x28, 0x80, 0x31, 0xa1, 0x80, 0x31, 0xa0, 0x10, 0x10, 0x80,
+0x31, 0x9f, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x08, 0x98, 0x31, 0xb3, 0xa4,
+0x08, 0x90, 0x31, 0xb2, 0x10, 0x10, 0xa4, 0x08, 0x88, 0x31, 0xb1, 0x90,
+0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x09, 0xb8, 0x31, 0xd7, 0xa4, 0x09,
+0xb0, 0x31, 0xd6, 0x10, 0x10, 0xa4, 0x09, 0xa8, 0x31, 0xd5, 0x90, 0x70,
+0x90, 0x38, 0xa4, 0x09, 0x28, 0x31, 0xc5, 0xa4, 0x09, 0x20, 0x31, 0xc4,
+0x10, 0x10, 0xa4, 0x09, 0x18, 0x31, 0xc3, 0x91, 0x40, 0x90, 0x88, 0x90,
+0x50, 0x90, 0x28, 0x80, 0x31, 0x9c, 0x80, 0x31, 0x9e, 0x10, 0x10, 0x80,
+0x31, 0x9d, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x08, 0x70, 0x31, 0xae, 0xa4,
+0x08, 0x80, 0x31, 0xb0, 0x10, 0x10, 0xa4, 0x08, 0x78, 0x31, 0xaf, 0x90,
+0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x09, 0x90, 0x31, 0xd2, 0xa4, 0x09,
+0xa0, 0x31, 0xd4, 0x10, 0x10, 0xa4, 0x09, 0x98, 0x31, 0xd3, 0x90, 0x70,
+0x90, 0x38, 0xa4, 0x09, 0x00, 0x31, 0xc0, 0xa4, 0x09, 0x10, 0x31, 0xc2,
+0x10, 0x10, 0xa4, 0x09, 0x08, 0x31, 0xc1, 0x92, 0xb0, 0x91, 0x40, 0x90,
+0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0x99, 0x80, 0x31, 0x9b, 0x10,
+0x10, 0x80, 0x31, 0x9a, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x08, 0x58, 0x31,
+0xab, 0xa4, 0x08, 0x68, 0x31, 0xad, 0x10, 0x10, 0xa4, 0x08, 0x60, 0x31,
+0xac, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x09, 0x78, 0x31, 0xcf,
+0xa4, 0x09, 0x88, 0x31, 0xd1, 0x10, 0x10, 0xa4, 0x09, 0x80, 0x31, 0xd0,
+0x90, 0x70, 0x90, 0x38, 0xa4, 0x08, 0xe8, 0x31, 0xbd, 0xa4, 0x08, 0xf8,
+0x31, 0xbf, 0x10, 0x10, 0xa4, 0x08, 0xf0, 0x31, 0xbe, 0x91, 0x40, 0x90,
+0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0x96, 0x80, 0x31, 0x98, 0x10,
+0x10, 0x80, 0x31, 0x97, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x08, 0x40, 0x31,
+0xa8, 0xa4, 0x08, 0x50, 0x31, 0xaa, 0x10, 0x10, 0xa4, 0x08, 0x48, 0x31,
+0xa9, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x09, 0x60, 0x31, 0xcc,
+0xa4, 0x09, 0x70, 0x31, 0xce, 0x10, 0x10, 0xa4, 0x09, 0x68, 0x31, 0xcd,
+0x90, 0x70, 0x90, 0x38, 0xa4, 0x08, 0xd0, 0x31, 0xba, 0xa4, 0x08, 0xe0,
+0x31, 0xbc, 0x10, 0x10, 0xa4, 0x08, 0xd8, 0x31, 0xbb, 0x10, 0x10, 0x90,
+0xa8, 0x10, 0x10, 0x10, 0x10, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0x8d,
+0x80, 0x31, 0x8f, 0x10, 0x10, 0x80, 0x31, 0x8e, 0x90, 0x60, 0x90, 0x30,
+0x60, 0xa0, 0x2a, 0xc0, 0x60, 0xa0, 0x2a, 0x80, 0x90, 0x30, 0x60, 0xa0,
+0x2a, 0x40, 0x60, 0xa0, 0x2a, 0x00, 0x97, 0xf0, 0x95, 0x60, 0x92, 0xb0,
+0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0x93, 0x80,
+0x31, 0x95, 0x10, 0x10, 0x80, 0x31, 0x94, 0x90, 0x70, 0x90, 0x38, 0xa4,
+0x08, 0x28, 0x31, 0xa5, 0xa4, 0x08, 0x38, 0x31, 0xa7, 0x10, 0x10, 0xa4,
+0x08, 0x30, 0x31, 0xa6, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x09,
+0x48, 0x31, 0xc9, 0xa4, 0x09, 0x58, 0x31, 0xcb, 0x10, 0x10, 0xa4, 0x09,
+0x50, 0x31, 0xca, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x08, 0xb8, 0x31, 0xb7,
+0xa4, 0x08, 0xc8, 0x31, 0xb9, 0x10, 0x10, 0xa4, 0x08, 0xc0, 0x31, 0xb8,
+0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0x90, 0x80,
+0x31, 0x92, 0x10, 0x10, 0x80, 0x31, 0x91, 0x90, 0x70, 0x90, 0x38, 0xa4,
+0x08, 0x10, 0x31, 0xa2, 0xa4, 0x08, 0x20, 0x31, 0xa4, 0x10, 0x10, 0xa4,
+0x08, 0x18, 0x31, 0xa3, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x09,
+0x30, 0x31, 0xc6, 0xa4, 0x09, 0x40, 0x31, 0xc8, 0x10, 0x10, 0xa4, 0x09,
+0x38, 0x31, 0xc7, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x08, 0xa0, 0x31, 0xb4,
+0xa4, 0x08, 0xb0, 0x31, 0xb6, 0x10, 0x10, 0xa4, 0x08, 0xa8, 0x31, 0xb5,
+0x10, 0x10, 0x91, 0x40, 0x90, 0xa0, 0x90, 0x50, 0x90, 0x28, 0x80, 0x30,
+0xcb, 0x80, 0x30, 0xca, 0x90, 0x28, 0x80, 0x30, 0xc9, 0x80, 0x30, 0xc8,
+0x90, 0x50, 0x90, 0x28, 0x80, 0x30, 0xc4, 0x80, 0x30, 0xc7, 0x90, 0x28,
+0x80, 0x30, 0xc6, 0x80, 0x30, 0xc5, 0x90, 0xa0, 0x90, 0x50, 0x90, 0x28,
+0x80, 0x30, 0xbc, 0x80, 0x30, 0xc3, 0x90, 0x28, 0x80, 0x30, 0xc2, 0x80,
+0x30, 0xc1, 0x90, 0x50, 0x90, 0x28, 0x80, 0x30, 0xbd, 0x80, 0x30, 0xc0,
+0x90, 0x28, 0x80, 0x30, 0xbf, 0x80, 0x30, 0xbe, 0x91, 0x88, 0x80, 0x90,
+0xc0, 0x90, 0x60, 0x90, 0x28, 0x81, 0x31, 0x3b, 0x10, 0x10, 0x80, 0x31,
+0x3a, 0x90, 0x28, 0x81, 0x31, 0x3d, 0x10, 0x10, 0x80, 0x31, 0x3c, 0x90,
+0x60, 0x90, 0x28, 0x81, 0x31, 0x41, 0x10, 0x10, 0x80, 0x31, 0x40, 0x90,
+0x28, 0x81, 0x31, 0x3f, 0x10, 0x10, 0x80, 0x31, 0x3e, 0x80, 0x10, 0x10,
+0x10, 0x10, 0x90, 0x28, 0x81, 0x31, 0x38, 0x10, 0x10, 0x80, 0x31, 0x39,
+0xa0, 0x0b, 0x90, 0xa0, 0x0a, 0xc8, 0x95, 0x60, 0x92, 0xb0, 0x91, 0x40,
+0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0x56, 0x80, 0x31, 0x55,
+0x10, 0x10, 0x80, 0x31, 0x54, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x06, 0xe8,
+0x31, 0x68, 0xa4, 0x06, 0xe0, 0x31, 0x67, 0x10, 0x10, 0xa4, 0x06, 0xd8,
+0x31, 0x66, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x08, 0x08, 0x31,
+0x8c, 0xa4, 0x08, 0x00, 0x31, 0x8b, 0x10, 0x10, 0xa4, 0x07, 0xf8, 0x31,
+0x8a, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x07, 0x78, 0x31, 0x7a, 0xa4, 0x07,
+0x70, 0x31, 0x79, 0x10, 0x10, 0xa4, 0x07, 0x68, 0x31, 0x78, 0x91, 0x40,
+0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0x51, 0x80, 0x31, 0x53,
+0x10, 0x10, 0x80, 0x31, 0x52, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x06, 0xc0,
+0x31, 0x63, 0xa4, 0x06, 0xd0, 0x31, 0x65, 0x10, 0x10, 0xa4, 0x06, 0xc8,
+0x31, 0x64, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x07, 0xe0, 0x31,
+0x87, 0xa4, 0x07, 0xf0, 0x31, 0x89, 0x10, 0x10, 0xa4, 0x07, 0xe8, 0x31,
+0x88, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x07, 0x50, 0x31, 0x75, 0xa4, 0x07,
+0x60, 0x31, 0x77, 0x10, 0x10, 0xa4, 0x07, 0x58, 0x31, 0x76, 0x92, 0xb0,
+0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0x4e, 0x80,
+0x31, 0x50, 0x10, 0x10, 0x80, 0x31, 0x4f, 0x90, 0x70, 0x90, 0x38, 0xa4,
+0x06, 0xa8, 0x31, 0x60, 0xa4, 0x06, 0xb8, 0x31, 0x62, 0x10, 0x10, 0xa4,
+0x06, 0xb0, 0x31, 0x61, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x07,
+0xc8, 0x31, 0x84, 0xa4, 0x07, 0xd8, 0x31, 0x86, 0x10, 0x10, 0xa4, 0x07,
+0xd0, 0x31, 0x85, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x07, 0x38, 0x31, 0x72,
+0xa4, 0x07, 0x48, 0x31, 0x74, 0x10, 0x10, 0xa4, 0x07, 0x40, 0x31, 0x73,
+0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0x4b, 0x80,
+0x31, 0x4d, 0x10, 0x10, 0x80, 0x31, 0x4c, 0x90, 0x70, 0x90, 0x38, 0xa4,
+0x06, 0x90, 0x31, 0x5d, 0xa4, 0x06, 0xa0, 0x31, 0x5f, 0x10, 0x10, 0xa4,
+0x06, 0x98, 0x31, 0x5e, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x07,
+0xb0, 0x31, 0x81, 0xa4, 0x07, 0xc0, 0x31, 0x83, 0x10, 0x10, 0xa4, 0x07,
+0xb8, 0x31, 0x82, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x07, 0x20, 0x31, 0x6f,
+0xa4, 0x07, 0x30, 0x31, 0x71, 0x10, 0x10, 0xa4, 0x07, 0x28, 0x31, 0x70,
+0x10, 0x10, 0x80, 0x10, 0x10, 0x10, 0x10, 0x90, 0x50, 0x90, 0x28, 0x80,
+0x31, 0x42, 0x80, 0x31, 0x44, 0x10, 0x10, 0x80, 0x31, 0x43, 0x80, 0x95,
+0x60, 0x92, 0xb0, 0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80,
+0x31, 0x48, 0x80, 0x31, 0x4a, 0x10, 0x10, 0x80, 0x31, 0x49, 0x90, 0x70,
+0x90, 0x38, 0xa4, 0x06, 0x78, 0x31, 0x5a, 0xa4, 0x06, 0x88, 0x31, 0x5c,
+0x10, 0x10, 0xa4, 0x06, 0x80, 0x31, 0x5b, 0x90, 0xb8, 0x90, 0x70, 0x90,
+0x38, 0xa4, 0x07, 0x98, 0x31, 0x7e, 0xa4, 0x07, 0xa8, 0x31, 0x80, 0x10,
+0x10, 0xa4, 0x07, 0xa0, 0x31, 0x7f, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x07,
+0x08, 0x31, 0x6c, 0xa4, 0x07, 0x18, 0x31, 0x6e, 0x10, 0x10, 0xa4, 0x07,
+0x10, 0x31, 0x6d, 0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80,
+0x31, 0x45, 0x80, 0x31, 0x47, 0x10, 0x10, 0x80, 0x31, 0x46, 0x90, 0x70,
+0x90, 0x38, 0xa4, 0x06, 0x60, 0x31, 0x57, 0xa4, 0x06, 0x70, 0x31, 0x59,
+0x10, 0x10, 0xa4, 0x06, 0x68, 0x31, 0x58, 0x90, 0xb8, 0x90, 0x70, 0x90,
+0x38, 0xa4, 0x07, 0x80, 0x31, 0x7b, 0xa4, 0x07, 0x90, 0x31, 0x7d, 0x10,
+0x10, 0xa4, 0x07, 0x88, 0x31, 0x7c, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x06,
+0xf0, 0x31, 0x69, 0xa4, 0x07, 0x00, 0x31, 0x6b, 0x10, 0x10, 0xa4, 0x06,
+0xf8, 0x31, 0x6a, 0x10, 0x10, 0x91, 0x40, 0x90, 0xa0, 0x90, 0x50, 0x90,
+0x28, 0x80, 0x30, 0xbb, 0x80, 0x30, 0xba, 0x90, 0x28, 0x80, 0x30, 0xb9,
+0x80, 0x30, 0xb8, 0x90, 0x50, 0x90, 0x28, 0x80, 0x30, 0xb4, 0x80, 0x30,
+0xb7, 0x90, 0x28, 0x80, 0x30, 0xb6, 0x80, 0x30, 0xb5, 0x90, 0xa0, 0x90,
+0x50, 0x90, 0x28, 0x80, 0x30, 0xac, 0x80, 0x30, 0xb3, 0x90, 0x28, 0x80,
+0x30, 0xb2, 0x80, 0x30, 0xb1, 0x90, 0x50, 0x90, 0x28, 0x80, 0x30, 0xad,
+0x80, 0x30, 0xb0, 0x90, 0x28, 0x80, 0x30, 0xaf, 0x80, 0x30, 0xae, 0xc3,
+0xc0, 0x30, 0x42, 0x9c, 0xe8, 0x07, 0x60, 0x91, 0x90, 0x90, 0xf0, 0x10,
+0x10, 0x80, 0x88, 0x00, 0x80, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0xbc,
+0x80, 0x33, 0xbd, 0x81, 0x33, 0xb3, 0xd0, 0x41, 0x80, 0x24, 0x1e, 0xb0,
+0x24, 0x1e, 0xb8, 0x10, 0x10, 0x80, 0x90, 0x58, 0x80, 0x90, 0x28, 0x24,
+0x1d, 0xb0, 0x24, 0x1d, 0xb8, 0x81, 0x24, 0x1d, 0x70, 0x92, 0x68, 0x91,
+0x00, 0x80, 0x90, 0x90, 0x90, 0x30, 0x80, 0x24, 0x1e, 0x20, 0x90, 0x38,
+0xa4, 0x1e, 0x18, 0x33, 0xca, 0x80, 0x33, 0xc9, 0x80, 0x90, 0x28, 0x80,
+0x33, 0xd3, 0xa4, 0x1e, 0x00, 0x33, 0xd2, 0x80, 0x90, 0xc0, 0x90, 0x60,
+0x90, 0x28, 0x80, 0x33, 0xcd, 0xa4, 0x1e, 0x10, 0x33, 0xcc, 0x90, 0x28,
+0x80, 0x33, 0xc8, 0xa4, 0x1e, 0x08, 0x33, 0xc7, 0x90, 0x50, 0x90, 0x28,
+0x80, 0x33, 0xd1, 0x80, 0x33, 0xd0, 0x90, 0x28, 0x24, 0x1e, 0xa8, 0x24,
+0x1e, 0xa0, 0x90, 0x58, 0x80, 0x10, 0x10, 0x80, 0x10, 0x10, 0x80, 0x33,
+0xbf, 0x80, 0x90, 0x40, 0x10, 0x10, 0x80, 0x24, 0x1d, 0x80, 0x80, 0x10,
+0x10, 0x80, 0x33, 0xbe, 0x91, 0x58, 0x91, 0x00, 0x90, 0x80, 0x81, 0x90,
+0x50, 0x90, 0x28, 0x80, 0x33, 0xba, 0x80, 0x33, 0xbb, 0x81, 0x33, 0xb2,
+0x81, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0xb8, 0x80, 0x33, 0xb9, 0x81,
+0x33, 0xb1, 0x83, 0x90, 0x28, 0x24, 0x1d, 0xa0, 0x24, 0x1d, 0xa8, 0x90,
+0xe8, 0x81, 0x90, 0x88, 0x90, 0x38, 0x10, 0x10, 0x80, 0x33, 0xcb, 0x90,
+0x28, 0x80, 0x33, 0xc6, 0x80, 0x33, 0xc5, 0x80, 0x90, 0x28, 0x80, 0x33,
+0xcf, 0x80, 0x33, 0xce, 0x82, 0x10, 0x10, 0x80, 0x24, 0x1d, 0x78, 0x97,
+0x10, 0x9e, 0x10, 0x06, 0x98, 0x93, 0x00, 0x91, 0x80, 0x90, 0xc0, 0x90,
+0x60, 0x90, 0x38, 0xa4, 0x03, 0x80, 0x30, 0x71, 0x24, 0x03, 0x78, 0x90,
+0x38, 0xa4, 0x04, 0x10, 0x30, 0x83, 0x24, 0x04, 0x08, 0x90, 0x60, 0x90,
+0x38, 0xa4, 0x05, 0x30, 0x30, 0xa7, 0x24, 0x05, 0x28, 0x90, 0x38, 0xa4,
+0x04, 0xa0, 0x30, 0x95, 0x24, 0x04, 0x98, 0x90, 0xc0, 0x90, 0x60, 0x90,
+0x38, 0xa4, 0x03, 0x70, 0x30, 0x6c, 0x24, 0x03, 0x68, 0x90, 0x38, 0xa4,
+0x04, 0x00, 0x30, 0x7e, 0x24, 0x03, 0xf8, 0x90, 0x60, 0x90, 0x38, 0xa4,
+0x05, 0x20, 0x30, 0xa2, 0x24, 0x05, 0x18, 0x90, 0x38, 0xa4, 0x04, 0x90,
+0x30, 0x90, 0x24, 0x04, 0x88, 0x91, 0x80, 0x90, 0xc0, 0x90, 0x60, 0x90,
+0x38, 0xa4, 0x03, 0x58, 0x30, 0x69, 0x24, 0x03, 0x50, 0x90, 0x38, 0xa4,
+0x03, 0xe8, 0x30, 0x7b, 0x24, 0x03, 0xe0, 0x90, 0x60, 0x90, 0x38, 0xa4,
+0x05, 0x08, 0x30, 0x9f, 0x24, 0x05, 0x00, 0x90, 0x38, 0xa4, 0x04, 0x78,
+0x30, 0x8d, 0x24, 0x04, 0x70, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4,
+0x03, 0x40, 0x30, 0x66, 0x24, 0x03, 0x38, 0x90, 0x38, 0xa4, 0x03, 0xd0,
+0x30, 0x78, 0x24, 0x03, 0xc8, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x04, 0xf0,
+0x30, 0x9c, 0x24, 0x04, 0xe8, 0x90, 0x38, 0xa4, 0x04, 0x60, 0x30, 0x8a,
+0x24, 0x04, 0x58, 0x10, 0x10, 0x80, 0x10, 0x10, 0x10, 0x10, 0x90, 0x38,
+0xa4, 0x02, 0xf8, 0x30, 0x5d, 0x24, 0x02, 0xf0, 0xd7, 0x42, 0x00, 0xa4,
+0x31, 0x00, 0x36, 0x22, 0xa4, 0x30, 0xe0, 0x36, 0x1e, 0x9c, 0xe0, 0x06,
+0x90, 0x93, 0x00, 0x91, 0x80, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4,
+0x03, 0x28, 0x30, 0x63, 0x24, 0x03, 0x20, 0x90, 0x38, 0xa4, 0x03, 0xb8,
+0x30, 0x75, 0x24, 0x03, 0xb0, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x04, 0xd8,
+0x30, 0x99, 0x24, 0x04, 0xd0, 0x90, 0x38, 0xa4, 0x04, 0x48, 0x30, 0x87,
+0x24, 0x04, 0x40, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x03, 0x10,
+0x30, 0x60, 0x24, 0x03, 0x08, 0x90, 0x38, 0xa4, 0x03, 0xa0, 0x30, 0x72,
+0x24, 0x03, 0x98, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x04, 0xc0, 0x30, 0x96,
+0x24, 0x04, 0xb8, 0x90, 0x38, 0xa4, 0x04, 0x30, 0x30, 0x84, 0x24, 0x04,
+0x28, 0x10, 0x10, 0x90, 0xe0, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x02, 0x88,
+0x30, 0x52, 0xa4, 0x02, 0x78, 0x30, 0x50, 0x90, 0x38, 0xa4, 0x02, 0x70,
+0x30, 0x4b, 0xa4, 0x02, 0x60, 0x30, 0x4d, 0x90, 0x70, 0x90, 0x38, 0xa4,
+0x02, 0x50, 0x30, 0x43, 0xa4, 0x02, 0x40, 0x30, 0x49, 0x90, 0x38, 0xa4,
+0x02, 0x38, 0x30, 0x44, 0xa4, 0x02, 0x28, 0x30, 0x46, 0x91, 0x48, 0x80,
+0x90, 0xa0, 0x90, 0x50, 0x90, 0x28, 0x80, 0x30, 0x56, 0x24, 0x02, 0xa8,
+0x90, 0x28, 0x80, 0x30, 0x58, 0x24, 0x02, 0xb8, 0x90, 0x50, 0x90, 0x28,
+0x80, 0x30, 0x5c, 0x24, 0x02, 0xd8, 0x90, 0x28, 0x80, 0x30, 0x5a, 0x24,
+0x02, 0xc8, 0x80, 0x10, 0x10, 0x10, 0x10, 0x90, 0x28, 0x80, 0x30, 0x53,
+0x24, 0x02, 0xa0, 0xd7, 0x42, 0x00, 0xa4, 0x31, 0x08, 0x36, 0x23, 0xa4,
+0x30, 0xe8, 0x36, 0x1f, 0xa0, 0x15, 0x40, 0xa0, 0x10, 0xb8, 0xa0, 0x0c,
+0x88, 0x9e, 0x88, 0x09, 0xd0, 0x94, 0xf0, 0x90, 0xb0, 0x88, 0x00, 0x68,
+0x84, 0x10, 0x10, 0xc9, 0xe1, 0x2d, 0x80, 0x85, 0x34, 0xd2, 0xcb, 0x61,
+0x26, 0x40, 0x85, 0x34, 0xa8, 0x9a, 0x00, 0x03, 0xf8, 0x91, 0x98, 0x80,
+0x91, 0x10, 0x90, 0xa0, 0x90, 0x68, 0x90, 0x20, 0x38, 0x57, 0xc9, 0xe2,
+0x15, 0x40, 0x85, 0x34, 0xd0, 0xa4, 0x42, 0x98, 0x38, 0x54, 0x90, 0x38,
+0xa4, 0x42, 0x60, 0x38, 0x4d, 0xa4, 0x42, 0x50, 0x38, 0x4b, 0x90, 0x48,
+0x10, 0x10, 0xa4, 0x42, 0x18, 0x38, 0x44, 0x10, 0x10, 0x80, 0x38, 0x40,
+0x81, 0x10, 0x10, 0x80, 0xa4, 0x41, 0xe8, 0x38, 0x3e, 0x91, 0xb0, 0x91,
+0x60, 0x90, 0xe0, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x42, 0x88, 0x38, 0x52,
+0xa4, 0x42, 0x78, 0x38, 0x50, 0x90, 0x38, 0xa4, 0x42, 0x40, 0x38, 0x49,
+0xa4, 0x42, 0x30, 0x38, 0x47, 0x90, 0x48, 0x10, 0x10, 0xa4, 0x42, 0x08,
+0x38, 0x42, 0x10, 0x10, 0x80, 0x38, 0x3f, 0x90, 0x28, 0x80, 0x38, 0x38,
+0x80, 0x38, 0x37, 0x81, 0x10, 0x10, 0x80, 0xa4, 0x41, 0xd8, 0x38, 0x3c,
+0xcb, 0x61, 0x26, 0x00, 0x85, 0x34, 0xa7, 0x90, 0xd8, 0x88, 0x00, 0x90,
+0x84, 0x90, 0x38, 0xc1, 0xc0, 0x85, 0x38, 0x5b, 0xc9, 0xe1, 0x2d, 0x40,
+0x85, 0x34, 0xce, 0xcb, 0x61, 0x25, 0xc0, 0x85, 0x34, 0xa6, 0x88, 0x00,
+0x68, 0x84, 0x10, 0x10, 0xc9, 0xe1, 0x2d, 0x00, 0x85, 0x34, 0xcc, 0xcb,
+0x61, 0x25, 0x80, 0x85, 0x34, 0xa5, 0x91, 0xf8, 0x90, 0xb0, 0x88, 0x00,
+0x68, 0x84, 0x10, 0x10, 0xc9, 0xe1, 0x2c, 0x80, 0x85, 0x34, 0xc8, 0xcb,
+0x61, 0x25, 0x00, 0x85, 0x34, 0xa3, 0x88, 0x01, 0x00, 0x90, 0xa0, 0x81,
+0x90, 0x70, 0x80, 0x90, 0x20, 0x38, 0x4e, 0xc9, 0xe1, 0x2c, 0x40, 0x85,
+0x34, 0xc6, 0x81, 0x38, 0x45, 0x81, 0x10, 0x10, 0x80, 0xa4, 0x41, 0xc8,
+0x38, 0x3a, 0xcb, 0x61, 0x24, 0xc0, 0x85, 0x34, 0xa2, 0x90, 0xb0, 0x88,
+0x00, 0x68, 0x84, 0x10, 0x10, 0xc9, 0xe1, 0x2c, 0x00, 0x85, 0x34, 0xc4,
+0xcb, 0x61, 0x24, 0x80, 0x85, 0x34, 0xa1, 0x88, 0x00, 0x68, 0x84, 0x10,
+0x10, 0xc9, 0xe1, 0x2b, 0xc0, 0x85, 0x34, 0xc2, 0xcb, 0x61, 0x24, 0x40,
+0x85, 0x34, 0xa0, 0x92, 0x38, 0x81, 0x91, 0x68, 0x91, 0x18, 0x90, 0x80,
+0x90, 0x40, 0x80, 0xa4, 0x43, 0x50, 0x38, 0x6b, 0x80, 0xa4, 0x43, 0x48,
+0x38, 0x68, 0x90, 0x28, 0x81, 0x38, 0x67, 0x90, 0x38, 0xa4, 0x43, 0x28,
+0x38, 0x66, 0xa4, 0x43, 0x18, 0x38, 0x64, 0x90, 0x28, 0x80, 0x38, 0x62,
+0x80, 0x38, 0x61, 0x80, 0x90, 0x40, 0x10, 0x10, 0x80, 0x24, 0x43, 0x00,
+0x10, 0x10, 0x90, 0x38, 0xa4, 0x42, 0xf0, 0x38, 0x5f, 0xa4, 0x42, 0xe0,
+0x38, 0x5d, 0x90, 0x50, 0x80, 0xc9, 0xa2, 0x16, 0x40, 0x85, 0x38, 0x5a,
+0x80, 0x38, 0x58, 0x9a, 0xd0, 0x03, 0xe0, 0x91, 0x60, 0x90, 0xb0, 0x88,
+0x00, 0x68, 0x84, 0x10, 0x10, 0xc9, 0xe1, 0x2b, 0x40, 0x85, 0x34, 0xbe,
+0xcb, 0x61, 0x23, 0xc0, 0x85, 0x34, 0x9e, 0x88, 0x00, 0x68, 0x84, 0x10,
+0x10, 0xc9, 0xe1, 0x2b, 0x00, 0x85, 0x34, 0xbc, 0xcb, 0x61, 0x23, 0x80,
+0x85, 0x34, 0x9d, 0x90, 0xb0, 0x88, 0x00, 0x68, 0x84, 0x10, 0x10, 0xc9,
+0xe1, 0x2a, 0xc0, 0x85, 0x34, 0xba, 0xcb, 0x61, 0x23, 0x40, 0x85, 0x34,
+0x9c, 0x88, 0x00, 0x68, 0x84, 0x10, 0x10, 0xc9, 0xe1, 0x2a, 0x80, 0x85,
+0x34, 0xb8, 0xcb, 0x61, 0x23, 0x00, 0x85, 0x34, 0x9b, 0x90, 0x90, 0x90,
+0x48, 0xcb, 0xa1, 0x21, 0x40, 0x85, 0x34, 0x8a, 0xcb, 0xa1, 0x21, 0x00,
+0x85, 0x34, 0x89, 0x90, 0x48, 0xcb, 0xa1, 0x20, 0xc0, 0x85, 0x34, 0x88,
+0xcb, 0xa1, 0x20, 0x80, 0x85, 0x34, 0x87, 0xcb, 0xa2, 0x0d, 0x40, 0x80,
+0x38, 0x36, 0x92, 0x40, 0x91, 0x20, 0x90, 0x90, 0x90, 0x48, 0x8c, 0x23,
+0x88, 0x84, 0x24, 0x24, 0x00, 0x8c, 0x23, 0x80, 0x84, 0x24, 0x23, 0xf8,
+0x90, 0x48, 0x8c, 0x23, 0x78, 0x84, 0x24, 0x23, 0xf0, 0x8c, 0x23, 0x70,
+0x84, 0x24, 0x23, 0xe8, 0x90, 0x90, 0x90, 0x48, 0x8c, 0x23, 0x60, 0x84,
+0x24, 0x23, 0xd8, 0x8c, 0x23, 0x58, 0x84, 0x24, 0x23, 0xd0, 0x90, 0x48,
+0x8c, 0x23, 0x50, 0x84, 0x24, 0x23, 0xc8, 0x8c, 0x23, 0x48, 0x84, 0x24,
+0x23, 0xc0, 0x91, 0x20, 0x90, 0x90, 0x90, 0x48, 0x8c, 0x23, 0x38, 0x84,
+0x24, 0x23, 0xb0, 0x8c, 0x23, 0x30, 0x84, 0x24, 0x23, 0xa8, 0x90, 0x48,
+0x8c, 0x23, 0x28, 0x84, 0x24, 0x23, 0xa0, 0x8c, 0x23, 0x20, 0x84, 0x24,
+0x23, 0x98, 0x90, 0x90, 0x90, 0x48, 0x8c, 0x23, 0x10, 0x84, 0x24, 0x22,
+0xe8, 0x8c, 0x23, 0x08, 0x84, 0x24, 0x22, 0xe0, 0x90, 0x48, 0x8c, 0x23,
+0x00, 0x84, 0x24, 0x22, 0xd8, 0x8c, 0x22, 0xf8, 0x84, 0x24, 0x22, 0xd0,
+0xa0, 0x0f, 0x50, 0xa0, 0x09, 0x08, 0x9a, 0x30, 0x04, 0x40, 0x91, 0x90,
+0x90, 0xc8, 0x98, 0x50, 0x00, 0x80, 0xe5, 0x22, 0x0c, 0x40, 0x38, 0x2d,
+0xe5, 0x22, 0x08, 0x40, 0x38, 0x2b, 0xcb, 0x61, 0x12, 0x40, 0x85, 0x34,
+0x58, 0x98, 0x50, 0x00, 0x80, 0xe5, 0x22, 0x04, 0x40, 0x38, 0x0d, 0xe5,
+0x22, 0x00, 0x40, 0x38, 0x0b, 0xcb, 0x61, 0x12, 0x00, 0x85, 0x34, 0x57,
+0x90, 0x48, 0xcb, 0xa1, 0x11, 0xc0, 0x85, 0x34, 0x56, 0xcb, 0xa1, 0x11,
+0x80, 0x85, 0x34, 0x55, 0x91, 0x90, 0x90, 0xc8, 0x98, 0x50, 0x00, 0x80,
+0xe5, 0x21, 0xfb, 0x40, 0x37, 0xf3, 0xe5, 0x21, 0xf8, 0x40, 0x37, 0xe7,
+0xcb, 0x61, 0x11, 0x00, 0x85, 0x34, 0x53, 0x98, 0x50, 0x00, 0x80, 0xe5,
+0x21, 0xf5, 0x40, 0x37, 0xdb, 0xe5, 0x21, 0xf2, 0x40, 0x37, 0xcf, 0xcb,
+0x61, 0x10, 0xc0, 0x85, 0x34, 0x52, 0x90, 0x48, 0xcb, 0xa1, 0x10, 0x80,
+0x85, 0x34, 0x51, 0xcb, 0xa1, 0x10, 0x40, 0x85, 0x34, 0x50, 0x92, 0x20,
+0x91, 0x30, 0x90, 0xb8, 0xd5, 0x03, 0x00, 0xc0, 0xc0, 0x81, 0x8c, 0x01,
+0xa0, 0x84, 0x30, 0x3e, 0xc0, 0xc0, 0x81, 0x8c, 0x01, 0x80, 0x84, 0x30,
+0x3c, 0xd5, 0x02, 0x00, 0xc0, 0xc0, 0x81, 0x30, 0x28, 0xc0, 0xc0, 0x81,
+0x30, 0x24, 0x90, 0x78, 0xd5, 0x02, 0x00, 0xc0, 0xc0, 0x81, 0x30, 0x1c,
+0xc0, 0xc0, 0x81, 0x30, 0x18, 0xd5, 0x02, 0x00, 0xc0, 0xc0, 0x81, 0x30,
+0x10, 0xc0, 0xc0, 0x81, 0x30, 0x0c, 0x91, 0x70, 0x90, 0xd8, 0xd5, 0x03,
+0x80, 0xc8, 0xe1, 0xef, 0x40, 0x81, 0x8c, 0x01, 0xc0, 0x84, 0x30, 0x40,
+0xc8, 0xe1, 0xf0, 0x40, 0x81, 0x8c, 0x01, 0x90, 0x84, 0x30, 0x3d, 0xd5,
+0x02, 0x80, 0xc8, 0xe1, 0xee, 0xc0, 0x81, 0x30, 0x2c, 0xc8, 0xe1, 0xeb,
+0xc0, 0x81, 0x30, 0x26, 0x90, 0x98, 0xd5, 0x02, 0x80, 0xc8, 0xe1, 0xe5,
+0xc0, 0x81, 0x30, 0x20, 0xc8, 0xe1, 0xe6, 0xc0, 0x81, 0x30, 0x1a, 0xd5,
+0x02, 0x80, 0xc8, 0xe1, 0xe5, 0x40, 0x81, 0x30, 0x14, 0xc8, 0xe1, 0xe2,
+0x40, 0x81, 0x30, 0x0e, 0x9a, 0x30, 0x04, 0x40, 0x91, 0x90, 0x90, 0xc8,
+0x98, 0x50, 0x00, 0x80, 0xe5, 0x22, 0x06, 0x40, 0x38, 0x15, 0xe5, 0x22,
+0x07, 0x40, 0x38, 0x27, 0xcb, 0x61, 0x0f, 0xc0, 0x85, 0x34, 0x4e, 0x98,
+0x50, 0x00, 0x80, 0xe5, 0x21, 0xfe, 0x40, 0x37, 0xf5, 0xe5, 0x21, 0xff,
+0x40, 0x38, 0x07, 0xcb, 0x61, 0x0f, 0x80, 0x85, 0x34, 0x4d, 0x90, 0x48,
+0xcb, 0xa1, 0x0f, 0x40, 0x85, 0x34, 0x4c, 0xcb, 0xa1, 0x0f, 0x00, 0x85,
+0x34, 0x4b, 0x91, 0x90, 0x90, 0xc8, 0x98, 0x50, 0x00, 0x80, 0xe5, 0x21,
+0xfa, 0x40, 0x37, 0xef, 0xe5, 0x21, 0xf7, 0x40, 0x37, 0xe3, 0xcb, 0x61,
+0x0d, 0x40, 0x85, 0x34, 0x3a, 0x98, 0x50, 0x00, 0x80, 0xe5, 0x21, 0xf4,
+0x40, 0x37, 0xd7, 0xe5, 0x21, 0xf1, 0x40, 0x37, 0xcb, 0xcb, 0x61, 0x0d,
+0x00, 0x85, 0x34, 0x39, 0x90, 0x48, 0xcb, 0xa1, 0x0c, 0xc0, 0x85, 0x34,
+0x38, 0xcb, 0xa1, 0x0c, 0x80, 0x85, 0x34, 0x37, 0x91, 0x00, 0x90, 0x80,
+0x90, 0x40, 0xe5, 0x20, 0x02, 0x40, 0x30, 0x0a, 0xe5, 0x20, 0x01, 0x80,
+0x30, 0x07, 0x90, 0x40, 0xe5, 0x20, 0x00, 0xc0, 0x30, 0x04, 0xe5, 0x20,
+0x00, 0x00, 0x30, 0x01, 0x90, 0x80, 0x90, 0x40, 0xe5, 0x21, 0xe9, 0x40,
+0x37, 0x9f, 0xe5, 0x21, 0xea, 0x80, 0x37, 0xb5, 0x90, 0x40, 0xe5, 0x21,
+0xdf, 0xc0, 0x37, 0x79, 0xe5, 0x21, 0xe1, 0x00, 0x37, 0x8f, 0x80, 0x99,
+0x28, 0x02, 0xf0, 0x8c, 0x21, 0x48, 0x90, 0x80, 0x90, 0x40, 0xe5, 0x22,
+0x09, 0x40, 0x38, 0x23, 0xe5, 0x22, 0x07, 0xc0, 0x38, 0x29, 0x90, 0x40,
+0xe5, 0x22, 0x01, 0x40, 0x38, 0x03, 0xe5, 0x21, 0xff, 0xc0, 0x38, 0x09,
+0x91, 0x48, 0x90, 0xc8, 0x98, 0x50, 0x00, 0x80, 0xe5, 0x21, 0xfa, 0xc0,
+0x37, 0xf1, 0xe5, 0x21, 0xf7, 0xc0, 0x37, 0xe5, 0xcb, 0x61, 0x0b, 0x00,
+0x85, 0x34, 0x30, 0x90, 0x40, 0xe5, 0x21, 0xf4, 0xc0, 0x37, 0xd9, 0xe5,
+0x21, 0xf1, 0xc0, 0x37, 0xcd, 0x90, 0x48, 0xcb, 0xa1, 0x0a, 0x80, 0x85,
+0x34, 0x2e, 0xcb, 0xa1, 0x0a, 0xc0, 0x85, 0x34, 0x2f, 0x10, 0x10, 0x90,
+0x80, 0x90, 0x40, 0xe5, 0x21, 0xec, 0xc0, 0x37, 0xb1, 0xe5, 0x21, 0xeb,
+0x40, 0x37, 0xb9, 0x90, 0x40, 0xe5, 0x21, 0xe3, 0x40, 0x37, 0x8b, 0xe5,
+0x21, 0xe1, 0xc0, 0x37, 0x93,
+};
+
+static const struct ia64_dis_names ia64_dis_names[] = {
+{ 0x51, 39, 0, 8 },
+{ 0x31, 39, 1, 18 },
+{ 0x11, 40, 0, 17 },
+{ 0x29, 39, 0, 10 },
+{ 0x19, 39, 1, 22 },
+{ 0x9, 40, 0, 21 },
+{ 0x15, 39, 0, 12 },
+{ 0xd, 39, 1, 26 },
+{ 0x5, 40, 0, 25 },
+{ 0xb, 39, 0, 14 },
+{ 0x7, 39, 1, 30 },
+{ 0x3, 40, 0, 29 },
+{ 0x51, 37, 1, 56 },
+{ 0x50, 37, 0, 32 },
+{ 0xd1, 37, 1, 55 },
+{ 0xd0, 37, 0, 31 },
+{ 0x31, 37, 1, 66 },
+{ 0x30, 37, 1, 42 },
+{ 0x11, 38, 1, 65 },
+{ 0x10, 38, 0, 41 },
+{ 0x71, 37, 1, 64 },
+{ 0x70, 37, 1, 40 },
+{ 0x31, 38, 1, 63 },
+{ 0x30, 38, 0, 39 },
+{ 0x29, 37, 1, 58 },
+{ 0x28, 37, 0, 34 },
+{ 0x69, 37, 1, 57 },
+{ 0x68, 37, 0, 33 },
+{ 0x19, 37, 1, 70 },
+{ 0x18, 37, 1, 46 },
+{ 0x9, 38, 1, 69 },
+{ 0x8, 38, 0, 45 },
+{ 0x39, 37, 1, 68 },
+{ 0x38, 37, 1, 44 },
+{ 0x19, 38, 1, 67 },
+{ 0x18, 38, 0, 43 },
+{ 0x15, 37, 1, 60 },
+{ 0x14, 37, 0, 36 },
+{ 0x35, 37, 1, 59 },
+{ 0x34, 37, 0, 35 },
+{ 0xd, 37, 1, 74 },
+{ 0xc, 37, 1, 50 },
+{ 0x5, 38, 1, 73 },
+{ 0x4, 38, 0, 49 },
+{ 0x1d, 37, 1, 72 },
+{ 0x1c, 37, 1, 48 },
+{ 0xd, 38, 1, 71 },
+{ 0xc, 38, 0, 47 },
+{ 0xb, 37, 1, 62 },
+{ 0xa, 37, 0, 38 },
+{ 0x1b, 37, 1, 61 },
+{ 0x1a, 37, 0, 37 },
+{ 0x7, 37, 1, 78 },
+{ 0x6, 37, 1, 54 },
+{ 0x3, 38, 1, 77 },
+{ 0x2, 38, 0, 53 },
+{ 0xf, 37, 1, 76 },
+{ 0xe, 37, 1, 52 },
+{ 0x7, 38, 1, 75 },
+{ 0x6, 38, 0, 51 },
+{ 0x8, 36, 0, 80 },
+{ 0x18, 36, 0, 79 },
+{ 0x1, 36, 1, 84 },
+{ 0x2, 36, 0, 83 },
+{ 0x3, 36, 1, 82 },
+{ 0x4, 36, 0, 81 },
+{ 0x1, 279, 0, 85 },
+{ 0x20, 232, 0, 95 },
+{ 0x220, 232, 0, 91 },
+{ 0x1220, 232, 0, 88 },
+{ 0xa20, 232, 0, 89 },
+{ 0x620, 232, 0, 90 },
+{ 0x120, 232, 0, 92 },
+{ 0xa0, 232, 0, 93 },
+{ 0x60, 232, 0, 94 },
+{ 0x10, 232, 0, 99 },
+{ 0x90, 232, 0, 96 },
+{ 0x50, 232, 0, 97 },
+{ 0x30, 232, 0, 98 },
+{ 0x8, 232, 0, 100 },
+{ 0x4, 232, 0, 101 },
+{ 0x2, 232, 0, 102 },
+{ 0x1, 232, 0, 103 },
+{ 0x1, 352, 0, 105 },
+{ 0x3, 352, 0, 104 },
+{ 0x2, 358, 0, 106 },
+{ 0x1, 358, 0, 107 },
+{ 0x2, 354, 0, 108 },
+{ 0x1, 354, 0, 109 },
+{ 0x2, 356, 0, 110 },
+{ 0x1, 356, 0, 111 },
+{ 0x2, 360, 0, 112 },
+{ 0x1, 360, 0, 113 },
+{ 0x1, 211, 0, 140 },
+{ 0x5, 211, 0, 138 },
+{ 0x3, 211, 0, 139 },
+{ 0x140, 220, 0, 116 },
+{ 0x540, 220, 0, 114 },
+{ 0x340, 220, 0, 115 },
+{ 0xc0, 220, 0, 128 },
+{ 0x2c0, 220, 0, 126 },
+{ 0x1c0, 220, 0, 127 },
+{ 0x20, 220, 0, 143 },
+{ 0xa0, 220, 0, 141 },
+{ 0x60, 220, 0, 142 },
+{ 0x10, 220, 0, 155 },
+{ 0x50, 220, 0, 153 },
+{ 0x30, 220, 0, 154 },
+{ 0x8, 220, 0, 167 },
+{ 0x28, 220, 0, 165 },
+{ 0x18, 220, 0, 166 },
+{ 0x4, 220, 0, 177 },
+{ 0x2, 220, 0, 178 },
+{ 0x1, 220, 0, 179 },
+{ 0x140, 214, 0, 119 },
+{ 0x540, 214, 0, 117 },
+{ 0x340, 214, 0, 118 },
+{ 0xc0, 214, 0, 131 },
+{ 0x2c0, 214, 0, 129 },
+{ 0x1c0, 214, 0, 130 },
+{ 0x20, 214, 0, 146 },
+{ 0xa0, 214, 0, 144 },
+{ 0x60, 214, 0, 145 },
+{ 0x10, 214, 0, 158 },
+{ 0x50, 214, 0, 156 },
+{ 0x30, 214, 0, 157 },
+{ 0x8, 214, 0, 170 },
+{ 0x28, 214, 0, 168 },
+{ 0x18, 214, 0, 169 },
+{ 0x4, 214, 0, 180 },
+{ 0x2, 214, 0, 181 },
+{ 0x1, 214, 0, 182 },
+{ 0x140, 217, 0, 122 },
+{ 0x540, 217, 0, 120 },
+{ 0x340, 217, 0, 121 },
+{ 0xc0, 217, 0, 134 },
+{ 0x2c0, 217, 0, 132 },
+{ 0x1c0, 217, 0, 133 },
+{ 0x20, 217, 0, 149 },
+{ 0xa0, 217, 0, 147 },
+{ 0x60, 217, 0, 148 },
+{ 0x10, 217, 0, 161 },
+{ 0x50, 217, 0, 159 },
+{ 0x30, 217, 0, 160 },
+{ 0x8, 217, 0, 173 },
+{ 0x28, 217, 0, 171 },
+{ 0x18, 217, 0, 172 },
+{ 0x4, 217, 0, 183 },
+{ 0x2, 217, 0, 184 },
+{ 0x1, 217, 0, 185 },
+{ 0x140, 229, 0, 125 },
+{ 0x540, 229, 0, 123 },
+{ 0x340, 229, 0, 124 },
+{ 0xc0, 229, 0, 137 },
+{ 0x2c0, 229, 0, 135 },
+{ 0x1c0, 229, 0, 136 },
+{ 0x20, 229, 0, 152 },
+{ 0xa0, 229, 0, 150 },
+{ 0x60, 229, 0, 151 },
+{ 0x10, 229, 0, 164 },
+{ 0x50, 229, 0, 162 },
+{ 0x30, 229, 0, 163 },
+{ 0x8, 229, 0, 176 },
+{ 0x28, 229, 0, 174 },
+{ 0x18, 229, 0, 175 },
+{ 0x4, 229, 0, 186 },
+{ 0x2, 229, 0, 187 },
+{ 0x1, 229, 0, 188 },
+{ 0x8, 333, 0, 189 },
+{ 0x4, 333, 0, 190 },
+{ 0x2, 333, 0, 191 },
+{ 0x1, 333, 0, 192 },
+{ 0x20, 231, 0, 200 },
+{ 0x220, 231, 0, 196 },
+{ 0x1220, 231, 0, 193 },
+{ 0xa20, 231, 0, 194 },
+{ 0x620, 231, 0, 195 },
+{ 0x120, 231, 0, 197 },
+{ 0xa0, 231, 0, 198 },
+{ 0x60, 231, 0, 199 },
+{ 0x10, 231, 0, 204 },
+{ 0x90, 231, 0, 201 },
+{ 0x50, 231, 0, 202 },
+{ 0x30, 231, 0, 203 },
+{ 0x8, 231, 0, 205 },
+{ 0x4, 231, 0, 206 },
+{ 0x2, 231, 0, 207 },
+{ 0x1, 231, 0, 208 },
+{ 0x20, 230, 0, 216 },
+{ 0x220, 230, 0, 212 },
+{ 0x1220, 230, 0, 209 },
+{ 0xa20, 230, 0, 210 },
+{ 0x620, 230, 0, 211 },
+{ 0x120, 230, 0, 213 },
+{ 0xa0, 230, 0, 214 },
+{ 0x60, 230, 0, 215 },
+{ 0x10, 230, 0, 220 },
+{ 0x90, 230, 0, 217 },
+{ 0x50, 230, 0, 218 },
+{ 0x30, 230, 0, 219 },
+{ 0x8, 230, 0, 221 },
+{ 0x4, 230, 0, 222 },
+{ 0x2, 230, 0, 223 },
+{ 0x1, 230, 0, 224 },
+{ 0x140, 222, 0, 227 },
+{ 0x540, 222, 0, 225 },
+{ 0x340, 222, 0, 226 },
+{ 0xc0, 222, 0, 236 },
+{ 0x2c0, 222, 0, 234 },
+{ 0x1c0, 222, 0, 235 },
+{ 0x20, 222, 0, 245 },
+{ 0xa0, 222, 0, 243 },
+{ 0x60, 222, 0, 244 },
+{ 0x10, 222, 0, 254 },
+{ 0x50, 222, 0, 252 },
+{ 0x30, 222, 0, 253 },
+{ 0x8, 222, 0, 263 },
+{ 0x28, 222, 0, 261 },
+{ 0x18, 222, 0, 262 },
+{ 0x4, 222, 0, 270 },
+{ 0x2, 222, 0, 271 },
+{ 0x1, 222, 0, 272 },
+{ 0x140, 224, 0, 230 },
+{ 0x540, 224, 0, 228 },
+{ 0x340, 224, 0, 229 },
+{ 0xc0, 224, 0, 239 },
+{ 0x2c0, 224, 0, 237 },
+{ 0x1c0, 224, 0, 238 },
+{ 0x20, 224, 0, 248 },
+{ 0xa0, 224, 0, 246 },
+{ 0x60, 224, 0, 247 },
+{ 0x10, 224, 0, 257 },
+{ 0x50, 224, 0, 255 },
+{ 0x30, 224, 0, 256 },
+{ 0x8, 224, 0, 266 },
+{ 0x28, 224, 0, 264 },
+{ 0x18, 224, 0, 265 },
+{ 0x4, 224, 0, 273 },
+{ 0x2, 224, 0, 274 },
+{ 0x1, 224, 0, 275 },
+{ 0x140, 226, 0, 233 },
+{ 0x540, 226, 0, 231 },
+{ 0x340, 226, 0, 232 },
+{ 0xc0, 226, 0, 242 },
+{ 0x2c0, 226, 0, 240 },
+{ 0x1c0, 226, 0, 241 },
+{ 0x20, 226, 0, 251 },
+{ 0xa0, 226, 0, 249 },
+{ 0x60, 226, 0, 250 },
+{ 0x10, 226, 0, 260 },
+{ 0x50, 226, 0, 258 },
+{ 0x30, 226, 0, 259 },
+{ 0x8, 226, 0, 269 },
+{ 0x28, 226, 0, 267 },
+{ 0x18, 226, 0, 268 },
+{ 0x4, 226, 0, 276 },
+{ 0x2, 226, 0, 277 },
+{ 0x1, 226, 0, 278 },
+{ 0x140, 221, 0, 281 },
+{ 0x540, 221, 0, 279 },
+{ 0x340, 221, 0, 280 },
+{ 0xc0, 221, 0, 290 },
+{ 0x2c0, 221, 0, 288 },
+{ 0x1c0, 221, 0, 289 },
+{ 0x20, 221, 0, 299 },
+{ 0xa0, 221, 0, 297 },
+{ 0x60, 221, 0, 298 },
+{ 0x10, 221, 0, 308 },
+{ 0x50, 221, 0, 306 },
+{ 0x30, 221, 0, 307 },
+{ 0x8, 221, 0, 317 },
+{ 0x28, 221, 0, 315 },
+{ 0x18, 221, 0, 316 },
+{ 0x4, 221, 0, 324 },
+{ 0x2, 221, 0, 325 },
+{ 0x1, 221, 0, 326 },
+{ 0x140, 223, 0, 284 },
+{ 0x540, 223, 0, 282 },
+{ 0x340, 223, 0, 283 },
+{ 0xc0, 223, 0, 293 },
+{ 0x2c0, 223, 0, 291 },
+{ 0x1c0, 223, 0, 292 },
+{ 0x20, 223, 0, 302 },
+{ 0xa0, 223, 0, 300 },
+{ 0x60, 223, 0, 301 },
+{ 0x10, 223, 0, 311 },
+{ 0x50, 223, 0, 309 },
+{ 0x30, 223, 0, 310 },
+{ 0x8, 223, 0, 320 },
+{ 0x28, 223, 0, 318 },
+{ 0x18, 223, 0, 319 },
+{ 0x4, 223, 0, 327 },
+{ 0x2, 223, 0, 328 },
+{ 0x1, 223, 0, 329 },
+{ 0x140, 225, 0, 287 },
+{ 0x540, 225, 0, 285 },
+{ 0x340, 225, 0, 286 },
+{ 0xc0, 225, 0, 296 },
+{ 0x2c0, 225, 0, 294 },
+{ 0x1c0, 225, 0, 295 },
+{ 0x20, 225, 0, 305 },
+{ 0xa0, 225, 0, 303 },
+{ 0x60, 225, 0, 304 },
+{ 0x10, 225, 0, 314 },
+{ 0x50, 225, 0, 312 },
+{ 0x30, 225, 0, 313 },
+{ 0x8, 225, 0, 323 },
+{ 0x28, 225, 0, 321 },
+{ 0x18, 225, 0, 322 },
+{ 0x4, 225, 0, 330 },
+{ 0x2, 225, 0, 331 },
+{ 0x1, 225, 0, 332 },
+{ 0x1, 351, 0, 334 },
+{ 0x3, 351, 0, 333 },
+{ 0x2, 357, 0, 335 },
+{ 0x1, 357, 0, 336 },
+{ 0x2, 353, 0, 337 },
+{ 0x1, 353, 0, 338 },
+{ 0x2, 355, 0, 339 },
+{ 0x1, 355, 0, 340 },
+{ 0x2, 359, 0, 341 },
+{ 0x1, 359, 0, 342 },
+{ 0x1, 210, 0, 369 },
+{ 0x5, 210, 0, 367 },
+{ 0x3, 210, 0, 368 },
+{ 0x140, 219, 0, 345 },
+{ 0x540, 219, 0, 343 },
+{ 0x340, 219, 0, 344 },
+{ 0xc0, 219, 0, 357 },
+{ 0x2c0, 219, 0, 355 },
+{ 0x1c0, 219, 0, 356 },
+{ 0x20, 219, 0, 372 },
+{ 0xa0, 219, 0, 370 },
+{ 0x60, 219, 0, 371 },
+{ 0x10, 219, 0, 384 },
+{ 0x50, 219, 0, 382 },
+{ 0x30, 219, 0, 383 },
+{ 0x8, 219, 0, 396 },
+{ 0x28, 219, 0, 394 },
+{ 0x18, 219, 0, 395 },
+{ 0x4, 219, 0, 406 },
+{ 0x2, 219, 0, 407 },
+{ 0x1, 219, 0, 408 },
+{ 0x140, 213, 0, 348 },
+{ 0x540, 213, 0, 346 },
+{ 0x340, 213, 0, 347 },
+{ 0xc0, 213, 0, 360 },
+{ 0x2c0, 213, 0, 358 },
+{ 0x1c0, 213, 0, 359 },
+{ 0x20, 213, 0, 375 },
+{ 0xa0, 213, 0, 373 },
+{ 0x60, 213, 0, 374 },
+{ 0x10, 213, 0, 387 },
+{ 0x50, 213, 0, 385 },
+{ 0x30, 213, 0, 386 },
+{ 0x8, 213, 0, 399 },
+{ 0x28, 213, 0, 397 },
+{ 0x18, 213, 0, 398 },
+{ 0x4, 213, 0, 409 },
+{ 0x2, 213, 0, 410 },
+{ 0x1, 213, 0, 411 },
+{ 0x140, 216, 0, 351 },
+{ 0x540, 216, 0, 349 },
+{ 0x340, 216, 0, 350 },
+{ 0xc0, 216, 0, 363 },
+{ 0x2c0, 216, 0, 361 },
+{ 0x1c0, 216, 0, 362 },
+{ 0x20, 216, 0, 378 },
+{ 0xa0, 216, 0, 376 },
+{ 0x60, 216, 0, 377 },
+{ 0x10, 216, 0, 390 },
+{ 0x50, 216, 0, 388 },
+{ 0x30, 216, 0, 389 },
+{ 0x8, 216, 0, 402 },
+{ 0x28, 216, 0, 400 },
+{ 0x18, 216, 0, 401 },
+{ 0x4, 216, 0, 412 },
+{ 0x2, 216, 0, 413 },
+{ 0x1, 216, 0, 414 },
+{ 0x140, 228, 0, 354 },
+{ 0x540, 228, 0, 352 },
+{ 0x340, 228, 0, 353 },
+{ 0xc0, 228, 0, 366 },
+{ 0x2c0, 228, 0, 364 },
+{ 0x1c0, 228, 0, 365 },
+{ 0x20, 228, 0, 381 },
+{ 0xa0, 228, 0, 379 },
+{ 0x60, 228, 0, 380 },
+{ 0x10, 228, 0, 393 },
+{ 0x50, 228, 0, 391 },
+{ 0x30, 228, 0, 392 },
+{ 0x8, 228, 0, 405 },
+{ 0x28, 228, 0, 403 },
+{ 0x18, 228, 0, 404 },
+{ 0x4, 228, 0, 415 },
+{ 0x2, 228, 0, 416 },
+{ 0x1, 228, 0, 417 },
+{ 0x1, 209, 0, 444 },
+{ 0x5, 209, 0, 442 },
+{ 0x3, 209, 0, 443 },
+{ 0x140, 218, 0, 420 },
+{ 0x540, 218, 0, 418 },
+{ 0x340, 218, 0, 419 },
+{ 0xc0, 218, 0, 432 },
+{ 0x2c0, 218, 0, 430 },
+{ 0x1c0, 218, 0, 431 },
+{ 0x20, 218, 0, 447 },
+{ 0xa0, 218, 0, 445 },
+{ 0x60, 218, 0, 446 },
+{ 0x10, 218, 0, 459 },
+{ 0x50, 218, 0, 457 },
+{ 0x30, 218, 0, 458 },
+{ 0x8, 218, 0, 471 },
+{ 0x28, 218, 0, 469 },
+{ 0x18, 218, 0, 470 },
+{ 0x4, 218, 0, 481 },
+{ 0x2, 218, 0, 482 },
+{ 0x1, 218, 0, 483 },
+{ 0x140, 212, 0, 423 },
+{ 0x540, 212, 0, 421 },
+{ 0x340, 212, 0, 422 },
+{ 0xc0, 212, 0, 435 },
+{ 0x2c0, 212, 0, 433 },
+{ 0x1c0, 212, 0, 434 },
+{ 0x20, 212, 0, 450 },
+{ 0xa0, 212, 0, 448 },
+{ 0x60, 212, 0, 449 },
+{ 0x10, 212, 0, 462 },
+{ 0x50, 212, 0, 460 },
+{ 0x30, 212, 0, 461 },
+{ 0x8, 212, 0, 474 },
+{ 0x28, 212, 0, 472 },
+{ 0x18, 212, 0, 473 },
+{ 0x4, 212, 0, 484 },
+{ 0x2, 212, 0, 485 },
+{ 0x1, 212, 0, 486 },
+{ 0x140, 215, 0, 426 },
+{ 0x540, 215, 0, 424 },
+{ 0x340, 215, 0, 425 },
+{ 0xc0, 215, 0, 438 },
+{ 0x2c0, 215, 0, 436 },
+{ 0x1c0, 215, 0, 437 },
+{ 0x20, 215, 0, 453 },
+{ 0xa0, 215, 0, 451 },
+{ 0x60, 215, 0, 452 },
+{ 0x10, 215, 0, 465 },
+{ 0x50, 215, 0, 463 },
+{ 0x30, 215, 0, 464 },
+{ 0x8, 215, 0, 477 },
+{ 0x28, 215, 0, 475 },
+{ 0x18, 215, 0, 476 },
+{ 0x4, 215, 0, 487 },
+{ 0x2, 215, 0, 488 },
+{ 0x1, 215, 0, 489 },
+{ 0x140, 227, 0, 429 },
+{ 0x540, 227, 0, 427 },
+{ 0x340, 227, 0, 428 },
+{ 0xc0, 227, 0, 441 },
+{ 0x2c0, 227, 0, 439 },
+{ 0x1c0, 227, 0, 440 },
+{ 0x20, 227, 0, 456 },
+{ 0xa0, 227, 0, 454 },
+{ 0x60, 227, 0, 455 },
+{ 0x10, 227, 0, 468 },
+{ 0x50, 227, 0, 466 },
+{ 0x30, 227, 0, 467 },
+{ 0x8, 227, 0, 480 },
+{ 0x28, 227, 0, 478 },
+{ 0x18, 227, 0, 479 },
+{ 0x4, 227, 0, 490 },
+{ 0x2, 227, 0, 491 },
+{ 0x1, 227, 0, 492 },
+{ 0x8, 350, 0, 494 },
+{ 0x18, 350, 0, 493 },
+{ 0x4, 350, 0, 496 },
+{ 0xc, 350, 0, 495 },
+{ 0x2, 350, 0, 503 },
+{ 0x1, 350, 0, 504 },
+{ 0x4, 348, 0, 498 },
+{ 0xc, 348, 0, 497 },
+{ 0x2, 348, 0, 505 },
+{ 0x1, 348, 0, 506 },
+{ 0x4, 346, 0, 500 },
+{ 0xc, 346, 0, 499 },
+{ 0x2, 346, 0, 507 },
+{ 0x1, 346, 0, 508 },
+{ 0x4, 344, 0, 502 },
+{ 0xc, 344, 0, 501 },
+{ 0x2, 344, 0, 509 },
+{ 0x1, 344, 0, 510 },
+{ 0xa00, 208, 0, 525 },
+{ 0x2a00, 208, 0, 523 },
+{ 0x1a00, 208, 0, 524 },
+{ 0x600, 208, 0, 537 },
+{ 0x2600, 208, 0, 513 },
+{ 0xa600, 208, 0, 511 },
+{ 0x6600, 208, 0, 512 },
+{ 0x1600, 208, 0, 535 },
+{ 0xe00, 208, 0, 536 },
+{ 0x100, 208, 0, 549 },
+{ 0x500, 208, 0, 547 },
+{ 0x300, 208, 0, 548 },
+{ 0x80, 208, 0, 552 },
+{ 0x280, 208, 0, 550 },
+{ 0x180, 208, 0, 551 },
+{ 0x40, 208, 0, 564 },
+{ 0x140, 208, 0, 562 },
+{ 0xc0, 208, 0, 563 },
+{ 0x20, 208, 0, 576 },
+{ 0xa0, 208, 0, 574 },
+{ 0x60, 208, 0, 575 },
+{ 0x10, 208, 0, 588 },
+{ 0x50, 208, 0, 586 },
+{ 0x30, 208, 0, 587 },
+{ 0x8, 208, 0, 600 },
+{ 0x28, 208, 0, 598 },
+{ 0x18, 208, 0, 599 },
+{ 0x4, 208, 0, 610 },
+{ 0x2, 208, 0, 611 },
+{ 0x1, 208, 0, 612 },
+{ 0x500, 205, 0, 528 },
+{ 0x1500, 205, 0, 526 },
+{ 0xd00, 205, 0, 527 },
+{ 0x300, 205, 0, 540 },
+{ 0x1300, 205, 0, 516 },
+{ 0x5300, 205, 0, 514 },
+{ 0x3300, 205, 0, 515 },
+{ 0xb00, 205, 0, 538 },
+{ 0x700, 205, 0, 539 },
+{ 0x80, 205, 0, 555 },
+{ 0x280, 205, 0, 553 },
+{ 0x180, 205, 0, 554 },
+{ 0x40, 205, 0, 567 },
+{ 0x140, 205, 0, 565 },
+{ 0xc0, 205, 0, 566 },
+{ 0x20, 205, 0, 579 },
+{ 0xa0, 205, 0, 577 },
+{ 0x60, 205, 0, 578 },
+{ 0x10, 205, 0, 591 },
+{ 0x50, 205, 0, 589 },
+{ 0x30, 205, 0, 590 },
+{ 0x8, 205, 0, 603 },
+{ 0x28, 205, 0, 601 },
+{ 0x18, 205, 0, 602 },
+{ 0x4, 205, 0, 613 },
+{ 0x2, 205, 0, 614 },
+{ 0x1, 205, 0, 615 },
+{ 0x500, 202, 0, 531 },
+{ 0x1500, 202, 0, 529 },
+{ 0xd00, 202, 0, 530 },
+{ 0x300, 202, 0, 543 },
+{ 0x1300, 202, 0, 519 },
+{ 0x5300, 202, 0, 517 },
+{ 0x3300, 202, 0, 518 },
+{ 0xb00, 202, 0, 541 },
+{ 0x700, 202, 0, 542 },
+{ 0x80, 202, 0, 558 },
+{ 0x280, 202, 0, 556 },
+{ 0x180, 202, 0, 557 },
+{ 0x40, 202, 0, 570 },
+{ 0x140, 202, 0, 568 },
+{ 0xc0, 202, 0, 569 },
+{ 0x20, 202, 0, 582 },
+{ 0xa0, 202, 0, 580 },
+{ 0x60, 202, 0, 581 },
+{ 0x10, 202, 0, 594 },
+{ 0x50, 202, 0, 592 },
+{ 0x30, 202, 0, 593 },
+{ 0x8, 202, 0, 606 },
+{ 0x28, 202, 0, 604 },
+{ 0x18, 202, 0, 605 },
+{ 0x4, 202, 0, 616 },
+{ 0x2, 202, 0, 617 },
+{ 0x1, 202, 0, 618 },
+{ 0x500, 199, 0, 534 },
+{ 0x1500, 199, 0, 532 },
+{ 0xd00, 199, 0, 533 },
+{ 0x300, 199, 0, 546 },
+{ 0x1300, 199, 0, 522 },
+{ 0x5300, 199, 0, 520 },
+{ 0x3300, 199, 0, 521 },
+{ 0xb00, 199, 0, 544 },
+{ 0x700, 199, 0, 545 },
+{ 0x80, 199, 0, 561 },
+{ 0x280, 199, 0, 559 },
+{ 0x180, 199, 0, 560 },
+{ 0x40, 199, 0, 573 },
+{ 0x140, 199, 0, 571 },
+{ 0xc0, 199, 0, 572 },
+{ 0x20, 199, 0, 585 },
+{ 0xa0, 199, 0, 583 },
+{ 0x60, 199, 0, 584 },
+{ 0x10, 199, 0, 597 },
+{ 0x50, 199, 0, 595 },
+{ 0x30, 199, 0, 596 },
+{ 0x8, 199, 0, 609 },
+{ 0x28, 199, 0, 607 },
+{ 0x18, 199, 0, 608 },
+{ 0x4, 199, 0, 619 },
+{ 0x2, 199, 0, 620 },
+{ 0x1, 199, 0, 621 },
+{ 0x8, 190, 0, 622 },
+{ 0x4, 190, 0, 623 },
+{ 0x2, 190, 0, 624 },
+{ 0x1, 190, 0, 625 },
+{ 0x2, 128, 0, 628 },
+{ 0xa, 128, 0, 626 },
+{ 0x6, 128, 0, 627 },
+{ 0x1, 128, 0, 634 },
+{ 0x5, 128, 0, 632 },
+{ 0x3, 128, 0, 633 },
+{ 0x2, 127, 0, 631 },
+{ 0xa, 127, 0, 629 },
+{ 0x6, 127, 0, 630 },
+{ 0x1, 127, 0, 637 },
+{ 0x5, 127, 0, 635 },
+{ 0x3, 127, 0, 636 },
+{ 0x4, 383, 0, 638 },
+{ 0x2, 383, 0, 639 },
+{ 0x1, 383, 0, 640 },
+{ 0x4, 382, 0, 641 },
+{ 0x2, 382, 0, 642 },
+{ 0x1, 382, 0, 643 },
+{ 0x4, 381, 0, 644 },
+{ 0x2, 381, 0, 645 },
+{ 0x1, 381, 0, 646 },
+{ 0x4, 380, 0, 647 },
+{ 0x2, 380, 0, 648 },
+{ 0x1, 380, 0, 649 },
+{ 0x2, 90, 0, 652 },
+{ 0xa, 90, 0, 650 },
+{ 0x6, 90, 0, 651 },
+{ 0x1, 90, 0, 664 },
+{ 0x5, 90, 0, 662 },
+{ 0x3, 90, 0, 663 },
+{ 0x2, 89, 0, 655 },
+{ 0xa, 89, 0, 653 },
+{ 0x6, 89, 0, 654 },
+{ 0x1, 89, 0, 667 },
+{ 0x5, 89, 0, 665 },
+{ 0x3, 89, 0, 666 },
+{ 0x2, 88, 0, 658 },
+{ 0xa, 88, 0, 656 },
+{ 0x6, 88, 0, 657 },
+{ 0x1, 88, 0, 670 },
+{ 0x5, 88, 0, 668 },
+{ 0x3, 88, 0, 669 },
+{ 0x2, 87, 0, 661 },
+{ 0xa, 87, 0, 659 },
+{ 0x6, 87, 0, 660 },
+{ 0x1, 87, 0, 673 },
+{ 0x5, 87, 0, 671 },
+{ 0x3, 87, 0, 672 },
+{ 0x8, 349, 0, 675 },
+{ 0x18, 349, 0, 674 },
+{ 0x4, 349, 0, 677 },
+{ 0xc, 349, 0, 676 },
+{ 0x2, 349, 0, 684 },
+{ 0x1, 349, 0, 685 },
+{ 0x4, 347, 0, 679 },
+{ 0xc, 347, 0, 678 },
+{ 0x2, 347, 0, 686 },
+{ 0x1, 347, 0, 687 },
+{ 0x4, 345, 0, 681 },
+{ 0xc, 345, 0, 680 },
+{ 0x2, 345, 0, 688 },
+{ 0x1, 345, 0, 689 },
+{ 0x4, 343, 0, 683 },
+{ 0xc, 343, 0, 682 },
+{ 0x2, 343, 0, 690 },
+{ 0x1, 343, 0, 691 },
+{ 0xa00, 207, 0, 706 },
+{ 0x2a00, 207, 0, 704 },
+{ 0x1a00, 207, 0, 705 },
+{ 0x600, 207, 0, 718 },
+{ 0x2600, 207, 0, 694 },
+{ 0xa600, 207, 0, 692 },
+{ 0x6600, 207, 0, 693 },
+{ 0x1600, 207, 0, 716 },
+{ 0xe00, 207, 0, 717 },
+{ 0x100, 207, 0, 730 },
+{ 0x500, 207, 0, 728 },
+{ 0x300, 207, 0, 729 },
+{ 0x80, 207, 0, 733 },
+{ 0x280, 207, 0, 731 },
+{ 0x180, 207, 0, 732 },
+{ 0x40, 207, 0, 745 },
+{ 0x140, 207, 0, 743 },
+{ 0xc0, 207, 0, 744 },
+{ 0x20, 207, 0, 757 },
+{ 0xa0, 207, 0, 755 },
+{ 0x60, 207, 0, 756 },
+{ 0x10, 207, 0, 769 },
+{ 0x50, 207, 0, 767 },
+{ 0x30, 207, 0, 768 },
+{ 0x8, 207, 0, 781 },
+{ 0x28, 207, 0, 779 },
+{ 0x18, 207, 0, 780 },
+{ 0x4, 207, 0, 791 },
+{ 0x2, 207, 0, 792 },
+{ 0x1, 207, 0, 793 },
+{ 0x500, 204, 0, 709 },
+{ 0x1500, 204, 0, 707 },
+{ 0xd00, 204, 0, 708 },
+{ 0x300, 204, 0, 721 },
+{ 0x1300, 204, 0, 697 },
+{ 0x5300, 204, 0, 695 },
+{ 0x3300, 204, 0, 696 },
+{ 0xb00, 204, 0, 719 },
+{ 0x700, 204, 0, 720 },
+{ 0x80, 204, 0, 736 },
+{ 0x280, 204, 0, 734 },
+{ 0x180, 204, 0, 735 },
+{ 0x40, 204, 0, 748 },
+{ 0x140, 204, 0, 746 },
+{ 0xc0, 204, 0, 747 },
+{ 0x20, 204, 0, 760 },
+{ 0xa0, 204, 0, 758 },
+{ 0x60, 204, 0, 759 },
+{ 0x10, 204, 0, 772 },
+{ 0x50, 204, 0, 770 },
+{ 0x30, 204, 0, 771 },
+{ 0x8, 204, 0, 784 },
+{ 0x28, 204, 0, 782 },
+{ 0x18, 204, 0, 783 },
+{ 0x4, 204, 0, 794 },
+{ 0x2, 204, 0, 795 },
+{ 0x1, 204, 0, 796 },
+{ 0x500, 201, 0, 712 },
+{ 0x1500, 201, 0, 710 },
+{ 0xd00, 201, 0, 711 },
+{ 0x300, 201, 0, 724 },
+{ 0x1300, 201, 0, 700 },
+{ 0x5300, 201, 0, 698 },
+{ 0x3300, 201, 0, 699 },
+{ 0xb00, 201, 0, 722 },
+{ 0x700, 201, 0, 723 },
+{ 0x80, 201, 0, 739 },
+{ 0x280, 201, 0, 737 },
+{ 0x180, 201, 0, 738 },
+{ 0x40, 201, 0, 751 },
+{ 0x140, 201, 0, 749 },
+{ 0xc0, 201, 0, 750 },
+{ 0x20, 201, 0, 763 },
+{ 0xa0, 201, 0, 761 },
+{ 0x60, 201, 0, 762 },
+{ 0x10, 201, 0, 775 },
+{ 0x50, 201, 0, 773 },
+{ 0x30, 201, 0, 774 },
+{ 0x8, 201, 0, 787 },
+{ 0x28, 201, 0, 785 },
+{ 0x18, 201, 0, 786 },
+{ 0x4, 201, 0, 797 },
+{ 0x2, 201, 0, 798 },
+{ 0x1, 201, 0, 799 },
+{ 0x500, 198, 0, 715 },
+{ 0x1500, 198, 0, 713 },
+{ 0xd00, 198, 0, 714 },
+{ 0x300, 198, 0, 727 },
+{ 0x1300, 198, 0, 703 },
+{ 0x5300, 198, 0, 701 },
+{ 0x3300, 198, 0, 702 },
+{ 0xb00, 198, 0, 725 },
+{ 0x700, 198, 0, 726 },
+{ 0x80, 198, 0, 742 },
+{ 0x280, 198, 0, 740 },
+{ 0x180, 198, 0, 741 },
+{ 0x40, 198, 0, 754 },
+{ 0x140, 198, 0, 752 },
+{ 0xc0, 198, 0, 753 },
+{ 0x20, 198, 0, 766 },
+{ 0xa0, 198, 0, 764 },
+{ 0x60, 198, 0, 765 },
+{ 0x10, 198, 0, 778 },
+{ 0x50, 198, 0, 776 },
+{ 0x30, 198, 0, 777 },
+{ 0x8, 198, 0, 790 },
+{ 0x28, 198, 0, 788 },
+{ 0x18, 198, 0, 789 },
+{ 0x4, 198, 0, 800 },
+{ 0x2, 198, 0, 801 },
+{ 0x1, 198, 0, 802 },
+{ 0xa00, 206, 0, 817 },
+{ 0x2a00, 206, 0, 815 },
+{ 0x1a00, 206, 0, 816 },
+{ 0x600, 206, 0, 829 },
+{ 0x2600, 206, 0, 805 },
+{ 0xa600, 206, 0, 803 },
+{ 0x6600, 206, 0, 804 },
+{ 0x1600, 206, 0, 827 },
+{ 0xe00, 206, 0, 828 },
+{ 0x100, 206, 0, 841 },
+{ 0x500, 206, 0, 839 },
+{ 0x300, 206, 0, 840 },
+{ 0x80, 206, 0, 844 },
+{ 0x280, 206, 0, 842 },
+{ 0x180, 206, 0, 843 },
+{ 0x40, 206, 0, 856 },
+{ 0x140, 206, 0, 854 },
+{ 0xc0, 206, 0, 855 },
+{ 0x20, 206, 0, 868 },
+{ 0xa0, 206, 0, 866 },
+{ 0x60, 206, 0, 867 },
+{ 0x10, 206, 0, 880 },
+{ 0x50, 206, 0, 878 },
+{ 0x30, 206, 0, 879 },
+{ 0x8, 206, 0, 892 },
+{ 0x28, 206, 0, 890 },
+{ 0x18, 206, 0, 891 },
+{ 0x4, 206, 0, 902 },
+{ 0x2, 206, 0, 903 },
+{ 0x1, 206, 0, 904 },
+{ 0x500, 203, 0, 820 },
+{ 0x1500, 203, 0, 818 },
+{ 0xd00, 203, 0, 819 },
+{ 0x300, 203, 0, 832 },
+{ 0x1300, 203, 0, 808 },
+{ 0x5300, 203, 0, 806 },
+{ 0x3300, 203, 0, 807 },
+{ 0xb00, 203, 0, 830 },
+{ 0x700, 203, 0, 831 },
+{ 0x80, 203, 0, 847 },
+{ 0x280, 203, 0, 845 },
+{ 0x180, 203, 0, 846 },
+{ 0x40, 203, 0, 859 },
+{ 0x140, 203, 0, 857 },
+{ 0xc0, 203, 0, 858 },
+{ 0x20, 203, 0, 871 },
+{ 0xa0, 203, 0, 869 },
+{ 0x60, 203, 0, 870 },
+{ 0x10, 203, 0, 883 },
+{ 0x50, 203, 0, 881 },
+{ 0x30, 203, 0, 882 },
+{ 0x8, 203, 0, 895 },
+{ 0x28, 203, 0, 893 },
+{ 0x18, 203, 0, 894 },
+{ 0x4, 203, 0, 905 },
+{ 0x2, 203, 0, 906 },
+{ 0x1, 203, 0, 907 },
+{ 0x500, 200, 0, 823 },
+{ 0x1500, 200, 0, 821 },
+{ 0xd00, 200, 0, 822 },
+{ 0x300, 200, 0, 835 },
+{ 0x1300, 200, 0, 811 },
+{ 0x5300, 200, 0, 809 },
+{ 0x3300, 200, 0, 810 },
+{ 0xb00, 200, 0, 833 },
+{ 0x700, 200, 0, 834 },
+{ 0x80, 200, 0, 850 },
+{ 0x280, 200, 0, 848 },
+{ 0x180, 200, 0, 849 },
+{ 0x40, 200, 0, 862 },
+{ 0x140, 200, 0, 860 },
+{ 0xc0, 200, 0, 861 },
+{ 0x20, 200, 0, 874 },
+{ 0xa0, 200, 0, 872 },
+{ 0x60, 200, 0, 873 },
+{ 0x10, 200, 0, 886 },
+{ 0x50, 200, 0, 884 },
+{ 0x30, 200, 0, 885 },
+{ 0x8, 200, 0, 898 },
+{ 0x28, 200, 0, 896 },
+{ 0x18, 200, 0, 897 },
+{ 0x4, 200, 0, 908 },
+{ 0x2, 200, 0, 909 },
+{ 0x1, 200, 0, 910 },
+{ 0x500, 197, 0, 826 },
+{ 0x1500, 197, 0, 824 },
+{ 0xd00, 197, 0, 825 },
+{ 0x300, 197, 0, 838 },
+{ 0x1300, 197, 0, 814 },
+{ 0x5300, 197, 0, 812 },
+{ 0x3300, 197, 0, 813 },
+{ 0xb00, 197, 0, 836 },
+{ 0x700, 197, 0, 837 },
+{ 0x80, 197, 0, 853 },
+{ 0x280, 197, 0, 851 },
+{ 0x180, 197, 0, 852 },
+{ 0x40, 197, 0, 865 },
+{ 0x140, 197, 0, 863 },
+{ 0xc0, 197, 0, 864 },
+{ 0x20, 197, 0, 877 },
+{ 0xa0, 197, 0, 875 },
+{ 0x60, 197, 0, 876 },
+{ 0x10, 197, 0, 889 },
+{ 0x50, 197, 0, 887 },
+{ 0x30, 197, 0, 888 },
+{ 0x8, 197, 0, 901 },
+{ 0x28, 197, 0, 899 },
+{ 0x18, 197, 0, 900 },
+{ 0x4, 197, 0, 911 },
+{ 0x2, 197, 0, 912 },
+{ 0x1, 197, 0, 913 },
+{ 0x1, 48, 0, 916 },
+{ 0x3, 47, 0, 917 },
+{ 0x1, 369, 0, 918 },
+{ 0x1, 375, 0, 919 },
+{ 0x2, 329, 0, 922 },
+{ 0x1, 329, 0, 923 },
+{ 0x2, 327, 0, 924 },
+{ 0x1, 327, 0, 925 },
+{ 0x1, 326, 0, 926 },
+{ 0x1, 271, 0, 931 },
+{ 0x1, 270, 0, 932 },
+{ 0x1, 269, 0, 933 },
+{ 0x1, 268, 0, 934 },
+{ 0x1, 196, 0, 935 },
+{ 0x1, 195, 0, 936 },
+{ 0x1, 267, 0, 937 },
+{ 0x1, 266, 0, 938 },
+{ 0x1, 265, 0, 939 },
+{ 0x1, 264, 0, 940 },
+{ 0x1, 263, 0, 941 },
+{ 0x1, 262, 0, 942 },
+{ 0x1, 261, 0, 943 },
+{ 0x2, 194, 0, 944 },
+{ 0x1, 194, 0, 945 },
+{ 0x2, 309, 0, 951 },
+{ 0x1, 309, 0, 952 },
+{ 0x1, 260, 0, 953 },
+{ 0x1, 259, 0, 954 },
+{ 0x1, 258, 0, 955 },
+{ 0x1, 257, 0, 956 },
+{ 0x1, 7, 0, 957 },
+{ 0x1, 256, 0, 958 },
+{ 0x1, 255, 0, 959 },
+{ 0x1, 254, 0, 960 },
+{ 0x1, 253, 0, 961 },
+{ 0x1, 331, 0, 962 },
+{ 0x1, 342, 0, 963 },
+{ 0x1, 332, 0, 964 },
+{ 0x1, 364, 0, 965 },
+{ 0x1, 252, 0, 968 },
+{ 0x1, 193, 0, 969 },
+{ 0x1, 129, 0, 972 },
+{ 0x2, 234, 0, 976 },
+{ 0x1, 234, 0, 977 },
+{ 0x1, 188, 0, 978 },
+{ 0x5, 46, 0, 980 },
+{ 0x3, 46, 0, 981 },
+{ 0x5, 45, 0, 982 },
+{ 0x3, 45, 0, 983 },
+{ 0x1, 308, 0, 984 },
+{ 0x1, 316, 0, 985 },
+{ 0x1, 314, 0, 986 },
+{ 0x1, 335, 0, 987 },
+{ 0x1, 315, 0, 988 },
+{ 0x1, 313, 0, 989 },
+{ 0x2, 321, 0, 990 },
+{ 0x1, 321, 0, 992 },
+{ 0x2, 319, 0, 991 },
+{ 0x1, 319, 0, 993 },
+{ 0x2, 339, 0, 994 },
+{ 0x1, 339, 0, 997 },
+{ 0x2, 320, 0, 995 },
+{ 0x1, 320, 0, 998 },
+{ 0x2, 318, 0, 996 },
+{ 0x1, 318, 0, 999 },
+{ 0x1, 281, 0, 1000 },
+{ 0x1, 280, 0, 1001 },
+{ 0x1, 312, 0, 1002 },
+{ 0x1, 303, 0, 1003 },
+{ 0x1, 305, 0, 1004 },
+{ 0x1, 302, 0, 1005 },
+{ 0x1, 304, 0, 1006 },
+{ 0x2, 379, 0, 1007 },
+{ 0x1, 379, 0, 1010 },
+{ 0x2, 378, 0, 1008 },
+{ 0x1, 378, 0, 1011 },
+{ 0x2, 377, 0, 1009 },
+{ 0x1, 377, 0, 1012 },
+{ 0x1, 291, 0, 1013 },
+{ 0x2, 290, 0, 1014 },
+{ 0x1, 290, 0, 1015 },
+{ 0x2, 237, 0, 1016 },
+{ 0x1, 237, 0, 1019 },
+{ 0x2, 236, 0, 1017 },
+{ 0x1, 236, 0, 1020 },
+{ 0x2, 235, 0, 1018 },
+{ 0x1, 235, 0, 1021 },
+{ 0x2, 306, 0, 1022 },
+{ 0x1, 306, 0, 1023 },
+{ 0x2, 307, 0, 1024 },
+{ 0x1, 307, 0, 1025 },
+{ 0xa, 373, 1, 1031 },
+{ 0xa, 374, 0, 1030 },
+{ 0x1a, 373, 1, 1027 },
+{ 0x32, 374, 0, 1026 },
+{ 0x6, 373, 1, 1035 },
+{ 0x6, 374, 0, 1034 },
+{ 0x1, 373, 1, 1041 },
+{ 0x1, 374, 0, 1040 },
+{ 0x9, 373, 1, 1033 },
+{ 0x9, 374, 0, 1032 },
+{ 0x19, 373, 1, 1029 },
+{ 0x31, 374, 0, 1028 },
+{ 0x5, 373, 1, 1037 },
+{ 0x5, 374, 0, 1036 },
+{ 0x3, 373, 1, 1039 },
+{ 0x3, 374, 0, 1038 },
+{ 0xa, 370, 1, 1047 },
+{ 0xa, 371, 0, 1046 },
+{ 0x1a, 370, 1, 1043 },
+{ 0x32, 371, 0, 1042 },
+{ 0x6, 370, 1, 1051 },
+{ 0x6, 371, 0, 1050 },
+{ 0x1, 370, 1, 1057 },
+{ 0x1, 371, 0, 1056 },
+{ 0x9, 370, 1, 1049 },
+{ 0x9, 371, 0, 1048 },
+{ 0x19, 370, 1, 1045 },
+{ 0x31, 371, 0, 1044 },
+{ 0x5, 370, 1, 1053 },
+{ 0x5, 371, 0, 1052 },
+{ 0x3, 370, 1, 1055 },
+{ 0x3, 371, 0, 1054 },
+{ 0x1, 97, 0, 1058 },
+{ 0x1, 96, 0, 1059 },
+{ 0x1, 334, 1, 1061 },
+{ 0x1, 95, 0, 1060 },
+{ 0x2, 338, 1, 1063 },
+{ 0x2, 99, 0, 1062 },
+{ 0x1, 338, 1, 1065 },
+{ 0x1, 99, 0, 1064 },
+{ 0x1, 340, 0, 1066 },
+{ 0x1, 94, 0, 1067 },
+{ 0x2, 93, 0, 1068 },
+{ 0x2, 92, 0, 1069 },
+{ 0x1, 391, 1, 1075 },
+{ 0x1, 192, 0, 970 },
+{ 0x1, 390, 0, 1076 },
+{ 0x1, 389, 1, 1077 },
+{ 0x1, 191, 0, 979 },
+{ 0x1, 251, 0, 1078 },
+{ 0x1, 250, 1, 1079 },
+{ 0x1, 233, 0, 971 },
+{ 0x1, 249, 0, 1080 },
+{ 0x1, 248, 1, 1081 },
+{ 0x1, 368, 0, 973 },
+{ 0x1, 247, 1, 1082 },
+{ 0x1, 341, 0, 975 },
+{ 0x1, 246, 0, 1083 },
+{ 0x1, 245, 0, 1084 },
+{ 0x1, 244, 1, 1085 },
+{ 0x2, 341, 0, 974 },
+{ 0x10, 243, 0, 1089 },
+{ 0x90, 243, 0, 1087 },
+{ 0x190, 243, 0, 1086 },
+{ 0x50, 243, 0, 1088 },
+{ 0x30, 243, 0, 1091 },
+{ 0x70, 243, 0, 1090 },
+{ 0x8, 243, 0, 1093 },
+{ 0x18, 243, 0, 1092 },
+{ 0x4, 243, 0, 1094 },
+{ 0x1, 243, 0, 1097 },
+{ 0x3, 243, 0, 1096 },
+{ 0x1, 242, 1, 1098 },
+{ 0x2, 243, 0, 1095 },
+{ 0x3, 44, 0, 1099 },
+{ 0x1, 284, 1, 1100 },
+{ 0x1, 285, 1, 966 },
+{ 0x1, 286, 0, 86 },
+{ 0x1, 32, 1, 1101 },
+{ 0x1, 33, 1, 967 },
+{ 0x1, 34, 0, 87 },
+{ 0x1, 182, 0, 1102 },
+{ 0x4, 384, 0, 1103 },
+{ 0x2, 384, 0, 1104 },
+{ 0x1, 384, 1, 1106 },
+{ 0x1, 385, 0, 1105 },
+{ 0x8, 386, 0, 1107 },
+{ 0x4, 386, 0, 1108 },
+{ 0x1, 386, 1, 1110 },
+{ 0x2, 386, 0, 1109 },
+{ 0x8, 170, 0, 1111 },
+{ 0x4, 170, 0, 1112 },
+{ 0x2, 170, 0, 1113 },
+{ 0x1, 170, 1, 1115 },
+{ 0x1, 171, 0, 1114 },
+{ 0x10, 172, 0, 1116 },
+{ 0x8, 172, 0, 1117 },
+{ 0x4, 172, 0, 1118 },
+{ 0x1, 172, 1, 1120 },
+{ 0x2, 172, 0, 1119 },
+{ 0x220, 143, 0, 1121 },
+{ 0x120, 143, 0, 1122 },
+{ 0xa0, 143, 0, 1123 },
+{ 0x60, 143, 1, 1125 },
+{ 0x4, 144, 0, 1124 },
+{ 0x110, 143, 0, 1131 },
+{ 0x90, 143, 0, 1132 },
+{ 0x50, 143, 0, 1133 },
+{ 0x30, 143, 1, 1135 },
+{ 0x2, 144, 0, 1134 },
+{ 0x8, 143, 0, 1136 },
+{ 0x4, 143, 0, 1137 },
+{ 0x2, 143, 0, 1138 },
+{ 0x1, 143, 1, 1140 },
+{ 0x1, 144, 0, 1139 },
+{ 0x440, 145, 0, 1126 },
+{ 0x240, 145, 0, 1127 },
+{ 0x140, 145, 0, 1128 },
+{ 0xc0, 145, 1, 1130 },
+{ 0x40, 145, 0, 1129 },
+{ 0x220, 145, 0, 1141 },
+{ 0x120, 145, 0, 1142 },
+{ 0xa0, 145, 0, 1143 },
+{ 0x60, 145, 1, 1145 },
+{ 0x20, 145, 0, 1144 },
+{ 0x10, 145, 0, 1146 },
+{ 0x8, 145, 0, 1147 },
+{ 0x4, 145, 0, 1148 },
+{ 0x1, 145, 1, 1150 },
+{ 0x2, 145, 0, 1149 },
+{ 0x10, 177, 0, 1151 },
+{ 0x8, 177, 0, 1152 },
+{ 0x4, 177, 0, 1153 },
+{ 0x1, 177, 1, 1155 },
+{ 0x2, 177, 0, 1154 },
+{ 0x8, 166, 0, 1156 },
+{ 0x4, 166, 0, 1157 },
+{ 0x2, 166, 0, 1158 },
+{ 0x1, 166, 1, 1160 },
+{ 0x1, 167, 0, 1159 },
+{ 0x220, 139, 0, 1161 },
+{ 0x120, 139, 0, 1162 },
+{ 0xa0, 139, 0, 1163 },
+{ 0x60, 139, 1, 1165 },
+{ 0x4, 140, 0, 1164 },
+{ 0x110, 139, 0, 1171 },
+{ 0x90, 139, 0, 1172 },
+{ 0x50, 139, 0, 1173 },
+{ 0x30, 139, 1, 1175 },
+{ 0x2, 140, 0, 1174 },
+{ 0x8, 139, 0, 1176 },
+{ 0x4, 139, 0, 1177 },
+{ 0x2, 139, 0, 1178 },
+{ 0x1, 139, 1, 1180 },
+{ 0x1, 140, 0, 1179 },
+{ 0x440, 185, 0, 1166 },
+{ 0x240, 185, 0, 1167 },
+{ 0x140, 185, 0, 1168 },
+{ 0xc0, 185, 1, 1170 },
+{ 0x40, 185, 0, 1169 },
+{ 0x220, 185, 0, 1181 },
+{ 0x120, 185, 0, 1182 },
+{ 0xa0, 185, 0, 1183 },
+{ 0x60, 185, 1, 1185 },
+{ 0x20, 185, 0, 1184 },
+{ 0x10, 185, 0, 1186 },
+{ 0x8, 185, 0, 1187 },
+{ 0x4, 185, 0, 1188 },
+{ 0x1, 185, 1, 1190 },
+{ 0x2, 185, 0, 1189 },
+{ 0x8, 158, 0, 1191 },
+{ 0x4, 158, 0, 1192 },
+{ 0x2, 158, 0, 1193 },
+{ 0x1, 158, 1, 1195 },
+{ 0x1, 159, 0, 1194 },
+{ 0x10, 165, 0, 1196 },
+{ 0x8, 165, 0, 1197 },
+{ 0x4, 165, 0, 1198 },
+{ 0x1, 165, 1, 1200 },
+{ 0x2, 165, 0, 1199 },
+{ 0x220, 130, 0, 1201 },
+{ 0x120, 130, 0, 1202 },
+{ 0xa0, 130, 0, 1203 },
+{ 0x60, 130, 1, 1205 },
+{ 0x4, 131, 0, 1204 },
+{ 0x110, 130, 0, 1226 },
+{ 0x90, 130, 0, 1227 },
+{ 0x50, 130, 0, 1228 },
+{ 0x30, 130, 1, 1230 },
+{ 0x2, 131, 0, 1229 },
+{ 0x8, 130, 0, 1231 },
+{ 0x4, 130, 0, 1232 },
+{ 0x2, 130, 0, 1233 },
+{ 0x1, 130, 1, 1235 },
+{ 0x1, 131, 0, 1234 },
+{ 0x440, 138, 0, 1206 },
+{ 0x240, 138, 0, 1207 },
+{ 0x140, 138, 0, 1208 },
+{ 0xc0, 138, 1, 1210 },
+{ 0x40, 138, 0, 1209 },
+{ 0x220, 138, 0, 1236 },
+{ 0x120, 138, 0, 1237 },
+{ 0xa0, 138, 0, 1238 },
+{ 0x60, 138, 1, 1240 },
+{ 0x20, 138, 0, 1239 },
+{ 0x10, 138, 0, 1241 },
+{ 0x8, 138, 0, 1242 },
+{ 0x4, 138, 0, 1243 },
+{ 0x1, 138, 1, 1245 },
+{ 0x2, 138, 0, 1244 },
+{ 0x440, 101, 0, 1211 },
+{ 0x240, 101, 0, 1212 },
+{ 0x140, 101, 0, 1213 },
+{ 0xc0, 101, 1, 1215 },
+{ 0x40, 101, 0, 1214 },
+{ 0x220, 101, 0, 1246 },
+{ 0x120, 101, 0, 1247 },
+{ 0xa0, 101, 0, 1248 },
+{ 0x60, 101, 1, 1250 },
+{ 0x20, 101, 0, 1249 },
+{ 0x10, 101, 0, 1251 },
+{ 0x8, 101, 0, 1252 },
+{ 0x1, 101, 1, 1255 },
+{ 0x2, 101, 0, 1254 },
+{ 0x440, 146, 1, 1221 },
+{ 0x441, 126, 0, 1216 },
+{ 0x240, 146, 1, 1222 },
+{ 0x241, 126, 0, 1217 },
+{ 0x140, 146, 1, 1223 },
+{ 0x141, 126, 0, 1218 },
+{ 0xc0, 146, 1, 1225 },
+{ 0x40, 146, 1, 1224 },
+{ 0xc1, 126, 1, 1220 },
+{ 0x41, 126, 0, 1219 },
+{ 0x220, 146, 1, 1266 },
+{ 0x221, 126, 0, 1256 },
+{ 0x120, 146, 1, 1267 },
+{ 0x121, 126, 0, 1257 },
+{ 0xa0, 146, 1, 1268 },
+{ 0xa1, 126, 0, 1258 },
+{ 0x60, 146, 1, 1270 },
+{ 0x20, 146, 1, 1269 },
+{ 0x61, 126, 1, 1260 },
+{ 0x21, 126, 0, 1259 },
+{ 0x10, 146, 1, 1271 },
+{ 0x11, 126, 0, 1261 },
+{ 0x8, 146, 1, 1272 },
+{ 0x9, 126, 0, 1262 },
+{ 0x4, 146, 1, 1273 },
+{ 0x5, 126, 0, 1263 },
+{ 0x1, 146, 1, 1275 },
+{ 0x2, 146, 1, 1274 },
+{ 0x3, 126, 1, 1265 },
+{ 0x1, 126, 0, 1264 },
+{ 0x1, 111, 1, 1279 },
+{ 0x1, 112, 0, 1278 },
+{ 0x3, 111, 1, 1277 },
+{ 0x3, 112, 0, 1276 },
+{ 0x1108, 115, 1, 1360 },
+{ 0x1108, 119, 0, 1280 },
+{ 0x908, 115, 1, 1361 },
+{ 0x908, 119, 0, 1281 },
+{ 0x508, 115, 1, 1362 },
+{ 0x508, 119, 0, 1282 },
+{ 0x308, 115, 1, 1364 },
+{ 0x18, 116, 1, 1363 },
+{ 0x308, 119, 1, 1284 },
+{ 0x18, 120, 0, 1283 },
+{ 0x88, 115, 1, 1380 },
+{ 0x88, 119, 0, 1320 },
+{ 0x48, 115, 1, 1381 },
+{ 0x48, 119, 0, 1321 },
+{ 0x28, 115, 1, 1382 },
+{ 0x28, 119, 0, 1322 },
+{ 0x18, 115, 1, 1384 },
+{ 0x8, 116, 1, 1383 },
+{ 0x18, 119, 1, 1324 },
+{ 0x8, 120, 0, 1323 },
+{ 0x884, 115, 1, 1365 },
+{ 0x442, 117, 1, 1310 },
+{ 0x884, 119, 1, 1295 },
+{ 0x442, 121, 0, 1285 },
+{ 0x484, 115, 1, 1366 },
+{ 0x242, 117, 1, 1311 },
+{ 0x484, 119, 1, 1296 },
+{ 0x242, 121, 0, 1286 },
+{ 0x284, 115, 1, 1367 },
+{ 0x142, 117, 1, 1312 },
+{ 0x284, 119, 1, 1297 },
+{ 0x142, 121, 0, 1287 },
+{ 0x184, 115, 1, 1369 },
+{ 0xc, 116, 1, 1368 },
+{ 0xc2, 117, 1, 1314 },
+{ 0x6, 118, 1, 1313 },
+{ 0x184, 119, 1, 1299 },
+{ 0xc, 120, 1, 1298 },
+{ 0xc2, 121, 1, 1289 },
+{ 0x6, 122, 0, 1288 },
+{ 0x44, 115, 1, 1385 },
+{ 0x22, 117, 1, 1350 },
+{ 0x44, 119, 1, 1335 },
+{ 0x22, 121, 0, 1325 },
+{ 0x24, 115, 1, 1386 },
+{ 0x12, 117, 1, 1351 },
+{ 0x24, 119, 1, 1336 },
+{ 0x12, 121, 0, 1326 },
+{ 0x14, 115, 1, 1387 },
+{ 0xa, 117, 1, 1352 },
+{ 0x14, 119, 1, 1337 },
+{ 0xa, 121, 0, 1327 },
+{ 0xc, 115, 1, 1389 },
+{ 0x4, 116, 1, 1388 },
+{ 0x6, 117, 1, 1354 },
+{ 0x2, 118, 1, 1353 },
+{ 0xc, 119, 1, 1339 },
+{ 0x4, 120, 1, 1338 },
+{ 0x6, 121, 1, 1329 },
+{ 0x2, 122, 0, 1328 },
+{ 0x442, 115, 1, 1370 },
+{ 0x221, 117, 1, 1315 },
+{ 0x442, 119, 1, 1300 },
+{ 0x221, 121, 0, 1290 },
+{ 0x242, 115, 1, 1371 },
+{ 0x121, 117, 1, 1316 },
+{ 0x242, 119, 1, 1301 },
+{ 0x121, 121, 0, 1291 },
+{ 0x142, 115, 1, 1372 },
+{ 0xa1, 117, 1, 1317 },
+{ 0x142, 119, 1, 1302 },
+{ 0xa1, 121, 0, 1292 },
+{ 0xc2, 115, 1, 1374 },
+{ 0x6, 116, 1, 1373 },
+{ 0x61, 117, 1, 1319 },
+{ 0x3, 118, 1, 1318 },
+{ 0xc2, 119, 1, 1304 },
+{ 0x6, 120, 1, 1303 },
+{ 0x61, 121, 1, 1294 },
+{ 0x3, 122, 0, 1293 },
+{ 0x22, 115, 1, 1390 },
+{ 0x11, 117, 1, 1355 },
+{ 0x22, 119, 1, 1340 },
+{ 0x11, 121, 0, 1330 },
+{ 0x12, 115, 1, 1391 },
+{ 0x9, 117, 1, 1356 },
+{ 0x12, 119, 1, 1341 },
+{ 0x9, 121, 0, 1331 },
+{ 0xa, 115, 1, 1392 },
+{ 0x5, 117, 1, 1357 },
+{ 0xa, 119, 1, 1342 },
+{ 0x5, 121, 0, 1332 },
+{ 0x6, 115, 1, 1394 },
+{ 0x2, 116, 1, 1393 },
+{ 0x3, 117, 1, 1359 },
+{ 0x1, 118, 1, 1358 },
+{ 0x6, 119, 1, 1344 },
+{ 0x2, 120, 1, 1343 },
+{ 0x3, 121, 1, 1334 },
+{ 0x1, 122, 0, 1333 },
+{ 0x221, 115, 1, 1375 },
+{ 0x221, 119, 0, 1305 },
+{ 0x121, 115, 1, 1376 },
+{ 0x121, 119, 0, 1306 },
+{ 0xa1, 115, 1, 1377 },
+{ 0xa1, 119, 0, 1307 },
+{ 0x61, 115, 1, 1379 },
+{ 0x3, 116, 1, 1378 },
+{ 0x61, 119, 1, 1309 },
+{ 0x3, 120, 0, 1308 },
+{ 0x11, 115, 1, 1395 },
+{ 0x11, 119, 0, 1345 },
+{ 0x9, 115, 1, 1396 },
+{ 0x9, 119, 0, 1346 },
+{ 0x5, 115, 1, 1397 },
+{ 0x5, 119, 0, 1347 },
+{ 0x3, 115, 1, 1399 },
+{ 0x1, 116, 1, 1398 },
+{ 0x3, 119, 1, 1349 },
+{ 0x1, 120, 0, 1348 },
+{ 0x442, 156, 0, 1400 },
+{ 0x242, 156, 0, 1401 },
+{ 0x142, 156, 0, 1402 },
+{ 0xc2, 156, 1, 1404 },
+{ 0x6, 157, 1, 1403 },
+{ 0x1, 376, 0, 920 },
+{ 0x22, 156, 0, 1410 },
+{ 0x12, 156, 0, 1411 },
+{ 0xa, 156, 0, 1412 },
+{ 0x6, 156, 1, 1414 },
+{ 0x2, 157, 1, 1413 },
+{ 0x2, 310, 0, 949 },
+{ 0x221, 156, 0, 1405 },
+{ 0x121, 156, 0, 1406 },
+{ 0xa1, 156, 0, 1407 },
+{ 0x61, 156, 1, 1409 },
+{ 0x3, 157, 1, 1408 },
+{ 0x1, 372, 0, 921 },
+{ 0x11, 156, 0, 1415 },
+{ 0x9, 156, 0, 1416 },
+{ 0x5, 156, 0, 1417 },
+{ 0x3, 156, 1, 1419 },
+{ 0x1, 157, 1, 1418 },
+{ 0x1, 310, 0, 950 },
+{ 0x4, 162, 0, 1420 },
+{ 0x1, 162, 0, 1422 },
+{ 0x1, 169, 0, 1423 },
+{ 0x1, 168, 1, 1424 },
+{ 0x2, 162, 0, 1421 },
+{ 0x1, 148, 0, 1425 },
+{ 0x880, 154, 0, 1426 },
+{ 0x480, 154, 0, 1427 },
+{ 0x280, 154, 0, 1428 },
+{ 0x180, 154, 1, 1430 },
+{ 0x80, 155, 0, 1429 },
+{ 0x440, 154, 0, 1431 },
+{ 0x240, 154, 0, 1432 },
+{ 0x140, 154, 0, 1433 },
+{ 0xc0, 154, 1, 1435 },
+{ 0x40, 155, 0, 1434 },
+{ 0x220, 154, 0, 1436 },
+{ 0x120, 154, 0, 1437 },
+{ 0xa0, 154, 0, 1438 },
+{ 0x60, 154, 1, 1440 },
+{ 0x20, 155, 0, 1439 },
+{ 0x110, 154, 0, 1441 },
+{ 0x90, 154, 0, 1442 },
+{ 0x50, 154, 0, 1443 },
+{ 0x30, 154, 1, 1445 },
+{ 0x10, 155, 1, 1444 },
+{ 0x1, 328, 0, 914 },
+{ 0x88, 154, 0, 1446 },
+{ 0x48, 154, 0, 1447 },
+{ 0x28, 154, 0, 1448 },
+{ 0x18, 154, 1, 1450 },
+{ 0x8, 155, 1, 1449 },
+{ 0xc, 311, 0, 946 },
+{ 0x44, 154, 0, 1451 },
+{ 0x24, 154, 0, 1452 },
+{ 0x14, 154, 0, 1453 },
+{ 0xc, 154, 1, 1455 },
+{ 0x4, 155, 1, 1454 },
+{ 0x6, 311, 0, 947 },
+{ 0x22, 154, 0, 1456 },
+{ 0x12, 154, 0, 1457 },
+{ 0xa, 154, 0, 1458 },
+{ 0x6, 154, 1, 1460 },
+{ 0x2, 155, 1, 1459 },
+{ 0x3, 311, 0, 948 },
+{ 0x11, 154, 0, 1461 },
+{ 0x9, 154, 0, 1462 },
+{ 0x5, 154, 0, 1463 },
+{ 0x3, 154, 1, 1465 },
+{ 0x1, 155, 1, 1464 },
+{ 0x1, 108, 0, 915 },
+{ 0x8, 150, 0, 1466 },
+{ 0x4, 150, 0, 1467 },
+{ 0x2, 150, 0, 1468 },
+{ 0x1, 150, 1, 1470 },
+{ 0x1, 151, 1, 1469 },
+{ 0x1, 275, 0, 927 },
+{ 0x8, 152, 0, 1471 },
+{ 0x4, 152, 0, 1472 },
+{ 0x2, 152, 0, 1473 },
+{ 0x1, 152, 1, 1475 },
+{ 0x1, 153, 1, 1474 },
+{ 0x1, 274, 0, 928 },
+{ 0x8, 160, 0, 1476 },
+{ 0x4, 160, 0, 1477 },
+{ 0x2, 160, 0, 1478 },
+{ 0x1, 160, 1, 1480 },
+{ 0x1, 161, 1, 1479 },
+{ 0x1, 273, 0, 929 },
+{ 0x8, 163, 0, 1481 },
+{ 0x4, 163, 0, 1482 },
+{ 0x2, 163, 0, 1483 },
+{ 0x1, 163, 1, 1485 },
+{ 0x1, 164, 1, 1484 },
+{ 0x1, 272, 0, 930 },
+{ 0x8, 175, 0, 1486 },
+{ 0x4, 175, 0, 1487 },
+{ 0x2, 175, 0, 1488 },
+{ 0x1, 175, 1, 1490 },
+{ 0x1, 176, 0, 1489 },
+{ 0x8, 173, 0, 1491 },
+{ 0x4, 173, 0, 1492 },
+{ 0x2, 173, 0, 1493 },
+{ 0x1, 173, 1, 1495 },
+{ 0x1, 174, 0, 1494 },
+{ 0x1, 283, 0, 1496 },
+{ 0x1, 31, 0, 1497 },
+{ 0x8, 109, 0, 1498 },
+{ 0x4, 109, 0, 1499 },
+{ 0x2, 109, 0, 1500 },
+{ 0x1, 109, 1, 1502 },
+{ 0x1, 110, 0, 1501 },
+{ 0x8, 113, 0, 1503 },
+{ 0x4, 113, 0, 1504 },
+{ 0x2, 113, 0, 1505 },
+{ 0x1, 113, 1, 1507 },
+{ 0x1, 114, 0, 1506 },
+{ 0x8, 183, 0, 1508 },
+{ 0x4, 183, 0, 1509 },
+{ 0x2, 183, 0, 1510 },
+{ 0x1, 183, 1, 1512 },
+{ 0x1, 184, 0, 1511 },
+{ 0x1, 125, 0, 1513 },
+{ 0x442, 123, 0, 1514 },
+{ 0x242, 123, 0, 1515 },
+{ 0x142, 123, 0, 1516 },
+{ 0xc2, 123, 1, 1518 },
+{ 0x6, 124, 0, 1517 },
+{ 0x22, 123, 0, 1524 },
+{ 0x12, 123, 0, 1525 },
+{ 0xa, 123, 0, 1526 },
+{ 0x6, 123, 1, 1528 },
+{ 0x2, 124, 1, 1527 },
+{ 0x1, 93, 0, 1070 },
+{ 0x221, 123, 0, 1519 },
+{ 0x121, 123, 0, 1520 },
+{ 0xa1, 123, 0, 1521 },
+{ 0x61, 123, 1, 1523 },
+{ 0x3, 124, 0, 1522 },
+{ 0x11, 123, 0, 1529 },
+{ 0x9, 123, 0, 1530 },
+{ 0x5, 123, 0, 1531 },
+{ 0x3, 123, 1, 1533 },
+{ 0x1, 124, 1, 1532 },
+{ 0x1, 92, 0, 1071 },
+{ 0x1, 189, 0, 1534 },
+{ 0x1, 147, 0, 1535 },
+{ 0x1, 107, 0, 1536 },
+{ 0x1, 106, 0, 1537 },
+{ 0x4, 186, 0, 1538 },
+{ 0x2, 186, 0, 1539 },
+{ 0x1, 186, 0, 1540 },
+{ 0x1, 149, 0, 1541 },
+{ 0x2, 187, 0, 1542 },
+{ 0x1, 187, 0, 1543 },
+{ 0x4, 137, 0, 1544 },
+{ 0x2, 137, 0, 1545 },
+{ 0x1, 137, 0, 1546 },
+{ 0x4, 134, 0, 1547 },
+{ 0x1, 142, 0, 1550 },
+{ 0x1, 141, 1, 1551 },
+{ 0x2, 134, 0, 1548 },
+{ 0x1, 100, 0, 1552 },
+{ 0x1, 241, 1, 1553 },
+{ 0x1, 134, 0, 1549 },
+{ 0x8, 102, 0, 1554 },
+{ 0x4, 102, 0, 1555 },
+{ 0x2, 102, 0, 1556 },
+{ 0x1, 102, 1, 1558 },
+{ 0x1, 103, 0, 1557 },
+{ 0x8, 104, 0, 1559 },
+{ 0x4, 104, 0, 1560 },
+{ 0x2, 104, 0, 1561 },
+{ 0x1, 104, 1, 1563 },
+{ 0x1, 105, 1, 1562 },
+{ 0x1, 367, 0, 1072 },
+{ 0x8, 132, 0, 1564 },
+{ 0x4, 132, 0, 1565 },
+{ 0x2, 132, 0, 1566 },
+{ 0x1, 132, 1, 1568 },
+{ 0x1, 133, 1, 1567 },
+{ 0x1, 366, 0, 1073 },
+{ 0x8, 135, 0, 1569 },
+{ 0x4, 135, 0, 1570 },
+{ 0x2, 135, 0, 1571 },
+{ 0x1, 135, 1, 1573 },
+{ 0x1, 136, 1, 1572 },
+{ 0x1, 365, 0, 1074 },
+{ 0x8, 180, 0, 1574 },
+{ 0x4, 180, 0, 1575 },
+{ 0x2, 180, 0, 1576 },
+{ 0x1, 180, 1, 1578 },
+{ 0x1, 181, 0, 1577 },
+{ 0x8, 178, 0, 1579 },
+{ 0x4, 178, 0, 1580 },
+{ 0x2, 178, 0, 1581 },
+{ 0x1, 178, 1, 1583 },
+{ 0x1, 179, 0, 1582 },
+{ 0x8, 42, 0, 1588 },
+{ 0x18, 42, 0, 1584 },
+{ 0x4, 42, 0, 1589 },
+{ 0xc, 42, 0, 1585 },
+{ 0x2, 42, 0, 1590 },
+{ 0x6, 42, 0, 1586 },
+{ 0x1, 42, 0, 1591 },
+{ 0x3, 42, 0, 1587 },
+{ 0x51, 28, 0, 1593 },
+{ 0xd1, 28, 0, 1592 },
+{ 0x31, 28, 1, 1603 },
+{ 0x11, 29, 0, 1602 },
+{ 0x71, 28, 1, 1601 },
+{ 0x31, 29, 0, 1600 },
+{ 0x29, 28, 0, 1595 },
+{ 0x69, 28, 0, 1594 },
+{ 0x19, 28, 1, 1607 },
+{ 0x9, 29, 0, 1606 },
+{ 0x39, 28, 1, 1605 },
+{ 0x19, 29, 0, 1604 },
+{ 0x15, 28, 0, 1597 },
+{ 0x35, 28, 0, 1596 },
+{ 0xd, 28, 1, 1611 },
+{ 0x5, 29, 0, 1610 },
+{ 0x1d, 28, 1, 1609 },
+{ 0xd, 29, 0, 1608 },
+{ 0xb, 28, 0, 1599 },
+{ 0x1b, 28, 0, 1598 },
+{ 0x7, 28, 1, 1615 },
+{ 0x3, 29, 0, 1614 },
+{ 0xf, 28, 1, 1613 },
+{ 0x7, 29, 0, 1612 },
+{ 0xa2, 26, 0, 1617 },
+{ 0x1a2, 26, 0, 1616 },
+{ 0x62, 26, 1, 1627 },
+{ 0x22, 27, 0, 1626 },
+{ 0xe2, 26, 1, 1625 },
+{ 0x62, 27, 0, 1624 },
+{ 0x52, 26, 0, 1619 },
+{ 0xd2, 26, 0, 1618 },
+{ 0x32, 26, 1, 1631 },
+{ 0x12, 27, 0, 1630 },
+{ 0x72, 26, 1, 1629 },
+{ 0x32, 27, 0, 1628 },
+{ 0x2a, 26, 0, 1621 },
+{ 0x6a, 26, 0, 1620 },
+{ 0x1a, 26, 1, 1635 },
+{ 0xa, 27, 0, 1634 },
+{ 0x3a, 26, 1, 1633 },
+{ 0x1a, 27, 0, 1632 },
+{ 0x16, 26, 0, 1623 },
+{ 0x36, 26, 0, 1622 },
+{ 0xe, 26, 1, 1639 },
+{ 0x6, 27, 0, 1638 },
+{ 0x1e, 26, 1, 1637 },
+{ 0xe, 27, 0, 1636 },
+{ 0x51, 26, 0, 1641 },
+{ 0xd1, 26, 0, 1640 },
+{ 0x31, 26, 1, 1651 },
+{ 0x11, 27, 0, 1650 },
+{ 0x71, 26, 1, 1649 },
+{ 0x31, 27, 0, 1648 },
+{ 0x29, 26, 0, 1643 },
+{ 0x69, 26, 0, 1642 },
+{ 0x19, 26, 1, 1655 },
+{ 0x9, 27, 0, 1654 },
+{ 0x39, 26, 1, 1653 },
+{ 0x19, 27, 0, 1652 },
+{ 0x15, 26, 0, 1645 },
+{ 0x35, 26, 0, 1644 },
+{ 0xd, 26, 1, 1659 },
+{ 0x5, 27, 0, 1658 },
+{ 0x1d, 26, 1, 1657 },
+{ 0xd, 27, 0, 1656 },
+{ 0xb, 26, 0, 1647 },
+{ 0x1b, 26, 0, 1646 },
+{ 0x7, 26, 1, 1663 },
+{ 0x3, 27, 0, 1662 },
+{ 0xf, 26, 1, 1661 },
+{ 0x7, 27, 0, 1660 },
+{ 0x51, 24, 0, 1665 },
+{ 0xd1, 24, 0, 1664 },
+{ 0x31, 24, 1, 1675 },
+{ 0x11, 25, 0, 1674 },
+{ 0x71, 24, 1, 1673 },
+{ 0x31, 25, 0, 1672 },
+{ 0x29, 24, 0, 1667 },
+{ 0x69, 24, 0, 1666 },
+{ 0x19, 24, 1, 1679 },
+{ 0x9, 25, 0, 1678 },
+{ 0x39, 24, 1, 1677 },
+{ 0x19, 25, 0, 1676 },
+{ 0x15, 24, 0, 1669 },
+{ 0x35, 24, 0, 1668 },
+{ 0xd, 24, 1, 1683 },
+{ 0x5, 25, 0, 1682 },
+{ 0x1d, 24, 1, 1681 },
+{ 0xd, 25, 0, 1680 },
+{ 0xb, 24, 0, 1671 },
+{ 0x1b, 24, 0, 1670 },
+{ 0x7, 24, 1, 1687 },
+{ 0x3, 25, 0, 1686 },
+{ 0xf, 24, 1, 1685 },
+{ 0x7, 25, 0, 1684 },
+{ 0xa2, 22, 0, 1689 },
+{ 0x1a2, 22, 0, 1688 },
+{ 0x62, 22, 1, 1699 },
+{ 0x22, 23, 0, 1698 },
+{ 0xe2, 22, 1, 1697 },
+{ 0x62, 23, 0, 1696 },
+{ 0x52, 22, 0, 1691 },
+{ 0xd2, 22, 0, 1690 },
+{ 0x32, 22, 1, 1703 },
+{ 0x12, 23, 0, 1702 },
+{ 0x72, 22, 1, 1701 },
+{ 0x32, 23, 0, 1700 },
+{ 0x2a, 22, 0, 1693 },
+{ 0x6a, 22, 0, 1692 },
+{ 0x1a, 22, 1, 1707 },
+{ 0xa, 23, 0, 1706 },
+{ 0x3a, 22, 1, 1705 },
+{ 0x1a, 23, 0, 1704 },
+{ 0x16, 22, 0, 1695 },
+{ 0x36, 22, 0, 1694 },
+{ 0xe, 22, 1, 1711 },
+{ 0x6, 23, 0, 1710 },
+{ 0x1e, 22, 1, 1709 },
+{ 0xe, 23, 0, 1708 },
+{ 0x51, 22, 0, 1713 },
+{ 0xd1, 22, 0, 1712 },
+{ 0x31, 22, 1, 1723 },
+{ 0x11, 23, 0, 1722 },
+{ 0x71, 22, 1, 1721 },
+{ 0x31, 23, 0, 1720 },
+{ 0x29, 22, 0, 1715 },
+{ 0x69, 22, 0, 1714 },
+{ 0x19, 22, 1, 1727 },
+{ 0x9, 23, 0, 1726 },
+{ 0x39, 22, 1, 1725 },
+{ 0x19, 23, 0, 1724 },
+{ 0x15, 22, 0, 1717 },
+{ 0x35, 22, 0, 1716 },
+{ 0xd, 22, 1, 1731 },
+{ 0x5, 23, 0, 1730 },
+{ 0x1d, 22, 1, 1729 },
+{ 0xd, 23, 0, 1728 },
+{ 0xb, 22, 0, 1719 },
+{ 0x1b, 22, 0, 1718 },
+{ 0x7, 22, 1, 1735 },
+{ 0x3, 23, 0, 1734 },
+{ 0xf, 22, 1, 1733 },
+{ 0x7, 23, 0, 1732 },
+{ 0x51, 20, 1, 1761 },
+{ 0x50, 20, 0, 1737 },
+{ 0xd1, 20, 1, 1760 },
+{ 0xd0, 20, 0, 1736 },
+{ 0x31, 20, 1, 1771 },
+{ 0x30, 20, 1, 1747 },
+{ 0x11, 21, 1, 1770 },
+{ 0x10, 21, 0, 1746 },
+{ 0x71, 20, 1, 1769 },
+{ 0x70, 20, 1, 1745 },
+{ 0x31, 21, 1, 1768 },
+{ 0x30, 21, 0, 1744 },
+{ 0x29, 20, 1, 1763 },
+{ 0x28, 20, 0, 1739 },
+{ 0x69, 20, 1, 1762 },
+{ 0x68, 20, 0, 1738 },
+{ 0x19, 20, 1, 1775 },
+{ 0x18, 20, 1, 1751 },
+{ 0x9, 21, 1, 1774 },
+{ 0x8, 21, 0, 1750 },
+{ 0x39, 20, 1, 1773 },
+{ 0x38, 20, 1, 1749 },
+{ 0x19, 21, 1, 1772 },
+{ 0x18, 21, 0, 1748 },
+{ 0x15, 20, 1, 1765 },
+{ 0x14, 20, 0, 1741 },
+{ 0x35, 20, 1, 1764 },
+{ 0x34, 20, 0, 1740 },
+{ 0xd, 20, 1, 1779 },
+{ 0xc, 20, 1, 1755 },
+{ 0x5, 21, 1, 1778 },
+{ 0x4, 21, 0, 1754 },
+{ 0x1d, 20, 1, 1777 },
+{ 0x1c, 20, 1, 1753 },
+{ 0xd, 21, 1, 1776 },
+{ 0xc, 21, 0, 1752 },
+{ 0xb, 20, 1, 1767 },
+{ 0xa, 20, 0, 1743 },
+{ 0x1b, 20, 1, 1766 },
+{ 0x1a, 20, 0, 1742 },
+{ 0x7, 20, 1, 1783 },
+{ 0x6, 20, 1, 1759 },
+{ 0x3, 21, 1, 1782 },
+{ 0x2, 21, 0, 1758 },
+{ 0xf, 20, 1, 1781 },
+{ 0xe, 20, 1, 1757 },
+{ 0x7, 21, 1, 1780 },
+{ 0x6, 21, 0, 1756 },
+{ 0x8, 19, 0, 1785 },
+{ 0x18, 19, 0, 1784 },
+{ 0x1, 19, 1, 1789 },
+{ 0x2, 19, 0, 1788 },
+{ 0x3, 19, 1, 1787 },
+{ 0x4, 19, 0, 1786 },
+{ 0x1, 282, 0, 1790 },
+{ 0x14, 41, 0, 1793 },
+{ 0x34, 41, 0, 1791 },
+{ 0xc, 41, 0, 1794 },
+{ 0x1c, 41, 0, 1792 },
+{ 0x2, 41, 0, 1797 },
+{ 0x6, 41, 0, 1795 },
+{ 0x1, 41, 0, 1798 },
+{ 0x3, 41, 0, 1796 },
+{ 0x51, 17, 0, 1800 },
+{ 0xd1, 17, 0, 1799 },
+{ 0x31, 17, 1, 1810 },
+{ 0x11, 18, 0, 1809 },
+{ 0x71, 17, 1, 1808 },
+{ 0x31, 18, 0, 1807 },
+{ 0x29, 17, 0, 1802 },
+{ 0x69, 17, 0, 1801 },
+{ 0x19, 17, 1, 1814 },
+{ 0x9, 18, 0, 1813 },
+{ 0x39, 17, 1, 1812 },
+{ 0x19, 18, 0, 1811 },
+{ 0x15, 17, 0, 1804 },
+{ 0x35, 17, 0, 1803 },
+{ 0xd, 17, 1, 1818 },
+{ 0x5, 18, 0, 1817 },
+{ 0x1d, 17, 1, 1816 },
+{ 0xd, 18, 0, 1815 },
+{ 0xb, 17, 0, 1806 },
+{ 0x1b, 17, 0, 1805 },
+{ 0x7, 17, 1, 1822 },
+{ 0x3, 18, 0, 1821 },
+{ 0xf, 17, 1, 1820 },
+{ 0x7, 18, 0, 1819 },
+{ 0x1, 30, 0, 1823 },
+{ 0x1, 98, 0, 1824 },
+{ 0x2, 43, 0, 1825 },
+{ 0x1, 43, 0, 1826 },
+{ 0x1, 330, 0, 1827 },
+{ 0x2, 50, 0, 1828 },
+{ 0x1, 50, 0, 1829 },
+{ 0x1, 91, 0, 1830 },
+{ 0x51, 15, 0, 1832 },
+{ 0xd1, 15, 0, 1831 },
+{ 0x31, 15, 1, 1842 },
+{ 0x11, 16, 0, 1841 },
+{ 0x71, 15, 1, 1840 },
+{ 0x31, 16, 0, 1839 },
+{ 0x29, 15, 0, 1834 },
+{ 0x69, 15, 0, 1833 },
+{ 0x19, 15, 1, 1846 },
+{ 0x9, 16, 0, 1845 },
+{ 0x39, 15, 1, 1844 },
+{ 0x19, 16, 0, 1843 },
+{ 0x15, 15, 0, 1836 },
+{ 0x35, 15, 0, 1835 },
+{ 0xd, 15, 1, 1850 },
+{ 0x5, 16, 0, 1849 },
+{ 0x1d, 15, 1, 1848 },
+{ 0xd, 16, 0, 1847 },
+{ 0xb, 15, 0, 1838 },
+{ 0x1b, 15, 0, 1837 },
+{ 0x7, 15, 1, 1854 },
+{ 0x3, 16, 0, 1853 },
+{ 0xf, 15, 1, 1852 },
+{ 0x7, 16, 0, 1851 },
+{ 0xa20, 13, 0, 1856 },
+{ 0x1a20, 13, 0, 1855 },
+{ 0x620, 13, 1, 1866 },
+{ 0x220, 14, 0, 1865 },
+{ 0xe20, 13, 1, 1864 },
+{ 0x620, 14, 0, 1863 },
+{ 0x520, 13, 0, 1858 },
+{ 0xd20, 13, 0, 1857 },
+{ 0x320, 13, 1, 1870 },
+{ 0x120, 14, 0, 1869 },
+{ 0x720, 13, 1, 1868 },
+{ 0x320, 14, 0, 1867 },
+{ 0x2a0, 13, 0, 1860 },
+{ 0x6a0, 13, 0, 1859 },
+{ 0x1a0, 13, 1, 1874 },
+{ 0xa0, 14, 0, 1873 },
+{ 0x3a0, 13, 1, 1872 },
+{ 0x1a0, 14, 0, 1871 },
+{ 0x160, 13, 0, 1862 },
+{ 0x360, 13, 0, 1861 },
+{ 0xe0, 13, 1, 1878 },
+{ 0x60, 14, 0, 1877 },
+{ 0x1e0, 13, 1, 1876 },
+{ 0xe0, 14, 0, 1875 },
+{ 0x51, 13, 1, 1904 },
+{ 0x50, 13, 0, 1880 },
+{ 0xd1, 13, 1, 1903 },
+{ 0xd0, 13, 0, 1879 },
+{ 0x31, 13, 1, 1914 },
+{ 0x30, 13, 1, 1890 },
+{ 0x11, 14, 1, 1913 },
+{ 0x10, 14, 0, 1889 },
+{ 0x71, 13, 1, 1912 },
+{ 0x70, 13, 1, 1888 },
+{ 0x31, 14, 1, 1911 },
+{ 0x30, 14, 0, 1887 },
+{ 0x29, 13, 1, 1906 },
+{ 0x28, 13, 0, 1882 },
+{ 0x69, 13, 1, 1905 },
+{ 0x68, 13, 0, 1881 },
+{ 0x19, 13, 1, 1918 },
+{ 0x18, 13, 1, 1894 },
+{ 0x9, 14, 1, 1917 },
+{ 0x8, 14, 0, 1893 },
+{ 0x39, 13, 1, 1916 },
+{ 0x38, 13, 1, 1892 },
+{ 0x19, 14, 1, 1915 },
+{ 0x18, 14, 0, 1891 },
+{ 0x15, 13, 1, 1908 },
+{ 0x14, 13, 0, 1884 },
+{ 0x35, 13, 1, 1907 },
+{ 0x34, 13, 0, 1883 },
+{ 0xd, 13, 1, 1922 },
+{ 0xc, 13, 1, 1898 },
+{ 0x5, 14, 1, 1921 },
+{ 0x4, 14, 0, 1897 },
+{ 0x1d, 13, 1, 1920 },
+{ 0x1c, 13, 1, 1896 },
+{ 0xd, 14, 1, 1919 },
+{ 0xc, 14, 0, 1895 },
+{ 0xb, 13, 1, 1910 },
+{ 0xa, 13, 0, 1886 },
+{ 0x1b, 13, 1, 1909 },
+{ 0x1a, 13, 0, 1885 },
+{ 0x7, 13, 1, 1926 },
+{ 0x6, 13, 1, 1902 },
+{ 0x3, 14, 1, 1925 },
+{ 0x2, 14, 0, 1901 },
+{ 0xf, 13, 1, 1924 },
+{ 0xe, 13, 1, 1900 },
+{ 0x7, 14, 1, 1923 },
+{ 0x6, 14, 0, 1899 },
+{ 0x8, 12, 0, 1928 },
+{ 0x18, 12, 0, 1927 },
+{ 0x1, 12, 1, 1932 },
+{ 0x2, 12, 0, 1931 },
+{ 0x3, 12, 1, 1930 },
+{ 0x4, 12, 0, 1929 },
+{ 0x1, 80, 1, 1992 },
+{ 0x1, 81, 1, 1991 },
+{ 0x1, 82, 1, 1990 },
+{ 0x1, 83, 1, 1989 },
+{ 0x39, 39, 1, 20 },
+{ 0x19, 40, 0, 19 },
+{ 0x3, 80, 1, 1988 },
+{ 0x3, 81, 1, 1987 },
+{ 0x3, 82, 1, 1986 },
+{ 0x3, 83, 1, 1985 },
+{ 0x69, 39, 0, 9 },
+{ 0x14, 75, 1, 1982 },
+{ 0xa, 79, 1, 1981 },
+{ 0xd1, 39, 0, 7 },
+{ 0x34, 75, 1, 1934 },
+{ 0xe, 86, 0, 1933 },
+{ 0xc, 75, 1, 2046 },
+{ 0x6, 79, 0, 2045 },
+{ 0x2, 75, 1, 1940 },
+{ 0x2, 78, 0, 1939 },
+{ 0x12, 75, 1, 1938 },
+{ 0x6, 78, 0, 1937 },
+{ 0xa, 75, 1, 1984 },
+{ 0x5, 79, 1, 1983 },
+{ 0x71, 39, 1, 16 },
+{ 0x31, 40, 0, 15 },
+{ 0x1a, 75, 1, 1936 },
+{ 0x7, 86, 0, 1935 },
+{ 0x6, 75, 1, 2048 },
+{ 0x3, 79, 0, 2047 },
+{ 0x1, 75, 1, 2056 },
+{ 0x1, 76, 1, 2055 },
+{ 0x1, 77, 1, 2054 },
+{ 0x1, 78, 0, 2053 },
+{ 0x3, 75, 1, 2052 },
+{ 0x3, 76, 1, 2051 },
+{ 0x3, 77, 1, 2050 },
+{ 0x3, 78, 0, 2049 },
+{ 0x8, 58, 1, 2004 },
+{ 0x2, 61, 1, 2001 },
+{ 0x1, 63, 1, 2003 },
+{ 0x1, 64, 1, 2002 },
+{ 0xf, 39, 1, 28 },
+{ 0x7, 40, 0, 27 },
+{ 0x18, 58, 1, 2000 },
+{ 0x6, 61, 1, 1997 },
+{ 0x3, 63, 1, 1999 },
+{ 0x3, 64, 1, 1998 },
+{ 0x1b, 39, 0, 13 },
+{ 0x14, 58, 1, 1994 },
+{ 0xa, 62, 1, 1993 },
+{ 0x35, 39, 0, 11 },
+{ 0x34, 58, 1, 1942 },
+{ 0xe, 67, 0, 1941 },
+{ 0xc, 58, 1, 2058 },
+{ 0x6, 62, 0, 2057 },
+{ 0x2, 58, 1, 1948 },
+{ 0x4, 61, 0, 1947 },
+{ 0x12, 58, 1, 1946 },
+{ 0xc, 61, 0, 1945 },
+{ 0xa, 58, 1, 1996 },
+{ 0x5, 62, 1, 1995 },
+{ 0x1d, 39, 1, 24 },
+{ 0xd, 40, 0, 23 },
+{ 0x1a, 58, 1, 1944 },
+{ 0x7, 67, 0, 1943 },
+{ 0x6, 58, 1, 2060 },
+{ 0x3, 62, 0, 2059 },
+{ 0x1, 58, 1, 2068 },
+{ 0x1, 59, 1, 2067 },
+{ 0x1, 60, 1, 2066 },
+{ 0x1, 61, 0, 2065 },
+{ 0x3, 58, 1, 2064 },
+{ 0x3, 59, 1, 2063 },
+{ 0x3, 60, 1, 2062 },
+{ 0x3, 61, 0, 2061 },
+{ 0x28, 73, 1, 2006 },
+{ 0x28, 74, 0, 2005 },
+{ 0x68, 73, 1, 1950 },
+{ 0x38, 85, 0, 1949 },
+{ 0x18, 73, 1, 2070 },
+{ 0x18, 74, 0, 2069 },
+{ 0x14, 73, 1, 2008 },
+{ 0x14, 74, 0, 2007 },
+{ 0x34, 73, 1, 1952 },
+{ 0x1c, 85, 0, 1951 },
+{ 0xc, 73, 1, 2072 },
+{ 0xc, 74, 0, 2071 },
+{ 0xa, 73, 1, 2010 },
+{ 0xa, 74, 0, 2009 },
+{ 0x1a, 73, 1, 1954 },
+{ 0xe, 85, 0, 1953 },
+{ 0x6, 73, 1, 2074 },
+{ 0x6, 74, 0, 2073 },
+{ 0x5, 73, 1, 2012 },
+{ 0x5, 74, 0, 2011 },
+{ 0xd, 73, 1, 1956 },
+{ 0x7, 85, 0, 1955 },
+{ 0x3, 73, 1, 2076 },
+{ 0x3, 74, 0, 2075 },
+{ 0x28, 56, 1, 2014 },
+{ 0x28, 57, 0, 2013 },
+{ 0x68, 56, 1, 1958 },
+{ 0x38, 66, 0, 1957 },
+{ 0x18, 56, 1, 2078 },
+{ 0x18, 57, 0, 2077 },
+{ 0x14, 56, 1, 2016 },
+{ 0x14, 57, 0, 2015 },
+{ 0x34, 56, 1, 1960 },
+{ 0x1c, 66, 0, 1959 },
+{ 0xc, 56, 1, 2080 },
+{ 0xc, 57, 0, 2079 },
+{ 0xa, 56, 1, 2018 },
+{ 0xa, 57, 0, 2017 },
+{ 0x1a, 56, 1, 1962 },
+{ 0xe, 66, 0, 1961 },
+{ 0x6, 56, 1, 2082 },
+{ 0x6, 57, 0, 2081 },
+{ 0x5, 56, 1, 2020 },
+{ 0x5, 57, 0, 2019 },
+{ 0xd, 56, 1, 1964 },
+{ 0x7, 66, 0, 1963 },
+{ 0x3, 56, 1, 2084 },
+{ 0x3, 57, 0, 2083 },
+{ 0x8, 68, 1, 2032 },
+{ 0x2, 69, 1, 2031 },
+{ 0x2, 70, 1, 2030 },
+{ 0x2, 71, 0, 2029 },
+{ 0x18, 68, 1, 2028 },
+{ 0x6, 69, 1, 2027 },
+{ 0x6, 70, 1, 2026 },
+{ 0x6, 71, 0, 2025 },
+{ 0x14, 68, 1, 2022 },
+{ 0xa, 72, 0, 2021 },
+{ 0x34, 68, 1, 1966 },
+{ 0xe, 84, 0, 1965 },
+{ 0xc, 68, 1, 2086 },
+{ 0x6, 72, 0, 2085 },
+{ 0x2, 68, 1, 1972 },
+{ 0x4, 71, 0, 1971 },
+{ 0x12, 68, 1, 1970 },
+{ 0xc, 71, 0, 1969 },
+{ 0xa, 68, 1, 2024 },
+{ 0x5, 72, 0, 2023 },
+{ 0x1a, 68, 1, 1968 },
+{ 0x7, 84, 0, 1967 },
+{ 0x6, 68, 1, 2088 },
+{ 0x3, 72, 0, 2087 },
+{ 0x1, 68, 1, 2096 },
+{ 0x1, 69, 1, 2095 },
+{ 0x1, 70, 1, 2094 },
+{ 0x1, 71, 0, 2093 },
+{ 0x3, 68, 1, 2092 },
+{ 0x3, 69, 1, 2091 },
+{ 0x3, 70, 1, 2090 },
+{ 0x3, 71, 0, 2089 },
+{ 0x8, 51, 1, 2044 },
+{ 0x2, 52, 1, 2043 },
+{ 0x2, 53, 1, 2042 },
+{ 0x2, 54, 0, 2041 },
+{ 0x18, 51, 1, 2040 },
+{ 0x6, 52, 1, 2039 },
+{ 0x6, 53, 1, 2038 },
+{ 0x6, 54, 0, 2037 },
+{ 0x14, 51, 1, 2034 },
+{ 0xa, 55, 0, 2033 },
+{ 0x34, 51, 1, 1974 },
+{ 0xe, 65, 0, 1973 },
+{ 0xc, 51, 1, 2098 },
+{ 0x6, 55, 0, 2097 },
+{ 0x2, 51, 1, 1980 },
+{ 0x4, 54, 0, 1979 },
+{ 0x12, 51, 1, 1978 },
+{ 0xc, 54, 0, 1977 },
+{ 0xa, 51, 1, 2036 },
+{ 0x5, 55, 0, 2035 },
+{ 0x1a, 51, 1, 1976 },
+{ 0x7, 65, 0, 1975 },
+{ 0x6, 51, 1, 2100 },
+{ 0x3, 55, 0, 2099 },
+{ 0x1, 51, 1, 2108 },
+{ 0x1, 52, 1, 2107 },
+{ 0x1, 53, 1, 2106 },
+{ 0x1, 54, 0, 2105 },
+{ 0x3, 51, 1, 2104 },
+{ 0x3, 52, 1, 2103 },
+{ 0x3, 53, 1, 2102 },
+{ 0x3, 54, 0, 2101 },
+{ 0x1, 3, 0, 2109 },
+{ 0x1, 240, 0, 2110 },
+{ 0x1, 322, 0, 2111 },
+{ 0x1, 317, 0, 2112 },
+{ 0x2, 301, 0, 2113 },
+{ 0x1, 301, 0, 2116 },
+{ 0x2, 300, 0, 2114 },
+{ 0x1, 300, 0, 2117 },
+{ 0x2, 299, 0, 2115 },
+{ 0x1, 299, 0, 2118 },
+{ 0x1, 298, 0, 2119 },
+{ 0x1, 297, 0, 2120 },
+{ 0x2, 296, 0, 2121 },
+{ 0x1, 296, 0, 2123 },
+{ 0x2, 295, 0, 2122 },
+{ 0x1, 295, 0, 2124 },
+{ 0x1, 325, 0, 2131 },
+{ 0x8, 324, 0, 2125 },
+{ 0x4, 324, 0, 2127 },
+{ 0x2, 324, 0, 2129 },
+{ 0x1, 324, 0, 2132 },
+{ 0x8, 323, 0, 2126 },
+{ 0x4, 323, 0, 2128 },
+{ 0x2, 323, 0, 2130 },
+{ 0x1, 323, 0, 2133 },
+{ 0x1, 294, 0, 2140 },
+{ 0x8, 293, 0, 2134 },
+{ 0x4, 293, 0, 2136 },
+{ 0x2, 293, 0, 2138 },
+{ 0x1, 293, 0, 2141 },
+{ 0x8, 292, 0, 2135 },
+{ 0x4, 292, 0, 2137 },
+{ 0x2, 292, 1, 2139 },
+{ 0x4, 101, 0, 1253 },
+{ 0x1, 292, 0, 2142 },
+{ 0x1, 5, 0, 2143 },
+{ 0x1, 6, 0, 2144 },
+{ 0x1, 239, 0, 2145 },
+{ 0x1, 238, 0, 2146 },
+{ 0x1, 388, 0, 2147 },
+{ 0x1, 289, 0, 2148 },
+{ 0x1, 11, 0, 2149 },
+{ 0x1, 9, 0, 2150 },
+{ 0x1, 363, 0, 2151 },
+{ 0x1, 337, 0, 2152 },
+{ 0x1, 336, 0, 2153 },
+{ 0x1, 387, 0, 2154 },
+{ 0x1, 288, 0, 2155 },
+{ 0x1, 10, 0, 2156 },
+{ 0x1, 8, 0, 2157 },
+{ 0x1, 4, 0, 2158 },
+{ 0x1, 362, 0, 2159 },
+{ 0x1, 361, 0, 2160 },
+{ 0x1, 1, 0, 2161 },
+{ 0x1, 0, 0, 2162 },
+};
+
diff --git a/opcodes/ia64-asmtab.h b/opcodes/ia64-asmtab.h
new file mode 100644
index 00000000000..5bbcbd5a680
--- /dev/null
+++ b/opcodes/ia64-asmtab.h
@@ -0,0 +1,148 @@
+/* ia64-asmtab.h -- Header for compacted IA-64 opcode tables.
+ Copyright (C) 1999 Free Software Foundation, Inc.
+ Contributed by Bob Manson of Cygnus Support <manson@cygnus.com>
+
+ This file is part of GDB, GAS, and the GNU binutils.
+
+ GDB, GAS, and the GNU binutils are free software; you can redistribute
+ them and/or modify them under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either version
+ 2, or (at your option) any later version.
+
+ GDB, GAS, and the GNU binutils are distributed in the hope that they
+ 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 file; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#ifndef IA64_ASMTAB_H
+#define IA64_ASMTAB_H
+
+#include "opcode/ia64.h"
+
+/* The primary opcode table is made up of the following: */
+struct ia64_main_table
+{
+ /* The entry in the string table that corresponds to the name of this
+ opcode. */
+ unsigned short name_index;
+
+ /* The type of opcode; corresponds to the TYPE field in
+ struct ia64_opcode. */
+ unsigned char opcode_type;
+
+ /* The number of outputs for this opcode. */
+ unsigned char num_outputs;
+
+ /* The base insn value for this opcode. It may be modified by completers. */
+ ia64_insn opcode;
+
+ /* The mask of valid bits in OPCODE. Zeros indicate operand fields. */
+ ia64_insn mask;
+
+ /* The operands of this instruction. Corresponds to the OPERANDS field
+ in struct ia64_opcode. */
+ unsigned char operands[5];
+
+ /* The flags for this instruction. Corresponds to the FLAGS field in
+ struct ia64_opcode. */
+ short flags;
+
+ /* The tree of completers for this instruction; this is an offset into
+ completer_table. */
+ short completers;
+};
+
+/* Each instruction has a set of possible "completers", or additional
+ suffixes that can alter the instruction's behavior, and which has
+ potentially different dependencies.
+
+ The completer entries modify certain bits in the instruction opcode.
+ Which bits are to be modified are marked by the BITS, MASK and
+ OFFSET fields. The completer entry may also note dependencies for the
+ opcode.
+
+ These completers are arranged in a DAG; the pointers are indexes
+ into the completer_table array. The completer DAG is searched by
+ find_completer () and ia64_find_matching_opcode ().
+
+ Note that each completer needs to be applied in turn, so that if we
+ have the instruction
+ cmp.lt.unc
+ the completer entries for both "lt" and "unc" would need to be applied
+ to the opcode's value.
+
+ Some instructions do not require any completers; these contain an
+ empty completer entry. Instructions that require a completer do
+ not contain an empty entry.
+
+ Terminal completers (those completers that validly complete an
+ instruction) are marked by having the TERMINAL_COMPLETER flag set.
+
+ Only dependencies listed in the terminal completer for an opcode are
+ considered to apply to that opcode instance. */
+
+struct ia64_completer_table
+{
+ /* The bit value that this completer sets. */
+ unsigned int bits;
+
+ /* And its mask. 1s are bits that are to be modified in the
+ instruction. */
+ unsigned int mask;
+
+ /* The entry in the string table that corresponds to the name of this
+ completer. */
+ unsigned short name_index;
+
+ /* An alternative completer, or -1 if this is the end of the chain. */
+ short alternative;
+
+ /* A pointer to the DAG of completers that can potentially follow
+ this one, or -1. */
+ short subentries;
+
+ /* The bit offset in the instruction where BITS and MASK should be
+ applied. */
+ unsigned char offset : 7;
+
+ unsigned char terminal_completer : 1;
+
+ /* Index into the dependency list table */
+ short dependencies;
+};
+
+/* This contains sufficient information for the disassembler to resolve
+ the complete name of the original instruction. */
+struct ia64_dis_names
+{
+ /* COMPLETER_INDEX represents the tree of completers that make up
+ the instruction. The LSB represents the top of the tree for the
+ specified instruction.
+
+ A 0 bit indicates to go to the next alternate completer via the
+ alternative field; a 1 bit indicates that the current completer
+ is part of the instruction, and to go down the subentries index.
+ We know we've reached the final completer when we run out of 1
+ bits.
+
+ There is always at least one 1 bit. */
+ unsigned int completer_index : 20;
+
+ /* The index in the main_table[] array for the instruction. */
+ unsigned short insn_index : 11;
+
+ /* If set, the next entry in this table is an alternate possibility
+ for this instruction encoding. Which one to use is determined by
+ the instruction type and other factors (see opcode_verify ()). */
+ unsigned int next_flag : 1;
+
+ /* The disassembly priority of this entry among instructions. */
+ unsigned short priority;
+};
+
+#endif
diff --git a/opcodes/ia64-dis.c b/opcodes/ia64-dis.c
new file mode 100644
index 00000000000..7a68597de15
--- /dev/null
+++ b/opcodes/ia64-dis.c
@@ -0,0 +1,264 @@
+/* ia64-dis.c -- Disassemble ia64 instructions
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+ This file is part of GDB, GAS, and the GNU binutils.
+
+ GDB, GAS, and the GNU binutils are free software; you can redistribute
+ them and/or modify them under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either version
+ 2, or (at your option) any later version.
+
+ GDB, GAS, and the GNU binutils are distributed in the hope that they
+ 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 file; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#include <assert.h>
+#include <string.h>
+
+#include "dis-asm.h"
+#include "opcode/ia64.h"
+
+#define NELEMS(a) ((int) (sizeof (a) / sizeof (a[0])))
+
+/* Disassemble ia64 instruction. */
+
+/* Return the instruction type for OPCODE found in unit UNIT. */
+
+static enum ia64_insn_type
+unit_to_type (ia64_insn opcode, enum ia64_unit unit)
+{
+ enum ia64_insn_type type;
+ int op;
+
+ op = IA64_OP (opcode);
+
+ if (op >= 8 && (unit == IA64_UNIT_I || unit == IA64_UNIT_M))
+ {
+ type = IA64_TYPE_A;
+ }
+ else
+ {
+ switch (unit)
+ {
+ case IA64_UNIT_I:
+ type = IA64_TYPE_I; break;
+ case IA64_UNIT_M:
+ type = IA64_TYPE_M; break;
+ case IA64_UNIT_B:
+ type = IA64_TYPE_B; break;
+ case IA64_UNIT_F:
+ type = IA64_TYPE_F; break;
+ case IA64_UNIT_L:
+ case IA64_UNIT_X:
+ type = IA64_TYPE_X; break;
+ default:
+ type = -1;
+ }
+ }
+ return type;
+}
+
+int
+print_insn_ia64 (bfd_vma memaddr, struct disassemble_info *info)
+{
+ ia64_insn t0, t1, slot[3], template, s_bit, insn;
+ int slotnum, j, status, need_comma, retval, slot_multiplier;
+ const struct ia64_operand *odesc;
+ const struct ia64_opcode *idesc;
+ const char *err, *str, *tname;
+ BFD_HOST_U_64_BIT value;
+ bfd_byte bundle[16];
+ enum ia64_unit unit;
+ char regname[16];
+
+ if (info->bytes_per_line == 0)
+ info->bytes_per_line = 6;
+ info->display_endian = info->endian;
+
+ slot_multiplier = info->bytes_per_line;
+ retval = slot_multiplier;
+
+ slotnum = (((long) memaddr) & 0xf) / slot_multiplier;
+ if (slotnum > 2)
+ return -1;
+
+ memaddr -= (memaddr & 0xf);
+ status = (*info->read_memory_func) (memaddr, bundle, sizeof (bundle), info);
+ if (status != 0)
+ {
+ (*info->memory_error_func) (status, memaddr, info);
+ return -1;
+ }
+ /* bundles are always in little-endian byte order */
+ t0 = bfd_getl64 (bundle);
+ t1 = bfd_getl64 (bundle + 8);
+ s_bit = t0 & 1;
+ template = (t0 >> 1) & 0xf;
+ slot[0] = (t0 >> 5) & 0x1ffffffffffLL;
+ slot[1] = ((t0 >> 46) & 0x3ffff) | ((t1 & 0x7fffff) << 18);
+ slot[2] = (t1 >> 23) & 0x1ffffffffffLL;
+
+ tname = ia64_templ_desc[template].name;
+ if (slotnum == 0)
+ (*info->fprintf_func) (info->stream, "[%s] ", tname);
+ else
+ (*info->fprintf_func) (info->stream, " ", tname);
+
+ unit = ia64_templ_desc[template].exec_unit[slotnum];
+
+ if (template == 2 && slotnum == 1)
+ {
+ /* skip L slot in MLI template: */
+ slotnum = 2;
+ retval += slot_multiplier;
+ }
+
+ insn = slot[slotnum];
+
+ if (unit == IA64_UNIT_NIL)
+ goto decoding_failed;
+
+ idesc = ia64_dis_opcode (insn, unit_to_type (insn, unit));
+ if (idesc == NULL)
+ goto decoding_failed;
+
+ /* print predicate, if any: */
+
+ if ((idesc->flags & IA64_OPCODE_NO_PRED)
+ || (insn & 0x3f) == 0)
+ (*info->fprintf_func) (info->stream, " ");
+ else
+ (*info->fprintf_func) (info->stream, "(p%02d) ", (int)(insn & 0x3f));
+
+ /* now the actual instruction: */
+
+ (*info->fprintf_func) (info->stream, "%s", idesc->name);
+ if (idesc->operands[0])
+ (*info->fprintf_func) (info->stream, " ");
+
+ need_comma = 0;
+ for (j = 0; j < NELEMS (idesc->operands) && idesc->operands[j]; ++j)
+ {
+ odesc = elf64_ia64_operands + idesc->operands[j];
+
+ if (need_comma)
+ (*info->fprintf_func) (info->stream, ",");
+
+ if (odesc - elf64_ia64_operands == IA64_OPND_IMMU64)
+ {
+ /* special case of 64 bit immediate load: */
+ value = ((insn >> 13) & 0x7f) | (((insn >> 27) & 0x1ff) << 7)
+ | (((insn >> 22) & 0x1f) << 16) | (((insn >> 21) & 0x1) << 21)
+ | (slot[1] << 22) | (((insn >> 36) & 0x1) << 63);
+ }
+ else if (odesc - elf64_ia64_operands == IA64_OPND_IMMU62)
+ {
+ /* 62-bit immediate for nop.x/break.x */
+ value = ((slot[1] & 0x1ffffffffffLL) << 21)
+ | (((insn >> 36) & 0x1) << 20)
+ | ((insn >> 6) & 0xfffff);
+ }
+ else
+ {
+ err = (*odesc->extract) (odesc, insn, &value);
+ if (err)
+ {
+ (*info->fprintf_func) (info->stream, "%s", err);
+ goto done;
+ }
+ }
+
+ switch (odesc->class)
+ {
+ case IA64_OPND_CLASS_CST:
+ (*info->fprintf_func) (info->stream, "%s", odesc->str);
+ break;
+
+ case IA64_OPND_CLASS_REG:
+ if (odesc->str[0] == 'a' && odesc->str[1] == 'r')
+ {
+ switch (value)
+ {
+ case 0: case 1: case 2: case 3:
+ case 4: case 5: case 6: case 7:
+ sprintf (regname, "ar.k%u", (unsigned int) value);
+ break;
+ case 16: strcpy (regname, "ar.rsc"); break;
+ case 17: strcpy (regname, "ar.bsp"); break;
+ case 18: strcpy (regname, "ar.bspstore"); break;
+ case 19: strcpy (regname, "ar.rnat"); break;
+ case 32: strcpy (regname, "ar.ccv"); break;
+ case 36: strcpy (regname, "ar.unat"); break;
+ case 40: strcpy (regname, "ar.fpsr"); break;
+ case 44: strcpy (regname, "ar.itc"); break;
+ case 64: strcpy (regname, "ar.pfs"); break;
+ case 65: strcpy (regname, "ar.lc"); break;
+ case 66: strcpy (regname, "ar.ec"); break;
+ default:
+ sprintf (regname, "ar%u", (unsigned int) value);
+ break;
+ }
+ (*info->fprintf_func) (info->stream, "%s", regname);
+ }
+ else
+ (*info->fprintf_func) (info->stream, "%s%d", odesc->str, (int)value);
+ break;
+
+ case IA64_OPND_CLASS_IND:
+ (*info->fprintf_func) (info->stream, "%s[r%d]", odesc->str, (int)value);
+ break;
+
+ case IA64_OPND_CLASS_ABS:
+ str = 0;
+ if (odesc - elf64_ia64_operands == IA64_OPND_MBTYPE4)
+ switch (value)
+ {
+ case 0x0: str = "@brcst"; break;
+ case 0x8: str = "@mix"; break;
+ case 0x9: str = "@shuf"; break;
+ case 0xa: str = "@alt"; break;
+ case 0xb: str = "@rev"; break;
+ }
+
+ if (str)
+ (*info->fprintf_func) (info->stream, "%s", str);
+ else if (odesc->flags & IA64_OPND_FLAG_DECIMAL_SIGNED)
+ (*info->fprintf_func) (info->stream, "%lld", value);
+ else if (odesc->flags & IA64_OPND_FLAG_DECIMAL_UNSIGNED)
+ (*info->fprintf_func) (info->stream, "%llu", value);
+ else
+ (*info->fprintf_func) (info->stream, "0x%llx", value);
+ break;
+
+ case IA64_OPND_CLASS_REL:
+ (*info->print_address_func) (memaddr + value, info);
+ break;
+ }
+
+ need_comma = 1;
+ if (j + 1 == idesc->num_outputs)
+ {
+ (*info->fprintf_func) (info->stream, "=");
+ need_comma = 0;
+ }
+ }
+ if (slotnum + 1 == ia64_templ_desc[template].group_boundary
+ || ((slotnum == 2) && s_bit))
+ (*info->fprintf_func) (info->stream, ";;");
+
+ done:
+ if (slotnum == 2)
+ retval += 16 - 3*slot_multiplier;
+ return retval;
+
+ decoding_failed:
+ (*info->fprintf_func) (info->stream, " data8 %#011llx", insn);
+ goto done;
+}
diff --git a/opcodes/ia64-gen.c b/opcodes/ia64-gen.c
new file mode 100644
index 00000000000..a1e062ea398
--- /dev/null
+++ b/opcodes/ia64-gen.c
@@ -0,0 +1,2763 @@
+/* ia64-gen.c -- Generate a shrunk set of opcode tables
+ Copyright (c) 1999 Free Software Foundation, Inc.
+ Written by Bob Manson, Cygnus Solutions, <manson@cygnus.com>
+
+ This file is part of GDB, GAS, and the GNU binutils.
+
+ GDB, GAS, and the GNU binutils are free software; you can redistribute
+ them and/or modify them under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either version
+ 2, or (at your option) any later version.
+
+ GDB, GAS, and the GNU binutils are distributed in the hope that they
+ 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 file; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+/* While the ia64-opc-* set of opcode tables are easy to maintain,
+ they waste a tremendous amount of space. ia64-gen rearranges the
+ instructions into a directed acyclic graph (DAG) of instruction opcodes and
+ their possible completers, as well as compacting the set of strings used.
+
+ The disassembler table consists of a state machine that does
+ branching based on the bits of the opcode being disassembled. The
+ state encodings have been chosen to minimize the amount of space
+ required.
+
+ The resource table is constructed based on some text dependency tables,
+ which are also easier to maintain than the final representation.
+
+*/
+
+#include <stdio.h>
+#include <ctype.h>
+
+#include "ansidecl.h"
+#include "libiberty.h"
+#include "sysdep.h"
+#include "ia64-opc.h"
+#include "ia64-opc-a.c"
+#include "ia64-opc-i.c"
+#include "ia64-opc-m.c"
+#include "ia64-opc-b.c"
+#include "ia64-opc-f.c"
+#include "ia64-opc-x.c"
+#include "ia64-opc-d.c"
+
+int debug = 0;
+
+#define tmalloc(X) (X *) xmalloc (sizeof (X))
+
+/* The main opcode table entry. Each entry is a unique combination of
+ name and flags (no two entries in the table compare as being equal
+ via opcodes_eq). */
+struct main_entry
+{
+ /* The base name of this opcode. The names of its completers are
+ appended to it to generate the full instruction name. */
+ struct string_entry *name;
+ /* The base opcode entry. Which one to use is a fairly arbitrary choice;
+ it uses the first one passed to add_opcode_entry. */
+ struct ia64_opcode *opcode;
+ /* The list of completers that can be applied to this opcode. */
+ struct completer_entry *completers;
+ /* Next entry in the chain. */
+ struct main_entry *next;
+ /* Index in the main table. */
+ int main_index;
+} *maintable, **ordered_table;
+int otlen = 0;
+int ottotlen = 0;
+int opcode_count = 0;
+
+/* The set of possible completers for an opcode. */
+struct completer_entry
+{
+ /* This entry's index in the ia64_completer_table[] array. */
+ int num;
+
+ /* The name of the completer. */
+ struct string_entry *name;
+
+ /* This entry's parent. */
+ struct completer_entry *parent;
+
+ /* Set if this is a terminal completer (occurs at the end of an
+ opcode). */
+ int is_terminal;
+
+ /* An alternative completer. */
+ struct completer_entry *alternative;
+
+ /* Additional completers that can be appended to this one. */
+ struct completer_entry *addl_entries;
+
+ /* Before compute_completer_bits () is invoked, this contains the actual
+ instruction opcode for this combination of opcode and completers.
+ Afterwards, it contains those bits that are different from its
+ parent opcode. */
+ ia64_insn bits;
+
+ /* Bits set to 1 correspond to those bits in this completer's opcode
+ that are different from its parent completer's opcode (or from
+ the base opcode if the entry is the root of the opcode's completer
+ list). This field is filled in by compute_completer_bits (). */
+ ia64_insn mask;
+
+ /* Index into the opcode dependency list, or -1 if none. */
+ int dependencies;
+
+ /* Remember the order encountered in the opcode tables. */
+ int order;
+};
+
+/* One entry in the disassembler name table. */
+struct disent
+{
+ /* The index into the ia64_name_dis array for this entry. */
+ int ournum;
+
+ /* The index into the main_table[] array. */
+ int insn;
+
+ /* The disassmbly priority of this entry. */
+ int priority;
+
+ /* The completer_index value for this entry. */
+ int completer_index;
+
+ /* How many other entries share this decode. */
+ int nextcnt;
+
+ /* The next entry sharing the same decode. */
+ struct disent *nexte;
+
+ /* The next entry in the name list. */
+ struct disent *next_ent;
+} *disinsntable = NULL;
+
+/* A state machine that will eventually be used to generate the
+ disassembler table. */
+struct bittree
+{
+ struct disent *disent;
+ struct bittree *bits[3]; /* 0, 1, and X (don't care) */
+ int bits_to_skip;
+ int skip_flag;
+} *bittree;
+
+/* The string table contains all opcodes and completers sorted in
+ alphabetical order. */
+
+/* One entry in the string table. */
+struct string_entry
+{
+ /* The index in the ia64_strings[] array for this entry. */
+ int num;
+ /* And the string. */
+ char *s;
+} **string_table = NULL;
+int strtablen = 0;
+int strtabtotlen = 0;
+
+
+/* resource dependency entries */
+struct rdep
+{
+ char *name; /* resource name */
+ unsigned
+ mode:2, /* RAW, WAW, or WAR */
+ semantics:3; /* dependency semantics */
+ char *extra; /* additional semantics info */
+ int nchks;
+ int total_chks; /* total #of terminal insns */
+ int *chks; /* insn classes which read (RAW), write
+ (WAW), or write (WAR) this rsrc */ //
+ int *chknotes; /* dependency notes for each class */
+ int nregs;
+ int total_regs; /* total #of terminal insns */
+ int *regs; /* insn class which write (RAW), write2
+ (WAW), or read (WAR) this rsrc */
+ int *regnotes; /* dependency notes for each class */
+
+ int waw_special; /* special WAW dependency note */
+} **rdeps = NULL;
+
+static int rdepslen = 0;
+static int rdepstotlen = 0;
+
+/* array of all instruction classes */
+struct iclass
+{
+ char *name; /* instruction class name */
+ int is_class; /* is a class, not a terminal */
+ int nsubs;
+ int *subs; /* other classes within this class */
+ int nxsubs;
+ int xsubs[4]; /* exclusions */
+ char *comment; /* optional comment */
+ int note; /* optional note */
+ int terminal_resolved; /* did we match this with anything? */
+ int orphan; /* detect class orphans */
+} **ics = NULL;
+
+static int iclen = 0;
+static int ictotlen = 0;
+
+/* an opcode dependency (chk/reg pair of dependency lists) */
+struct opdep
+{
+ int chk; /* index into dlists */
+ int reg; /* index into dlists */
+} **opdeps;
+
+static int opdeplen = 0;
+static int opdeptotlen = 0;
+
+/* a generic list of dependencies w/notes encoded. these may be shared. */
+struct deplist
+{
+ int len;
+ unsigned short *deps;
+} **dlists;
+
+static int dlistlen = 0;
+static int dlisttotlen = 0;
+
+/* add NAME to the resource table, where TYPE is RAW or WAW */
+static struct rdep *
+insert_resource (const char *name, enum ia64_dependency_mode type)
+{
+ if (rdepslen == rdepstotlen)
+ {
+ rdepstotlen += 20;
+ rdeps = (struct rdep **)
+ xrealloc (rdeps, sizeof(struct rdep **) * rdepstotlen);
+ }
+ rdeps[rdepslen] = tmalloc(struct rdep);
+ memset((void *)rdeps[rdepslen], 0, sizeof(struct rdep));
+ rdeps[rdepslen]->name = xstrdup (name);
+ rdeps[rdepslen]->mode = type;
+ rdeps[rdepslen]->waw_special = 0;
+
+ return rdeps[rdepslen++];
+}
+
+/* are the lists of dependency indexes equivalent? */
+static int
+deplist_equals (struct deplist *d1, struct deplist *d2)
+{
+ int i;
+
+ if (d1->len != d2->len)
+ return 0;
+
+ for (i=0;i < d1->len;i++)
+ {
+ if (d1->deps[i] != d2->deps[i])
+ return 0;
+ }
+
+ return 1;
+}
+
+/* add the list of dependencies to the list of dependency lists */
+static short
+insert_deplist(int count, unsigned short *deps)
+{
+ /* sort the list, then see if an equivalent list exists already.
+ this results in a much smaller set of dependency lists
+ */
+ struct deplist *list;
+ char set[0x10000];
+ int i;
+
+ memset ((void *)set, 0, sizeof(set));
+ for (i=0;i < count;i++)
+ set[deps[i]] = 1;
+ count = 0;
+ for (i=0;i < sizeof(set);i++)
+ if (set[i])
+ ++count;
+
+ list = tmalloc(struct deplist);
+ list->len = count;
+ list->deps = (unsigned short *)malloc (sizeof(unsigned short) * count);
+ for (i=0, count=0;i < sizeof(set);i++)
+ {
+ if (set[i])
+ {
+ list->deps[count++] = i;
+ }
+ }
+
+ /* does this list exist already? */
+ for (i=0;i < dlistlen;i++)
+ {
+ if (deplist_equals (list, dlists[i]))
+ {
+ free (list->deps);
+ free (list);
+ return i;
+ }
+ }
+
+ if (dlistlen == dlisttotlen)
+ {
+ dlisttotlen += 20;
+ dlists = (struct deplist **)
+ xrealloc (dlists, sizeof(struct deplist **) * dlisttotlen);
+ }
+ dlists[dlistlen] = list;
+
+ return dlistlen++;
+}
+
+/* add the given pair of dependency lists to the opcode dependency list */
+static short
+insert_dependencies (int nchks, unsigned short *chks,
+ int nregs, unsigned short *regs)
+{
+ struct opdep *pair;
+ int i;
+ int regind = -1;
+ int chkind = -1;
+
+ if (nregs > 0)
+ regind = insert_deplist (nregs, regs);
+ if (nchks > 0)
+ chkind = insert_deplist (nchks, chks);
+
+ for (i=0;i < opdeplen;i++)
+ {
+ if (opdeps[i]->chk == chkind
+ && opdeps[i]->reg == regind)
+ return i;
+ }
+ pair = tmalloc(struct opdep);
+ pair->chk = chkind;
+ pair->reg = regind;
+
+ if (opdeplen == opdeptotlen)
+ {
+ opdeptotlen += 20;
+ opdeps = (struct opdep **)
+ xrealloc (opdeps, sizeof(struct opdep **) * opdeptotlen);
+ }
+ opdeps[opdeplen] = pair;
+
+ return opdeplen++;
+}
+
+static void
+mark_used (struct iclass *ic, int clear_terminals)
+{
+ int i;
+
+ ic->orphan = 0;
+ if (clear_terminals)
+ ic->terminal_resolved = 1;
+
+ for (i=0;i < ic->nsubs;i++)
+ {
+ mark_used (ics[ic->subs[i]], clear_terminals);
+ }
+ for (i=0;i < ic->nxsubs;i++)
+ {
+ mark_used (ics[ic->xsubs[i]], clear_terminals);
+ }
+}
+
+/* look up an instruction class; if CREATE make a new one if none found;
+ returns the index into the insn class array */
+static int
+fetch_insn_class(const char *full_name, int create)
+{
+ char *name;
+ char *notestr;
+ char *xsect;
+ char *comment;
+ int i, note = 0;
+ int ind;
+ int is_class = 0;
+
+ if (strncmp (full_name, "IC:", 3) == 0)
+ {
+ name = xstrdup (full_name + 3);
+ is_class = 1;
+ }
+ else
+ name = xstrdup (full_name);
+
+ if ((xsect = strchr(name, '\\')) != NULL)
+ is_class = 1;
+ if ((comment = strchr(name, '[')) != NULL)
+ is_class = 1;
+ if ((notestr = strchr(name, '+')) != NULL)
+ {
+ char *nextnotestr;
+ is_class = 1;
+ note = atoi (notestr + 1);
+ if ((nextnotestr = strchr (notestr + 1, '+')) != NULL)
+ {
+ if (strcmp (notestr, "+1+13") == 0)
+ note = 13;
+ else if (!xsect || nextnotestr < xsect)
+ fprintf (stderr, "Warning: multiple note %s not handled\n",
+ notestr);
+ }
+ }
+
+ /* if it's a composite class, leave the notes and comments in place so that
+ we have a unique name for the composite class */
+ if (!xsect)
+ {
+ if (notestr)
+ *notestr = 0;
+ if (comment)
+ *comment = 0;
+ }
+
+ for (i=0;i < iclen;i++)
+ if (strcmp(name, ics[i]->name) == 0
+ && ((comment == NULL && ics[i]->comment == NULL)
+ || (comment != NULL && ics[i]->comment != NULL
+ && strncmp (ics[i]->comment, comment,
+ strlen (ics[i]->comment)) == 0))
+ && note == ics[i]->note)
+ return i;
+
+ if (!create)
+ return -1;
+
+ /* doesn't exist, so make a new one */
+ if (iclen == ictotlen)
+ {
+ ictotlen += 20;
+ ics = (struct iclass **)
+ xrealloc(ics, (ictotlen)*sizeof(struct iclass *));
+ }
+ ind = iclen++;
+ ics[ind] = tmalloc(struct iclass);
+ memset((void *)ics[ind], 0, sizeof(struct iclass));
+ ics[ind]->name = xstrdup(name);
+ ics[ind]->is_class = is_class;
+ ics[ind]->orphan = 1;
+
+ if (comment)
+ {
+ ics[ind]->comment = xstrdup (comment + 1);
+ ics[ind]->comment[strlen(ics[ind]->comment)-1] = 0;
+ }
+ if (notestr)
+ ics[ind]->note = note;
+
+ /* if it's a composite class, there's a comment or note, look for an
+ existing class or terminal with the same name. */
+ if ((xsect || comment || notestr) && is_class)
+ {
+ // first, populate with the class we're based on
+ char *subname = name;
+ if (xsect)
+ *xsect = 0;
+ else if (comment)
+ *comment = 0;
+ else if (notestr)
+ *notestr = 0;
+ ics[ind]->nsubs = 1;
+ ics[ind]->subs = tmalloc(int);
+ ics[ind]->subs[0] = fetch_insn_class (subname, 1);;
+ }
+
+ while (xsect)
+ {
+ char *subname = xsect + 1;
+ xsect = strchr (subname, '\\');
+ if (xsect)
+ *xsect = 0;
+ ics[ind]->xsubs[ics[ind]->nxsubs] = fetch_insn_class (subname,1);
+ ics[ind]->nxsubs++;
+ }
+ free (name);
+
+ return ind;
+}
+
+/* for sorting a class's sub-class list only; make sure classes appear before
+ terminals */
+static int
+sub_compare (const void *e1, const void *e2)
+{
+ struct iclass *ic1 = ics[*(int *)e1];
+ struct iclass *ic2 = ics[*(int *)e2];
+
+ if (ic1->is_class)
+ {
+ if (!ic2->is_class)
+ return -1;
+ }
+ else if (ic2->is_class)
+ return 1;
+
+ return strcmp (ic1->name, ic2->name);
+}
+
+static void
+load_insn_classes()
+{
+ FILE *fp = fopen("ia64-ic.tbl", "r");
+ char buf[2048];
+
+ if (fp == NULL){
+ fprintf (stderr, "Can't find ia64-ic.tbl for reading\n");
+ exit(1);
+ }
+
+ /* discard first line */
+ fgets (buf, sizeof(buf), fp);
+
+ while (!feof(fp))
+ {
+ int iclass;
+ char *name;
+ char *tmp;
+
+ if (fgets (buf, sizeof(buf), fp) == NULL)
+ break;
+
+ while (isspace(buf[strlen(buf)-1]))
+ buf[strlen(buf)-1] = '\0';
+
+ name = tmp = buf;
+ while (*tmp != ';')
+ {
+ ++tmp;
+ if (tmp == buf + sizeof(buf))
+ abort ();
+ }
+ *tmp++ = '\0';
+
+ iclass = fetch_insn_class(name, 1);
+ ics[iclass]->is_class = 1;
+
+ if (strcmp (name, "none") == 0)
+ {
+ ics[iclass]->is_class = 0;
+ ics[iclass]->terminal_resolved = 1;
+ continue;
+ }
+
+ /* for this class, record all sub-classes */
+ while (*tmp)
+ {
+ char *subname;
+ int sub;
+
+ while (*tmp && isspace(*tmp))
+ {
+ ++tmp;
+ if (tmp == buf + sizeof(buf))
+ abort();
+ }
+ subname = tmp;
+ while (*tmp && *tmp != ',')
+ {
+ ++tmp;
+ if (tmp == buf + sizeof(buf))
+ abort();
+ }
+ if (*tmp == ',')
+ *tmp++ = '\0';
+
+ ics[iclass]->subs = (int *)
+ xrealloc((void *)ics[iclass]->subs,
+ (ics[iclass]->nsubs+1)*sizeof(int));
+
+ sub = fetch_insn_class(subname, 1);
+ ics[iclass]->subs = (int *)
+ xrealloc(ics[iclass]->subs, (ics[iclass]->nsubs+1)*sizeof(int));
+ ics[iclass]->subs[ics[iclass]->nsubs++] = sub;
+ }
+ /* make sure classes come before terminals */
+ qsort ((void *)ics[iclass]->subs,
+ ics[iclass]->nsubs, sizeof(int), sub_compare);
+ }
+ fclose(fp);
+
+ if (debug)
+ {
+ printf ("%d classes\n", iclen);
+ }
+}
+
+/* extract the insn classes from the given line */
+static void
+parse_resource_users(ref, usersp, nusersp, notesp)
+ char *ref;
+ int **usersp;
+ int *nusersp;
+ int **notesp;
+{
+ int c;
+ char *line = xstrdup (ref);
+ char *tmp = line;
+ int *users = *usersp;
+ int count = *nusersp;
+ int *notes = *notesp;
+
+ c = *tmp;
+ while (c != 0)
+ {
+ char *notestr;
+ int note;
+ char *xsect;
+ int iclass;
+ int create = 0;
+ char *name;
+
+ while (isspace(*tmp))
+ ++tmp;
+ name = tmp;
+ while (*tmp && *tmp != ',')
+ ++tmp;
+ c = *tmp;
+ *tmp++ = '\0';
+
+ xsect = strchr(name, '\\');
+ if ((notestr = strstr(name, "+")) != NULL)
+ {
+ char *nextnotestr;
+ note = atoi (notestr + 1);
+ if ((nextnotestr = strchr (notestr + 1, '+')) != NULL)
+ {
+ /* note 13 always implies note 1 */
+ if (strcmp (notestr, "+1+13") == 0)
+ note = 13;
+ else if (!xsect || nextnotestr < xsect)
+ fprintf (stderr, "Warning: multiple note %s not handled\n",
+ notestr);
+ }
+ if (!xsect)
+ *notestr = '\0';
+ }
+ else
+ note = 0;
+
+ /* All classes are created when the insn class table is parsed;
+ Individual instructions might not appear until the dependency tables
+ are read. Only create new classes if it's *not* an insn class,
+ or if it's a composite class (which wouldn't necessarily be in the IC
+ table).
+ */
+ if (strncmp(name, "IC:", 3) != 0 || xsect != NULL)
+ create = 1;
+
+ iclass = fetch_insn_class(name, create);
+ if (iclass != -1)
+ {
+ users = (int *)
+ xrealloc ((void *)users,(count+1)*sizeof(int));
+ notes = (int *)
+ xrealloc ((void *)notes,(count+1)*sizeof(int));
+ notes[count] = note;
+ users[count++] = iclass;
+ mark_used (ics[iclass], 0);
+ }
+ else
+ {
+ if (debug)
+ printf("Class %s not found\n", name);
+ }
+ }
+ /* update the return values */
+ *usersp = users;
+ *nusersp = count;
+ *notesp = notes;
+
+ free (line);
+}
+
+static int
+parse_semantics (char *sem)
+{
+ if (strcmp (sem, "none") == 0)
+ return IA64_DVS_NONE;
+ else if (strcmp (sem, "implied") == 0)
+ return IA64_DVS_IMPLIED;
+ else if (strcmp (sem, "impliedF") == 0)
+ return IA64_DVS_IMPLIEDF;
+ else if (strcmp (sem, "data") == 0)
+ return IA64_DVS_DATA;
+ else if (strcmp (sem, "instr") == 0)
+ return IA64_DVS_INSTR;
+ else if (strcmp (sem, "specific") == 0)
+ return IA64_DVS_SPECIFIC;
+ else
+ return IA64_DVS_OTHER;
+}
+
+static void
+add_dep (const char *name, const char *chk, const char *reg,
+ int semantics, int mode, char *extra, int flag)
+{
+ struct rdep *rs;
+
+ rs = insert_resource (name, mode);
+ parse_resource_users (chk, &rs->chks, &rs->nchks,
+ &rs->chknotes);
+ parse_resource_users (reg, &rs->regs, &rs->nregs,
+ &rs->regnotes);
+ rs->semantics = semantics;
+ rs->extra = extra;
+ rs->waw_special = flag;
+}
+
+static void
+load_depfile (const char *filename, enum ia64_dependency_mode mode)
+{
+ FILE *fp = fopen(filename, "r");
+ char buf[1024];
+
+ if (fp == NULL){
+ fprintf (stderr, "Can't find %s for reading\n", filename);
+ exit(1);
+ }
+
+ fgets(buf, sizeof(buf), fp);
+ while (!feof(fp))
+ {
+ char *name, *tmp;
+ int semantics;
+ char *extra;
+ char *regp, *chkp;
+
+ if (fgets (buf, sizeof(buf), fp) == NULL)
+ break;
+
+ while (isspace(buf[strlen(buf)-1]))
+ buf[strlen(buf)-1] = '\0';
+
+ name = tmp = buf;
+ while (*tmp != ';')
+ ++tmp;
+ *tmp++ = '\0';
+
+ while (isspace (*tmp))
+ ++tmp;
+ regp = tmp;
+ tmp = strchr (tmp, ';');
+ if (!tmp)
+ abort ();
+ *tmp++ = 0;
+ while (isspace (*tmp))
+ ++tmp;
+ chkp = tmp;
+ tmp = strchr (tmp, ';');
+ if (!tmp)
+ abort ();
+ *tmp++ = 0;
+ while (isspace (*tmp))
+ ++tmp;
+ semantics = parse_semantics (tmp);
+ extra = semantics == IA64_DVS_OTHER ? xstrdup (tmp) : NULL;
+
+ /* For WAW entries, if the chks and regs differ, we need to enter the
+ entries in both positions so that the tables will be parsed properly,
+ without a lot of extra work */
+ if (mode == IA64_DV_WAW && strcmp (regp, chkp) != 0)
+ {
+ add_dep (name, chkp, regp, semantics, mode, extra, 0);
+ add_dep (name, regp, chkp, semantics, mode, extra, 1);
+ }
+ else
+ {
+ add_dep (name, chkp, regp, semantics, mode, extra, 0);
+ }
+ }
+ fclose(fp);
+}
+
+static void
+load_dependencies()
+{
+ load_depfile ("ia64-raw.tbl", IA64_DV_RAW);
+ load_depfile ("ia64-waw.tbl", IA64_DV_WAW);
+ load_depfile ("ia64-war.tbl", IA64_DV_WAR);
+
+ if (debug)
+ printf ("%d RAW/WAW/WAR dependencies\n", rdepslen);
+}
+
+/* is the given operand an indirect register file operand? */
+static int
+irf_operand (int op, const char *field)
+{
+ if (!field)
+ {
+ return op == IA64_OPND_RR_R3 || op == IA64_OPND_DBR_R3
+ || op == IA64_OPND_IBR_R3 || op == IA64_OPND_PKR_R3
+ || op == IA64_OPND_PMC_R3 || op == IA64_OPND_PMD_R3
+ || op == IA64_OPND_MSR_R3 || op == IA64_OPND_CPUID_R3;
+ }
+ else
+ {
+ return ((op == IA64_OPND_RR_R3 && strstr (field, "rr"))
+ || (op == IA64_OPND_DBR_R3 && strstr (field, "dbr"))
+ || (op == IA64_OPND_IBR_R3 && strstr (field, "ibr"))
+ || (op == IA64_OPND_PKR_R3 && strstr (field, "pkr"))
+ || (op == IA64_OPND_PMC_R3 && strstr (field, "pmc"))
+ || (op == IA64_OPND_PMD_R3 && strstr (field, "pmd"))
+ || (op == IA64_OPND_MSR_R3 && strstr (field, "msr"))
+ || (op == IA64_OPND_CPUID_R3 && strstr (field, "cpuid")));
+ }
+}
+
+/* handle mov_ar, mov_br, mov_cr, mov_indirect, mov_ip, mov_pr, mov_psr, and
+ mov_um insn classes */
+static int
+in_iclass_mov_x (struct ia64_opcode *idesc, struct iclass *ic,
+ const char *format, const char *field)
+{
+ int plain_mov = strcmp (idesc->name, "mov") == 0;
+
+ if (!format)
+ return 0;
+
+ switch (ic->name[4])
+ {
+ default:
+ abort ();
+ case 'a':
+ {
+ int i = strcmp (idesc->name, "mov.i") == 0;
+ int m = strcmp (idesc->name, "mov.m") == 0;
+ int i2627 = i && idesc->operands[0] == IA64_OPND_AR3;
+ int i28 = i && idesc->operands[1] == IA64_OPND_AR3;
+ int m2930 = m && idesc->operands[0] == IA64_OPND_AR3;
+ int m31 = m && idesc->operands[1] == IA64_OPND_AR3;
+ int pseudo0 = plain_mov && idesc->operands[1] == IA64_OPND_AR3;
+ int pseudo1 = plain_mov && idesc->operands[0] == IA64_OPND_AR3;
+
+ /* IC:mov ar */
+ if (i2627)
+ return strstr (format, "I26") || strstr (format, "I27");
+ if (i28)
+ return strstr (format, "I28") != NULL;
+ if (m2930)
+ return strstr (format, "M29") || strstr (format, "M30");
+ if (m31)
+ return strstr (format, "M31") != NULL;
+ if (pseudo0 || pseudo1)
+ return 1;
+ }
+ break;
+ case 'b':
+ {
+ int i21 = idesc->operands[0] == IA64_OPND_B1;
+ int i22 = plain_mov && idesc->operands[1] == IA64_OPND_B2;
+ if (i22)
+ return strstr (format, "I22") != NULL;
+ if (i21)
+ return strstr (format, "I21") != NULL;
+ }
+ break;
+ case 'c':
+ {
+ int m32 = plain_mov && idesc->operands[0] == IA64_OPND_CR3;
+ int m33 = plain_mov && idesc->operands[1] == IA64_OPND_CR3;
+ if (m32)
+ return strstr (format, "M32") != NULL;
+ if (m33)
+ return strstr (format, "M33") != NULL;
+ }
+ break;
+ case 'i':
+ if (ic->name[5] == 'n')
+ {
+ int m42 = plain_mov && irf_operand (idesc->operands[0], field);
+ int m43 = plain_mov && irf_operand (idesc->operands[1], field);
+ if (m42)
+ return strstr (format, "M42") != NULL;
+ if (m43)
+ return strstr (format, "M43") != NULL;
+ }
+ else if (ic->name[5] == 'p')
+ {
+ return idesc->operands[1] == IA64_OPND_IP;
+ }
+ else
+ abort ();
+ break;
+ case 'p':
+ if (ic->name[5] == 'r')
+ {
+ int i25 = plain_mov && idesc->operands[1] == IA64_OPND_PR;
+ int i23 = plain_mov && idesc->operands[0] == IA64_OPND_PR;
+ int i24 = plain_mov && idesc->operands[0] == IA64_OPND_PR_ROT;
+ if (i23)
+ return strstr (format, "I23") != NULL;
+ if (i24)
+ return strstr (format, "I24") != NULL;
+ if (i25)
+ return strstr (format, "I25") != NULL;
+ }
+ else if (ic->name[5] == 's')
+ {
+ int m35 = plain_mov && idesc->operands[0] == IA64_OPND_PSR_L;
+ int m36 = plain_mov && idesc->operands[1] == IA64_OPND_PSR;
+ if (m35)
+ return strstr (format, "M35") != NULL;
+ if (m36)
+ return strstr (format, "M36") != NULL;
+ }
+ else
+ abort ();
+ break;
+ case 'u':
+ {
+ int m35 = plain_mov && idesc->operands[0] == IA64_OPND_PSR_UM;
+ int m36 = plain_mov && idesc->operands[1] == IA64_OPND_PSR_UM;
+ if (m35)
+ return strstr (format, "M35") != NULL;
+ if (m36)
+ return strstr (format, "M36") != NULL;
+ }
+ break;
+ }
+ return 0;
+}
+
+
+/* is the given opcode in the given insn class? */
+static int
+in_iclass(struct ia64_opcode *idesc, struct iclass *ic,
+ const char *format, const char *field, int *notep)
+{
+ int i;
+ int resolved = 0;
+
+ if (ic->comment)
+ {
+ if (!strncmp (ic->comment, "Format", 6))
+ {
+ /* assume that the first format seen is the most restrictive, and
+ only keep a later one if it looks like it's more restrictive. */
+ if (format)
+ {
+ if (strlen (ic->comment) < strlen (format))
+ {
+ fprintf (stderr, "Warning: most recent format '%s'\n"
+ "appears more restrictive than '%s'\n",
+ ic->comment, format);
+ format = ic->comment;
+ }
+ }
+ else
+ format = ic->comment;
+ }
+ else if (!strncmp (ic->comment, "Field", 5))
+ {
+ if (field)
+ fprintf (stderr, "Overlapping field %s->%s\n",
+ ic->comment, field);
+ field = ic->comment;
+ }
+ }
+
+ /* an insn class matches anything that is the same followed by completers,
+ except when the absence and presence of completers constitutes different
+ instructions */
+ if (ic->nsubs == 0 && ic->nxsubs == 0)
+ {
+ int is_mov = strncmp (idesc->name, "mov", 3) == 0;
+ int plain_mov = strcmp (idesc->name, "mov") == 0;
+ int len = strlen(ic->name);
+
+ resolved = ((strncmp (ic->name, idesc->name, len) == 0)
+ && (idesc->name[len] == '\0'
+ || idesc->name[len] == '.'));
+
+ /* all break and nop variations must match exactly */
+ if (resolved &&
+ (strcmp (ic->name, "break") == 0
+ || strcmp (ic->name, "nop") == 0))
+ resolved = strcmp (ic->name, idesc->name) == 0;
+
+ /* assume restrictions in the FORMAT/FIELD negate resolution,
+ unless specifically allowed by clauses in this block */
+ if (resolved && field)
+ {
+ /* check Field(sf)==sN against opcode sN */
+ if (strstr(field, "(sf)==") != NULL)
+ {
+ char *sf;
+ if ((sf = strstr (idesc->name, ".s")) != 0)
+ {
+ resolved = strcmp (sf + 1, strstr (field, "==") + 2) == 0;
+ }
+ }
+ /* check Field(lftype)==XXX */
+ else if (strstr (field, "(lftype)") != NULL)
+ {
+ if (strstr (idesc->name, "fault") != NULL)
+ resolved = strstr (field, "fault") != NULL;
+ else
+ resolved = strstr (field, "fault") == NULL;
+ }
+ /* handle Field(ctype)==XXX */
+ else if (strstr (field, "(ctype)") != NULL)
+ {
+ if (strstr (idesc->name, "or.andcm"))
+ resolved = strstr (field, "or.andcm") != NULL;
+ else if (strstr (idesc->name, "and.orcm"))
+ resolved = strstr (field, "and.orcm") != NULL;
+ else if (strstr (idesc->name, "orcm"))
+ resolved = strstr (field, "or orcm") != NULL;
+ else if (strstr (idesc->name, "or"))
+ resolved = strstr (field, "or orcm") != NULL;
+ else if (strstr (idesc->name, "andcm"))
+ resolved = strstr (field, "and andcm") != NULL;
+ else if (strstr (idesc->name, "and"))
+ resolved = strstr (field, "and andcm") != NULL;
+ else if (strstr (idesc->name, "unc"))
+ resolved = strstr (field, "unc") != NULL;
+ else
+ resolved = strcmp (field, "Field(ctype)==") == 0;
+ }
+ }
+ if (resolved && format)
+ {
+ if (strncmp (idesc->name, "dep", 3) == 0
+ && strstr (format, "I13") != NULL)
+ resolved = idesc->operands[1] == IA64_OPND_IMM8;
+ else if (strncmp (idesc->name, "chk", 3) == 0
+ && strstr (format, "M21") != NULL)
+ resolved = idesc->operands[0] == IA64_OPND_F2;
+ else if (strncmp (idesc->name, "lfetch", 6) == 0)
+ resolved = (strstr (format, "M14 M15") != NULL
+ && (idesc->operands[1] == IA64_OPND_R2
+ || idesc->operands[1] == IA64_OPND_IMM9b));
+ else if (strncmp (idesc->name, "br.call", 7) == 0
+ && strstr (format, "B5") != NULL)
+ resolved = idesc->operands[1] == IA64_OPND_B2;
+ else if (strncmp (idesc->name, "br.call", 7) == 0
+ && strstr (format, "B3") != NULL)
+ resolved = idesc->operands[1] == IA64_OPND_TGT25c;
+ else if (strncmp (idesc->name, "brp", 3) == 0
+ && strstr (format, "B7") != NULL)
+ resolved = idesc->operands[0] == IA64_OPND_B2;
+ else if (strcmp (ic->name, "invala") == 0)
+ resolved = strcmp (idesc->name, ic->name) == 0;
+ else
+ resolved = 0;
+ }
+
+ /* misc brl variations ('.cond' is optional);
+ plain brl matches brl.cond */
+ if (!resolved
+ && (strcmp (idesc->name, "brl") == 0
+ || strncmp (idesc->name, "brl.", 4) == 0)
+ && strcmp (ic->name, "brl.cond") == 0)
+ {
+ resolved = 1;
+ }
+
+ /* misc br variations ('.cond' is optional) */
+ if (!resolved
+ && (strcmp (idesc->name, "br") == 0
+ || strncmp (idesc->name, "br.", 3) == 0)
+ && strcmp (ic->name, "br.cond") == 0)
+ {
+ if (format)
+ resolved = (strstr (format, "B4") != NULL
+ && idesc->operands[0] == IA64_OPND_B2)
+ || (strstr (format, "B1") != NULL
+ && idesc->operands[0] == IA64_OPND_TGT25c);
+ else
+ resolved = 1;
+ }
+
+ /* probe variations */
+ if (!resolved && strncmp (idesc->name, "probe", 5) == 0)
+ {
+ resolved = strcmp (ic->name, "probe") == 0
+ && !((strstr (idesc->name, "fault") != NULL)
+ ^ (format && strstr (format, "M40") != NULL));
+ }
+ /* mov variations */
+ if (!resolved && is_mov)
+ {
+ if (plain_mov)
+ {
+ /* mov alias for fmerge */
+ if (strcmp (ic->name, "fmerge") == 0)
+ {
+ resolved = idesc->operands[0] == IA64_OPND_F1
+ && idesc->operands[1] == IA64_OPND_F3;
+ }
+ /* mov alias for adds (r3 or imm14) */
+ else if (strcmp (ic->name, "adds") == 0)
+ {
+ resolved = (idesc->operands[0] == IA64_OPND_R1
+ && (idesc->operands[1] == IA64_OPND_R3
+ || (idesc->operands[1] == IA64_OPND_IMM14)));
+ }
+ /* mov alias for addl */
+ else if (strcmp (ic->name, "addl") == 0)
+ {
+ resolved = idesc->operands[0] == IA64_OPND_R1
+ && idesc->operands[1] == IA64_OPND_IMM22;
+ }
+ }
+ /* some variants of mov and mov.[im] */
+ if (!resolved && strncmp (ic->name, "mov_", 4) == 0)
+ {
+ resolved = in_iclass_mov_x (idesc, ic, format, field);
+ }
+ }
+
+ /* keep track of this so we can flag any insn classes which aren't
+ mapped onto at least one real insn */
+ if (resolved)
+ {
+ ic->terminal_resolved = 1;
+ }
+ }
+ else for (i=0;i < ic->nsubs;i++)
+ {
+ if (in_iclass(idesc, ics[ic->subs[i]], format, field, notep))
+ {
+ int j;
+ for (j=0;j < ic->nxsubs;j++)
+ {
+ if (in_iclass(idesc, ics[ic->xsubs[j]], NULL, NULL, NULL))
+ return 0;
+ }
+ if (debug > 1)
+ printf ("%s is in IC %s\n",
+ idesc->name, ic->name);
+ resolved = 1;
+ break;
+ }
+ }
+
+ /* If it's in this IC, add the IC note (if any) to the insn */
+ if (resolved)
+ {
+ if (ic->note && notep)
+ {
+ if (*notep && *notep != ic->note)
+ {
+ fprintf (stderr, "Warning: overwriting note %d with note %d"
+ "(IC:%s)\n",
+ *notep, ic->note, ic->name);
+ }
+ *notep = ic->note;
+ }
+ }
+
+ return resolved;
+}
+
+
+static int
+lookup_regindex (const char *name, int specifier)
+{
+ switch (specifier)
+ {
+ case IA64_RS_ARX:
+ if (strstr (name, "[RSC]"))
+ return 16;
+ if (strstr (name, "[BSP]"))
+ return 17;
+ else if (strstr (name, "[BSPSTORE]"))
+ return 18;
+ else if (strstr (name, "[RNAT]"))
+ return 19;
+ else if (strstr (name, "[CCV]"))
+ return 32;
+ else if (strstr (name, "[ITC]"))
+ return 44;
+ else if (strstr (name, "[PFS]"))
+ return 64;
+ else if (strstr (name, "[LC]"))
+ return 65;
+ else if (strstr (name, "[EC]"))
+ return 66;
+ abort ();
+ case IA64_RS_CRX:
+ if (strstr (name, "[DCR]"))
+ return 0;
+ else if (strstr (name, "[ITM]"))
+ return 1;
+ else if (strstr (name, "[IVA]"))
+ return 2;
+ else if (strstr (name, "[PTA]"))
+ return 8;
+ else if (strstr (name, "[GPTA]"))
+ return 9;
+ else if (strstr (name, "[IPSR]"))
+ return 16;
+ else if (strstr (name, "[ISR]"))
+ return 17;
+ else if (strstr (name, "[IIP]"))
+ return 19;
+ else if (strstr (name, "[IFA]"))
+ return 20;
+ else if (strstr (name, "[ITIR]"))
+ return 21;
+ else if (strstr (name, "[IIPA]"))
+ return 22;
+ else if (strstr (name, "[IFS]"))
+ return 23;
+ else if (strstr (name, "[IIM]"))
+ return 24;
+ else if (strstr (name, "[IHA]"))
+ return 25;
+ else if (strstr (name, "[LID]"))
+ return 64;
+ else if (strstr (name, "[IVR]"))
+ return 65;
+ else if (strstr (name, "[TPR]"))
+ return 66;
+ else if (strstr (name, "[EOI]"))
+ return 67;
+ else if (strstr (name, "[ITV]"))
+ return 72;
+ else if (strstr (name, "[PMV]"))
+ return 73;
+ else if (strstr (name, "[CMCV]"))
+ return 74;
+ abort ();
+ case IA64_RS_PSR:
+ if (strstr (name, ".be"))
+ return 1;
+ else if (strstr (name, ".up"))
+ return 2;
+ else if (strstr (name, ".ac"))
+ return 3;
+ else if (strstr (name, ".mfl"))
+ return 4;
+ else if (strstr (name, ".mfh"))
+ return 5;
+ else if (strstr (name, ".ic"))
+ return 13;
+ else if (strstr (name, ".i"))
+ return 14;
+ else if (strstr (name, ".pk"))
+ return 15;
+ else if (strstr (name, ".dt"))
+ return 17;
+ else if (strstr (name, ".dfl"))
+ return 18;
+ else if (strstr (name, ".dfh"))
+ return 19;
+ else if (strstr (name, ".sp"))
+ return 20;
+ else if (strstr (name, ".pp"))
+ return 21;
+ else if (strstr (name, ".di"))
+ return 22;
+ else if (strstr (name, ".si"))
+ return 23;
+ else if (strstr (name, ".db"))
+ return 24;
+ else if (strstr (name, ".lp"))
+ return 25;
+ else if (strstr (name, ".tb"))
+ return 26;
+ else if (strstr (name, ".rt"))
+ return 27;
+ else if (strstr (name, ".cpl"))
+ return 32;
+ else if (strstr (name, ".rs"))
+ return 34;
+ else if (strstr (name, ".mc"))
+ return 35;
+ else if (strstr (name, ".it"))
+ return 36;
+ else if (strstr (name, ".id"))
+ return 37;
+ else if (strstr (name, ".da"))
+ return 38;
+ else if (strstr (name, ".dd"))
+ return 39;
+ else if (strstr (name, ".ss"))
+ return 40;
+ else if (strstr (name, ".ri"))
+ return 41;
+ else if (strstr (name, ".ed"))
+ return 43;
+ else if (strstr (name, ".bn"))
+ return 44;
+ else if (strstr (name, ".ia"))
+ return 45;
+ else
+ abort ();
+ default:
+ break;
+ }
+ return REG_NONE;
+}
+
+static int
+lookup_specifier (const char *name)
+{
+ if (strchr (name, '%'))
+ {
+ if (strstr (name, "AR[K%]") != NULL)
+ return IA64_RS_AR_K;
+ if (strstr (name, "AR[UNAT]") != NULL)
+ return IA64_RS_AR_UNAT;
+ if (strstr (name, "AR%, % in 8") != NULL)
+ return IA64_RS_AR;
+ if (strstr (name, "AR%, % in 48") != NULL)
+ return IA64_RS_ARb;
+ if (strstr (name, "BR%") != NULL)
+ return IA64_RS_BR;
+ if (strstr (name, "CR[IRR%]") != NULL)
+ return IA64_RS_CR_IRR;
+ if (strstr (name, "CR[LRR%]") != NULL)
+ return IA64_RS_CR_LRR;
+ if (strstr (name, "CR%") != NULL)
+ return IA64_RS_CR;
+ if (strstr (name, "FR%, % in 0") != NULL)
+ return IA64_RS_FR;
+ if (strstr (name, "FR%, % in 2") != NULL)
+ return IA64_RS_FRb;
+ if (strstr (name, "GR%") != NULL)
+ return IA64_RS_GR;
+ if (strstr (name, "PR%") != NULL)
+ return IA64_RS_PR;
+
+ fprintf (stderr, "Warning! Don't know how to specify %% dependency %s\n",
+ name);
+ }
+ else if (strchr (name, '#'))
+ {
+ if (strstr (name, "CPUID#") != NULL)
+ return IA64_RS_CPUID;
+ if (strstr (name, "DBR#") != NULL)
+ return IA64_RS_DBR;
+ if (strstr (name, "IBR#") != NULL)
+ return IA64_RS_IBR;
+ if (strstr (name, "MSR#") != NULL)
+ return IA64_RS_MSR;
+ if (strstr (name, "PKR#") != NULL)
+ return IA64_RS_PKR;
+ if (strstr (name, "PMC#") != NULL)
+ return IA64_RS_PMC;
+ if (strstr (name, "PMD#") != NULL)
+ return IA64_RS_PMD;
+ if (strstr (name, "RR#") != NULL)
+ return IA64_RS_RR;
+
+ fprintf (stderr, "Warning! Don't know how to specify # dependency %s\n",
+ name);
+ }
+ else if (strncmp (name, "AR[FPSR]", 8) == 0)
+ return IA64_RS_AR_FPSR;
+ else if (strncmp (name, "AR[", 3) == 0)
+ return IA64_RS_ARX;
+ else if (strncmp (name, "CR[", 3) == 0)
+ return IA64_RS_CRX;
+ else if (strncmp (name, "PSR.", 4) == 0)
+ return IA64_RS_PSR;
+ else if (strcmp (name, "InService*") == 0)
+ return IA64_RS_INSERVICE;
+ else if (strcmp (name, "GR0") == 0)
+ return IA64_RS_GR0;
+ else if (strcmp (name, "CFM") == 0)
+ return IA64_RS_CFM;
+ else if (strcmp (name, "PR63") == 0)
+ return IA64_RS_PR63;
+ else if (strcmp (name, "RSE") == 0)
+ return IA64_RS_RSE;
+
+ return IA64_RS_ANY;
+}
+
+void
+print_dependency_table ()
+{
+ int i, j;
+
+ if (debug)
+ {
+ for (i=0;i < iclen;i++)
+ {
+ if (ics[i]->is_class)
+ {
+ if (!ics[i]->nsubs)
+ {
+ fprintf (stderr, "Warning: IC:%s", ics[i]->name);
+ if (ics[i]->comment)
+ fprintf (stderr, "[%s]", ics[i]->comment);
+ fprintf (stderr, " has no terminals or sub-classes\n");
+ }
+ }
+ else
+ {
+ if (!ics[i]->terminal_resolved && !ics[i]->orphan)
+ {
+ fprintf(stderr, "Warning: no insns mapped directly to "
+ "terminal IC %s", ics[i]->name);
+ if (ics[i]->comment)
+ fprintf(stderr, "[%s] ", ics[i]->comment);
+ fprintf(stderr, "\n");
+ }
+ }
+ }
+
+ for (i=0;i < iclen;i++)
+ {
+ if (ics[i]->orphan)
+ {
+ mark_used (ics[i], 1);
+ fprintf (stderr, "Warning: class %s is defined but not used\n",
+ ics[i]->name);
+ }
+ }
+
+ if (debug > 1) for (i=0;i < rdepslen;i++)
+ {
+ static const char *mode_str[] = { "RAW", "WAW", "WAR" };
+ if (rdeps[i]->total_chks == 0)
+ {
+ fprintf (stderr, "Warning: rsrc %s (%s) has no chks%s\n",
+ rdeps[i]->name, mode_str[rdeps[i]->mode],
+ rdeps[i]->total_regs ? "" : " or regs");
+ }
+ else if (rdeps[i]->total_regs == 0)
+ {
+ fprintf (stderr, "Warning: rsrc %s (%s) has no regs\n",
+ rdeps[i]->name, mode_str[rdeps[i]->mode]);
+ }
+ }
+ }
+
+ /* the dependencies themselves */
+ printf ("static const struct ia64_dependency\ndependencies[] = {\n");
+ for (i=0;i < rdepslen;i++)
+ {
+ /* '%', '#', AR[], CR[], or PSR. indicates we need to specify the actual
+ resource used */
+ int specifier = lookup_specifier (rdeps[i]->name);
+ int regindex = lookup_regindex (rdeps[i]->name, specifier);
+
+ printf (" { \"%s\", %d, %d, %d, %d, ",
+ rdeps[i]->name, specifier,
+ (int)rdeps[i]->mode, (int)rdeps[i]->semantics, regindex);
+ if (rdeps[i]->semantics == IA64_DVS_OTHER)
+ printf ("\"%s\", ", rdeps[i]->extra);
+ printf("},\n");
+ }
+ printf ("};\n\n");
+
+ /* and dependency lists */
+ for (i=0;i < dlistlen;i++)
+ {
+ int len = 2;
+ printf ("static const short dep%d[] = {\n ", i);
+ for (j=0;j < dlists[i]->len; j++)
+ {
+ len += printf ("%d, ", dlists[i]->deps[j]);
+ if (len > 75)
+ {
+ printf("\n ");
+ len = 2;
+ }
+ }
+ printf ("\n};\n\n");
+ }
+
+ /* and opcode dependency list */
+ printf ("#define NELS(X) (sizeof(X)/sizeof(X[0]))\n");
+ printf ("static const struct ia64_opcode_dependency\n");
+ printf ("op_dependencies[] = {\n");
+ for (i=0;i < opdeplen;i++)
+ {
+ printf (" { ");
+ if (opdeps[i]->chk == -1)
+ printf ("0, NULL, ");
+ else
+ printf ("NELS(dep%d), dep%d, ", opdeps[i]->chk, opdeps[i]->chk);
+ if (opdeps[i]->reg == -1)
+ printf ("0, NULL, ");
+ else
+ printf ("NELS(dep%d), dep%d, ", opdeps[i]->reg, opdeps[i]->reg);
+ printf ("},\n");
+ }
+ printf ("};\n\n");
+}
+
+
+/* Add STR to the string table. */
+
+static struct string_entry *
+insert_string (str)
+ char *str;
+{
+ int start = 0, end = strtablen;
+ int i, x;
+
+ if (strtablen == strtabtotlen)
+ {
+ strtabtotlen += 20;
+ string_table = (struct string_entry **)
+ xrealloc (string_table,
+ sizeof (struct string_entry **) * strtabtotlen);
+ }
+
+ if (strtablen == 0)
+ {
+ strtablen = 1;
+ string_table[0] = tmalloc (struct string_entry);
+ string_table[0]->s = xstrdup (str);
+ string_table[0]->num = 0;
+ return string_table[0];
+ }
+
+ if (strcmp (str, string_table[strtablen - 1]->s) > 0)
+ {
+ i = end;
+ }
+ else if (strcmp (str, string_table[0]->s) < 0)
+ {
+ i = 0;
+ }
+ else
+ {
+ while (1)
+ {
+ int c;
+
+ i = (start + end) / 2;
+ c = strcmp (str, string_table[i]->s);
+ if (c < 0)
+ {
+ end = i - 1;
+ }
+ else if (c == 0)
+ {
+ return string_table[i];
+ }
+ else
+ {
+ start = i + 1;
+ }
+ if (start > end)
+ {
+ break;
+ }
+ }
+ }
+ for (; i > 0 && i < strtablen; i--)
+ {
+ if (strcmp (str, string_table[i - 1]->s) > 0)
+ {
+ break;
+ }
+ }
+ for (; i < strtablen; i++)
+ {
+ if (strcmp (str, string_table[i]->s) < 0)
+ {
+ break;
+ }
+ }
+ for (x = strtablen - 1; x >= i; x--)
+ {
+ string_table[x + 1] = string_table[x];
+ string_table[x + 1]->num = x + 1;
+ }
+ string_table[i] = tmalloc (struct string_entry);
+ string_table[i]->s = xstrdup (str);
+ string_table[i]->num = i;
+ strtablen++;
+ return string_table[i];
+}
+
+struct bittree *
+make_bittree_entry ()
+{
+ struct bittree *res = tmalloc (struct bittree);
+
+ res->disent = NULL;
+ res->bits[0] = NULL;
+ res->bits[1] = NULL;
+ res->bits[2] = NULL;
+ res->skip_flag = 0;
+ res->bits_to_skip = 0;
+ return res;
+}
+
+struct disent *
+add_dis_table_ent (which, insn, order, completer_index)
+ struct disent *which;
+ int insn;
+ int order;
+ int completer_index;
+{
+ int ci = 0;
+ struct disent *ent;
+
+ if (which != NULL)
+ {
+ ent = which;
+
+ ent->nextcnt++;
+ while (ent->nexte != NULL)
+ {
+ ent = ent->nexte;
+ }
+ ent = (ent->nexte = tmalloc (struct disent));
+ }
+ else
+ {
+ ent = tmalloc (struct disent);
+ ent->next_ent = disinsntable;
+ disinsntable = ent;
+ which = ent;
+ }
+ ent->nextcnt = 0;
+ ent->nexte = NULL;
+ ent->insn = insn;
+ ent->priority = order;
+
+ while (completer_index != 1)
+ {
+ ci = (ci << 1) | (completer_index & 1);
+ completer_index >>= 1;
+ }
+ ent->completer_index = ci;
+ return which;
+}
+
+void
+finish_distable ()
+{
+ struct disent *ent = disinsntable;
+ struct disent *prev = ent;
+
+ ent->ournum = 32768;
+ while ((ent = ent->next_ent) != NULL)
+ {
+ ent->ournum = prev->ournum + prev->nextcnt + 1;
+ prev = ent;
+ }
+}
+
+void
+insert_bit_table_ent (curr_ent, bit, opcode, mask,
+ opcodenum, order, completer_index)
+ struct bittree *curr_ent;
+ int bit;
+ ia64_insn opcode;
+ ia64_insn mask;
+ int opcodenum;
+ int order;
+ int completer_index;
+{
+ ia64_insn m;
+ int b;
+ struct bittree *next;
+
+ if (bit == -1)
+ {
+ struct disent *nent = add_dis_table_ent (curr_ent->disent,
+ opcodenum, order,
+ completer_index);
+ curr_ent->disent = nent;
+ return;
+ }
+
+ m = ((ia64_insn) 1) << bit;
+
+ if (mask & m)
+ {
+ b = (opcode & m) ? 1 : 0;
+ }
+ else
+ {
+ b = 2;
+ }
+ next = curr_ent->bits[b];
+ if (next == NULL)
+ {
+ next = make_bittree_entry ();
+ curr_ent->bits[b] = next;
+ }
+ insert_bit_table_ent (next, bit - 1, opcode, mask, opcodenum, order,
+ completer_index);
+}
+
+void
+add_dis_entry (first, opcode, mask, opcodenum, ent, completer_index)
+ struct bittree *first;
+ ia64_insn opcode;
+ ia64_insn mask;
+ int opcodenum;
+ struct completer_entry *ent;
+ int completer_index;
+{
+ if (completer_index & (1 << 20))
+ {
+ abort ();
+ }
+
+ while (ent != NULL)
+ {
+ ia64_insn newopcode = (opcode & (~ ent->mask)) | ent->bits;
+ add_dis_entry (first, newopcode, mask, opcodenum, ent->addl_entries,
+ (completer_index << 1) | 1);
+ if (ent->is_terminal)
+ {
+ insert_bit_table_ent (bittree, 40, newopcode, mask,
+ opcodenum, opcode_count - ent->order - 1,
+ (completer_index << 1) | 1);
+ }
+ completer_index <<= 1;
+ ent = ent->alternative;
+ }
+}
+
+/* This optimization pass combines multiple "don't care" nodes. */
+void
+compact_distree (ent)
+ struct bittree *ent;
+{
+#define IS_SKIP(ent) \
+ ((ent->bits[2] !=NULL) \
+ && (ent->bits[0] == NULL && ent->bits[1] == NULL && ent->skip_flag == 0))
+
+ int bitcnt = 0;
+ struct bittree *nent = ent;
+ int x;
+
+ while (IS_SKIP (nent))
+ {
+ bitcnt++;
+ nent = nent->bits[2];
+ }
+
+ if (bitcnt)
+ {
+ struct bittree *next = ent->bits[2];
+
+ ent->bits[0] = nent->bits[0];
+ ent->bits[1] = nent->bits[1];
+ ent->bits[2] = nent->bits[2];
+ ent->disent = nent->disent;
+ ent->skip_flag = 1;
+ ent->bits_to_skip = bitcnt;
+ while (next != nent)
+ {
+ struct bittree *b = next;
+ next = next->bits[2];
+ free (b);
+ }
+ free (nent);
+ }
+
+ for (x = 0; x < 3; x++)
+ {
+ struct bittree *i = ent->bits[x];
+ if (i != NULL)
+ {
+ compact_distree (i);
+ }
+ }
+}
+
+static unsigned char *insn_list;
+static int insn_list_len = 0;
+static int tot_insn_list_len = 0;
+
+/* Generate the disassembler state machine corresponding to the tree
+ in ENT. */
+void
+gen_dis_table (ent)
+ struct bittree *ent;
+{
+ int x;
+ int our_offset = insn_list_len;
+ int bitsused = 5;
+ int totbits = bitsused;
+ int needed_bytes;
+ int zero_count = 0;
+ int zero_dest = 0; /* initialize this with 0 to keep gcc quiet... */
+
+ /* If this is a terminal entry, there's no point in skipping any
+ bits. */
+ if (ent->skip_flag && ent->bits[0] == NULL && ent->bits[1] == NULL &&
+ ent->bits[2] == NULL)
+ {
+ if (ent->disent == NULL)
+ {
+ abort ();
+ }
+ else
+ {
+ ent->skip_flag = 0;
+ }
+ }
+
+ /* Calculate the amount of space needed for this entry, or at least
+ a conservatively large approximation. */
+ if (ent->skip_flag)
+ {
+ totbits += 5;
+ }
+ for (x = 1; x < 3; x++)
+ {
+ if (ent->bits[x] != NULL)
+ {
+ totbits += 16;
+ }
+ }
+
+ if (ent->disent != NULL)
+ {
+ if (ent->bits[2] != NULL)
+ {
+ abort ();
+ }
+ totbits += 16;
+ }
+
+ /* Now allocate the space. */
+ needed_bytes = (totbits + 7) / 8;
+ if ((needed_bytes + insn_list_len) > tot_insn_list_len)
+ {
+ tot_insn_list_len += 256;
+ insn_list = (char *) xrealloc (insn_list, tot_insn_list_len);
+ }
+ our_offset = insn_list_len;
+ insn_list_len += needed_bytes;
+ memset (insn_list + our_offset, 0, needed_bytes);
+
+ /* Encode the skip entry by setting bit 6 set in the state op field,
+ and store the # of bits to skip immediately after. */
+ if (ent->skip_flag)
+ {
+ bitsused += 5;
+ insn_list[our_offset + 0] |= 0x40 | ((ent->bits_to_skip >> 2) & 0xf);
+ insn_list[our_offset + 1] |= ((ent->bits_to_skip & 3) << 6);
+ }
+
+#define IS_ONLY_IFZERO(ENT) \
+ ((ENT)->bits[0] != NULL && (ENT)->bits[1] == NULL && (ENT)->bits[2] == NULL \
+ && (ENT)->disent == NULL && (ENT)->skip_flag == 0)
+
+ /* Store an "if (bit is zero)" instruction by setting bit 7 in the
+ state op field. */
+
+ if (ent->bits[0] != NULL)
+ {
+ struct bittree *nent = ent->bits[0];
+ zero_count = 0;
+
+ insn_list[our_offset] |= 0x80;
+
+ /* We can encode sequences of multiple "if (bit is zero)" tests
+ by storing the # of zero bits to check in the lower 3 bits of
+ the instruction. However, this only applies if the state
+ solely tests for a zero bit. */
+
+ if (IS_ONLY_IFZERO (ent))
+ {
+ while (IS_ONLY_IFZERO (nent) && zero_count < 7)
+ {
+ nent = nent->bits[0];
+ zero_count++;
+ }
+
+ insn_list[our_offset + 0] |= zero_count;
+ }
+ zero_dest = insn_list_len;
+ gen_dis_table (nent);
+ }
+
+ /* Now store the remaining tests. We also handle a sole "termination
+ entry" by storing it as an "any bit" test. */
+
+ for (x = 1; x < 3; x++)
+ {
+ if (ent->bits[x] != NULL || (x == 2 && ent->disent != NULL))
+ {
+ struct bittree *i = ent->bits[x];
+ int idest;
+ int currbits = 15;
+
+ if (i != NULL)
+ {
+ /* If the instruction being branched to only consists of
+ a termination entry, use the termination entry as the
+ place to branch to instead. */
+ if (i->bits[0] == NULL && i->bits[1] == NULL
+ && i->bits[2] == NULL && i->disent != NULL)
+ {
+ idest = i->disent->ournum;
+ i = NULL;
+ }
+ else
+ {
+ idest = insn_list_len - our_offset;
+ }
+ }
+ else
+ {
+ idest = ent->disent->ournum;
+ }
+
+ /* If the destination offset for the if (bit is 1) test is less
+ than 256 bytes away, we can store it as 8-bits instead of 16;
+ the instruction has bit 5 set for the 16-bit address, and bit
+ 4 for the 8-bit address. Since we've already allocated 16
+ bits for the address we need to deallocate the space.
+
+ Note that branchings within the table are relative, and
+ there are no branches that branch past our instruction yet
+ so we do not need to adjust any other offsets. */
+
+ if (x == 1)
+ {
+ if (idest <= 256)
+ {
+ int start = our_offset + bitsused / 8 + 1;
+
+ memmove (insn_list + start,
+ insn_list + start + 1,
+ insn_list_len - (start + 1));
+ currbits = 7;
+ totbits -= 8;
+ needed_bytes--;
+ insn_list_len--;
+ insn_list[our_offset] |= 0x10;
+ idest--;
+ }
+ else
+ {
+ insn_list[our_offset] |= 0x20;
+ }
+ }
+ else
+ {
+ /* An instruction which solely consists of a termination
+ marker and whose disassembly name index is < 4096
+ can be stored in 16 bits. The encoding is slightly
+ odd; the upper 4 bits of the instruction are 0x3, and
+ bit 3 loses its normal meaning. */
+
+ if (ent->bits[0] == NULL && ent->bits[1] == NULL
+ && ent->bits[2] == NULL && ent->skip_flag == 0
+ && ent->disent != NULL
+ && ent->disent->ournum < (32768 + 4096))
+ {
+ int start = our_offset + bitsused / 8 + 1;
+
+ memmove (insn_list + start,
+ insn_list + start + 1,
+ insn_list_len - (start + 1));
+ currbits = 11;
+ totbits -= 5;
+ bitsused--;
+ needed_bytes--;
+ insn_list_len--;
+ insn_list[our_offset] |= 0x30;
+ idest &= ~32768;
+ }
+ else
+ {
+ insn_list[our_offset] |= 0x08;
+ }
+ }
+ if (debug)
+ {
+ int id = idest;
+
+ if (i == NULL)
+ {
+ id |= 32768;
+ }
+ else if (! (id & 32768))
+ {
+ id += our_offset;
+ }
+ if (x == 1)
+ {
+ printf ("%d: if (1) goto %d\n", our_offset, id);
+ }
+ else
+ {
+ printf ("%d: try %d\n", our_offset, id);
+ }
+ }
+
+ /* Store the address of the entry being branched to. */
+ while (currbits >= 0)
+ {
+ char *byte = insn_list + our_offset + bitsused / 8;
+
+ if (idest & (1 << currbits))
+ {
+ *byte |= (1 << (7 - (bitsused % 8)));
+ }
+ bitsused++;
+ currbits--;
+ }
+
+ /* Now generate the states for the entry being branched to. */
+ if (i != NULL)
+ {
+ gen_dis_table (i);
+ }
+
+ }
+ }
+ if (debug)
+ {
+ if (ent->skip_flag)
+ {
+ printf ("%d: skipping %d\n", our_offset, ent->bits_to_skip);
+ }
+
+ if (ent->bits[0] != NULL)
+ {
+ printf ("%d: if (0:%d) goto %d\n", our_offset, zero_count + 1,
+ zero_dest);
+ }
+ }
+ if (bitsused != totbits)
+ {
+ abort ();
+ }
+}
+
+void
+print_dis_table ()
+{
+ int x;
+ struct disent *cent = disinsntable;
+
+ printf ("static const char dis_table[] = {\n");
+ for (x = 0; x < insn_list_len; x++)
+ {
+ if ((x > 0) && ((x % 12) == 0))
+ {
+ printf ("\n");
+ }
+ printf ("0x%02x, ", insn_list[x]);
+ }
+ printf ("\n};\n\n");
+
+ printf ("static const struct ia64_dis_names ia64_dis_names[] = {\n");
+ while (cent != NULL)
+ {
+ struct disent *ent = cent;
+
+ while (ent != NULL)
+ {
+ printf ("{ 0x%x, %d, %d, %d },\n", ent->completer_index,
+ ent->insn, (ent->nexte != NULL ? 1 : 0),
+ ent->priority);
+ ent = ent->nexte;
+ }
+ cent = cent->next_ent;
+ }
+ printf ("};\n\n");
+}
+
+void
+generate_disassembler ()
+{
+ int i;
+
+ bittree = make_bittree_entry ();
+
+ for (i=0; i < otlen;i++)
+ {
+ struct main_entry *ptr = ordered_table[i];
+
+ if (ptr->opcode->type != IA64_TYPE_DYN)
+ {
+ add_dis_entry (bittree,
+ ptr->opcode->opcode, ptr->opcode->mask,
+ ptr->main_index,
+ ptr->completers, 1);
+ }
+ }
+
+ compact_distree (bittree);
+ finish_distable ();
+ gen_dis_table (bittree);
+
+ print_dis_table ();
+}
+
+void
+print_string_table ()
+{
+ int x;
+ char lbuf[80], buf[80];
+ int blen = 0;
+
+ printf ("static const char *ia64_strings[] = {\n");
+ lbuf[0] = '\0';
+ for (x = 0; x < strtablen; x++)
+ {
+ int len;
+
+ if (strlen (string_table[x]->s) > 75)
+ {
+ abort ();
+ }
+ sprintf (buf, " \"%s\",", string_table[x]->s);
+ len = strlen (buf);
+ if ((blen + len) > 75)
+ {
+ printf (" %s\n", lbuf);
+ lbuf[0] = '\0';
+ blen = 0;
+ }
+ strcat (lbuf, buf);
+ blen += len;
+ }
+ if (blen > 0)
+ {
+ printf (" %s\n", lbuf);
+ }
+ printf ("};\n\n");
+}
+
+static struct completer_entry **glist;
+static int glistlen = 0;
+static int glisttotlen = 0;
+
+/* If the completer trees ENT1 and ENT2 are equal, return 1. */
+
+int
+completer_entries_eq (ent1, ent2)
+ struct completer_entry *ent1, *ent2;
+{
+ while (ent1 != NULL && ent2 != NULL)
+ {
+ if (ent1->name->num != ent2->name->num
+ || ent1->bits != ent2->bits
+ || ent1->mask != ent2->mask
+ || ent1->is_terminal != ent2->is_terminal
+ || ent1->dependencies != ent2->dependencies
+ || ent1->order != ent2->order)
+ {
+ return 0;
+ }
+ if (! completer_entries_eq (ent1->addl_entries, ent2->addl_entries))
+ {
+ return 0;
+ }
+ ent1 = ent1->alternative;
+ ent2 = ent2->alternative;
+ }
+ return ent1 == ent2;
+}
+
+/* Insert ENT into the global list of completers and return it. If an
+ equivalent entry (according to completer_entries_eq) already exists,
+ it is returned instead. */
+struct completer_entry *
+insert_gclist (ent)
+ struct completer_entry *ent;
+{
+ if (ent != NULL)
+ {
+ int i;
+ int x;
+ int start = 0, end;
+
+ ent->addl_entries = insert_gclist (ent->addl_entries);
+ ent->alternative = insert_gclist (ent->alternative);
+
+ i = glistlen / 2;
+ end = glistlen;
+
+ if (glisttotlen == glistlen)
+ {
+ glisttotlen += 20;
+ glist = (struct completer_entry **)
+ xrealloc (glist, sizeof (struct completer_entry *) * glisttotlen);
+ }
+
+ if (glistlen == 0)
+ {
+ glist[0] = ent;
+ glistlen = 1;
+ return ent;
+ }
+
+ if (ent->name->num < glist[0]->name->num)
+ {
+ i = 0;
+ }
+ else if (ent->name->num > glist[end - 1]->name->num)
+ {
+ i = end;
+ }
+ else
+ {
+ int c;
+
+ while (1)
+ {
+ i = (start + end) / 2;
+ c = ent->name->num - glist[i]->name->num;
+ if (c < 0)
+ {
+ end = i - 1;
+ }
+ else if (c == 0)
+ {
+ while (i > 0
+ && ent->name->num == glist[i - 1]->name->num)
+ {
+ i--;
+ }
+ break;
+ }
+ else
+ {
+ start = i + 1;
+ }
+ if (start > end)
+ {
+ break;
+ }
+ }
+ if (c == 0)
+ {
+ while (i < glistlen)
+ {
+ if (ent->name->num != glist[i]->name->num)
+ {
+ break;
+ }
+ if (completer_entries_eq (ent, glist[i]))
+ {
+ return glist[i];
+ }
+ i++;
+ }
+ }
+ }
+ for (; i > 0 && i < glistlen; i--)
+ {
+ if (ent->name->num >= glist[i - 1]->name->num)
+ {
+ break;
+ }
+ }
+ for (; i < glistlen; i++)
+ {
+ if (ent->name->num < glist[i]->name->num)
+ {
+ break;
+ }
+ }
+ for (x = glistlen - 1; x >= i; x--)
+ {
+ glist[x + 1] = glist[x];
+ }
+ glist[i] = ent;
+ glistlen++;
+ }
+ return ent;
+}
+
+static int
+get_prefix_len (name)
+ const char *name;
+{
+ char *c;
+
+ if (name[0] == '\0')
+ {
+ return 0;
+ }
+
+ c = strchr (name, '.');
+ if (c != NULL)
+ {
+ return c - name;
+ }
+ else
+ {
+ return strlen (name);
+ }
+}
+
+static void
+compute_completer_bits (ment, ent)
+ struct main_entry *ment;
+ struct completer_entry *ent;
+{
+ while (ent != NULL)
+ {
+ compute_completer_bits (ment, ent->addl_entries);
+
+ if (ent->is_terminal)
+ {
+ ia64_insn mask = 0;
+ ia64_insn our_bits = ent->bits;
+ struct completer_entry *p = ent->parent;
+ ia64_insn p_bits;
+ int x;
+
+ while (p != NULL && ! p->is_terminal)
+ {
+ p = p->parent;
+ }
+
+ if (p != NULL)
+ {
+ p_bits = p->bits;
+ }
+ else
+ {
+ p_bits = ment->opcode->opcode;
+ }
+
+ for (x = 0; x < 64; x++)
+ {
+ ia64_insn m = ((ia64_insn) 1) << x;
+ if ((p_bits & m) != (our_bits & m))
+ {
+ mask |= m;
+ }
+ else
+ {
+ our_bits &= ~m;
+ }
+ }
+ ent->bits = our_bits;
+ ent->mask = mask;
+ }
+ else
+ {
+ ent->bits = 0;
+ ent->mask = 0;
+ }
+
+ ent = ent->alternative;
+ }
+}
+
+/* Find identical completer trees that are used in different
+ instructions and collapse their entries. */
+void
+collapse_redundant_completers ()
+{
+ struct main_entry *ptr;
+ int x;
+
+ for (ptr = maintable; ptr != NULL; ptr = ptr->next)
+ {
+ if (ptr->completers == NULL)
+ {
+ abort ();
+ }
+ compute_completer_bits (ptr, ptr->completers);
+ ptr->completers = insert_gclist (ptr->completers);
+ }
+
+ /* The table has been finalized, now number the indexes. */
+ for (x = 0; x < glistlen; x++)
+ {
+ glist[x]->num = x;
+ }
+}
+
+
+/* attach two lists of dependencies to each opcode.
+ 1) all resources which, when already marked in use, conflict with this
+ opcode (chks)
+ 2) all resources which must be marked in use when this opcode is used
+ (regs)
+*/
+int
+insert_opcode_dependencies (opc, cmp)
+ struct ia64_opcode *opc;
+ struct completer_entry *cmp;
+{
+ /* note all resources which point to this opcode. rfi has the most chks
+ (79) and cmpxchng has the most regs (54) so 100 here should be enough */
+ int i;
+ int nregs = 0;
+ unsigned short regs[256];
+ int nchks = 0;
+ unsigned short chks[256];
+ /* flag insns for which no class matched; there should be none */
+ int no_class_found = 1;
+
+ for (i=0;i < rdepslen;i++)
+ {
+ struct rdep *rs = rdeps[i];
+ int j;
+
+ if (strcmp (opc->name, "cmp.eq.and") == 0
+ && strncmp (rs->name, "PR%", 3) == 0
+ && rs->mode == 1)
+ no_class_found = 99;
+
+ for (j=0; j < rs->nregs;j++)
+ {
+ int ic_note = 0;
+
+ if (in_iclass (opc, ics[rs->regs[j]], NULL, NULL, &ic_note))
+ {
+ /* We can ignore ic_note 11 for non PR resources */
+ if (ic_note == 11 && strncmp (rs->name, "PR", 2) != 0)
+ ic_note = 0;
+
+ if (ic_note != 0 && rs->regnotes[j] != 0
+ && ic_note != rs->regnotes[j]
+ && !(ic_note == 11 && rs->regnotes[j] == 1))
+ fprintf (stderr, "Warning: IC note %d in opcode %s (IC:%s)"
+ " conflicts with resource %s note %d\n",
+ ic_note, opc->name, ics[rs->regs[j]]->name,
+ rs->name, rs->regnotes[j]);
+ /* Instruction class notes override resource notes.
+ So far, only note 11 applies to an IC instead of a resource,
+ and note 11 implies note 1.
+ */
+ if (ic_note)
+ regs[nregs++] = RDEP(ic_note, i);
+ else
+ regs[nregs++] = RDEP(rs->regnotes[j], i);
+ no_class_found = 0;
+ ++rs->total_regs;
+ }
+ }
+ for (j=0;j < rs->nchks;j++)
+ {
+ int ic_note = 0;
+
+ if (in_iclass (opc, ics[rs->chks[j]], NULL, NULL, &ic_note))
+ {
+ /* We can ignore ic_note 11 for non PR resources */
+ if (ic_note == 11 && strncmp (rs->name, "PR", 2) != 0)
+ ic_note = 0;
+
+ if (ic_note != 0 && rs->chknotes[j] != 0
+ && ic_note != rs->chknotes[j]
+ && !(ic_note == 11 && rs->chknotes[j] == 1))
+ fprintf (stderr, "Warning: IC note %d for opcode %s (IC:%s)"
+ " conflicts with resource %s note %d\n",
+ ic_note, opc->name, ics[rs->chks[j]]->name,
+ rs->name, rs->chknotes[j]);
+ if (ic_note)
+ chks[nchks++] = RDEP(ic_note, i);
+ else
+ chks[nchks++] = RDEP(rs->chknotes[j], i);
+ no_class_found = 0;
+ ++rs->total_chks;
+ }
+ }
+ }
+
+ if (no_class_found)
+ fprintf (stderr, "Warning: opcode %s has no class (ops %d %d %d)\n",
+ opc->name,
+ opc->operands[0], opc->operands[1], opc->operands[2]);
+
+ return insert_dependencies (nchks, chks, nregs, regs);
+}
+
+void
+insert_completer_entry (opc, tabent, order)
+ struct ia64_opcode *opc;
+ struct main_entry *tabent;
+ int order;
+{
+ struct completer_entry **ptr = &tabent->completers;
+ struct completer_entry *parent = NULL;
+ char pcopy[129], *prefix;
+ int at_end = 0;
+
+ if (strlen (opc->name) > 128)
+ {
+ abort ();
+ }
+ strcpy (pcopy, opc->name);
+ prefix = pcopy + get_prefix_len (pcopy);
+ if (prefix[0] != '\0')
+ {
+ prefix++;
+ }
+
+ while (! at_end)
+ {
+ int need_new_ent = 1;
+ int plen = get_prefix_len (prefix);
+ struct string_entry *sent;
+
+ at_end = (prefix[plen] == '\0');
+ prefix[plen] = '\0';
+ sent = insert_string (prefix);
+
+ while (*ptr != NULL)
+ {
+ int cmpres = sent->num - (*ptr)->name->num;
+
+ if (cmpres == 0)
+ {
+ need_new_ent = 0;
+ break;
+ }
+ else
+ {
+ ptr = &((*ptr)->alternative);
+ }
+ }
+ if (need_new_ent)
+ {
+ struct completer_entry *nent = tmalloc (struct completer_entry);
+ nent->name = sent;
+ nent->parent = parent;
+ nent->addl_entries = NULL;
+ nent->alternative = *ptr;
+ *ptr = nent;
+ nent->is_terminal = 0;
+ nent->dependencies = -1;
+ }
+
+ if (! at_end)
+ {
+ parent = *ptr;
+ ptr = &((*ptr)->addl_entries);
+ prefix += plen + 1;
+ }
+ }
+
+ if ((*ptr)->is_terminal)
+ {
+ abort ();
+ }
+
+ (*ptr)->is_terminal = 1;
+ (*ptr)->mask = (ia64_insn)-1;
+ (*ptr)->bits = opc->opcode;
+ (*ptr)->dependencies = insert_opcode_dependencies (opc, *ptr);
+ (*ptr)->order = order;
+}
+
+void
+print_completer_entry (ent)
+ struct completer_entry *ent;
+{
+ int moffset = 0;
+ ia64_insn mask = ent->mask, bits = ent->bits;
+
+ if (mask != 0)
+ {
+ while (! (mask & 1))
+ {
+ moffset++;
+ mask = mask >> 1;
+ bits = bits >> 1;
+ }
+ if (bits & 0xffffffff00000000LL)
+ {
+ abort ();
+ }
+ }
+
+ printf (" { 0x%x, 0x%x, %d, %d, %d, %d, %d, %d },\n",
+ (int)bits,
+ (int)mask,
+ ent->name->num,
+ ent->alternative != NULL ? ent->alternative->num : -1,
+ ent->addl_entries != NULL ? ent->addl_entries->num : -1,
+ moffset,
+ ent->is_terminal ? 1 : 0,
+ ent->dependencies);
+}
+
+void
+print_completer_table ()
+{
+ int x;
+
+ printf ("static const struct ia64_completer_table\ncompleter_table[] = {\n");
+ for (x = 0; x < glistlen; x++)
+ {
+ print_completer_entry (glist[x]);
+ }
+ printf ("};\n\n");
+}
+
+int
+opcodes_eq (opc1, opc2)
+ struct ia64_opcode *opc1;
+ struct ia64_opcode *opc2;
+{
+ int x;
+ int plen1, plen2;
+
+ if ((opc1->mask != opc2->mask) || (opc1->type != opc2->type)
+ || (opc1->num_outputs != opc2->num_outputs)
+ || (opc1->flags != opc2->flags))
+ {
+ return 0;
+ }
+ for (x = 0; x < 5; x++)
+ {
+ if (opc1->operands[x] != opc2->operands[x])
+ {
+ return 0;
+ }
+ }
+ plen1 = get_prefix_len (opc1->name);
+ plen2 = get_prefix_len (opc2->name);
+ if (plen1 == plen2 && (memcmp (opc1->name, opc2->name, plen1) == 0))
+ {
+ return 1;
+ }
+ return 0;
+}
+
+void
+add_opcode_entry (opc)
+ struct ia64_opcode *opc;
+{
+ struct main_entry **place;
+ struct string_entry *name;
+ char prefix[129];
+ int found_it = 0;
+
+ if (strlen (opc->name) > 128)
+ {
+ abort ();
+ }
+ place = &maintable;
+ strcpy (prefix, opc->name);
+ prefix[get_prefix_len (prefix)] = '\0';
+ name = insert_string (prefix);
+
+ /* Walk the list of opcode table entries. If it's a new
+ instruction, allocate and fill in a new entry. Note
+ the main table is alphabetical by opcode name. */
+
+ while (*place != NULL)
+ {
+ if ((*place)->name->num == name->num
+ && opcodes_eq ((*place)->opcode, opc))
+ {
+ found_it = 1;
+ break;
+ }
+ if ((*place)->name->num > name->num)
+ {
+ break;
+ }
+ place = &((*place)->next);
+ }
+ if (! found_it)
+ {
+ struct main_entry *nent = tmalloc (struct main_entry);
+
+ nent->name = name;
+ nent->opcode = opc;
+ nent->next = *place;
+ nent->completers = 0;
+ *place = nent;
+
+ if (otlen == ottotlen)
+ {
+ ottotlen += 20;
+ ordered_table = (struct main_entry **)
+ xrealloc (ordered_table, sizeof (struct main_entry *) * ottotlen);
+ }
+ ordered_table[otlen++] = nent;
+ }
+
+ insert_completer_entry (opc, *place, opcode_count++);
+}
+
+void
+print_main_table ()
+{
+ struct main_entry *ptr = maintable;
+ int index = 0;
+
+ printf ("static const struct ia64_main_table\nmain_table[] = {\n");
+ while (ptr != NULL)
+ {
+ printf (" { %d, %d, %d, 0x%llxull, 0x%llxull, { %d, %d, %d, %d, %d }, 0x%x, %d, },\n",
+ ptr->name->num,
+ ptr->opcode->type,
+ ptr->opcode->num_outputs,
+ ptr->opcode->opcode,
+ ptr->opcode->mask,
+ ptr->opcode->operands[0],
+ ptr->opcode->operands[1],
+ ptr->opcode->operands[2],
+ ptr->opcode->operands[3],
+ ptr->opcode->operands[4],
+ ptr->opcode->flags,
+ ptr->completers->num);
+
+ ptr->main_index = index++;
+
+ ptr = ptr->next;
+ }
+ printf ("};\n\n");
+}
+
+void
+shrink (table)
+ struct ia64_opcode *table;
+{
+ int curr_opcode;
+
+ for (curr_opcode = 0; table[curr_opcode].name != NULL; curr_opcode++)
+ {
+ add_opcode_entry (table + curr_opcode);
+ }
+}
+
+int
+main (int argc, char **argv)
+{
+ if (argc > 1)
+ {
+ debug = 1;
+ }
+
+ load_insn_classes();
+ load_dependencies();
+
+ shrink (ia64_opcodes_a);
+ shrink (ia64_opcodes_b);
+ shrink (ia64_opcodes_f);
+ shrink (ia64_opcodes_i);
+ shrink (ia64_opcodes_m);
+ shrink (ia64_opcodes_x);
+ shrink (ia64_opcodes_d);
+
+ collapse_redundant_completers ();
+
+ printf ("/* This file is automatically generated by ia64-gen. Do not edit! */\n");
+ print_string_table ();
+ print_dependency_table ();
+ print_completer_table ();
+ print_main_table ();
+
+ generate_disassembler ();
+
+ exit (0);
+}
diff --git a/opcodes/ia64-ic.tbl b/opcodes/ia64-ic.tbl
new file mode 100644
index 00000000000..021194af702
--- /dev/null
+++ b/opcodes/ia64-ic.tbl
@@ -0,0 +1,205 @@
+Class; Events/Instructions
+all; IC:predicatable-instructions, IC:unpredicatable-instructions
+branches; IC:indirect-brs, IC:ip-rel-brs
+cfm-readers; IC:fr-readers, IC:fr-writers, IC:gr-readers, IC:gr-writers, IC:mod-sched-brs, IC:predicatable-instructions, IC:pr-writers, alloc, br.call, brl.call, br.ret, cover, loadrs, rfi, IC:chk-a, invala.e
+chk-a; chk.a.clr, chk.a.nc
+cmpxchg; cmpxchg1, cmpxchg2, cmpxchg4, cmpxchg8
+czx; czx1, czx2
+fcmp-s0; fcmp[Field(sf)==s0]
+fcmp-s1; fcmp[Field(sf)==s1]
+fcmp-s2; fcmp[Field(sf)==s2]
+fcmp-s3; fcmp[Field(sf)==s3]
+fetchadd; fetchadd4, fetchadd8
+fp-arith; fadd, famax, famin, fcvt.fx, fcvt.fxu, fcvt.xuf, fma, fmax, fmin, fmpy, fms, fnma, fnmpy, fnorm, fpamax, fpamin, fpcvt.fx, fpcvt.fxu, fpma, fpmax, fpmin, fpmpy, fpms, fpnma, fpnmpy, fprcpa, fprsqrta, frcpa, frsqrta, fsub
+fp-arith-s0; IC:fp-arith[Field(sf)==s0]
+fp-arith-s1; IC:fp-arith[Field(sf)==s1]
+fp-arith-s2; IC:fp-arith[Field(sf)==s2]
+fp-arith-s3; IC:fp-arith[Field(sf)==s3]
+fp-non-arith; fabs, fand, fandcm, fclass, fcvt.xf, fmerge, fmix, fneg, fnegabs, for, fpabs, fpmerge, fpack, fpneg, fpnegabs, fselect, fswap, fsxt, fxor, xma
+fpcmp-s0; fpcmp[Field(sf)==s0]
+fpcmp-s1; fpcmp[Field(sf)==s1]
+fpcmp-s2; fpcmp[Field(sf)==s2]
+fpcmp-s3; fpcmp[Field(sf)==s3]
+fr-readers; IC:fp-arith, IC:fp-non-arith, IC:pr-writers-fp, chk.s[Format in {M21}], getf
+fr-writers; IC:fp-arith, IC:fp-non-arith\fclass, IC:mem-readers-fp
+gr-readers; IC:gr-readers-writers, IC:mem-readers, IC:mem-writers, chk.s, cmp, cmp4, fc, itc.i, itc.d, itr.i, itr.d, IC:mov-to-AR-gr, IC:mov-to-BR, IC:mov-to-CR, IC:mov-to-IND, IC:mov-from-IND, IC:mov-to-PR-allreg, IC:mov-to-PSR-l, IC:mov-to-PSR-um, IC:probe-all, ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d, setf, tbit, tnat
+gr-readers-writers; IC:mov-from-IND, add, addl, addp4, adds, and, andcm, IC:czx, dep\dep[Format in {I13}], extr, IC:mem-readers-int, IC:ld-all-postinc, IC:lfetch-postinc, IC:mix, IC:mux, or, IC:pack, IC:padd, IC:pavg, IC:pavgsub, IC:pcmp, IC:pmax, IC:pmin, IC:pmpy, IC:pmpyshr, popcnt, IC:probe-nofault, IC:psad, IC:pshl, IC:pshladd, IC:pshr, IC:pshradd, IC:psub, shl, shladd, shladdp4, shr, shrp, IC:st-postinc, sub, IC:sxt, tak, thash, tpa, ttag, IC:unpack, xor, IC:zxt
+gr-writers; alloc, dep, getf, IC:gr-readers-writers, IC:mem-readers-int, IC:mov-from-AR, IC:mov-from-BR, IC:mov-from-CR, IC:mov-from-PR, IC:mov-immediate, IC:mov-from-PSR, IC:mov-from-PSR-um, IC:mov-ip, movl
+indirect-brp; brp[Format in {B7}]
+indirect-brs; br.call[Format in {B5}], br.cond[Format in {B4}], br.ia, br.ret
+invala-all; invala[Format in {M24}], invala.e
+ip-rel-brs; IC:mod-sched-brs, br.call[Format in {B3}], brl.call, brl.cond, br.cond[Format in {B1}], br.cloop
+ld; ld1, ld2, ld4, ld8, ld8.fill
+ld-a; ld1.a, ld2.a, ld4.a, ld8.a
+ld-all-postinc; IC:ld[Format in {M2 M3}], IC:ldfp[Format in {M12}], IC:ldf[Format in {M7 M8}]
+ld-c; IC:ld-c-nc, IC:ld-c-clr
+ld-c-clr; ld1.c.clr, ld2.c.clr, ld4.c.clr, ld8.c.clr, IC:ld-c-clr-acq
+ld-c-clr-acq; ld1.c.clr.acq, ld2.c.clr.acq, ld4.c.clr.acq, ld8.c.clr.acq
+ld-c-nc; ld1.c.nc, ld2.c.nc, ld4.c.nc, ld8.c.nc
+ld-s; ld1.s, ld2.s, ld4.s, ld8.s
+ld-sa; ld1.sa, ld2.sa, ld4.sa, ld8.sa
+ldf; ldfs, ldfd, ldfe, ldf8, ldf.fill
+ldf-a; ldfs.a, ldfd.a, ldfe.a, ldf8.a
+ldf-c; IC:ldf-c-nc, IC:ldf-c-clr
+ldf-c-clr; ldfs.c.clr, ldfd.c.clr, ldfe.c.clr, ldf8.c.clr
+ldf-c-nc; ldfs.c.nc, ldfd.c.nc, ldfe.c.nc, ldf8.c.nc
+ldf-s; ldfs.s, ldfd.s, ldfe.s, ldf8.s
+ldf-sa; ldfs.sa, ldfd.sa, ldfe.sa, ldf8.sa
+ldfp; ldfps, ldfpd, ldfp8
+ldfp-a; ldfps.a, ldfpd.a, ldfp8.a
+ldfp-c; IC:ldfp-c-nc, IC:ldfp-c-clr
+ldfp-c-clr; ldfps.c.clr, ldfpd.c.clr, ldfp8.c.clr
+ldfp-c-nc; ldfps.c.nc, ldfpd.c.nc, ldfp8.c.nc
+ldfp-s; ldfps.s, ldfpd.s, ldfp8.s
+ldfp-sa; ldfps.sa, ldfpd.sa, ldfp8.sa
+lfetch-all; lfetch
+lfetch-fault; lfetch[Field(lftype)==fault]
+lfetch-nofault; lfetch[Field(lftype)==]
+lfetch-postinc; lfetch[Format in {M14 M15}]
+mem-readers; IC:mem-readers-fp, IC:mem-readers-int
+mem-readers-alat; IC:ld-a, IC:ldf-a, IC:ldfp-a, IC:ld-sa, IC:ldf-sa, IC:ldfp-sa, IC:ld-c, IC:ldf-c, IC:ldfp-c
+mem-readers-fp; IC:ldf, IC:ldfp
+mem-readers-int; IC:cmpxchg, IC:fetchadd, IC:xchg, IC:ld
+mem-readers-spec; IC:ld-s, IC:ld-sa, IC:ldf-s, IC:ldf-sa, IC:ldfp-s, IC:ldfp-sa
+mem-writers; IC:mem-writers-fp, IC:mem-writers-int
+mem-writers-fp; IC:stf
+mem-writers-int; IC:cmpxchg, IC:fetchadd, IC:xchg, IC:st
+mix; mix1, mix2, mix4
+mod-sched-brs; br.cexit, br.ctop, br.wexit, br.wtop
+mod-sched-brs-counted; br.cexit, br.cloop, br.ctop
+mov-from-AR; IC:mov-from-AR-M, IC:mov-from-AR-I, IC:mov-from-AR-IM
+mov-from-AR-BSP; IC:mov-from-AR-M[Field(ar3) == BSP]
+mov-from-AR-BSPSTORE; IC:mov-from-AR-M[Field(ar3) == BSPSTORE]
+mov-from-AR-CCV; IC:mov-from-AR-M[Field(ar3) == CCV]
+mov-from-AR-EC; IC:mov-from-AR-I[Field(ar3) == EC]
+mov-from-AR-FPSR; IC:mov-from-AR-M[Field(ar3) == FPSR]
+mov-from-AR-I; mov_ar[Format in {I28}]
+mov-from-AR-ig; IC:mov-from-AR-IM[Field(ar3) in {48-63 112-127}]
+mov-from-AR-IM; mov_ar[Format in {I28 M31}]
+mov-from-AR-ITC; IC:mov-from-AR-M[Field(ar3) == ITC]
+mov-from-AR-K; IC:mov-from-AR-M[Field(ar3) in {K0 K1 K2 K3 K4 K5 K6 K7}]
+mov-from-AR-LC; IC:mov-from-AR-I[Field(ar3) == LC]
+mov-from-AR-M; mov_ar[Format in {M31}]
+mov-from-AR-PFS; IC:mov-from-AR-I[Field(ar3) == PFS]
+mov-from-AR-RNAT; IC:mov-from-AR-M[Field(ar3) == RNAT]
+mov-from-AR-RSC; IC:mov-from-AR-M[Field(ar3) == RSC]
+mov-from-AR-rv; IC:none
+mov-from-AR-UNAT; IC:mov-from-AR-M[Field(ar3) == UNAT]
+mov-from-BR; mov_br[Format in {I22}]
+mov-from-CR; mov_cr[Format in {M33}]
+mov-from-CR-CMCV; IC:mov-from-CR[Field(cr3) == CMCV]
+mov-from-CR-DCR; IC:mov-from-CR[Field(cr3) == DCR]
+mov-from-CR-EOI; IC:mov-from-CR[Field(cr3) == EOI]
+mov-from-CR-GPTA; IC:mov-from-CR[Field(cr3) == GPTA]
+mov-from-CR-IFA; IC:mov-from-CR[Field(cr3) == IFA]
+mov-from-CR-IFS; IC:mov-from-CR[Field(cr3) == IFS]
+mov-from-CR-IHA; IC:mov-from-CR[Field(cr3) == IHA]
+mov-from-CR-IIM; IC:mov-from-CR[Field(cr3) == IIM]
+mov-from-CR-IIP; IC:mov-from-CR[Field(cr3) == IIP]
+mov-from-CR-IIPA; IC:mov-from-CR[Field(cr3) == IIPA]
+mov-from-CR-IPSR; IC:mov-from-CR[Field(cr3) == IPSR]
+mov-from-CR-IRR; IC:mov-from-CR[Field(cr3) in {IRR0 IRR1 IRR2 IRR3}]
+mov-from-CR-ISR; IC:mov-from-CR[Field(cr3) == ISR]
+mov-from-CR-ITIR; IC:mov-from-CR[Field(cr3) == ITIR]
+mov-from-CR-ITM; IC:mov-from-CR[Field(cr3) == ITM]
+mov-from-CR-ITV; IC:mov-from-CR[Field(cr3) == ITV]
+mov-from-CR-IVA; IC:mov-from-CR[Field(cr3) == IVA]
+mov-from-CR-IVR; IC:mov-from-CR[Field(cr3) == IVR]
+mov-from-CR-LID; IC:mov-from-CR[Field(cr3) == LID]
+mov-from-CR-LRR; IC:mov-from-CR[Field(cr3) in {LRR0 LRR1}]
+mov-from-CR-PMV; IC:mov-from-CR[Field(cr3) == PMV]
+mov-from-CR-PTA; IC:mov-from-CR[Field(cr3) == PTA]
+mov-from-CR-rv; IC:none
+mov-from-CR-TPR; IC:mov-from-CR[Field(cr3) == TPR]
+mov-from-IND; mov_indirect[Format in {M43}]
+mov-from-IND-CPUID; IC:mov-from-IND[Field(ireg) == cpuid]
+mov-from-IND-DBR; IC:mov-from-IND[Field(ireg) == dbr]
+mov-from-IND-IBR; IC:mov-from-IND[Field(ireg) == ibr]
+mov-from-IND-MSR; IC:mov-from-IND[Field(ireg) == msr]
+mov-from-IND-PKR; IC:mov-from-IND[Field(ireg) == pkr]
+mov-from-IND-PMC; IC:mov-from-IND[Field(ireg) == pmc]
+mov-from-IND-PMD; IC:mov-from-IND[Field(ireg) == pmd]
+mov-from-IND-priv; IC:mov-from-IND[Field(ireg) in {dbr ibr msr pkr pmc rr}]
+mov-from-IND-RR; IC:mov-from-IND[Field(ireg) == rr]
+mov-from-PR; mov_pr[Format in {I25}]
+mov-from-PSR; mov_psr[Format in {M36}]
+mov-from-PSR-um; mov_um[Format in {M36}]
+mov-immediate; addl[Format in {A5}]
+mov-ip; mov_ip[Format in {I25}]
+mov-to-AR; IC:mov-to-AR-M, IC:mov-to-AR-I
+mov-to-AR-BSP; IC:mov-to-AR-M[Field(ar3) == BSP]
+mov-to-AR-BSPSTORE; IC:mov-to-AR-M[Field(ar3) == BSPSTORE]
+mov-to-AR-CCV; IC:mov-to-AR-M[Field(ar3) == CCV]
+mov-to-AR-EC; IC:mov-to-AR-I[Field(ar3) == EC]
+mov-to-AR-FPSR; IC:mov-to-AR-M[Field(ar3) == FPSR]
+mov-to-AR-gr; IC:mov-to-AR-M[Format in {M29}], IC:mov-to-AR-I[Format in {I26}]
+mov-to-AR-I; mov_ar[Format in {I26 I27}]
+mov-to-AR-ig; IC:mov-to-AR-IM[Field(ar3) in {48-63 112-127}]
+mov-to-AR-IM; mov_ar[Format in {I26 I27 M29 M30}]
+mov-to-AR-ITC; IC:mov-to-AR-M[Field(ar3) == ITC]
+mov-to-AR-K; IC:mov-to-AR-M[Field(ar3) in {K0 K1 K2 K3 K4 K5 K6 K7}]
+mov-to-AR-LC; IC:mov-to-AR-I[Field(ar3) == LC]
+mov-to-AR-M; mov_ar[Format in {M29 M30}]
+mov-to-AR-PFS; IC:mov-to-AR-I[Field(ar3) == PFS]
+mov-to-AR-RNAT; IC:mov-to-AR-M[Field(ar3) == RNAT]
+mov-to-AR-RSC; IC:mov-to-AR-M[Field(ar3) == RSC]
+mov-to-AR-UNAT; IC:mov-to-AR-M[Field(ar3) == UNAT]
+mov-to-BR; mov_br[Format in {I21}]
+mov-to-CR; mov_cr[Format in {M32}]
+mov-to-CR-CMCV; IC:mov-to-CR[Field(cr3) == CMCV]
+mov-to-CR-DCR; IC:mov-to-CR[Field(cr3) == DCR]
+mov-to-CR-EOI; IC:mov-to-CR[Field(cr3) == EOI]
+mov-to-CR-GPTA; IC:mov-to-CR[Field(cr3) == GPTA]
+mov-to-CR-IFA; IC:mov-to-CR[Field(cr3) == IFA]
+mov-to-CR-IFS; IC:mov-to-CR[Field(cr3) == IFS]
+mov-to-CR-IHA; IC:mov-to-CR[Field(cr3) == IHA]
+mov-to-CR-IIM; IC:mov-to-CR[Field(cr3) == IIM]
+mov-to-CR-IIP; IC:mov-to-CR[Field(cr3) == IIP]
+mov-to-CR-IIPA; IC:mov-to-CR[Field(cr3) == IIPA]
+mov-to-CR-IPSR; IC:mov-to-CR[Field(cr3) == IPSR]
+mov-to-CR-IRR; IC:mov-to-CR[Field(cr3) in {IRR0 IRR1 IRR2 IRR3}]
+mov-to-CR-ISR; IC:mov-to-CR[Field(cr3) == ISR]
+mov-to-CR-ITIR; IC:mov-to-CR[Field(cr3) == ITIR]
+mov-to-CR-ITM; IC:mov-to-CR[Field(cr3) == ITM]
+mov-to-CR-ITV; IC:mov-to-CR[Field(cr3) == ITV]
+mov-to-CR-IVA; IC:mov-to-CR[Field(cr3) == IVA]
+mov-to-CR-IVR; IC:mov-to-CR[Field(cr3) == IVR]
+mov-to-CR-LID; IC:mov-to-CR[Field(cr3) == LID]
+mov-to-CR-LRR; IC:mov-to-CR[Field(cr3) in {LRR0 LRR1}]
+mov-to-CR-PMV; IC:mov-to-CR[Field(cr3) == PMV]
+mov-to-CR-PTA; IC:mov-to-CR[Field(cr3) == PTA]
+mov-to-CR-TPR; IC:mov-to-CR[Field(cr3) == TPR]
+mov-to-IND; mov_indirect[Format in {M42}]
+mov-to-IND-CPUID; IC:mov-to-IND[Field(ireg) == cpuid]
+mov-to-IND-DBR; IC:mov-to-IND[Field(ireg) == dbr]
+mov-to-IND-IBR; IC:mov-to-IND[Field(ireg) == ibr]
+mov-to-IND-MSR; IC:mov-to-IND[Field(ireg) == msr]
+mov-to-IND-PKR; IC:mov-to-IND[Field(ireg) == pkr]
+mov-to-IND-PMC; IC:mov-to-IND[Field(ireg) == pmc]
+mov-to-IND-PMD; IC:mov-to-IND[Field(ireg) == pmd]
+mov-to-IND-priv; IC:mov-to-IND
+mov-to-IND-RR; IC:mov-to-IND[Field(ireg) == rr]
+mov-to-PR; IC:mov-to-PR-allreg, IC:mov-to-PR-rotreg
+mov-to-PR-allreg; mov_pr[Format in {I23}]
+mov-to-PR-rotreg; mov_pr[Format in {I24}]
+mov-to-PSR-l; mov_psr[Format in {M35}]
+mov-to-PSR-um; mov_um[Format in {M35}]
+mux; mux1, mux2
+none; -
+pack; pack2, pack4
+padd; padd1, padd2, padd4
+pavg; pavg1, pavg2
+pavgsub; pavgsub1, pavgsub2
+pcmp; pcmp1, pcmp2, pcmp4
+pmax; pmax1, pmax2
+pmin; pmin1, pmin2
+pmpy; pmpy2
+pmpyshr; pmpyshr2
+pr-and-writers; IC:pr-gen-writers-int[Field(ctype) in {and andcm}], IC:pr-gen-writers-int[Field(ctype) in {or.andcm and.orcm}]
+pr-gen-writers-fp; fclass, fcmp
+pr-gen-writers-int; cmp, cmp4, tbit, tnat
+pr-norm-writers-fp; IC:pr-gen-writers-fp[Field(ctype)==]
+pr-norm-writers-int; IC:pr-gen-writers-int[Field(ctype)==]
+pr-or-writers; IC:pr-gen-writers-int[Field(ctype) in {or orcm}], IC:pr-gen-writers-int[Field(ctype) in {or.andcm and.orcm}]
+pr-readers-br; br.call, br.cond, brl.call, brl.cond, br.ret, br.wexit, br.wtop, break.b, break, nop.b, nop, IC:ReservedBQP
+pr-readers-nobr-nomovpr; add, addp4, and, andcm, break.f, break.i, break.m, break.x, break, chk.s, IC:chk-a, cmp, cmp4, IC:cmpxchg, IC:czx, dep, extr, IC:fp-arith, IC:fp-non-arith, fc, fchkf, fclrf, fcmp, IC:fetchadd, fpcmp, fsetc, fwb, getf, IC:invala-all, itc.i, itc.d, itr.i, itr.d, IC:ld, IC:ldf, IC:ldfp, IC:lfetch-all, mf, IC:mix, IC:mov-from-AR-M, IC:mov-from-AR-IM, IC:mov-from-AR-I, IC:mov-to-AR-M, IC:mov-to-AR-I, IC:mov-to-AR-IM, IC:mov-to-BR, IC:mov-from-BR, IC:mov-to-CR, IC:mov-from-CR, IC:mov-to-IND, IC:mov-from-IND, IC:mov-ip, IC:mov-immediate, IC:mov-to-PSR-l, IC:mov-to-PSR-um, IC:mov-from-PSR, IC:mov-from-PSR-um, movl, IC:mux, nop.f, nop.i, nop.m, nop.x, nop, or, IC:pack, IC:padd, IC:pavg, IC:pavgsub, IC:pcmp, IC:pmax, IC:pmin, IC:pmpy, IC:pmpyshr, popcnt, IC:probe-all, IC:psad, IC:pshl, IC:pshladd, IC:pshr, IC:pshradd, IC:psub, ptc.e, ptc.g, ptc.ga, ptc.l, ptr.d, ptr.i, IC:ReservedQP, rsm, setf, shl, shladd, shladdp4, shr, shrp, srlz.i, srlz.d, ssm, IC:st, IC:stf, sub, sum, IC:sxt, sync, tak, \ No newline at end of file
diff --git a/opcodes/ia64-opc-a.c b/opcodes/ia64-opc-a.c
new file mode 100644
index 00000000000..8df802955dc
--- /dev/null
+++ b/opcodes/ia64-opc-a.c
@@ -0,0 +1,364 @@
+/* ia64-opc-a.c -- IA-64 `A' opcode table.
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+ This file is part of GDB, GAS, and the GNU binutils.
+
+ GDB, GAS, and the GNU binutils are free software; you can redistribute
+ them and/or modify them under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either version
+ 2, or (at your option) any later version.
+
+ GDB, GAS, and the GNU binutils are distributed in the hope that they
+ 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 file; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#include "ia64-opc.h"
+
+#define A IA64_TYPE_A, 1
+#define A2 IA64_TYPE_A, 2
+
+/* instruction bit fields: */
+#define bC(x) (((ia64_insn) ((x) & 0x1)) << 12)
+#define bImm14(x) ((((ia64_insn) (((x) >> 0) & 0x7f)) << 13) | \
+ (((ia64_insn) (((x) >> 7) & 0x3f)) << 27) | \
+ (((ia64_insn) (((x) >> 13) & 0x01)) << 36))
+#define bR3a(x) (((ia64_insn) ((x) & 0x7f)) << 20)
+#define bR3b(x) (((ia64_insn) ((x) & 0x3)) << 20)
+#define bTa(x) (((ia64_insn) ((x) & 0x1)) << 33)
+#define bTb(x) (((ia64_insn) ((x) & 0x1)) << 36)
+#define bVe(x) (((ia64_insn) ((x) & 0x1)) << 33)
+#define bX(x) (((ia64_insn) ((x) & 0x1)) << 33)
+#define bX2(x) (((ia64_insn) ((x) & 0x3)) << 34)
+#define bX2a(x) (((ia64_insn) ((x) & 0x3)) << 34)
+#define bX2b(x) (((ia64_insn) ((x) & 0x3)) << 27)
+#define bX4(x) (((ia64_insn) ((x) & 0xf)) << 29)
+#define bZa(x) (((ia64_insn) ((x) & 0x1)) << 36)
+#define bZb(x) (((ia64_insn) ((x) & 0x1)) << 33)
+
+/* instruction bit masks: */
+#define mC bC (-1)
+#define mImm14 bImm14 (-1)
+#define mR3a bR3a (-1)
+#define mR3b bR3b (-1)
+#define mTa bTa (-1)
+#define mTb bTb (-1)
+#define mVe bVe (-1)
+#define mX bX (-1)
+#define mX2 bX2 (-1)
+#define mX2a bX2a (-1)
+#define mX2b bX2b (-1)
+#define mX4 bX4 (-1)
+#define mZa bZa (-1)
+#define mZb bZb (-1)
+
+#define OpR3b(a,b) (bOp (a) | bR3b (b)), (mOp | mR3b)
+#define OpX2aVe(a,b,c) (bOp (a) | bX2a (b) | bVe (c)), \
+ (mOp | mX2a | mVe)
+#define OpX2aVeR3a(a,b,c,d) (bOp (a) | bX2a (b) | bVe (c) | bR3a (d)), \
+ (mOp | mX2a | mVe | mR3a)
+#define OpX2aVeImm14(a,b,c,d) (bOp (a) | bX2a (b) | bVe (c) | bImm14 (d)), \
+ (mOp | mX2a | mVe | mImm14)
+#define OpX2aVeX4(a,b,c,d) (bOp (a) | bX2a (b) | bVe (c) | bX4 (d)), \
+ (mOp | mX2a | mVe | mX4)
+#define OpX2aVeX4X2b(a,b,c,d,e) \
+ (bOp (a) | bX2a (b) | bVe (c) | bX4 (d) | bX2b (e)), \
+ (mOp | mX2a | mVe | mX4 | mX2b)
+#define OpX2TbTaC(a,b,c,d,e) \
+ (bOp (a) | bX2 (b) | bTb (c) | bTa (d) | bC (e)), \
+ (mOp | mX2 | mTb | mTa | mC)
+#define OpX2TaC(a,b,c,d) (bOp (a) | bX2 (b) | bTa (c) | bC (d)), \
+ (mOp | mX2 | mTa | mC)
+#define OpX2aZaZbX4(a,b,c,d,e) \
+ (bOp (a) | bX2a (b) | bZa (c) | bZb (d) | bX4 (e)), \
+ (mOp | mX2a | mZa | mZb | mX4)
+#define OpX2aZaZbX4X2b(a,b,c,d,e,f) \
+ (bOp (a) | bX2a (b) | bZa (c) | bZb (d) | bX4 (e) | bX2b (f)), \
+ (mOp | mX2a | mZa | mZb | mX4 | mX2b)
+
+struct ia64_opcode ia64_opcodes_a[] =
+ {
+ /* A-type instruction encodings (sorted according to major opcode) */
+
+ {"add", A, OpX2aVeX4X2b (8, 0, 0, 0, 0), {R1, R2, R3}},
+ {"add", A, OpX2aVeX4X2b (8, 0, 0, 0, 1), {R1, R2, R3, C1}},
+ {"sub", A, OpX2aVeX4X2b (8, 0, 0, 1, 1), {R1, R2, R3}},
+ {"sub", A, OpX2aVeX4X2b (8, 0, 0, 1, 0), {R1, R2, R3, C1}},
+ {"addp4", A, OpX2aVeX4X2b (8, 0, 0, 2, 0), {R1, R2, R3}},
+ {"and", A, OpX2aVeX4X2b (8, 0, 0, 3, 0), {R1, R2, R3}},
+ {"andcm", A, OpX2aVeX4X2b (8, 0, 0, 3, 1), {R1, R2, R3}},
+ {"or", A, OpX2aVeX4X2b (8, 0, 0, 3, 2), {R1, R2, R3}},
+ {"xor", A, OpX2aVeX4X2b (8, 0, 0, 3, 3), {R1, R2, R3}},
+ {"shladd", A, OpX2aVeX4 (8, 0, 0, 4), {R1, R2, CNT2a, R3}},
+ {"shladdp4", A, OpX2aVeX4 (8, 0, 0, 6), {R1, R2, CNT2a, R3}},
+ {"sub", A, OpX2aVeX4X2b (8, 0, 0, 9, 1), {R1, IMM8, R3}},
+ {"and", A, OpX2aVeX4X2b (8, 0, 0, 0xb, 0), {R1, IMM8, R3}},
+ {"andcm", A, OpX2aVeX4X2b (8, 0, 0, 0xb, 1), {R1, IMM8, R3}},
+ {"or", A, OpX2aVeX4X2b (8, 0, 0, 0xb, 2), {R1, IMM8, R3}},
+ {"xor", A, OpX2aVeX4X2b (8, 0, 0, 0xb, 3), {R1, IMM8, R3}},
+ {"mov", A, OpX2aVeImm14 (8, 2, 0, 0), {R1, R3}},
+ {"mov", A, OpX2aVeR3a (8, 2, 0, 0), {R1, IMM14}, PSEUDO},
+ {"adds", A, OpX2aVe (8, 2, 0), {R1, IMM14, R3}},
+ {"addp4", A, OpX2aVe (8, 3, 0), {R1, IMM14, R3}},
+ {"padd1", A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 0), {R1, R2, R3}},
+ {"padd2", A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 0), {R1, R2, R3}},
+ {"padd4", A, OpX2aZaZbX4X2b (8, 1, 1, 0, 0, 0), {R1, R2, R3}},
+ {"padd1.sss", A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 1), {R1, R2, R3}},
+ {"padd2.sss", A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 1), {R1, R2, R3}},
+ {"padd1.uuu", A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 2), {R1, R2, R3}},
+ {"padd2.uuu", A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 2), {R1, R2, R3}},
+ {"padd1.uus", A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 3), {R1, R2, R3}},
+ {"padd2.uus", A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 3), {R1, R2, R3}},
+ {"psub1", A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 0), {R1, R2, R3}},
+ {"psub2", A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 0), {R1, R2, R3}},
+ {"psub4", A, OpX2aZaZbX4X2b (8, 1, 1, 0, 1, 0), {R1, R2, R3}},
+ {"psub1.sss", A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 1), {R1, R2, R3}},
+ {"psub2.sss", A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 1), {R1, R2, R3}},
+ {"psub1.uuu", A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 2), {R1, R2, R3}},
+ {"psub2.uuu", A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 2), {R1, R2, R3}},
+ {"psub1.uus", A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 3), {R1, R2, R3}},
+ {"psub2.uus", A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 3), {R1, R2, R3}},
+ {"pavg1", A, OpX2aZaZbX4X2b (8, 1, 0, 0, 2, 2), {R1, R2, R3}},
+ {"pavg2", A, OpX2aZaZbX4X2b (8, 1, 0, 1, 2, 2), {R1, R2, R3}},
+ {"pavg1.raz", A, OpX2aZaZbX4X2b (8, 1, 0, 0, 2, 3), {R1, R2, R3}},
+ {"pavg2.raz", A, OpX2aZaZbX4X2b (8, 1, 0, 1, 2, 3), {R1, R2, R3}},
+ {"pavgsub1", A, OpX2aZaZbX4X2b (8, 1, 0, 0, 3, 2), {R1, R2, R3}},
+ {"pavgsub2", A, OpX2aZaZbX4X2b (8, 1, 0, 1, 3, 2), {R1, R2, R3}},
+ {"pcmp1.eq", A, OpX2aZaZbX4X2b (8, 1, 0, 0, 9, 0), {R1, R2, R3}},
+ {"pcmp2.eq", A, OpX2aZaZbX4X2b (8, 1, 0, 1, 9, 0), {R1, R2, R3}},
+ {"pcmp4.eq", A, OpX2aZaZbX4X2b (8, 1, 1, 0, 9, 0), {R1, R2, R3}},
+ {"pcmp1.gt", A, OpX2aZaZbX4X2b (8, 1, 0, 0, 9, 1), {R1, R2, R3}},
+ {"pcmp2.gt", A, OpX2aZaZbX4X2b (8, 1, 0, 1, 9, 1), {R1, R2, R3}},
+ {"pcmp4.gt", A, OpX2aZaZbX4X2b (8, 1, 1, 0, 9, 1), {R1, R2, R3}},
+ {"pshladd2", A, OpX2aZaZbX4 (8, 1, 0, 1, 4), {R1, R2, CNT2b, R3}},
+ {"pshradd2", A, OpX2aZaZbX4 (8, 1, 0, 1, 6), {R1, R2, CNT2b, R3}},
+
+ {"mov", A, OpR3b (9, 0), {R1, IMM22}, PSEUDO},
+ {"addl", A, Op (9), {R1, IMM22, R3_2}},
+
+ {"cmp.lt", A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P1, P2, R2, R3}},
+ {"cmp.le", A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P2, P1, R3, R2}},
+ {"cmp.gt", A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P1, P2, R3, R2}},
+ {"cmp.ge", A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P2, P1, R2, R3}},
+ {"cmp.lt.unc", A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P1, P2, R2, R3}},
+ {"cmp.le.unc", A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P2, P1, R3, R2}},
+ {"cmp.gt.unc", A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P1, P2, R3, R2}},
+ {"cmp.ge.unc", A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P2, P1, R2, R3}},
+ {"cmp.eq.and", A2, OpX2TbTaC (0xc, 0, 0, 1, 0), {P1, P2, R2, R3}},
+ {"cmp.ne.andcm", A2, OpX2TbTaC (0xc, 0, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO},
+ {"cmp.ne.and", A2, OpX2TbTaC (0xc, 0, 0, 1, 1), {P1, P2, R2, R3}},
+ {"cmp.eq.andcm", A2, OpX2TbTaC (0xc, 0, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO},
+ {"cmp4.lt", A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P1, P2, R2, R3}},
+ {"cmp4.le", A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P2, P1, R3, R2}},
+ {"cmp4.gt", A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P1, P2, R3, R2}},
+ {"cmp4.ge", A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P2, P1, R2, R3}},
+ {"cmp4.lt.unc", A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P1, P2, R2, R3}},
+ {"cmp4.le.unc", A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P2, P1, R3, R2}},
+ {"cmp4.gt.unc", A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P1, P2, R3, R2}},
+ {"cmp4.ge.unc", A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P2, P1, R2, R3}},
+ {"cmp4.eq.and", A2, OpX2TbTaC (0xc, 1, 0, 1, 0), {P1, P2, R2, R3}},
+ {"cmp4.ne.andcm", A2, OpX2TbTaC (0xc, 1, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO},
+ {"cmp4.ne.and", A2, OpX2TbTaC (0xc, 1, 0, 1, 1), {P1, P2, R2, R3}},
+ {"cmp4.eq.andcm", A2, OpX2TbTaC (0xc, 1, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO},
+ {"cmp.gt.and", A2, OpX2TbTaC (0xc, 0, 1, 0, 0), {P1, P2, GR0, R3}},
+ {"cmp.le.andcm", A2, OpX2TbTaC (0xc, 0, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp.le.and", A2, OpX2TbTaC (0xc, 0, 1, 0, 1), {P1, P2, GR0, R3}},
+ {"cmp.gt.andcm", A2, OpX2TbTaC (0xc, 0, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp.ge.and", A2, OpX2TbTaC (0xc, 0, 1, 1, 0), {P1, P2, GR0, R3}},
+ {"cmp.lt.andcm", A2, OpX2TbTaC (0xc, 0, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp.lt.and", A2, OpX2TbTaC (0xc, 0, 1, 1, 1), {P1, P2, GR0, R3}},
+ {"cmp.ge.andcm", A2, OpX2TbTaC (0xc, 0, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp4.gt.and", A2, OpX2TbTaC (0xc, 1, 1, 0, 0), {P1, P2, GR0, R3}},
+ {"cmp4.le.andcm", A2, OpX2TbTaC (0xc, 1, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp4.le.and", A2, OpX2TbTaC (0xc, 1, 1, 0, 1), {P1, P2, GR0, R3}},
+ {"cmp4.gt.andcm", A2, OpX2TbTaC (0xc, 1, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp4.ge.and", A2, OpX2TbTaC (0xc, 1, 1, 1, 0), {P1, P2, GR0, R3}},
+ {"cmp4.lt.andcm", A2, OpX2TbTaC (0xc, 1, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp4.lt.and", A2, OpX2TbTaC (0xc, 1, 1, 1, 1), {P1, P2, GR0, R3}},
+ {"cmp4.ge.andcm", A2, OpX2TbTaC (0xc, 1, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp.lt", A2, OpX2TaC (0xc, 2, 0, 0), {P1, P2, IMM8, R3}},
+ {"cmp.le", A2, OpX2TaC (0xc, 2, 0, 0), {P1, P2, IMM8M1, R3}},
+ {"cmp.gt", A2, OpX2TaC (0xc, 2, 0, 0), {P2, P1, IMM8M1, R3}},
+ {"cmp.ge", A2, OpX2TaC (0xc, 2, 0, 0), {P2, P1, IMM8, R3}},
+ {"cmp.lt.unc", A2, OpX2TaC (0xc, 2, 0, 1), {P1, P2, IMM8, R3}},
+ {"cmp.le.unc", A2, OpX2TaC (0xc, 2, 0, 1), {P1, P2, IMM8M1, R3}},
+ {"cmp.gt.unc", A2, OpX2TaC (0xc, 2, 0, 1), {P2, P1, IMM8M1, R3}},
+ {"cmp.ge.unc", A2, OpX2TaC (0xc, 2, 0, 1), {P2, P1, IMM8, R3}},
+ {"cmp.eq.and", A2, OpX2TaC (0xc, 2, 1, 0), {P1, P2, IMM8, R3}},
+ {"cmp.ne.andcm", A2, OpX2TaC (0xc, 2, 1, 0), {P1, P2, IMM8, R3}, PSEUDO},
+ {"cmp.ne.and", A2, OpX2TaC (0xc, 2, 1, 1), {P1, P2, IMM8, R3}},
+ {"cmp.eq.andcm", A2, OpX2TaC (0xc, 2, 1, 1), {P1, P2, IMM8, R3}, PSEUDO},
+ {"cmp4.lt", A2, OpX2TaC (0xc, 3, 0, 0), {P1, P2, IMM8, R3}},
+ {"cmp4.le", A2, OpX2TaC (0xc, 3, 0, 0), {P1, P2, IMM8M1, R3}},
+ {"cmp4.gt", A2, OpX2TaC (0xc, 3, 0, 0), {P2, P1, IMM8M1, R3}},
+ {"cmp4.ge", A2, OpX2TaC (0xc, 3, 0, 0), {P2, P1, IMM8, R3}},
+ {"cmp4.lt.unc", A2, OpX2TaC (0xc, 3, 0, 1), {P1, P2, IMM8, R3}},
+ {"cmp4.le.unc", A2, OpX2TaC (0xc, 3, 0, 1), {P1, P2, IMM8M1, R3}},
+ {"cmp4.gt.unc", A2, OpX2TaC (0xc, 3, 0, 1), {P2, P1, IMM8M1, R3}},
+ {"cmp4.ge.unc", A2, OpX2TaC (0xc, 3, 0, 1), {P2, P1, IMM8, R3}},
+ {"cmp4.eq.and", A2, OpX2TaC (0xc, 3, 1, 0), {P1, P2, IMM8, R3}},
+ {"cmp4.ne.andcm", A2, OpX2TaC (0xc, 3, 1, 0), {P1, P2, IMM8, R3}, PSEUDO},
+ {"cmp4.ne.and", A2, OpX2TaC (0xc, 3, 1, 1), {P1, P2, IMM8, R3}},
+ {"cmp4.eq.andcm", A2, OpX2TaC (0xc, 3, 1, 1), {P1, P2, IMM8, R3}, PSEUDO},
+ {"cmp.ltu", A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P1, P2, R2, R3}},
+ {"cmp.leu", A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P2, P1, R3, R2}},
+ {"cmp.gtu", A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P1, P2, R3, R2}},
+ {"cmp.geu", A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P2, P1, R2, R3}},
+ {"cmp.ltu.unc", A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P1, P2, R2, R3}},
+ {"cmp.leu.unc", A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P2, P1, R3, R2}},
+ {"cmp.gtu.unc", A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P1, P2, R3, R2}},
+ {"cmp.geu.unc", A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P2, P1, R2, R3}},
+ {"cmp.eq.or", A2, OpX2TbTaC (0xd, 0, 0, 1, 0), {P1, P2, R2, R3}},
+ {"cmp.ne.orcm", A2, OpX2TbTaC (0xd, 0, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO},
+ {"cmp.ne.or", A2, OpX2TbTaC (0xd, 0, 0, 1, 1), {P1, P2, R2, R3}},
+ {"cmp.eq.orcm", A2, OpX2TbTaC (0xd, 0, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO},
+ {"cmp4.ltu", A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P1, P2, R2, R3}},
+ {"cmp4.leu", A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P2, P1, R3, R2}},
+ {"cmp4.gtu", A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P1, P2, R3, R2}},
+ {"cmp4.geu", A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P2, P1, R2, R3}},
+ {"cmp4.ltu.unc", A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P1, P2, R2, R3}},
+ {"cmp4.leu.unc", A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P2, P1, R3, R2}},
+ {"cmp4.gtu.unc", A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P1, P2, R3, R2}},
+ {"cmp4.geu.unc", A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P2, P1, R2, R3}},
+ {"cmp4.eq.or", A2, OpX2TbTaC (0xd, 1, 0, 1, 0), {P1, P2, R2, R3}},
+ {"cmp4.ne.orcm", A2, OpX2TbTaC (0xd, 1, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO},
+ {"cmp4.ne.or", A2, OpX2TbTaC (0xd, 1, 0, 1, 1), {P1, P2, R2, R3}},
+ {"cmp4.eq.orcm", A2, OpX2TbTaC (0xd, 1, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO},
+ {"cmp.gt.or", A2, OpX2TbTaC (0xd, 0, 1, 0, 0), {P1, P2, GR0, R3}},
+ {"cmp.le.orcm", A2, OpX2TbTaC (0xd, 0, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp.le.or", A2, OpX2TbTaC (0xd, 0, 1, 0, 1), {P1, P2, GR0, R3}},
+ {"cmp.gt.orcm", A2, OpX2TbTaC (0xd, 0, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp.ge.or", A2, OpX2TbTaC (0xd, 0, 1, 1, 0), {P1, P2, GR0, R3}},
+ {"cmp.lt.orcm", A2, OpX2TbTaC (0xd, 0, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp.lt.or", A2, OpX2TbTaC (0xd, 0, 1, 1, 1), {P1, P2, GR0, R3}},
+ {"cmp.ge.orcm", A2, OpX2TbTaC (0xd, 0, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp4.gt.or", A2, OpX2TbTaC (0xd, 1, 1, 0, 0), {P1, P2, GR0, R3}},
+ {"cmp4.le.orcm", A2, OpX2TbTaC (0xd, 1, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp4.le.or", A2, OpX2TbTaC (0xd, 1, 1, 0, 1), {P1, P2, GR0, R3}},
+ {"cmp4.gt.orcm", A2, OpX2TbTaC (0xd, 1, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp4.ge.or", A2, OpX2TbTaC (0xd, 1, 1, 1, 0), {P1, P2, GR0, R3}},
+ {"cmp4.lt.orcm", A2, OpX2TbTaC (0xd, 1, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp4.lt.or", A2, OpX2TbTaC (0xd, 1, 1, 1, 1), {P1, P2, GR0, R3}},
+ {"cmp4.ge.orcm", A2, OpX2TbTaC (0xd, 1, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO},
+ {"cmp.ltu", A2, OpX2TaC (0xd, 2, 0, 0), {P1, P2, IMM8, R3}},
+ {"cmp.leu", A2, OpX2TaC (0xd, 2, 0, 0), {P1, P2, IMM8M1U8, R3}},
+ {"cmp.gtu", A2, OpX2TaC (0xd, 2, 0, 0), {P2, P1, IMM8M1U8, R3}},
+ {"cmp.geu", A2, OpX2TaC (0xd, 2, 0, 0), {P2, P1, IMM8, R3}},
+ {"cmp.ltu.unc", A2, OpX2TaC (0xd, 2, 0, 1), {P1, P2, IMM8, R3}},
+ {"cmp.leu.unc", A2, OpX2TaC (0xd, 2, 0, 1), {P1, P2, IMM8M1U8, R3}},
+ {"cmp.gtu.unc", A2, OpX2TaC (0xd, 2, 0, 1), {P2, P1, IMM8M1U8, R3}},
+ {"cmp.geu.unc", A2, OpX2TaC (0xd, 2, 0, 1), {P2, P1, IMM8, R3}},
+ {"cmp.eq.or", A2, OpX2TaC (0xd, 2, 1, 0), {P1, P2, IMM8, R3}},
+ {"cmp.ne.orcm", A2, OpX2TaC (0xd, 2, 1, 0), {P1, P2, IMM8, R3}, PSEUDO},
+ {"cmp.ne.or", A2, OpX2TaC (0xd, 2, 1, 1), {P1, P2, IMM8, R3}},
+ {"cmp.eq.orcm", A2, OpX2TaC (0xd, 2, 1, 1), {P1, P2, IMM8, R3}, PSEUDO},
+ {"cmp4.ltu", A2, OpX2TaC (0xd, 3, 0, 0), {P1, P2, IMM8U4, R3}},
+ {"cmp4.leu", A2, OpX2TaC (0xd, 3, 0, 0), {P1, P2, IMM8M1U4, R3}},
+ {"cmp4.gtu", A2, OpX2TaC (0xd, 3, 0, 0), {P2, P1, IMM8M1U4, R3}},
+ {"cmp4.geu", A2, OpX2TaC (0xd, 3, 0, 0), {P2, P1, IMM8U4, R3}},
+ {"cmp4.ltu.unc", A2, OpX2TaC (0xd, 3, 0, 1), {P1, P2, IMM8U4, R3}},
+ {"cmp4.leu.unc", A2, OpX2TaC (0xd, 3, 0, 1), {P1, P2, IMM8M1U4, R3}},
+ {"cmp4.gtu.unc", A2, OpX2TaC (0xd, 3, 0, 1), {P2, P1, IMM8M1U4, R3}},
+ {"cmp4.geu.unc", A2, OpX2TaC (0xd, 3, 0, 1), {P2, P1, IMM8U4, R3}},
+ {"cmp4.eq.or", A2, OpX2TaC (0xd, 3, 1, 0), {P1, P2, IMM8, R3}},
+ {"cmp4.ne.orcm", A2, OpX2TaC (0xd, 3, 1, 0), {P1, P2, IMM8, R3}, PSEUDO},
+ {"cmp4.ne.or", A2, OpX2TaC (0xd, 3, 1, 1), {P1, P2, IMM8, R3}},
+ {"cmp4.eq.orcm", A2, OpX2TaC (0xd, 3, 1, 1), {P1, P2, IMM8, R3}, PSEUDO},
+ {"cmp.eq", A2, OpX2TbTaC (0xe, 0, 0, 0, 0), {P1, P2, R2, R3}},
+ {"cmp.ne", A2, OpX2TbTaC (0xe, 0, 0, 0, 0), {P2, P1, R2, R3}},
+ {"cmp.eq.unc", A2, OpX2TbTaC (0xe, 0, 0, 0, 1), {P1, P2, R2, R3}},
+ {"cmp.ne.unc", A2, OpX2TbTaC (0xe, 0, 0, 0, 1), {P2, P1, R2, R3}},
+ {"cmp.eq.or.andcm", A2, OpX2TbTaC (0xe, 0, 0, 1, 0), {P1, P2, R2, R3}},
+ {"cmp.ne.and.orcm", A2, OpX2TbTaC (0xe, 0, 0, 1, 0), {P2, P1, R2, R3}, PSEUDO},
+ {"cmp.ne.or.andcm", A2, OpX2TbTaC (0xe, 0, 0, 1, 1), {P1, P2, R2, R3}},
+ {"cmp.eq.and.orcm", A2, OpX2TbTaC (0xe, 0, 0, 1, 1), {P2, P1, R2, R3}, PSEUDO},
+ {"cmp4.eq", A2, OpX2TbTaC (0xe, 1, 0, 0, 0), {P1, P2, R2, R3}},
+ {"cmp4.ne", A2, OpX2TbTaC (0xe, 1, 0, 0, 0), {P2, P1, R2, R3}},
+ {"cmp4.eq.unc", A2, OpX2TbTaC (0xe, 1, 0, 0, 1), {P1, P2, R2, R3}},
+ {"cmp4.ne.unc", A2, OpX2TbTaC (0xe, 1, 0, 0, 1), {P2, P1, R2, R3}},
+ {"cmp4.eq.or.andcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 0), {P1, P2, R2, R3}},
+ {"cmp4.ne.and.orcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 0), {P2, P1, R2, R3}, PSEUDO},
+ {"cmp4.ne.or.andcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 1), {P1, P2, R2, R3}},
+ {"cmp4.eq.and.orcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 1), {P2, P1, R2, R3}, PSEUDO},
+ {"cmp.gt.or.andcm", A2, OpX2TbTaC (0xe, 0, 1, 0, 0), {P1, P2, GR0, R3}},
+ {"cmp.le.and.orcm", A2, OpX2TbTaC (0xe, 0, 1, 0, 0), {P2, P1, GR0, R3}, PSEUDO},
+ {"cmp.le.or.andcm", A2, OpX2TbTaC (0xe, 0, 1, 0, 1), {P1, P2, GR0, R3}},
+ {"cmp.gt.and.orcm", A2, OpX2TbTaC (0xe, 0, 1, 0, 1), {P2, P1, GR0, R3}, PSEUDO},
+ {"cmp.ge.or.andcm", A2, OpX2TbTaC (0xe, 0, 1, 1, 0), {P1, P2, GR0, R3}},
+ {"cmp.lt.and.orcm", A2, OpX2TbTaC (0xe, 0, 1, 1, 0), {P2, P1, GR0, R3}, PSEUDO},
+ {"cmp.lt.or.andcm", A2, OpX2TbTaC (0xe, 0, 1, 1, 1), {P1, P2, GR0, R3}},
+ {"cmp.ge.and.orcm", A2, OpX2TbTaC (0xe, 0, 1, 1, 1), {P2, P1, GR0, R3}, PSEUDO},
+ {"cmp4.gt.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 0), {P1, P2, GR0, R3}},
+ {"cmp4.le.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 0), {P2, P1, GR0, R3}, PSEUDO},
+ {"cmp4.le.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 1), {P1, P2, GR0, R3}},
+ {"cmp4.gt.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 1), {P2, P1, GR0, R3}, PSEUDO},
+ {"cmp4.ge.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 0), {P1, P2, GR0, R3}},
+ {"cmp4.lt.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 0), {P2, P1, GR0, R3}, PSEUDO},
+ {"cmp4.lt.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 1), {P1, P2, GR0, R3}},
+ {"cmp4.ge.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 1), {P2, P1, GR0, R3}, PSEUDO},
+ {"cmp.eq", A2, OpX2TaC (0xe, 2, 0, 0), {P1, P2, IMM8, R3}},
+ {"cmp.ne", A2, OpX2TaC (0xe, 2, 0, 0), {P2, P1, IMM8, R3}},
+ {"cmp.eq.unc", A2, OpX2TaC (0xe, 2, 0, 1), {P1, P2, IMM8, R3}},
+ {"cmp.ne.unc", A2, OpX2TaC (0xe, 2, 0, 1), {P2, P1, IMM8, R3}},
+ {"cmp.eq.or.andcm", A2, OpX2TaC (0xe, 2, 1, 0), {P1, P2, IMM8, R3}},
+ {"cmp.ne.and.orcm", A2, OpX2TaC (0xe, 2, 1, 0), {P2, P1, IMM8, R3}, PSEUDO},
+ {"cmp.ne.or.andcm", A2, OpX2TaC (0xe, 2, 1, 1), {P1, P2, IMM8, R3}},
+ {"cmp.eq.and.orcm", A2, OpX2TaC (0xe, 2, 1, 1), {P2, P1, IMM8, R3}, PSEUDO},
+ {"cmp4.eq", A2, OpX2TaC (0xe, 3, 0, 0), {P1, P2, IMM8, R3}},
+ {"cmp4.ne", A2, OpX2TaC (0xe, 3, 0, 0), {P2, P1, IMM8, R3}},
+ {"cmp4.eq.unc", A2, OpX2TaC (0xe, 3, 0, 1), {P1, P2, IMM8, R3}},
+ {"cmp4.ne.unc", A2, OpX2TaC (0xe, 3, 0, 1), {P2, P1, IMM8, R3}},
+ {"cmp4.eq.or.andcm", A2, OpX2TaC (0xe, 3, 1, 0), {P1, P2, IMM8, R3}},
+ {"cmp4.ne.and.orcm", A2, OpX2TaC (0xe, 3, 1, 0), {P2, P1, IMM8, R3}, PSEUDO},
+ {"cmp4.ne.or.andcm", A2, OpX2TaC (0xe, 3, 1, 1), {P1, P2, IMM8, R3}},
+ {"cmp4.eq.and.orcm", A2, OpX2TaC (0xe, 3, 1, 1), {P2, P1, IMM8, R3}, PSEUDO},
+
+ {0}
+ };
+
+#undef A
+#undef A2
+#undef bC
+#undef bImm14
+#undef bR3a
+#undef bR3b
+#undef bTa
+#undef bTb
+#undef bVe
+#undef bX
+#undef bX2
+#undef bX2a
+#undef bX2b
+#undef bX4
+#undef bZa
+#undef bZb
+#undef mC
+#undef mImm14
+#undef mR3a
+#undef mR3b
+#undef mTa
+#undef mTb
+#undef mVe
+#undef mX
+#undef mX2
+#undef mX2a
+#undef mX2b
+#undef mX4
+#undef mZa
+#undef mZb
+#undef OpR3a
+#undef OpR3b
+#undef OpX2aVe
+#undef OpX2aVeImm14
+#undef OpX2aVeX4
+#undef OpX2aVeX4X2b
+#undef OpX2TbTaC
+#undef OpX2TaC
+#undef OpX2aZaZbX4
+#undef OpX2aZaZbX4X2b
diff --git a/opcodes/ia64-opc-b.c b/opcodes/ia64-opc-b.c
new file mode 100644
index 00000000000..46607191612
--- /dev/null
+++ b/opcodes/ia64-opc-b.c
@@ -0,0 +1,489 @@
+/* ia64-opc-b.c -- IA-64 `B' opcode table.
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+ This file is part of GDB, GAS, and the GNU binutils.
+
+ GDB, GAS, and the GNU binutils are free software; you can redistribute
+ them and/or modify them under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either version
+ 2, or (at your option) any later version.
+
+ GDB, GAS, and the GNU binutils are distributed in the hope that they
+ 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 file; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#include "ia64-opc.h"
+
+#define B0 IA64_TYPE_B, 0
+#define B IA64_TYPE_B, 1
+
+/* instruction bit fields: */
+#define bBtype(x) (((ia64_insn) ((x) & 0x7)) << 6)
+#define bD(x) (((ia64_insn) ((x) & 0x1)) << 35)
+#define bIh(x) (((ia64_insn) ((x) & 0x1)) << 35)
+#define bPa(x) (((ia64_insn) ((x) & 0x1)) << 12)
+#define bPr(x) (((ia64_insn) ((x) & 0x3f)) << 0)
+#define bWha(x) (((ia64_insn) ((x) & 0x3)) << 33)
+#define bWhb(x) (((ia64_insn) ((x) & 0x3)) << 3)
+#define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27)
+
+#define mBtype bBtype (-1)
+#define mD bD (-1)
+#define mIh bIh (-1)
+#define mPa bPa (-1)
+#define mPr bPr (-1)
+#define mWha bWha (-1)
+#define mWhb bWhb (-1)
+#define mX6 bX6 (-1)
+
+#define OpX6(a,b) (bOp (a) | bX6 (b)), (mOp | mX6)
+#define OpPaWhaD(a,b,c,d) \
+ (bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD)
+#define OpBtypePaWhaD(a,b,c,d,e) \
+ (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \
+ (mOp | mBtype | mPa | mWha | mD)
+#define OpBtypePaWhaDPr(a,b,c,d,e,f) \
+ (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \
+ (mOp | mBtype | mPa | mWha | mD | mPr)
+#define OpX6BtypePaWhaD(a,b,c,d,e,f) \
+ (bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f)), \
+ (mOp | mX6 | mBtype | mPa | mWha | mD)
+#define OpX6BtypePaWhaDPr(a,b,c,d,e,f,g) \
+ (bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f) | bPr (g)), \
+ (mOp | mX6 | mBtype | mPa | mWha | mD | mPr)
+#define OpIhWhb(a,b,c) \
+ (bOp (a) | bIh (b) | bWhb (c)), \
+ (mOp | mIh | mWhb)
+#define OpX6IhWhb(a,b,c,d) \
+ (bOp (a) | bX6 (b) | bIh (c) | bWhb (d)), \
+ (mOp | mX6 | mIh | mWhb)
+
+struct ia64_opcode ia64_opcodes_b[] =
+ {
+ /* B-type instruction encodings (sorted according to major opcode) */
+
+#define BR(a,b) \
+ B0, OpX6BtypePaWhaDPr (0, 0x20, 0, a, 0, b, 0), {B2}, PSEUDO
+ {"br.few", BR (0, 0)},
+ {"br", BR (0, 0)},
+ {"br.few.clr", BR (0, 1)},
+ {"br.clr", BR (0, 1)},
+ {"br.many", BR (1, 0)},
+ {"br.many.clr", BR (1, 1)},
+#undef BR
+
+#define BR(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}
+ {"br.cond.sptk.few", BR (0x20, 0, 0, 0, 0)},
+ {"br.cond.sptk", BR (0x20, 0, 0, 0, 0), PSEUDO},
+ {"br.cond.sptk.few.clr", BR (0x20, 0, 0, 0, 1)},
+ {"br.cond.sptk.clr", BR (0x20, 0, 0, 0, 1), PSEUDO},
+ {"br.cond.spnt.few", BR (0x20, 0, 0, 1, 0)},
+ {"br.cond.spnt", BR (0x20, 0, 0, 1, 0), PSEUDO},
+ {"br.cond.spnt.few.clr", BR (0x20, 0, 0, 1, 1)},
+ {"br.cond.spnt.clr", BR (0x20, 0, 0, 1, 1), PSEUDO},
+ {"br.cond.dptk.few", BR (0x20, 0, 0, 2, 0)},
+ {"br.cond.dptk", BR (0x20, 0, 0, 2, 0), PSEUDO},
+ {"br.cond.dptk.few.clr", BR (0x20, 0, 0, 2, 1)},
+ {"br.cond.dptk.clr", BR (0x20, 0, 0, 2, 1), PSEUDO},
+ {"br.cond.dpnt.few", BR (0x20, 0, 0, 3, 0)},
+ {"br.cond.dpnt", BR (0x20, 0, 0, 3, 0), PSEUDO},
+ {"br.cond.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)},
+ {"br.cond.dpnt.clr", BR (0x20, 0, 0, 3, 1), PSEUDO},
+ {"br.cond.sptk.many", BR (0x20, 0, 1, 0, 0)},
+ {"br.cond.sptk.many.clr", BR (0x20, 0, 1, 0, 1)},
+ {"br.cond.spnt.many", BR (0x20, 0, 1, 1, 0)},
+ {"br.cond.spnt.many.clr", BR (0x20, 0, 1, 1, 1)},
+ {"br.cond.dptk.many", BR (0x20, 0, 1, 2, 0)},
+ {"br.cond.dptk.many.clr", BR (0x20, 0, 1, 2, 1)},
+ {"br.cond.dpnt.many", BR (0x20, 0, 1, 3, 0)},
+ {"br.cond.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)},
+ {"br.sptk.few", BR (0x20, 0, 0, 0, 0)},
+ {"br.sptk", BR (0x20, 0, 0, 0, 0), PSEUDO},
+ {"br.sptk.few.clr", BR (0x20, 0, 0, 0, 1)},
+ {"br.sptk.clr", BR (0x20, 0, 0, 0, 1), PSEUDO},
+ {"br.spnt.few", BR (0x20, 0, 0, 1, 0)},
+ {"br.spnt", BR (0x20, 0, 0, 1, 0), PSEUDO},
+ {"br.spnt.few.clr", BR (0x20, 0, 0, 1, 1)},
+ {"br.spnt.clr", BR (0x20, 0, 0, 1, 1), PSEUDO},
+ {"br.dptk.few", BR (0x20, 0, 0, 2, 0)},
+ {"br.dptk", BR (0x20, 0, 0, 2, 0), PSEUDO},
+ {"br.dptk.few.clr", BR (0x20, 0, 0, 2, 1)},
+ {"br.dptk.clr", BR (0x20, 0, 0, 2, 1), PSEUDO},
+ {"br.dpnt.few", BR (0x20, 0, 0, 3, 0)},
+ {"br.dpnt", BR (0x20, 0, 0, 3, 0), PSEUDO},
+ {"br.dpnt.few.clr", BR (0x20, 0, 0, 3, 1)},
+ {"br.dpnt.clr", BR (0x20, 0, 0, 3, 1), PSEUDO},
+ {"br.sptk.many", BR (0x20, 0, 1, 0, 0)},
+ {"br.sptk.many.clr", BR (0x20, 0, 1, 0, 1)},
+ {"br.spnt.many", BR (0x20, 0, 1, 1, 0)},
+ {"br.spnt.many.clr", BR (0x20, 0, 1, 1, 1)},
+ {"br.dptk.many", BR (0x20, 0, 1, 2, 0)},
+ {"br.dptk.many.clr", BR (0x20, 0, 1, 2, 1)},
+ {"br.dpnt.many", BR (0x20, 0, 1, 3, 0)},
+ {"br.dpnt.many.clr", BR (0x20, 0, 1, 3, 1)},
+ {"br.ia.sptk.few", BR (0x20, 1, 0, 0, 0)},
+ {"br.ia.sptk", BR (0x20, 1, 0, 0, 0), PSEUDO},
+ {"br.ia.sptk.few.clr", BR (0x20, 1, 0, 0, 1)},
+ {"br.ia.sptk.clr", BR (0x20, 1, 0, 0, 1), PSEUDO},
+ {"br.ia.spnt.few", BR (0x20, 1, 0, 1, 0)},
+ {"br.ia.spnt", BR (0x20, 1, 0, 1, 0), PSEUDO},
+ {"br.ia.spnt.few.clr", BR (0x20, 1, 0, 1, 1)},
+ {"br.ia.spnt.clr", BR (0x20, 1, 0, 1, 1), PSEUDO},
+ {"br.ia.dptk.few", BR (0x20, 1, 0, 2, 0)},
+ {"br.ia.dptk", BR (0x20, 1, 0, 2, 0), PSEUDO},
+ {"br.ia.dptk.few.clr", BR (0x20, 1, 0, 2, 1)},
+ {"br.ia.dptk.clr", BR (0x20, 1, 0, 2, 1), PSEUDO},
+ {"br.ia.dpnt.few", BR (0x20, 1, 0, 3, 0)},
+ {"br.ia.dpnt", BR (0x20, 1, 0, 3, 0), PSEUDO},
+ {"br.ia.dpnt.few.clr", BR (0x20, 1, 0, 3, 1)},
+ {"br.ia.dpnt.clr", BR (0x20, 1, 0, 3, 1), PSEUDO},
+ {"br.ia.sptk.many", BR (0x20, 1, 1, 0, 0)},
+ {"br.ia.sptk.many.clr", BR (0x20, 1, 1, 0, 1)},
+ {"br.ia.spnt.many", BR (0x20, 1, 1, 1, 0)},
+ {"br.ia.spnt.many.clr", BR (0x20, 1, 1, 1, 1)},
+ {"br.ia.dptk.many", BR (0x20, 1, 1, 2, 0)},
+ {"br.ia.dptk.many.clr", BR (0x20, 1, 1, 2, 1)},
+ {"br.ia.dpnt.many", BR (0x20, 1, 1, 3, 0)},
+ {"br.ia.dpnt.many.clr", BR (0x20, 1, 1, 3, 1)},
+ {"br.ret.sptk.few", BR (0x21, 4, 0, 0, 0), MOD_RRBS},
+ {"br.ret.sptk", BR (0x21, 4, 0, 0, 0), PSEUDO | MOD_RRBS},
+ {"br.ret.sptk.few.clr", BR (0x21, 4, 0, 0, 1), MOD_RRBS},
+ {"br.ret.sptk.clr", BR (0x21, 4, 0, 0, 1), PSEUDO | MOD_RRBS},
+ {"br.ret.spnt.few", BR (0x21, 4, 0, 1, 0), MOD_RRBS},
+ {"br.ret.spnt", BR (0x21, 4, 0, 1, 0), PSEUDO | MOD_RRBS},
+ {"br.ret.spnt.few.clr", BR (0x21, 4, 0, 1, 1), MOD_RRBS},
+ {"br.ret.spnt.clr", BR (0x21, 4, 0, 1, 1), PSEUDO | MOD_RRBS},
+ {"br.ret.dptk.few", BR (0x21, 4, 0, 2, 0), MOD_RRBS},
+ {"br.ret.dptk", BR (0x21, 4, 0, 2, 0), PSEUDO | MOD_RRBS},
+ {"br.ret.dptk.few.clr", BR (0x21, 4, 0, 2, 1), MOD_RRBS},
+ {"br.ret.dptk.clr", BR (0x21, 4, 0, 2, 1), PSEUDO | MOD_RRBS},
+ {"br.ret.dpnt.few", BR (0x21, 4, 0, 3, 0), MOD_RRBS},
+ {"br.ret.dpnt", BR (0x21, 4, 0, 3, 0), PSEUDO | MOD_RRBS},
+ {"br.ret.dpnt.few.clr", BR (0x21, 4, 0, 3, 1), MOD_RRBS},
+ {"br.ret.dpnt.clr", BR (0x21, 4, 0, 3, 1), PSEUDO | MOD_RRBS},
+ {"br.ret.sptk.many", BR (0x21, 4, 1, 0, 0), MOD_RRBS},
+ {"br.ret.sptk.many.clr", BR (0x21, 4, 1, 0, 1), MOD_RRBS},
+ {"br.ret.spnt.many", BR (0x21, 4, 1, 1, 0), MOD_RRBS},
+ {"br.ret.spnt.many.clr", BR (0x21, 4, 1, 1, 1), MOD_RRBS},
+ {"br.ret.dptk.many", BR (0x21, 4, 1, 2, 0), MOD_RRBS},
+ {"br.ret.dptk.many.clr", BR (0x21, 4, 1, 2, 1), MOD_RRBS},
+ {"br.ret.dpnt.many", BR (0x21, 4, 1, 3, 0), MOD_RRBS},
+ {"br.ret.dpnt.many.clr", BR (0x21, 4, 1, 3, 1), MOD_RRBS},
+#undef BR
+
+ {"cover", B0, OpX6 (0, 0x02), {0, }, NO_PRED | LAST | MOD_RRBS},
+ {"clrrrb", B0, OpX6 (0, 0x04), {0, }, NO_PRED | LAST | MOD_RRBS},
+ {"clrrrb.pr", B0, OpX6 (0, 0x05), {0, }, NO_PRED | LAST | MOD_RRBS},
+ {"rfi", B0, OpX6 (0, 0x08), {0, }, NO_PRED | LAST | PRIV | MOD_RRBS},
+ {"bsw.0", B0, OpX6 (0, 0x0c), {0, }, NO_PRED | LAST | PRIV},
+ {"bsw.1", B0, OpX6 (0, 0x0d), {0, }, NO_PRED | LAST | PRIV},
+ {"epc", B0, OpX6 (0, 0x10), {0, }, NO_PRED},
+
+ {"break.b", B0, OpX6 (0, 0x00), {IMMU21}},
+
+ {"br.call.sptk.few", B, OpPaWhaD (1, 0, 0, 0), {B1, B2}},
+ {"br.call.sptk", B, OpPaWhaD (1, 0, 0, 0), {B1, B2}, PSEUDO},
+ {"br.call.sptk.few.clr", B, OpPaWhaD (1, 0, 0, 1), {B1, B2}},
+ {"br.call.sptk.clr", B, OpPaWhaD (1, 0, 0, 1), {B1, B2}, PSEUDO},
+ {"br.call.spnt.few", B, OpPaWhaD (1, 0, 1, 0), {B1, B2}},
+ {"br.call.spnt", B, OpPaWhaD (1, 0, 1, 0), {B1, B2}, PSEUDO},
+ {"br.call.spnt.few.clr", B, OpPaWhaD (1, 0, 1, 1), {B1, B2}},
+ {"br.call.spnt.clr", B, OpPaWhaD (1, 0, 1, 1), {B1, B2}, PSEUDO},
+ {"br.call.dptk.few", B, OpPaWhaD (1, 0, 2, 0), {B1, B2}},
+ {"br.call.dptk", B, OpPaWhaD (1, 0, 2, 0), {B1, B2}, PSEUDO},
+ {"br.call.dptk.few.clr", B, OpPaWhaD (1, 0, 2, 1), {B1, B2}},
+ {"br.call.dptk.clr", B, OpPaWhaD (1, 0, 2, 1), {B1, B2}, PSEUDO},
+ {"br.call.dpnt.few", B, OpPaWhaD (1, 0, 3, 0), {B1, B2}},
+ {"br.call.dpnt", B, OpPaWhaD (1, 0, 3, 0), {B1, B2}, PSEUDO},
+ {"br.call.dpnt.few.clr", B, OpPaWhaD (1, 0, 3, 1), {B1, B2}},
+ {"br.call.dpnt.clr", B, OpPaWhaD (1, 0, 3, 1), {B1, B2}, PSEUDO},
+ {"br.call.sptk.many", B, OpPaWhaD (1, 1, 0, 0), {B1, B2}},
+ {"br.call.sptk.many.clr", B, OpPaWhaD (1, 1, 0, 1), {B1, B2}},
+ {"br.call.spnt.many", B, OpPaWhaD (1, 1, 1, 0), {B1, B2}},
+ {"br.call.spnt.many.clr", B, OpPaWhaD (1, 1, 1, 1), {B1, B2}},
+ {"br.call.dptk.many", B, OpPaWhaD (1, 1, 2, 0), {B1, B2}},
+ {"br.call.dptk.many.clr", B, OpPaWhaD (1, 1, 2, 1), {B1, B2}},
+ {"br.call.dpnt.many", B, OpPaWhaD (1, 1, 3, 0), {B1, B2}},
+ {"br.call.dpnt.many.clr", B, OpPaWhaD (1, 1, 3, 1), {B1, B2}},
+
+#define BRP(a,b,c) \
+ B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED
+ {"brp.sptk", BRP (0x10, 0, 0)},
+ {"brp.dptk", BRP (0x10, 0, 2)},
+ {"brp.sptk.imp", BRP (0x10, 1, 0)},
+ {"brp.dptk.imp", BRP (0x10, 1, 2)},
+ {"brp.ret.sptk", BRP (0x11, 0, 0)},
+ {"brp.ret.dptk", BRP (0x11, 0, 2)},
+ {"brp.ret.sptk.imp", BRP (0x11, 1, 0)},
+ {"brp.ret.dptk.imp", BRP (0x11, 1, 2)},
+#undef BRP
+
+ {"nop.b", B0, OpX6 (2, 0x00), {IMMU21}},
+
+#define BR(a,b) \
+ B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO
+ {"br.few", BR (0, 0)},
+ {"br", BR (0, 0)},
+ {"br.few.clr", BR (0, 1)},
+ {"br.clr", BR (0, 1)},
+ {"br.many", BR (1, 0)},
+ {"br.many.clr", BR (1, 1)},
+#undef BR
+
+#define BR(a,b,c) \
+ B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}
+ {"br.cond.sptk.few", BR (0, 0, 0)},
+ {"br.cond.sptk", BR (0, 0, 0), PSEUDO},
+ {"br.cond.sptk.few.clr", BR (0, 0, 1)},
+ {"br.cond.sptk.clr", BR (0, 0, 1), PSEUDO},
+ {"br.cond.spnt.few", BR (0, 1, 0)},
+ {"br.cond.spnt", BR (0, 1, 0), PSEUDO},
+ {"br.cond.spnt.few.clr", BR (0, 1, 1)},
+ {"br.cond.spnt.clr", BR (0, 1, 1), PSEUDO},
+ {"br.cond.dptk.few", BR (0, 2, 0)},
+ {"br.cond.dptk", BR (0, 2, 0), PSEUDO},
+ {"br.cond.dptk.few.clr", BR (0, 2, 1)},
+ {"br.cond.dptk.clr", BR (0, 2, 1), PSEUDO},
+ {"br.cond.dpnt.few", BR (0, 3, 0)},
+ {"br.cond.dpnt", BR (0, 3, 0), PSEUDO},
+ {"br.cond.dpnt.few.clr", BR (0, 3, 1)},
+ {"br.cond.dpnt.clr", BR (0, 3, 1), PSEUDO},
+ {"br.cond.sptk.many", BR (1, 0, 0)},
+ {"br.cond.sptk.many.clr", BR (1, 0, 1)},
+ {"br.cond.spnt.many", BR (1, 1, 0)},
+ {"br.cond.spnt.many.clr", BR (1, 1, 1)},
+ {"br.cond.dptk.many", BR (1, 2, 0)},
+ {"br.cond.dptk.many.clr", BR (1, 2, 1)},
+ {"br.cond.dpnt.many", BR (1, 3, 0)},
+ {"br.cond.dpnt.many.clr", BR (1, 3, 1)},
+ {"br.sptk.few", BR (0, 0, 0)},
+ {"br.sptk", BR (0, 0, 0), PSEUDO},
+ {"br.sptk.few.clr", BR (0, 0, 1)},
+ {"br.sptk.clr", BR (0, 0, 1), PSEUDO},
+ {"br.spnt.few", BR (0, 1, 0)},
+ {"br.spnt", BR (0, 1, 0), PSEUDO},
+ {"br.spnt.few.clr", BR (0, 1, 1)},
+ {"br.spnt.clr", BR (0, 1, 1), PSEUDO},
+ {"br.dptk.few", BR (0, 2, 0)},
+ {"br.dptk", BR (0, 2, 0), PSEUDO},
+ {"br.dptk.few.clr", BR (0, 2, 1)},
+ {"br.dptk.clr", BR (0, 2, 1), PSEUDO},
+ {"br.dpnt.few", BR (0, 3, 0)},
+ {"br.dpnt", BR (0, 3, 0), PSEUDO},
+ {"br.dpnt.few.clr", BR (0, 3, 1)},
+ {"br.dpnt.clr", BR (0, 3, 1), PSEUDO},
+ {"br.sptk.many", BR (1, 0, 0)},
+ {"br.sptk.many.clr", BR (1, 0, 1)},
+ {"br.spnt.many", BR (1, 1, 0)},
+ {"br.spnt.many.clr", BR (1, 1, 1)},
+ {"br.dptk.many", BR (1, 2, 0)},
+ {"br.dptk.many.clr", BR (1, 2, 1)},
+ {"br.dpnt.many", BR (1, 3, 0)},
+ {"br.dpnt.many.clr", BR (1, 3, 1)},
+#undef BR
+
+#define BR(a,b,c,d) \
+ B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2
+ {"br.wexit.sptk.few", BR (2, 0, 0, 0) | MOD_RRBS},
+ {"br.wexit.sptk", BR (2, 0, 0, 0) | PSEUDO | MOD_RRBS},
+ {"br.wexit.sptk.few.clr", BR (2, 0, 0, 1) | MOD_RRBS},
+ {"br.wexit.sptk.clr", BR (2, 0, 0, 1) | PSEUDO | MOD_RRBS},
+ {"br.wexit.spnt.few", BR (2, 0, 1, 0) | MOD_RRBS},
+ {"br.wexit.spnt", BR (2, 0, 1, 0) | PSEUDO | MOD_RRBS},
+ {"br.wexit.spnt.few.clr", BR (2, 0, 1, 1) | MOD_RRBS},
+ {"br.wexit.spnt.clr", BR (2, 0, 1, 1) | PSEUDO | MOD_RRBS},
+ {"br.wexit.dptk.few", BR (2, 0, 2, 0) | MOD_RRBS},
+ {"br.wexit.dptk", BR (2, 0, 2, 0) | PSEUDO | MOD_RRBS},
+ {"br.wexit.dptk.few.clr", BR (2, 0, 2, 1) | MOD_RRBS},
+ {"br.wexit.dptk.clr", BR (2, 0, 2, 1) | PSEUDO | MOD_RRBS},
+ {"br.wexit.dpnt.few", BR (2, 0, 3, 0) | MOD_RRBS},
+ {"br.wexit.dpnt", BR (2, 0, 3, 0) | PSEUDO | MOD_RRBS},
+ {"br.wexit.dpnt.few.clr", BR (2, 0, 3, 1) | MOD_RRBS},
+ {"br.wexit.dpnt.clr", BR (2, 0, 3, 1) | PSEUDO | MOD_RRBS},
+ {"br.wexit.sptk.many", BR (2, 1, 0, 0) | MOD_RRBS},
+ {"br.wexit.sptk.many.clr", BR (2, 1, 0, 1) | MOD_RRBS},
+ {"br.wexit.spnt.many", BR (2, 1, 1, 0) | MOD_RRBS},
+ {"br.wexit.spnt.many.clr", BR (2, 1, 1, 1) | MOD_RRBS},
+ {"br.wexit.dptk.many", BR (2, 1, 2, 0) | MOD_RRBS},
+ {"br.wexit.dptk.many.clr", BR (2, 1, 2, 1) | MOD_RRBS},
+ {"br.wexit.dpnt.many", BR (2, 1, 3, 0) | MOD_RRBS},
+ {"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1) | MOD_RRBS},
+ {"br.wtop.sptk.few", BR (3, 0, 0, 0) | MOD_RRBS},
+ {"br.wtop.sptk", BR (3, 0, 0, 0) | PSEUDO | MOD_RRBS},
+ {"br.wtop.sptk.few.clr", BR (3, 0, 0, 1) | MOD_RRBS},
+ {"br.wtop.sptk.clr", BR (3, 0, 0, 1) | PSEUDO | MOD_RRBS},
+ {"br.wtop.spnt.few", BR (3, 0, 1, 0) | MOD_RRBS},
+ {"br.wtop.spnt", BR (3, 0, 1, 0) | PSEUDO | MOD_RRBS},
+ {"br.wtop.spnt.few.clr", BR (3, 0, 1, 1) | MOD_RRBS},
+ {"br.wtop.spnt.clr", BR (3, 0, 1, 1) | PSEUDO | MOD_RRBS},
+ {"br.wtop.dptk.few", BR (3, 0, 2, 0) | MOD_RRBS},
+ {"br.wtop.dptk", BR (3, 0, 2, 0) | PSEUDO | MOD_RRBS},
+ {"br.wtop.dptk.few.clr", BR (3, 0, 2, 1) | MOD_RRBS},
+ {"br.wtop.dptk.clr", BR (3, 0, 2, 1) | PSEUDO | MOD_RRBS},
+ {"br.wtop.dpnt.few", BR (3, 0, 3, 0) | MOD_RRBS},
+ {"br.wtop.dpnt", BR (3, 0, 3, 0) | PSEUDO | MOD_RRBS},
+ {"br.wtop.dpnt.few.clr", BR (3, 0, 3, 1) | MOD_RRBS},
+ {"br.wtop.dpnt.clr", BR (3, 0, 3, 1) | PSEUDO | MOD_RRBS},
+ {"br.wtop.sptk.many", BR (3, 1, 0, 0) | MOD_RRBS},
+ {"br.wtop.sptk.many.clr", BR (3, 1, 0, 1) | MOD_RRBS},
+ {"br.wtop.spnt.many", BR (3, 1, 1, 0) | MOD_RRBS},
+ {"br.wtop.spnt.many.clr", BR (3, 1, 1, 1) | MOD_RRBS},
+ {"br.wtop.dptk.many", BR (3, 1, 2, 0) | MOD_RRBS},
+ {"br.wtop.dptk.many.clr", BR (3, 1, 2, 1) | MOD_RRBS},
+ {"br.wtop.dpnt.many", BR (3, 1, 3, 0) | MOD_RRBS},
+ {"br.wtop.dpnt.many.clr", BR (3, 1, 3, 1) | MOD_RRBS},
+
+#undef BR
+#define BR(a,b,c,d) \
+ B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED
+ {"br.cloop.sptk.few", BR (5, 0, 0, 0)},
+ {"br.cloop.sptk", BR (5, 0, 0, 0) | PSEUDO},
+ {"br.cloop.sptk.few.clr", BR (5, 0, 0, 1)},
+ {"br.cloop.sptk.clr", BR (5, 0, 0, 1) | PSEUDO},
+ {"br.cloop.spnt.few", BR (5, 0, 1, 0)},
+ {"br.cloop.spnt", BR (5, 0, 1, 0) | PSEUDO},
+ {"br.cloop.spnt.few.clr", BR (5, 0, 1, 1)},
+ {"br.cloop.spnt.clr", BR (5, 0, 1, 1) | PSEUDO},
+ {"br.cloop.dptk.few", BR (5, 0, 2, 0)},
+ {"br.cloop.dptk", BR (5, 0, 2, 0) | PSEUDO},
+ {"br.cloop.dptk.few.clr", BR (5, 0, 2, 1)},
+ {"br.cloop.dptk.clr", BR (5, 0, 2, 1) | PSEUDO},
+ {"br.cloop.dpnt.few", BR (5, 0, 3, 0)},
+ {"br.cloop.dpnt", BR (5, 0, 3, 0) | PSEUDO},
+ {"br.cloop.dpnt.few.clr", BR (5, 0, 3, 1)},
+ {"br.cloop.dpnt.clr", BR (5, 0, 3, 1) | PSEUDO},
+ {"br.cloop.sptk.many", BR (5, 1, 0, 0)},
+ {"br.cloop.sptk.many.clr", BR (5, 1, 0, 1)},
+ {"br.cloop.spnt.many", BR (5, 1, 1, 0)},
+ {"br.cloop.spnt.many.clr", BR (5, 1, 1, 1)},
+ {"br.cloop.dptk.many", BR (5, 1, 2, 0)},
+ {"br.cloop.dptk.many.clr", BR (5, 1, 2, 1)},
+ {"br.cloop.dpnt.many", BR (5, 1, 3, 0)},
+ {"br.cloop.dpnt.many.clr", BR (5, 1, 3, 1)},
+ {"br.cexit.sptk.few", BR (6, 0, 0, 0) | MOD_RRBS},
+ {"br.cexit.sptk", BR (6, 0, 0, 0) | PSEUDO | MOD_RRBS},
+ {"br.cexit.sptk.few.clr", BR (6, 0, 0, 1) | MOD_RRBS},
+ {"br.cexit.sptk.clr", BR (6, 0, 0, 1) | PSEUDO | MOD_RRBS},
+ {"br.cexit.spnt.few", BR (6, 0, 1, 0) | MOD_RRBS},
+ {"br.cexit.spnt", BR (6, 0, 1, 0) | PSEUDO | MOD_RRBS},
+ {"br.cexit.spnt.few.clr", BR (6, 0, 1, 1) | MOD_RRBS},
+ {"br.cexit.spnt.clr", BR (6, 0, 1, 1) | PSEUDO | MOD_RRBS},
+ {"br.cexit.dptk.few", BR (6, 0, 2, 0) | MOD_RRBS},
+ {"br.cexit.dptk", BR (6, 0, 2, 0) | PSEUDO | MOD_RRBS},
+ {"br.cexit.dptk.few.clr", BR (6, 0, 2, 1) | MOD_RRBS},
+ {"br.cexit.dptk.clr", BR (6, 0, 2, 1) | PSEUDO | MOD_RRBS},
+ {"br.cexit.dpnt.few", BR (6, 0, 3, 0) | MOD_RRBS},
+ {"br.cexit.dpnt", BR (6, 0, 3, 0) | PSEUDO | MOD_RRBS},
+ {"br.cexit.dpnt.few.clr", BR (6, 0, 3, 1) | MOD_RRBS},
+ {"br.cexit.dpnt.clr", BR (6, 0, 3, 1) | PSEUDO | MOD_RRBS},
+ {"br.cexit.sptk.many", BR (6, 1, 0, 0) | MOD_RRBS},
+ {"br.cexit.sptk.many.clr", BR (6, 1, 0, 1) | MOD_RRBS},
+ {"br.cexit.spnt.many", BR (6, 1, 1, 0) | MOD_RRBS},
+ {"br.cexit.spnt.many.clr", BR (6, 1, 1, 1) | MOD_RRBS},
+ {"br.cexit.dptk.many", BR (6, 1, 2, 0) | MOD_RRBS},
+ {"br.cexit.dptk.many.clr", BR (6, 1, 2, 1) | MOD_RRBS},
+ {"br.cexit.dpnt.many", BR (6, 1, 3, 0) | MOD_RRBS},
+ {"br.cexit.dpnt.many.clr", BR (6, 1, 3, 1) | MOD_RRBS},
+ {"br.ctop.sptk.few", BR (7, 0, 0, 0) | MOD_RRBS},
+ {"br.ctop.sptk", BR (7, 0, 0, 0) | PSEUDO | MOD_RRBS},
+ {"br.ctop.sptk.few.clr", BR (7, 0, 0, 1) | MOD_RRBS},
+ {"br.ctop.sptk.clr", BR (7, 0, 0, 1) | PSEUDO | MOD_RRBS},
+ {"br.ctop.spnt.few", BR (7, 0, 1, 0) | MOD_RRBS},
+ {"br.ctop.spnt", BR (7, 0, 1, 0) | PSEUDO | MOD_RRBS},
+ {"br.ctop.spnt.few.clr", BR (7, 0, 1, 1) | MOD_RRBS},
+ {"br.ctop.spnt.clr", BR (7, 0, 1, 1) | PSEUDO | MOD_RRBS},
+ {"br.ctop.dptk.few", BR (7, 0, 2, 0) | MOD_RRBS},
+ {"br.ctop.dptk", BR (7, 0, 2, 0) | PSEUDO | MOD_RRBS},
+ {"br.ctop.dptk.few.clr", BR (7, 0, 2, 1) | MOD_RRBS},
+ {"br.ctop.dptk.clr", BR (7, 0, 2, 1) | PSEUDO | MOD_RRBS},
+ {"br.ctop.dpnt.few", BR (7, 0, 3, 0) | MOD_RRBS},
+ {"br.ctop.dpnt", BR (7, 0, 3, 0) | PSEUDO | MOD_RRBS},
+ {"br.ctop.dpnt.few.clr", BR (7, 0, 3, 1) | MOD_RRBS},
+ {"br.ctop.dpnt.clr", BR (7, 0, 3, 1) | PSEUDO | MOD_RRBS},
+ {"br.ctop.sptk.many", BR (7, 1, 0, 0) | MOD_RRBS},
+ {"br.ctop.sptk.many.clr", BR (7, 1, 0, 1) | MOD_RRBS},
+ {"br.ctop.spnt.many", BR (7, 1, 1, 0) | MOD_RRBS},
+ {"br.ctop.spnt.many.clr", BR (7, 1, 1, 1) | MOD_RRBS},
+ {"br.ctop.dptk.many", BR (7, 1, 2, 0) | MOD_RRBS},
+ {"br.ctop.dptk.many.clr", BR (7, 1, 2, 1) | MOD_RRBS},
+ {"br.ctop.dpnt.many", BR (7, 1, 3, 0) | MOD_RRBS},
+ {"br.ctop.dpnt.many.clr", BR (7, 1, 3, 1) | MOD_RRBS},
+
+#undef BR
+#define BR(a,b,c,d) \
+ B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2
+ {"br.call.sptk.few", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}},
+ {"br.call.sptk", B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO},
+ {"br.call.sptk.few.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}},
+ {"br.call.sptk.clr", B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO},
+ {"br.call.spnt.few", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}},
+ {"br.call.spnt", B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO},
+ {"br.call.spnt.few.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}},
+ {"br.call.spnt.clr", B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO},
+ {"br.call.dptk.few", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}},
+ {"br.call.dptk", B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO},
+ {"br.call.dptk.few.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}},
+ {"br.call.dptk.clr", B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO},
+ {"br.call.dpnt.few", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}},
+ {"br.call.dpnt", B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO},
+ {"br.call.dpnt.few.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}},
+ {"br.call.dpnt.clr", B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO},
+ {"br.call.sptk.many", B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}},
+ {"br.call.sptk.many.clr", B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}},
+ {"br.call.spnt.many", B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}},
+ {"br.call.spnt.many.clr", B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}},
+ {"br.call.dptk.many", B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}},
+ {"br.call.dptk.many.clr", B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}},
+ {"br.call.dpnt.many", B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}},
+ {"br.call.dpnt.many.clr", B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}},
+#undef BR
+
+ /* branch predict */
+#define BRP(a,b) \
+ B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED
+ {"brp.sptk", BRP (0, 0)},
+ {"brp.loop", BRP (0, 1)},
+ {"brp.dptk", BRP (0, 2)},
+ {"brp.exit", BRP (0, 3)},
+ {"brp.sptk.imp", BRP (1, 0)},
+ {"brp.loop.imp", BRP (1, 1)},
+ {"brp.dptk.imp", BRP (1, 2)},
+ {"brp.exit.imp", BRP (1, 3)},
+#undef BRP
+
+ {0}
+ };
+
+#undef B0
+#undef B
+#undef bBtype
+#undef bD
+#undef bIh
+#undef bPa
+#undef bPr
+#undef bWha
+#undef bWhb
+#undef bX6
+#undef mBtype
+#undef mD
+#undef mIh
+#undef mPa
+#undef mPr
+#undef mWha
+#undef mWhb
+#undef mX6
+#undef OpX6
+#undef OpPaWhaD
+#undef OpBtypePaWhaD
+#undef OpBtypePaWhaDPr
+#undef OpX6BtypePaWhaD
+#undef OpX6BtypePaWhaDPr
+#undef OpIhWhb
+#undef OpX6IhWhb
diff --git a/opcodes/ia64-opc-d.c b/opcodes/ia64-opc-d.c
new file mode 100644
index 00000000000..6021d3b8daf
--- /dev/null
+++ b/opcodes/ia64-opc-d.c
@@ -0,0 +1,12 @@
+struct ia64_opcode ia64_opcodes_d[] =
+ {
+ {"add", IA64_TYPE_DYN, 1, 0, 0,
+ {IA64_OPND_R1, IA64_OPND_IMM22, IA64_OPND_R3}},
+ {"break", IA64_TYPE_DYN, 0, 0, 0, {IA64_OPND_IMMU21}},
+ {"chk.s", IA64_TYPE_DYN, 0, 0, 0, {IA64_OPND_R2, IA64_OPND_TGT25b}},
+ {"mov", IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_R1, IA64_OPND_AR3}},
+ {"mov", IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_AR3, IA64_OPND_IMM8}},
+ {"mov", IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_AR3, IA64_OPND_R2}},
+ {"nop", IA64_TYPE_DYN, 0, 0, 0, {IA64_OPND_IMMU21}},
+ {0}
+ };
diff --git a/opcodes/ia64-opc-f.c b/opcodes/ia64-opc-f.c
new file mode 100644
index 00000000000..9b5bc6a0cc6
--- /dev/null
+++ b/opcodes/ia64-opc-f.c
@@ -0,0 +1,631 @@
+/* ia64-opc-f.c -- IA-64 `F' opcode table.
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+ This file is part of GDB, GAS, and the GNU binutils.
+
+ GDB, GAS, and the GNU binutils are free software; you can redistribute
+ them and/or modify them under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either version
+ 2, or (at your option) any later version.
+
+ GDB, GAS, and the GNU binutils are distributed in the hope that they
+ 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 file; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#include "ia64-opc.h"
+
+#define f0 IA64_TYPE_F, 0
+#define f IA64_TYPE_F, 1
+#define f2 IA64_TYPE_F, 2
+
+#define bF2(x) (((ia64_insn) ((x) & 0x7f)) << 13)
+#define bF4(x) (((ia64_insn) ((x) & 0x7f)) << 27)
+#define bQ(x) (((ia64_insn) ((x) & 0x1)) << 36)
+#define bRa(x) (((ia64_insn) ((x) & 0x1)) << 33)
+#define bRb(x) (((ia64_insn) ((x) & 0x1)) << 36)
+#define bSf(x) (((ia64_insn) ((x) & 0x3)) << 34)
+#define bTa(x) (((ia64_insn) ((x) & 0x1)) << 12)
+#define bXa(x) (((ia64_insn) ((x) & 0x1)) << 36)
+#define bXb(x) (((ia64_insn) ((x) & 0x1)) << 33)
+#define bX2(x) (((ia64_insn) ((x) & 0x3)) << 34)
+#define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27)
+
+#define mF2 bF2 (-1)
+#define mF4 bF4 (-1)
+#define mQ bQ (-1)
+#define mRa bRa (-1)
+#define mRb bRb (-1)
+#define mSf bSf (-1)
+#define mTa bTa (-1)
+#define mXa bXa (-1)
+#define mXb bXb (-1)
+#define mX2 bX2 (-1)
+#define mX6 bX6 (-1)
+
+#define OpXa(a,b) (bOp (a) | bXa (b)), (mOp | mXa)
+#define OpXaSf(a,b,c) (bOp (a) | bXa (b) | bSf (c)), (mOp | mXa | mSf)
+#define OpXaSfF2(a,b,c,d) \
+ (bOp (a) | bXa (b) | bSf (c) | bF2 (d)), (mOp | mXa | mSf | mF2)
+#define OpXaSfF4(a,b,c,d) \
+ (bOp (a) | bXa (b) | bSf (c) | bF4 (d)), (mOp | mXa | mSf | mF4)
+#define OpXaSfF2F4(a,b,c,d,e) \
+ (bOp (a) | bXa (b) | bSf (c) | bF2 (d) | bF4 (e)), \
+ (mOp | mXa | mSf | mF2 | mF4)
+#define OpXaX2(a,b,c) (bOp (a) | bXa (b) | bX2 (c)), (mOp | mXa | mX2)
+#define OpXaX2F2(a,b,c,d) \
+ (bOp (a) | bXa (b) | bX2 (c) | bF2 (d)), (mOp | mXa | mX2 | mF2)
+#define OpRaRbTaSf(a,b,c,d,e) \
+ (bOp (a) | bRa (b) | bRb (c) | bTa (d) | bSf (e)), \
+ (mOp | mRa | mRb | mTa | mSf)
+#define OpTa(a,b) (bOp (a) | bTa (b)), (mOp | mTa)
+#define OpXbQSf(a,b,c,d) \
+ (bOp (a) | bXb (b) | bQ (c) | bSf (d)), (mOp | mXb | mQ | mSf)
+#define OpXbX6(a,b,c) \
+ (bOp (a) | bXb (b) | bX6 (c)), (mOp | mXb | mX6)
+#define OpXbX6F2(a,b,c,d) \
+ (bOp (a) | bXb (b) | bX6 (c) | bF2 (d)), (mOp | mXb | mX6 | mF2)
+#define OpXbX6Sf(a,b,c,d) \
+ (bOp (a) | bXb (b) | bX6 (c) | bSf (d)), (mOp | mXb | mX6 | mSf)
+
+struct ia64_opcode ia64_opcodes_f[] =
+ {
+ /* F-type instruction encodings (sorted according to major opcode) */
+
+ {"frcpa.s0", f2, OpXbQSf (0, 1, 0, 0), {F1, P2, F2, F3}},
+ {"frcpa", f2, OpXbQSf (0, 1, 0, 0), {F1, P2, F2, F3}, PSEUDO},
+ {"frcpa.s1", f2, OpXbQSf (0, 1, 0, 1), {F1, P2, F2, F3}},
+ {"frcpa.s2", f2, OpXbQSf (0, 1, 0, 2), {F1, P2, F2, F3}},
+ {"frcpa.s3", f2, OpXbQSf (0, 1, 0, 3), {F1, P2, F2, F3}},
+
+ {"frsqrta.s0", f2, OpXbQSf (0, 1, 1, 0), {F1, P2, F3}},
+ {"frsqrta", f2, OpXbQSf (0, 1, 1, 0), {F1, P2, F3}, PSEUDO},
+ {"frsqrta.s1", f2, OpXbQSf (0, 1, 1, 1), {F1, P2, F3}},
+ {"frsqrta.s2", f2, OpXbQSf (0, 1, 1, 2), {F1, P2, F3}},
+ {"frsqrta.s3", f2, OpXbQSf (0, 1, 1, 3), {F1, P2, F3}},
+
+ {"fmin.s0", f, OpXbX6Sf (0, 0, 0x14, 0), {F1, F2, F3}},
+ {"fmin", f, OpXbX6Sf (0, 0, 0x14, 0), {F1, F2, F3}, PSEUDO},
+ {"fmin.s1", f, OpXbX6Sf (0, 0, 0x14, 1), {F1, F2, F3}},
+ {"fmin.s2", f, OpXbX6Sf (0, 0, 0x14, 2), {F1, F2, F3}},
+ {"fmin.s3", f, OpXbX6Sf (0, 0, 0x14, 3), {F1, F2, F3}},
+ {"fmax.s0", f, OpXbX6Sf (0, 0, 0x15, 0), {F1, F2, F3}},
+ {"fmax", f, OpXbX6Sf (0, 0, 0x15, 0), {F1, F2, F3}, PSEUDO},
+ {"fmax.s1", f, OpXbX6Sf (0, 0, 0x15, 1), {F1, F2, F3}},
+ {"fmax.s2", f, OpXbX6Sf (0, 0, 0x15, 2), {F1, F2, F3}},
+ {"fmax.s3", f, OpXbX6Sf (0, 0, 0x15, 3), {F1, F2, F3}},
+ {"famin.s0", f, OpXbX6Sf (0, 0, 0x16, 0), {F1, F2, F3}},
+ {"famin", f, OpXbX6Sf (0, 0, 0x16, 0), {F1, F2, F3}, PSEUDO},
+ {"famin.s1", f, OpXbX6Sf (0, 0, 0x16, 1), {F1, F2, F3}},
+ {"famin.s2", f, OpXbX6Sf (0, 0, 0x16, 2), {F1, F2, F3}},
+ {"famin.s3", f, OpXbX6Sf (0, 0, 0x16, 3), {F1, F2, F3}},
+ {"famax.s0", f, OpXbX6Sf (0, 0, 0x17, 0), {F1, F2, F3}},
+ {"famax", f, OpXbX6Sf (0, 0, 0x17, 0), {F1, F2, F3}, PSEUDO},
+ {"famax.s1", f, OpXbX6Sf (0, 0, 0x17, 1), {F1, F2, F3}},
+ {"famax.s2", f, OpXbX6Sf (0, 0, 0x17, 2), {F1, F2, F3}},
+ {"famax.s3", f, OpXbX6Sf (0, 0, 0x17, 3), {F1, F2, F3}},
+
+ {"mov", f, OpXbX6 (0, 0, 0x10), {F1, F3}, PSEUDO | F2_EQ_F3},
+ {"fabs", f, OpXbX6F2 (0, 0, 0x10, 0), {F1, F3}, PSEUDO},
+ {"fneg", f, OpXbX6 (0, 0, 0x11), {F1, F3}, PSEUDO | F2_EQ_F3},
+ {"fnegabs", f, OpXbX6F2 (0, 0, 0x11, 0), {F1, F3}, PSEUDO},
+ {"fmerge.s", f, OpXbX6 (0, 0, 0x10), {F1, F2, F3}},
+ {"fmerge.ns", f, OpXbX6 (0, 0, 0x11), {F1, F2, F3}},
+
+ {"fmerge.se", f, OpXbX6 (0, 0, 0x12), {F1, F2, F3}},
+ {"fmix.lr", f, OpXbX6 (0, 0, 0x39), {F1, F2, F3}},
+ {"fmix.r", f, OpXbX6 (0, 0, 0x3a), {F1, F2, F3}},
+ {"fmix.l", f, OpXbX6 (0, 0, 0x3b), {F1, F2, F3}},
+ {"fsxt.r", f, OpXbX6 (0, 0, 0x3c), {F1, F2, F3}},
+ {"fsxt.l", f, OpXbX6 (0, 0, 0x3d), {F1, F2, F3}},
+ {"fpack", f, OpXbX6 (0, 0, 0x28), {F1, F2, F3}},
+ {"fswap", f, OpXbX6 (0, 0, 0x34), {F1, F2, F3}},
+ {"fswap.nl", f, OpXbX6 (0, 0, 0x35), {F1, F2, F3}},
+ {"fswap.nr", f, OpXbX6 (0, 0, 0x36), {F1, F2, F3}},
+ {"fand", f, OpXbX6 (0, 0, 0x2c), {F1, F2, F3}},
+ {"fandcm", f, OpXbX6 (0, 0, 0x2d), {F1, F2, F3}},
+ {"for", f, OpXbX6 (0, 0, 0x2e), {F1, F2, F3}},
+ {"fxor", f, OpXbX6 (0, 0, 0x2f), {F1, F2, F3}},
+
+ {"fcvt.fx.s0", f, OpXbX6Sf (0, 0, 0x18, 0), {F1, F2}},
+ {"fcvt.fx", f, OpXbX6Sf (0, 0, 0x18, 0), {F1, F2}, PSEUDO},
+ {"fcvt.fx.s1", f, OpXbX6Sf (0, 0, 0x18, 1), {F1, F2}},
+ {"fcvt.fx.s2", f, OpXbX6Sf (0, 0, 0x18, 2), {F1, F2}},
+ {"fcvt.fx.s3", f, OpXbX6Sf (0, 0, 0x18, 3), {F1, F2}},
+ {"fcvt.fxu.s0", f, OpXbX6Sf (0, 0, 0x19, 0), {F1, F2}},
+ {"fcvt.fxu", f, OpXbX6Sf (0, 0, 0x19, 0), {F1, F2}, PSEUDO},
+ {"fcvt.fxu.s1", f, OpXbX6Sf (0, 0, 0x19, 1), {F1, F2}},
+ {"fcvt.fxu.s2", f, OpXbX6Sf (0, 0, 0x19, 2), {F1, F2}},
+ {"fcvt.fxu.s3", f, OpXbX6Sf (0, 0, 0x19, 3), {F1, F2}},
+ {"fcvt.fx.trunc.s0", f, OpXbX6Sf (0, 0, 0x1a, 0), {F1, F2}},
+ {"fcvt.fx.trunc", f, OpXbX6Sf (0, 0, 0x1a, 0), {F1, F2}, PSEUDO},
+ {"fcvt.fx.trunc.s1", f, OpXbX6Sf (0, 0, 0x1a, 1), {F1, F2}},
+ {"fcvt.fx.trunc.s2", f, OpXbX6Sf (0, 0, 0x1a, 2), {F1, F2}},
+ {"fcvt.fx.trunc.s3", f, OpXbX6Sf (0, 0, 0x1a, 3), {F1, F2}},
+ {"fcvt.fxu.trunc.s0", f, OpXbX6Sf (0, 0, 0x1b, 0), {F1, F2}},
+ {"fcvt.fxu.trunc", f, OpXbX6Sf (0, 0, 0x1b, 0), {F1, F2}, PSEUDO},
+ {"fcvt.fxu.trunc.s1", f, OpXbX6Sf (0, 0, 0x1b, 1), {F1, F2}},
+ {"fcvt.fxu.trunc.s2", f, OpXbX6Sf (0, 0, 0x1b, 2), {F1, F2}},
+ {"fcvt.fxu.trunc.s3", f, OpXbX6Sf (0, 0, 0x1b, 3), {F1, F2}},
+
+ {"fcvt.xf", f, OpXbX6 (0, 0, 0x1c), {F1, F2}},
+
+ {"fsetc.s0", f0, OpXbX6Sf (0, 0, 0x04, 0), {IMMU7a, IMMU7b}},
+ {"fsetc", f0, OpXbX6Sf (0, 0, 0x04, 0), {IMMU7a, IMMU7b}, PSEUDO},
+ {"fsetc.s1", f0, OpXbX6Sf (0, 0, 0x04, 1), {IMMU7a, IMMU7b}},
+ {"fsetc.s2", f0, OpXbX6Sf (0, 0, 0x04, 2), {IMMU7a, IMMU7b}},
+ {"fsetc.s3", f0, OpXbX6Sf (0, 0, 0x04, 3), {IMMU7a, IMMU7b}},
+ {"fclrf.s0", f0, OpXbX6Sf (0, 0, 0x05, 0)},
+ {"fclrf", f0, OpXbX6Sf (0, 0, 0x05, 0), {0}, PSEUDO},
+ {"fclrf.s1", f0, OpXbX6Sf (0, 0, 0x05, 1)},
+ {"fclrf.s2", f0, OpXbX6Sf (0, 0, 0x05, 2)},
+ {"fclrf.s3", f0, OpXbX6Sf (0, 0, 0x05, 3)},
+ {"fchkf.s0", f0, OpXbX6Sf (0, 0, 0x08, 0), {TGT25}},
+ {"fchkf", f0, OpXbX6Sf (0, 0, 0x08, 0), {TGT25}, PSEUDO},
+ {"fchkf.s1", f0, OpXbX6Sf (0, 0, 0x08, 1), {TGT25}},
+ {"fchkf.s2", f0, OpXbX6Sf (0, 0, 0x08, 2), {TGT25}},
+ {"fchkf.s3", f0, OpXbX6Sf (0, 0, 0x08, 3), {TGT25}},
+
+ {"break.f", f0, OpXbX6 (0, 0, 0x00), {IMMU21}},
+ {"nop.f", f0, OpXbX6 (0, 0, 0x01), {IMMU21}},
+
+ {"fprcpa.s0", f2, OpXbQSf (1, 1, 0, 0), {F1, P2, F2, F3}},
+ {"fprcpa", f2, OpXbQSf (1, 1, 0, 0), {F1, P2, F2, F3}, PSEUDO},
+ {"fprcpa.s1", f2, OpXbQSf (1, 1, 0, 1), {F1, P2, F2, F3}},
+ {"fprcpa.s2", f2, OpXbQSf (1, 1, 0, 2), {F1, P2, F2, F3}},
+ {"fprcpa.s3", f2, OpXbQSf (1, 1, 0, 3), {F1, P2, F2, F3}},
+
+ {"fprsqrta.s0", f2, OpXbQSf (1, 1, 1, 0), {F1, P2, F3}},
+ {"fprsqrta", f2, OpXbQSf (1, 1, 1, 0), {F1, P2, F3}, PSEUDO},
+ {"fprsqrta.s1", f2, OpXbQSf (1, 1, 1, 1), {F1, P2, F3}},
+ {"fprsqrta.s2", f2, OpXbQSf (1, 1, 1, 2), {F1, P2, F3}},
+ {"fprsqrta.s3", f2, OpXbQSf (1, 1, 1, 3), {F1, P2, F3}},
+
+ {"fpmin.s0", f, OpXbX6Sf (1, 0, 0x14, 0), {F1, F2, F3}},
+ {"fpmin", f, OpXbX6Sf (1, 0, 0x14, 0), {F1, F2, F3}, PSEUDO},
+ {"fpmin.s1", f, OpXbX6Sf (1, 0, 0x14, 1), {F1, F2, F3}},
+ {"fpmin.s2", f, OpXbX6Sf (1, 0, 0x14, 2), {F1, F2, F3}},
+ {"fpmin.s3", f, OpXbX6Sf (1, 0, 0x14, 3), {F1, F2, F3}},
+ {"fpmax.s0", f, OpXbX6Sf (1, 0, 0x15, 0), {F1, F2, F3}},
+ {"fpmax", f, OpXbX6Sf (1, 0, 0x15, 0), {F1, F2, F3}, PSEUDO},
+ {"fpmax.s1", f, OpXbX6Sf (1, 0, 0x15, 1), {F1, F2, F3}},
+ {"fpmax.s2", f, OpXbX6Sf (1, 0, 0x15, 2), {F1, F2, F3}},
+ {"fpmax.s3", f, OpXbX6Sf (1, 0, 0x15, 3), {F1, F2, F3}},
+ {"fpamin.s0", f, OpXbX6Sf (1, 0, 0x16, 0), {F1, F2, F3}},
+ {"fpamin", f, OpXbX6Sf (1, 0, 0x16, 0), {F1, F2, F3}, PSEUDO},
+ {"fpamin.s1", f, OpXbX6Sf (1, 0, 0x16, 1), {F1, F2, F3}},
+ {"fpamin.s2", f, OpXbX6Sf (1, 0, 0x16, 2), {F1, F2, F3}},
+ {"fpamin.s3", f, OpXbX6Sf (1, 0, 0x16, 3), {F1, F2, F3}},
+ {"fpamax.s0", f, OpXbX6Sf (1, 0, 0x17, 0), {F1, F2, F3}},
+ {"fpamax", f, OpXbX6Sf (1, 0, 0x17, 0), {F1, F2, F3}, PSEUDO},
+ {"fpamax.s1", f, OpXbX6Sf (1, 0, 0x17, 1), {F1, F2, F3}},
+ {"fpamax.s2", f, OpXbX6Sf (1, 0, 0x17, 2), {F1, F2, F3}},
+ {"fpamax.s3", f, OpXbX6Sf (1, 0, 0x17, 3), {F1, F2, F3}},
+ {"fpcmp.eq.s0", f, OpXbX6Sf (1, 0, 0x30, 0), {F1, F2, F3}},
+ {"fpcmp.eq", f, OpXbX6Sf (1, 0, 0x30, 0), {F1, F2, F3}, PSEUDO},
+ {"fpcmp.eq.s1", f, OpXbX6Sf (1, 0, 0x30, 1), {F1, F2, F3}},
+ {"fpcmp.eq.s2", f, OpXbX6Sf (1, 0, 0x30, 2), {F1, F2, F3}},
+ {"fpcmp.eq.s3", f, OpXbX6Sf (1, 0, 0x30, 3), {F1, F2, F3}},
+ {"fpcmp.lt.s0", f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F2, F3}},
+ {"fpcmp.lt", f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F2, F3}, PSEUDO},
+ {"fpcmp.lt.s1", f, OpXbX6Sf (1, 0, 0x31, 1), {F1, F2, F3}},
+ {"fpcmp.lt.s2", f, OpXbX6Sf (1, 0, 0x31, 2), {F1, F2, F3}},
+ {"fpcmp.lt.s3", f, OpXbX6Sf (1, 0, 0x31, 3), {F1, F2, F3}},
+ {"fpcmp.le.s0", f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F2, F3}},
+ {"fpcmp.le", f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F2, F3}, PSEUDO},
+ {"fpcmp.le.s1", f, OpXbX6Sf (1, 0, 0x32, 1), {F1, F2, F3}},
+ {"fpcmp.le.s2", f, OpXbX6Sf (1, 0, 0x32, 2), {F1, F2, F3}},
+ {"fpcmp.le.s3", f, OpXbX6Sf (1, 0, 0x32, 3), {F1, F2, F3}},
+ {"fpcmp.unord.s0", f, OpXbX6Sf (1, 0, 0x33, 0), {F1, F2, F3}},
+ {"fpcmp.unord", f, OpXbX6Sf (1, 0, 0x33, 0), {F1, F2, F3}, PSEUDO},
+ {"fpcmp.unord.s1", f, OpXbX6Sf (1, 0, 0x33, 1), {F1, F2, F3}},
+ {"fpcmp.unord.s2", f, OpXbX6Sf (1, 0, 0x33, 2), {F1, F2, F3}},
+ {"fpcmp.unord.s3", f, OpXbX6Sf (1, 0, 0x33, 3), {F1, F2, F3}},
+ {"fpcmp.neq.s0", f, OpXbX6Sf (1, 0, 0x34, 0), {F1, F2, F3}},
+ {"fpcmp.neq", f, OpXbX6Sf (1, 0, 0x34, 0), {F1, F2, F3}, PSEUDO},
+ {"fpcmp.neq.s1", f, OpXbX6Sf (1, 0, 0x34, 1), {F1, F2, F3}},
+ {"fpcmp.neq.s2", f, OpXbX6Sf (1, 0, 0x34, 2), {F1, F2, F3}},
+ {"fpcmp.neq.s3", f, OpXbX6Sf (1, 0, 0x34, 3), {F1, F2, F3}},
+ {"fpcmp.nlt.s0", f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F2, F3}},
+ {"fpcmp.nlt", f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F2, F3}, PSEUDO},
+ {"fpcmp.nlt.s1", f, OpXbX6Sf (1, 0, 0x35, 1), {F1, F2, F3}},
+ {"fpcmp.nlt.s2", f, OpXbX6Sf (1, 0, 0x35, 2), {F1, F2, F3}},
+ {"fpcmp.nlt.s3", f, OpXbX6Sf (1, 0, 0x35, 3), {F1, F2, F3}},
+ {"fpcmp.nle.s0", f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F2, F3}},
+ {"fpcmp.nle", f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F2, F3}, PSEUDO},
+ {"fpcmp.nle.s1", f, OpXbX6Sf (1, 0, 0x36, 1), {F1, F2, F3}},
+ {"fpcmp.nle.s2", f, OpXbX6Sf (1, 0, 0x36, 2), {F1, F2, F3}},
+ {"fpcmp.nle.s3", f, OpXbX6Sf (1, 0, 0x36, 3), {F1, F2, F3}},
+ {"fpcmp.ord.s0", f, OpXbX6Sf (1, 0, 0x37, 0), {F1, F2, F3}},
+ {"fpcmp.ord", f, OpXbX6Sf (1, 0, 0x37, 0), {F1, F2, F3}, PSEUDO},
+ {"fpcmp.ord.s1", f, OpXbX6Sf (1, 0, 0x37, 1), {F1, F2, F3}},
+ {"fpcmp.ord.s2", f, OpXbX6Sf (1, 0, 0x37, 2), {F1, F2, F3}},
+ {"fpcmp.ord.s3", f, OpXbX6Sf (1, 0, 0x37, 3), {F1, F2, F3}},
+
+ {"fpabs", f, OpXbX6F2 (1, 0, 0x10, 0), {F1, F3}, PSEUDO},
+ {"fpneg", f, OpXbX6 (1, 0, 0x11), {F1, F3}, PSEUDO | F2_EQ_F3},
+ {"fpnegabs", f, OpXbX6F2 (1, 0, 0x11, 0), {F1, F3}, PSEUDO},
+ {"fpmerge.s", f, OpXbX6 (1, 0, 0x10), {F1, F2, F3}},
+ {"fpmerge.ns", f, OpXbX6 (1, 0, 0x11), {F1, F2, F3}},
+ {"fpmerge.se", f, OpXbX6 (1, 0, 0x12), {F1, F2, F3}},
+
+ {"fpcvt.fx.s0", f, OpXbX6Sf (1, 0, 0x18, 0), {F1, F2}},
+ {"fpcvt.fx", f, OpXbX6Sf (1, 0, 0x18, 0), {F1, F2}, PSEUDO},
+ {"fpcvt.fx.s1", f, OpXbX6Sf (1, 0, 0x18, 1), {F1, F2}},
+ {"fpcvt.fx.s2", f, OpXbX6Sf (1, 0, 0x18, 2), {F1, F2}},
+ {"fpcvt.fx.s3", f, OpXbX6Sf (1, 0, 0x18, 3), {F1, F2}},
+ {"fpcvt.fxu.s0", f, OpXbX6Sf (1, 0, 0x19, 0), {F1, F2}},
+ {"fpcvt.fxu", f, OpXbX6Sf (1, 0, 0x19, 0), {F1, F2}, PSEUDO},
+ {"fpcvt.fxu.s1", f, OpXbX6Sf (1, 0, 0x19, 1), {F1, F2}},
+ {"fpcvt.fxu.s2", f, OpXbX6Sf (1, 0, 0x19, 2), {F1, F2}},
+ {"fpcvt.fxu.s3", f, OpXbX6Sf (1, 0, 0x19, 3), {F1, F2}},
+ {"fpcvt.fx.trunc.s0", f, OpXbX6Sf (1, 0, 0x1a, 0), {F1, F2}},
+ {"fpcvt.fx.trunc", f, OpXbX6Sf (1, 0, 0x1a, 0), {F1, F2}, PSEUDO},
+ {"fpcvt.fx.trunc.s1", f, OpXbX6Sf (1, 0, 0x1a, 1), {F1, F2}},
+ {"fpcvt.fx.trunc.s2", f, OpXbX6Sf (1, 0, 0x1a, 2), {F1, F2}},
+ {"fpcvt.fx.trunc.s3", f, OpXbX6Sf (1, 0, 0x1a, 3), {F1, F2}},
+ {"fpcvt.fxu.trunc.s0", f, OpXbX6Sf (1, 0, 0x1b, 0), {F1, F2}},
+ {"fpcvt.fxu.trunc", f, OpXbX6Sf (1, 0, 0x1b, 0), {F1, F2}, PSEUDO},
+ {"fpcvt.fxu.trunc.s1", f, OpXbX6Sf (1, 0, 0x1b, 1), {F1, F2}},
+ {"fpcvt.fxu.trunc.s2", f, OpXbX6Sf (1, 0, 0x1b, 2), {F1, F2}},
+ {"fpcvt.fxu.trunc.s3", f, OpXbX6Sf (1, 0, 0x1b, 3), {F1, F2}},
+
+ {"fcmp.eq.s0", f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P1, P2, F2, F3}},
+ {"fcmp.eq", f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P1, P2, F2, F3}, PSEUDO},
+ {"fcmp.eq.s1", f2, OpRaRbTaSf (4, 0, 0, 0, 1), {P1, P2, F2, F3}},
+ {"fcmp.eq.s2", f2, OpRaRbTaSf (4, 0, 0, 0, 2), {P1, P2, F2, F3}},
+ {"fcmp.eq.s3", f2, OpRaRbTaSf (4, 0, 0, 0, 3), {P1, P2, F2, F3}},
+ {"fcmp.lt.s0", f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F2, F3}},
+ {"fcmp.lt", f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F2, F3}, PSEUDO},
+ {"fcmp.lt.s1", f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P1, P2, F2, F3}},
+ {"fcmp.lt.s2", f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P1, P2, F2, F3}},
+ {"fcmp.lt.s3", f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P1, P2, F2, F3}},
+ {"fcmp.le.s0", f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F2, F3}},
+ {"fcmp.le", f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F2, F3}, PSEUDO},
+ {"fcmp.le.s1", f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P1, P2, F2, F3}},
+ {"fcmp.le.s2", f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P1, P2, F2, F3}},
+ {"fcmp.le.s3", f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P1, P2, F2, F3}},
+ {"fcmp.unord.s0", f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P1, P2, F2, F3}},
+ {"fcmp.unord", f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P1, P2, F2, F3}, PSEUDO},
+ {"fcmp.unord.s1", f2, OpRaRbTaSf (4, 1, 1, 0, 1), {P1, P2, F2, F3}},
+ {"fcmp.unord.s2", f2, OpRaRbTaSf (4, 1, 1, 0, 2), {P1, P2, F2, F3}},
+ {"fcmp.unord.s3", f2, OpRaRbTaSf (4, 1, 1, 0, 3), {P1, P2, F2, F3}},
+ {"fcmp.eq.unc.s0", f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P1, P2, F2, F3}},
+ {"fcmp.eq.unc", f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P1, P2, F2, F3}, PSEUDO},
+ {"fcmp.eq.unc.s1", f2, OpRaRbTaSf (4, 0, 0, 1, 1), {P1, P2, F2, F3}},
+ {"fcmp.eq.unc.s2", f2, OpRaRbTaSf (4, 0, 0, 1, 2), {P1, P2, F2, F3}},
+ {"fcmp.eq.unc.s3", f2, OpRaRbTaSf (4, 0, 0, 1, 3), {P1, P2, F2, F3}},
+ {"fcmp.lt.unc.s0", f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F2, F3}},
+ {"fcmp.lt.unc", f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F2, F3}, PSEUDO},
+ {"fcmp.lt.unc.s1", f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P1, P2, F2, F3}},
+ {"fcmp.lt.unc.s2", f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P1, P2, F2, F3}},
+ {"fcmp.lt.unc.s3", f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P1, P2, F2, F3}},
+ {"fcmp.le.unc.s0", f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F2, F3}},
+ {"fcmp.le.unc", f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F2, F3}, PSEUDO},
+ {"fcmp.le.unc.s1", f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P1, P2, F2, F3}},
+ {"fcmp.le.unc.s2", f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P1, P2, F2, F3}},
+ {"fcmp.le.unc.s3", f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P1, P2, F2, F3}},
+ {"fcmp.unord.unc.s0", f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P1, P2, F2, F3}},
+ {"fcmp.unord.unc", f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P1, P2, F2, F3}, PSEUDO},
+ {"fcmp.unord.unc.s1", f2, OpRaRbTaSf (4, 1, 1, 1, 1), {P1, P2, F2, F3}},
+ {"fcmp.unord.unc.s2", f2, OpRaRbTaSf (4, 1, 1, 1, 2), {P1, P2, F2, F3}},
+ {"fcmp.unord.unc.s3", f2, OpRaRbTaSf (4, 1, 1, 1, 3), {P1, P2, F2, F3}},
+
+ /* pseudo-ops of the above */
+ {"fcmp.gt.s0", f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F3, F2}},
+ {"fcmp.gt", f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F3, F2}, PSEUDO},
+ {"fcmp.gt.s1", f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P1, P2, F3, F2}},
+ {"fcmp.gt.s2", f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P1, P2, F3, F2}},
+ {"fcmp.gt.s3", f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P1, P2, F3, F2}},
+ {"fcmp.ge.s0", f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F3, F2}},
+ {"fcmp.ge", f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F3, F2}, PSEUDO},
+ {"fcmp.ge.s1", f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P1, P2, F3, F2}},
+ {"fcmp.ge.s2", f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P1, P2, F3, F2}},
+ {"fcmp.ge.s3", f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P1, P2, F3, F2}},
+ {"fcmp.neq.s0", f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P2, P1, F2, F3}},
+ {"fcmp.neq", f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P2, P1, F2, F3}, PSEUDO},
+ {"fcmp.neq.s1", f2, OpRaRbTaSf (4, 0, 0, 0, 1), {P2, P1, F2, F3}},
+ {"fcmp.neq.s2", f2, OpRaRbTaSf (4, 0, 0, 0, 2), {P2, P1, F2, F3}},
+ {"fcmp.neq.s3", f2, OpRaRbTaSf (4, 0, 0, 0, 3), {P2, P1, F2, F3}},
+ {"fcmp.nlt.s0", f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F2, F3}},
+ {"fcmp.nlt", f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F2, F3}, PSEUDO},
+ {"fcmp.nlt.s1", f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P2, P1, F2, F3}},
+ {"fcmp.nlt.s2", f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P2, P1, F2, F3}},
+ {"fcmp.nlt.s3", f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P2, P1, F2, F3}},
+ {"fcmp.nle.s0", f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F2, F3}},
+ {"fcmp.nle", f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F2, F3}, PSEUDO},
+ {"fcmp.nle.s1", f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P2, P1, F2, F3}},
+ {"fcmp.nle.s2", f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P2, P1, F2, F3}},
+ {"fcmp.nle.s3", f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P2, P1, F2, F3}},
+ {"fcmp.ngt.s0", f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F3, F2}},
+ {"fcmp.ngt", f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F3, F2}, PSEUDO},
+ {"fcmp.ngt.s1", f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P2, P1, F3, F2}},
+ {"fcmp.ngt.s2", f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P2, P1, F3, F2}},
+ {"fcmp.ngt.s3", f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P2, P1, F3, F2}},
+ {"fcmp.nge.s0", f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F3, F2}},
+ {"fcmp.nge", f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F3, F2}, PSEUDO},
+ {"fcmp.nge.s1", f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P2, P1, F3, F2}},
+ {"fcmp.nge.s2", f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P2, P1, F3, F2}},
+ {"fcmp.nge.s3", f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P2, P1, F3, F2}},
+ {"fcmp.ord.s0", f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P2, P1, F2, F3}},
+ {"fcmp.ord", f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P2, P1, F2, F3}, PSEUDO},
+ {"fcmp.ord.s1", f2, OpRaRbTaSf (4, 1, 1, 0, 1), {P2, P1, F2, F3}},
+ {"fcmp.ord.s2", f2, OpRaRbTaSf (4, 1, 1, 0, 2), {P2, P1, F2, F3}},
+ {"fcmp.ord.s3", f2, OpRaRbTaSf (4, 1, 1, 0, 3), {P2, P1, F2, F3}},
+ {"fcmp.gt.unc.s0", f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F3, F2}},
+ {"fcmp.gt.unc", f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F3, F2}, PSEUDO},
+ {"fcmp.gt.unc.s1", f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P1, P2, F3, F2}},
+ {"fcmp.gt.unc.s2", f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P1, P2, F3, F2}},
+ {"fcmp.gt.unc.s3", f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P1, P2, F3, F2}},
+ {"fcmp.ge.unc.s0", f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F3, F2}},
+ {"fcmp.ge.unc", f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F3, F2}, PSEUDO},
+ {"fcmp.ge.unc.s1", f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P1, P2, F3, F2}},
+ {"fcmp.ge.unc.s2", f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P1, P2, F3, F2}},
+ {"fcmp.ge.unc.s3", f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P1, P2, F3, F2}},
+ {"fcmp.neq.unc.s0", f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P2, P1, F2, F3}},
+ {"fcmp.neq.unc", f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P2, P1, F2, F3}, PSEUDO},
+ {"fcmp.neq.unc.s1", f2, OpRaRbTaSf (4, 0, 0, 1, 1), {P2, P1, F2, F3}},
+ {"fcmp.neq.unc.s2", f2, OpRaRbTaSf (4, 0, 0, 1, 2), {P2, P1, F2, F3}},
+ {"fcmp.neq.unc.s3", f2, OpRaRbTaSf (4, 0, 0, 1, 3), {P2, P1, F2, F3}},
+ {"fcmp.nlt.unc.s0", f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F2, F3}},
+ {"fcmp.nlt.unc", f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F2, F3}, PSEUDO},
+ {"fcmp.nlt.unc.s1", f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P2, P1, F2, F3}},
+ {"fcmp.nlt.unc.s2", f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P2, P1, F2, F3}},
+ {"fcmp.nlt.unc.s3", f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P2, P1, F2, F3}},
+ {"fcmp.nle.unc.s0", f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F2, F3}},
+ {"fcmp.nle.unc", f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F2, F3}, PSEUDO},
+ {"fcmp.nle.unc.s1", f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P2, P1, F2, F3}},
+ {"fcmp.nle.unc.s2", f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P2, P1, F2, F3}},
+ {"fcmp.nle.unc.s3", f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P2, P1, F2, F3}},
+ {"fcmp.ngt.unc.s0", f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F3, F2}},
+ {"fcmp.ngt.unc", f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F3, F2}, PSEUDO},
+ {"fcmp.ngt.unc.s1", f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P2, P1, F3, F2}},
+ {"fcmp.ngt.unc.s2", f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P2, P1, F3, F2}},
+ {"fcmp.ngt.unc.s3", f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P2, P1, F3, F2}},
+ {"fcmp.nge.unc.s0", f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F3, F2}},
+ {"fcmp.nge.unc", f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F3, F2}, PSEUDO},
+ {"fcmp.nge.unc.s1", f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P2, P1, F3, F2}},
+ {"fcmp.nge.unc.s2", f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P2, P1, F3, F2}},
+ {"fcmp.nge.unc.s3", f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P2, P1, F3, F2}},
+ {"fcmp.ord.unc.s0", f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P2, P1, F2, F3}},
+ {"fcmp.ord.unc", f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P2, P1, F2, F3}, PSEUDO},
+ {"fcmp.ord.unc.s1", f2, OpRaRbTaSf (4, 1, 1, 1, 1), {P2, P1, F2, F3}},
+ {"fcmp.ord.unc.s2", f2, OpRaRbTaSf (4, 1, 1, 1, 2), {P2, P1, F2, F3}},
+ {"fcmp.ord.unc.s3", f2, OpRaRbTaSf (4, 1, 1, 1, 3), {P2, P1, F2, F3}},
+
+ {"fclass.m", f2, OpTa (5, 0), {P1, P2, F2, IMMU9}},
+ {"fclass.nm", f2, OpTa (5, 0), {P2, P1, F2, IMMU9}, PSEUDO},
+ {"fclass.m.unc", f2, OpTa (5, 1), {P1, P2, F2, IMMU9}},
+ {"fclass.nm.unc", f2, OpTa (5, 1), {P2, P1, F2, IMMU9}, PSEUDO},
+
+ /* note: fnorm and fcvt.xuf have identical encodings! */
+ {"fnorm.s0", f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO},
+ {"fnorm", f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO},
+ {"fnorm.s1", f, OpXaSfF2F4 (0x8, 0, 1, 0, 1), {F1, F3}, PSEUDO},
+ {"fnorm.s2", f, OpXaSfF2F4 (0x8, 0, 2, 0, 1), {F1, F3}, PSEUDO},
+ {"fnorm.s3", f, OpXaSfF2F4 (0x8, 0, 3, 0, 1), {F1, F3}, PSEUDO},
+ {"fnorm.s.s0", f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO},
+ {"fnorm.s", f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO},
+ {"fnorm.s.s1", f, OpXaSfF2F4 (0x8, 1, 1, 0, 1), {F1, F3}, PSEUDO},
+ {"fnorm.s.s2", f, OpXaSfF2F4 (0x8, 1, 2, 0, 1), {F1, F3}, PSEUDO},
+ {"fnorm.s.s3", f, OpXaSfF2F4 (0x8, 1, 3, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf.s0", f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf", f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf.s1", f, OpXaSfF2F4 (0x8, 0, 1, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf.s2", f, OpXaSfF2F4 (0x8, 0, 2, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf.s3", f, OpXaSfF2F4 (0x8, 0, 3, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf.s.s0", f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf.s", f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf.s.s1", f, OpXaSfF2F4 (0x8, 1, 1, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf.s.s2", f, OpXaSfF2F4 (0x8, 1, 2, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf.s.s3", f, OpXaSfF2F4 (0x8, 1, 3, 0, 1), {F1, F3}, PSEUDO},
+ {"fadd.s0", f, OpXaSfF4 (0x8, 0, 0, 1), {F1, F3, F2}, PSEUDO},
+ {"fadd", f, OpXaSfF4 (0x8, 0, 0, 1), {F1, F3, F2}, PSEUDO},
+ {"fadd.s1", f, OpXaSfF4 (0x8, 0, 1, 1), {F1, F3, F2}, PSEUDO},
+ {"fadd.s2", f, OpXaSfF4 (0x8, 0, 2, 1), {F1, F3, F2}, PSEUDO},
+ {"fadd.s3", f, OpXaSfF4 (0x8, 0, 3, 1), {F1, F3, F2}, PSEUDO},
+ {"fadd.s.s0", f, OpXaSfF4 (0x8, 1, 0, 1), {F1, F3, F2}, PSEUDO},
+ {"fadd.s", f, OpXaSfF4 (0x8, 1, 0, 1), {F1, F3, F2}, PSEUDO},
+ {"fadd.s.s1", f, OpXaSfF4 (0x8, 1, 1, 1), {F1, F3, F2}, PSEUDO},
+ {"fadd.s.s2", f, OpXaSfF4 (0x8, 1, 2, 1), {F1, F3, F2}, PSEUDO},
+ {"fadd.s.s3", f, OpXaSfF4 (0x8, 1, 3, 1), {F1, F3, F2}, PSEUDO},
+ {"fmpy.s0", f, OpXaSfF2 (0x8, 0, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fmpy", f, OpXaSfF2 (0x8, 0, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fmpy.s1", f, OpXaSfF2 (0x8, 0, 1, 0), {F1, F3, F4}, PSEUDO},
+ {"fmpy.s2", f, OpXaSfF2 (0x8, 0, 2, 0), {F1, F3, F4}, PSEUDO},
+ {"fmpy.s3", f, OpXaSfF2 (0x8, 0, 3, 0), {F1, F3, F4}, PSEUDO},
+ {"fmpy.s.s0", f, OpXaSfF2 (0x8, 1, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fmpy.s", f, OpXaSfF2 (0x8, 1, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fmpy.s.s1", f, OpXaSfF2 (0x8, 1, 1, 0), {F1, F3, F4}, PSEUDO},
+ {"fmpy.s.s2", f, OpXaSfF2 (0x8, 1, 2, 0), {F1, F3, F4}, PSEUDO},
+ {"fmpy.s.s3", f, OpXaSfF2 (0x8, 1, 3, 0), {F1, F3, F4}, PSEUDO},
+ {"fma.s0", f, OpXaSf (0x8, 0, 0), {F1, F3, F4, F2}},
+ {"fma", f, OpXaSf (0x8, 0, 0), {F1, F3, F4, F2}, PSEUDO},
+ {"fma.s1", f, OpXaSf (0x8, 0, 1), {F1, F3, F4, F2}},
+ {"fma.s2", f, OpXaSf (0x8, 0, 2), {F1, F3, F4, F2}},
+ {"fma.s3", f, OpXaSf (0x8, 0, 3), {F1, F3, F4, F2}},
+ {"fma.s.s0", f, OpXaSf (0x8, 1, 0), {F1, F3, F4, F2}},
+ {"fma.s", f, OpXaSf (0x8, 1, 0), {F1, F3, F4, F2}, PSEUDO},
+ {"fma.s.s1", f, OpXaSf (0x8, 1, 1), {F1, F3, F4, F2}},
+ {"fma.s.s2", f, OpXaSf (0x8, 1, 2), {F1, F3, F4, F2}},
+ {"fma.s.s3", f, OpXaSf (0x8, 1, 3), {F1, F3, F4, F2}},
+
+ {"fnorm.d.s0", f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO},
+ {"fnorm.d", f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO},
+ {"fnorm.d.s1", f, OpXaSfF2F4 (0x9, 0, 1, 0, 1), {F1, F3}, PSEUDO},
+ {"fnorm.d.s2", f, OpXaSfF2F4 (0x9, 0, 2, 0, 1), {F1, F3}, PSEUDO},
+ {"fnorm.d.s3", f, OpXaSfF2F4 (0x9, 0, 3, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf.d.s0", f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf.d", f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf.d.s1", f, OpXaSfF2F4 (0x9, 0, 1, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf.d.s2", f, OpXaSfF2F4 (0x9, 0, 2, 0, 1), {F1, F3}, PSEUDO},
+ {"fcvt.xuf.d.s3", f, OpXaSfF2F4 (0x9, 0, 3, 0, 1), {F1, F3}, PSEUDO},
+ {"fadd.d.s0", f, OpXaSfF4 (0x9, 0, 0, 1), {F1, F3, F2}, PSEUDO},
+ {"fadd.d", f, OpXaSfF4 (0x9, 0, 0, 1), {F1, F3, F2}, PSEUDO},
+ {"fadd.d.s1", f, OpXaSfF4 (0x9, 0, 1, 1), {F1, F3, F2}, PSEUDO},
+ {"fadd.d.s2", f, OpXaSfF4 (0x9, 0, 2, 1), {F1, F3, F2}, PSEUDO},
+ {"fadd.d.s3", f, OpXaSfF4 (0x9, 0, 3, 1), {F1, F3, F2}, PSEUDO},
+ {"fmpy.d.s0", f, OpXaSfF2 (0x9, 0, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fmpy.d", f, OpXaSfF2 (0x9, 0, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fmpy.d.s1", f, OpXaSfF2 (0x9, 0, 1, 0), {F1, F3, F4}, PSEUDO},
+ {"fmpy.d.s2", f, OpXaSfF2 (0x9, 0, 2, 0), {F1, F3, F4}, PSEUDO},
+ {"fmpy.d.s3", f, OpXaSfF2 (0x9, 0, 3, 0), {F1, F3, F4}, PSEUDO},
+ {"fma.d.s0", f, OpXaSf (0x9, 0, 0), {F1, F3, F4, F2}},
+ {"fma.d", f, OpXaSf (0x9, 0, 0), {F1, F3, F4, F2}, PSEUDO},
+ {"fma.d.s1", f, OpXaSf (0x9, 0, 1), {F1, F3, F4, F2}},
+ {"fma.d.s2", f, OpXaSf (0x9, 0, 2), {F1, F3, F4, F2}},
+ {"fma.d.s3", f, OpXaSf (0x9, 0, 3), {F1, F3, F4, F2}},
+
+ {"fpmpy.s0", f, OpXaSfF2 (0x9, 1, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fpmpy", f, OpXaSfF2 (0x9, 1, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fpmpy.s1", f, OpXaSfF2 (0x9, 1, 1, 0), {F1, F3, F4}, PSEUDO},
+ {"fpmpy.s2", f, OpXaSfF2 (0x9, 1, 2, 0), {F1, F3, F4}, PSEUDO},
+ {"fpmpy.s3", f, OpXaSfF2 (0x9, 1, 3, 0), {F1, F3, F4}, PSEUDO},
+ {"fpma.s0", f, OpXaSf (0x9, 1, 0), {F1, F3, F4, F2}},
+ {"fpma", f, OpXaSf (0x9, 1, 0), {F1, F3, F4, F2}, PSEUDO},
+ {"fpma.s1", f, OpXaSf (0x9, 1, 1), {F1, F3, F4, F2}},
+ {"fpma.s2", f, OpXaSf (0x9, 1, 2), {F1, F3, F4, F2}},
+ {"fpma.s3", f, OpXaSf (0x9, 1, 3), {F1, F3, F4, F2}},
+
+ {"fsub.s0", f, OpXaSfF4 (0xa, 0, 0, 1), {F1, F3, F2}, PSEUDO},
+ {"fsub", f, OpXaSfF4 (0xa, 0, 0, 1), {F1, F3, F2}, PSEUDO},
+ {"fsub.s1", f, OpXaSfF4 (0xa, 0, 1, 1), {F1, F3, F2}, PSEUDO},
+ {"fsub.s2", f, OpXaSfF4 (0xa, 0, 2, 1), {F1, F3, F2}, PSEUDO},
+ {"fsub.s3", f, OpXaSfF4 (0xa, 0, 3, 1), {F1, F3, F2}, PSEUDO},
+ {"fsub.s.s0", f, OpXaSfF4 (0xa, 1, 0, 1), {F1, F3, F2}, PSEUDO},
+ {"fsub.s", f, OpXaSfF4 (0xa, 1, 0, 1), {F1, F3, F2}, PSEUDO},
+ {"fsub.s.s1", f, OpXaSfF4 (0xa, 1, 1, 1), {F1, F3, F2}, PSEUDO},
+ {"fsub.s.s2", f, OpXaSfF4 (0xa, 1, 2, 1), {F1, F3, F2}, PSEUDO},
+ {"fsub.s.s3", f, OpXaSfF4 (0xa, 1, 3, 1), {F1, F3, F2}, PSEUDO},
+ {"fms.s0", f, OpXaSf (0xa, 0, 0), {F1, F3, F4, F2}},
+ {"fms", f, OpXaSf (0xa, 0, 0), {F1, F3, F4, F2}, PSEUDO},
+ {"fms.s1", f, OpXaSf (0xa, 0, 1), {F1, F3, F4, F2}},
+ {"fms.s2", f, OpXaSf (0xa, 0, 2), {F1, F3, F4, F2}},
+ {"fms.s3", f, OpXaSf (0xa, 0, 3), {F1, F3, F4, F2}},
+ {"fms.s.s0", f, OpXaSf (0xa, 1, 0), {F1, F3, F4, F2}},
+ {"fms.s", f, OpXaSf (0xa, 1, 0), {F1, F3, F4, F2}, PSEUDO},
+ {"fms.s.s1", f, OpXaSf (0xa, 1, 1), {F1, F3, F4, F2}},
+ {"fms.s.s2", f, OpXaSf (0xa, 1, 2), {F1, F3, F4, F2}},
+ {"fms.s.s3", f, OpXaSf (0xa, 1, 3), {F1, F3, F4, F2}},
+ {"fsub.d.s0", f, OpXaSfF4 (0xb, 0, 0, 1), {F1, F3, F2}, PSEUDO},
+ {"fsub.d", f, OpXaSfF4 (0xb, 0, 0, 1), {F1, F3, F2}, PSEUDO},
+ {"fsub.d.s1", f, OpXaSfF4 (0xb, 0, 1, 1), {F1, F3, F2}, PSEUDO},
+ {"fsub.d.s2", f, OpXaSfF4 (0xb, 0, 2, 1), {F1, F3, F2}, PSEUDO},
+ {"fsub.d.s3", f, OpXaSfF4 (0xb, 0, 3, 1), {F1, F3, F2}, PSEUDO},
+ {"fms.d.s0", f, OpXaSf (0xb, 0, 0), {F1, F3, F4, F2}},
+ {"fms.d", f, OpXaSf (0xb, 0, 0), {F1, F3, F4, F2}, PSEUDO},
+ {"fms.d.s1", f, OpXaSf (0xb, 0, 1), {F1, F3, F4, F2}},
+ {"fms.d.s2", f, OpXaSf (0xb, 0, 2), {F1, F3, F4, F2}},
+ {"fms.d.s3", f, OpXaSf (0xb, 0, 3), {F1, F3, F4, F2}},
+
+ {"fpms.s0", f, OpXaSf (0xb, 1, 0), {F1, F3, F4, F2}},
+ {"fpms", f, OpXaSf (0xb, 1, 0), {F1, F3, F4, F2}, PSEUDO},
+ {"fpms.s1", f, OpXaSf (0xb, 1, 1), {F1, F3, F4, F2}},
+ {"fpms.s2", f, OpXaSf (0xb, 1, 2), {F1, F3, F4, F2}},
+ {"fpms.s3", f, OpXaSf (0xb, 1, 3), {F1, F3, F4, F2}},
+
+ {"fpsub.s0", f, OpXaSfF4 (0xb, 1, 0, 1), {F1, F3, F2}, PSEUDO},
+ {"fpsub", f, OpXaSfF4 (0xb, 1, 0, 1), {F1, F3, F2}, PSEUDO},
+ {"fpsub.s1", f, OpXaSfF4 (0xb, 1, 1, 1), {F1, F3, F2}, PSEUDO},
+ {"fpsub.s2", f, OpXaSfF4 (0xb, 1, 2, 1), {F1, F3, F2}, PSEUDO},
+ {"fpsub.s3", f, OpXaSfF4 (0xb, 1, 3, 1), {F1, F3, F2}, PSEUDO},
+
+ {"fnmpy.s0", f, OpXaSfF2 (0xc, 0, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fnmpy", f, OpXaSfF2 (0xc, 0, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fnmpy.s1", f, OpXaSfF2 (0xc, 0, 1, 0), {F1, F3, F4}, PSEUDO},
+ {"fnmpy.s2", f, OpXaSfF2 (0xc, 0, 2, 0), {F1, F3, F4}, PSEUDO},
+ {"fnmpy.s3", f, OpXaSfF2 (0xc, 0, 3, 0), {F1, F3, F4}, PSEUDO},
+ {"fnmpy.s.s0", f, OpXaSfF2 (0xc, 1, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fnmpy.s", f, OpXaSfF2 (0xc, 1, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fnmpy.s.s1", f, OpXaSfF2 (0xc, 1, 1, 0), {F1, F3, F4}, PSEUDO},
+ {"fnmpy.s.s2", f, OpXaSfF2 (0xc, 1, 2, 0), {F1, F3, F4}, PSEUDO},
+ {"fnmpy.s.s3", f, OpXaSfF2 (0xc, 1, 3, 0), {F1, F3, F4}, PSEUDO},
+ {"fnma.s0", f, OpXaSf (0xc, 0, 0), {F1, F3, F4, F2}},
+ {"fnma", f, OpXaSf (0xc, 0, 0), {F1, F3, F4, F2}, PSEUDO},
+ {"fnma.s1", f, OpXaSf (0xc, 0, 1), {F1, F3, F4, F2}},
+ {"fnma.s2", f, OpXaSf (0xc, 0, 2), {F1, F3, F4, F2}},
+ {"fnma.s3", f, OpXaSf (0xc, 0, 3), {F1, F3, F4, F2}},
+ {"fnma.s.s0", f, OpXaSf (0xc, 1, 0), {F1, F3, F4, F2}},
+ {"fnma.s", f, OpXaSf (0xc, 1, 0), {F1, F3, F4, F2}, PSEUDO},
+ {"fnma.s.s1", f, OpXaSf (0xc, 1, 1), {F1, F3, F4, F2}},
+ {"fnma.s.s2", f, OpXaSf (0xc, 1, 2), {F1, F3, F4, F2}},
+ {"fnma.s.s3", f, OpXaSf (0xc, 1, 3), {F1, F3, F4, F2}},
+ {"fnmpy.d.s0", f, OpXaSfF2 (0xd, 0, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fnmpy.d", f, OpXaSfF2 (0xd, 0, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fnmpy.d.s1", f, OpXaSfF2 (0xd, 0, 1, 0), {F1, F3, F4}, PSEUDO},
+ {"fnmpy.d.s2", f, OpXaSfF2 (0xd, 0, 2, 0), {F1, F3, F4}, PSEUDO},
+ {"fnmpy.d.s3", f, OpXaSfF2 (0xd, 0, 3, 0), {F1, F3, F4}, PSEUDO},
+ {"fnma.d.s0", f, OpXaSf (0xd, 0, 0), {F1, F3, F4, F2}},
+ {"fnma.d", f, OpXaSf (0xd, 0, 0), {F1, F3, F4, F2}, PSEUDO},
+ {"fnma.d.s1", f, OpXaSf (0xd, 0, 1), {F1, F3, F4, F2}},
+ {"fnma.d.s2", f, OpXaSf (0xd, 0, 2), {F1, F3, F4, F2}},
+ {"fnma.d.s3", f, OpXaSf (0xd, 0, 3), {F1, F3, F4, F2}},
+
+ {"fpnmpy.s0", f, OpXaSfF2 (0xd, 1, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fpnmpy", f, OpXaSfF2 (0xd, 1, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"fpnmpy.s1", f, OpXaSfF2 (0xd, 1, 1, 0), {F1, F3, F4}, PSEUDO},
+ {"fpnmpy.s2", f, OpXaSfF2 (0xd, 1, 2, 0), {F1, F3, F4}, PSEUDO},
+ {"fpnmpy.s3", f, OpXaSfF2 (0xd, 1, 3, 0), {F1, F3, F4}, PSEUDO},
+ {"fpnma.s0", f, OpXaSf (0xd, 1, 0), {F1, F3, F4, F2}},
+ {"fpnma", f, OpXaSf (0xd, 1, 0), {F1, F3, F4, F2}, PSEUDO},
+ {"fpnma.s1", f, OpXaSf (0xd, 1, 1), {F1, F3, F4, F2}},
+ {"fpnma.s2", f, OpXaSf (0xd, 1, 2), {F1, F3, F4, F2}},
+ {"fpnma.s3", f, OpXaSf (0xd, 1, 3), {F1, F3, F4, F2}},
+
+ {"xmpy.l", f, OpXaX2F2 (0xe, 1, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"xmpy.lu", f, OpXaX2F2 (0xe, 1, 0, 0), {F1, F3, F4}, PSEUDO},
+ {"xmpy.h", f, OpXaX2F2 (0xe, 1, 3, 0), {F1, F3, F4}, PSEUDO},
+ {"xmpy.hu", f, OpXaX2F2 (0xe, 1, 2, 0), {F1, F3, F4}, PSEUDO},
+ {"xma.l", f, OpXaX2 (0xe, 1, 0), {F1, F3, F4, F2}},
+ {"xma.lu", f, OpXaX2 (0xe, 1, 0), {F1, F3, F4, F2}, PSEUDO},
+ {"xma.h", f, OpXaX2 (0xe, 1, 3), {F1, F3, F4, F2}},
+ {"xma.hu", f, OpXaX2 (0xe, 1, 2), {F1, F3, F4, F2}},
+
+ {"fselect", f, OpXa (0xe, 0), {F1, F3, F4, F2}},
+
+ {0}
+ };
+
+#undef f0
+#undef f
+#undef f2
+#undef bF2
+#undef bF4
+#undef bQ
+#undef bRa
+#undef bRb
+#undef bSf
+#undef bTa
+#undef bXa
+#undef bXb
+#undef bX2
+#undef bX6
+#undef mF2
+#undef mF4
+#undef mQ
+#undef mRa
+#undef mRb
+#undef mSf
+#undef mTa
+#undef mXa
+#undef mXb
+#undef mX2
+#undef mX6
+#undef OpXa
+#undef OpXaSf
+#undef OpXaSfF2
+#undef OpXaSfF4
+#undef OpXaSfF2F4
+#undef OpXaX2
+#undef OpRaRbTaSf
+#undef OpTa
+#undef OpXbQSf
+#undef OpXbX6
+#undef OpXbX6F2
+#undef OpXbX6Sf
diff --git a/opcodes/ia64-opc-i.c b/opcodes/ia64-opc-i.c
new file mode 100644
index 00000000000..2871920d32a
--- /dev/null
+++ b/opcodes/ia64-opc-i.c
@@ -0,0 +1,296 @@
+/* ia64-opc-i.c -- IA-64 `I' opcode table.
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+ This file is part of GDB, GAS, and the GNU binutils.
+
+ GDB, GAS, and the GNU binutils are free software; you can redistribute
+ them and/or modify them under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either version
+ 2, or (at your option) any later version.
+
+ GDB, GAS, and the GNU binutils are distributed in the hope that they
+ 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 file; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#include "ia64-opc.h"
+
+#define I0 IA64_TYPE_I, 0
+#define I IA64_TYPE_I, 1
+#define I2 IA64_TYPE_I, 2
+
+/* instruction bit fields: */
+#define bC(x) (((ia64_insn) ((x) & 0x1)) << 12)
+#define bIh(x) (((ia64_insn) ((x) & 0x1)) << 23)
+#define bTa(x) (((ia64_insn) ((x) & 0x1)) << 33)
+#define bTag13(x) (((ia64_insn) ((x) & 0x1)) << 33)
+#define bTb(x) (((ia64_insn) ((x) & 0x1)) << 36)
+#define bVc(x) (((ia64_insn) ((x) & 0x1)) << 20)
+#define bVe(x) (((ia64_insn) ((x) & 0x1)) << 32)
+#define bWh(x) (((ia64_insn) ((x) & 0x3)) << 20)
+#define bX(x) (((ia64_insn) ((x) & 0x1)) << 33)
+#define bXb(x) (((ia64_insn) ((x) & 0x1)) << 22)
+#define bX2(x) (((ia64_insn) ((x) & 0x3)) << 34)
+#define bX2a(x) (((ia64_insn) ((x) & 0x3)) << 34)
+#define bX2b(x) (((ia64_insn) ((x) & 0x3)) << 28)
+#define bX2c(x) (((ia64_insn) ((x) & 0x3)) << 30)
+#define bX3(x) (((ia64_insn) ((x) & 0x7)) << 33)
+#define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27)
+#define bYa(x) (((ia64_insn) ((x) & 0x1)) << 13)
+#define bYb(x) (((ia64_insn) ((x) & 0x1)) << 26)
+#define bZa(x) (((ia64_insn) ((x) & 0x1)) << 36)
+#define bZb(x) (((ia64_insn) ((x) & 0x1)) << 33)
+
+/* instruction bit masks: */
+#define mC bC (-1)
+#define mIh bIh (-1)
+#define mTa bTa (-1)
+#define mTag13 bTag13 (-1)
+#define mTb bTb (-1)
+#define mVc bVc (-1)
+#define mVe bVe (-1)
+#define mWh bWh (-1)
+#define mX bX (-1)
+#define mXb bXb (-1)
+#define mX2 bX2 (-1)
+#define mX2a bX2a (-1)
+#define mX2b bX2b (-1)
+#define mX2c bX2c (-1)
+#define mX3 bX3 (-1)
+#define mX6 bX6 (-1)
+#define mYa bYa (-1)
+#define mYb bYb (-1)
+#define mZa bZa (-1)
+#define mZb bZb (-1)
+
+#define OpZaZbVeX2aX2b(a,b,c,d,e,f) \
+ (bOp (a) | bZa (b) | bZb (c) | bVe (d) | bX2a (e) | bX2b (f)), \
+ (mOp | mZa | mZb | mVe | mX2a | mX2b)
+#define OpZaZbVeX2aX2bX2c(a,b,c,d,e,f,g) \
+ (bOp (a) | bZa (b) | bZb (c) | bVe (d) | bX2a (e) | bX2b (f) | bX2c (g)), \
+ (mOp | mZa | mZb | mVe | mX2a | mX2b | mX2c)
+#define OpX2X(a,b,c) (bOp (a) | bX2 (b) | bX (c)), (mOp | mX2 | mX)
+#define OpX2XYa(a,b,c,d) (bOp (a) | bX2 (b) | bX (c) | bYa (d)), \
+ (mOp | mX2 | mX | mYa)
+#define OpX2XYb(a,b,c,d) (bOp (a) | bX2 (b) | bX (c) | bYb (d)), \
+ (mOp | mX2 | mX | mYb)
+#define OpX2TaTbYaC(a,b,c,d,e,f) \
+ (bOp (a) | bX2 (b) | bTa (c) | bTb (d) | bYa (e) | bC (f)), \
+ (mOp | mX2 | mTa | mTb | mYa | mC)
+#define OpX3(a,b) (bOp (a) | bX3 (b)), (mOp | mX3)
+#define OpX3X6(a,b,c) (bOp (a) | bX3 (b) | bX6(c)), \
+ (mOp | mX3 | mX6)
+#define OpX3XbIhWh(a,b,c,d,e) \
+ (bOp (a) | bX3 (b) | bXb (c) | bIh (d) | bWh (e)), \
+ (mOp | mX3 | mXb | mIh | mWh)
+#define OpX3XbIhWhTag13(a,b,c,d,e,f) \
+ (bOp (a) | bX3 (b) | bXb (c) | bIh (d) | bWh (e) | bTag13 (f)), \
+ (mOp | mX3 | mXb | mIh | mWh | mTag13)
+
+struct ia64_opcode ia64_opcodes_i[] =
+ {
+ /* I-type instruction encodings (sorted according to major opcode) */
+
+ {"break.i", I0, OpX3X6 (0, 0, 0x00), {IMMU21}, X_IN_MLX},
+ {"nop.i", I0, OpX3X6 (0, 0, 0x01), {IMMU21}, X_IN_MLX},
+ {"chk.s.i", I0, OpX3 (0, 1), {R2, TGT25b}},
+
+ {"mov", I, OpX3XbIhWhTag13 (0, 7, 0, 0, 1, 0), {B1, R2}, PSEUDO},
+#define MOV(a,b,c,d) \
+ I, OpX3XbIhWh (0, a, b, c, d), {B1, R2, TAG13b}
+ {"mov.sptk", MOV (7, 0, 0, 0)},
+ {"mov.sptk.imp", MOV (7, 0, 1, 0)},
+ {"mov", MOV (7, 0, 0, 1)},
+ {"mov.imp", MOV (7, 0, 1, 1)},
+ {"mov.dptk", MOV (7, 0, 0, 2)},
+ {"mov.dptk.imp", MOV (7, 0, 1, 2)},
+ {"mov.ret.sptk", MOV (7, 1, 0, 0)},
+ {"mov.ret.sptk.imp", MOV (7, 1, 1, 0)},
+ {"mov.ret", MOV (7, 1, 0, 1)},
+ {"mov.ret.imp", MOV (7, 1, 1, 1)},
+ {"mov.ret.dptk", MOV (7, 1, 0, 2)},
+ {"mov.ret.dptk.imp", MOV (7, 1, 1, 2)},
+#undef MOV
+ {"mov", I, OpX3X6 (0, 0, 0x31), {R1, B2}},
+ {"mov", I, OpX3 (0, 3), {PR, R2, IMM17}},
+ {"mov", I, OpX3 (0, 2), {PR_ROT, IMM44}},
+ {"mov", I, OpX3X6 (0, 0, 0x30), {R1, IP}},
+ {"mov", I, OpX3X6 (0, 0, 0x33), {R1, PR}},
+ {"mov.i", I, OpX3X6 (0, 0, 0x2a), {AR3, R2}},
+ {"mov.i", I, OpX3X6 (0, 0, 0x0a), {AR3, IMM8}},
+ {"mov.i", I, OpX3X6 (0, 0, 0x32), {R1, AR3}},
+ {"zxt1", I, OpX3X6 (0, 0, 0x10), {R1, R3}},
+ {"zxt2", I, OpX3X6 (0, 0, 0x11), {R1, R3}},
+ {"zxt4", I, OpX3X6 (0, 0, 0x12), {R1, R3}},
+ {"sxt1", I, OpX3X6 (0, 0, 0x14), {R1, R3}},
+ {"sxt2", I, OpX3X6 (0, 0, 0x15), {R1, R3}},
+ {"sxt4", I, OpX3X6 (0, 0, 0x16), {R1, R3}},
+ {"czx1.l", I, OpX3X6 (0, 0, 0x18), {R1, R3}},
+ {"czx2.l", I, OpX3X6 (0, 0, 0x19), {R1, R3}},
+ {"czx1.r", I, OpX3X6 (0, 0, 0x1c), {R1, R3}},
+ {"czx2.r", I, OpX3X6 (0, 0, 0x1d), {R1, R3}},
+
+ {"dep", I, Op (4), {R1, R2, R3, CPOS6c, LEN4}},
+
+ {"shrp", I, OpX2X (5, 3, 0), {R1, R2, R3, CNT6}},
+
+ {"shr.u", I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6},
+ PSEUDO | LEN_EQ_64MCNT},
+ {"extr.u", I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6, LEN6}},
+
+ {"shr", I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6},
+ PSEUDO | LEN_EQ_64MCNT},
+ {"extr", I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6, LEN6}},
+
+ {"shl", I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a},
+ PSEUDO | LEN_EQ_64MCNT},
+ {"dep.z", I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a, LEN6}},
+ {"dep.z", I, OpX2XYb (5, 1, 1, 1), {R1, IMM8, CPOS6a, LEN6}},
+ {"dep", I, OpX2X (5, 3, 1), {R1, IMM1, R3, CPOS6b, LEN6}},
+#define TBIT(a,b,c,d) \
+ I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3, POS6}
+#define TBITCM(a,b,c,d) \
+ I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3, POS6}, PSEUDO
+ {"tbit.z", TBIT (0, 0, 0, 0)},
+ {"tbit.nz", TBITCM (0, 0, 0, 0)},
+ {"tbit.z.unc", TBIT (0, 0, 0, 1)},
+ {"tbit.nz.unc", TBITCM (0, 0, 0, 1)},
+ {"tbit.z.and", TBIT (0, 1, 0, 0)},
+ {"tbit.nz.andcm", TBITCM (0, 1, 0, 0)},
+ {"tbit.nz.and", TBIT (0, 1, 0, 1)},
+ {"tbit.z.andcm", TBITCM (0, 1, 0, 1)},
+ {"tbit.z.or", TBIT (1, 0, 0, 0)},
+ {"tbit.nz.orcm", TBITCM (1, 0, 0, 0)},
+ {"tbit.nz.or", TBIT (1, 0, 0, 1)},
+ {"tbit.z.orcm", TBITCM (1, 0, 0, 1)},
+ {"tbit.z.or.andcm", TBIT (1, 1, 0, 0)},
+ {"tbit.nz.and.orcm", TBITCM (1, 1, 0, 0)},
+ {"tbit.nz.or.andcm", TBIT (1, 1, 0, 1)},
+ {"tbit.z.and.orcm", TBITCM (1, 1, 0, 1)},
+#undef TBIT
+#define TNAT(a,b,c,d) \
+ I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3}
+#define TNATCM(a,b,c,d) \
+ I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3}, PSEUDO
+ {"tnat.z", TNAT (0, 0, 1, 0)},
+ {"tnat.nz", TNATCM (0, 0, 1, 0)},
+ {"tnat.z.unc", TNAT (0, 0, 1, 1)},
+ {"tnat.nz.unc", TNATCM (0, 0, 1, 1)},
+ {"tnat.z.and", TNAT (0, 1, 1, 0)},
+ {"tnat.nz.andcm", TNATCM (0, 1, 1, 0)},
+ {"tnat.nz.and", TNAT (0, 1, 1, 1)},
+ {"tnat.z.andcm", TNATCM (0, 1, 1, 1)},
+ {"tnat.z.or", TNAT (1, 0, 1, 0)},
+ {"tnat.nz.orcm", TNATCM (1, 0, 1, 0)},
+ {"tnat.nz.or", TNAT (1, 0, 1, 1)},
+ {"tnat.z.orcm", TNATCM (1, 0, 1, 1)},
+ {"tnat.z.or.andcm", TNAT (1, 1, 1, 0)},
+ {"tnat.nz.and.orcm", TNATCM (1, 1, 1, 0)},
+ {"tnat.nz.or.andcm", TNAT (1, 1, 1, 1)},
+ {"tnat.z.and.orcm", TNATCM (1, 1, 1, 1)},
+#undef TNAT
+
+ {"pmpyshr2", I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 3), {R1, R2, R3, CNT2c}},
+ {"pmpyshr2.u", I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 1), {R1, R2, R3, CNT2c}},
+ {"pmpy2.r", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 1, 3), {R1, R2, R3}},
+ {"pmpy2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 3), {R1, R2, R3}},
+ {"mix1.r", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 2), {R1, R2, R3}},
+ {"mix2.r", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 2), {R1, R2, R3}},
+ {"mix4.r", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 2), {R1, R2, R3}},
+ {"mix1.l", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 2), {R1, R2, R3}},
+ {"mix2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 2), {R1, R2, R3}},
+ {"mix4.l", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 2), {R1, R2, R3}},
+ {"pack2.uss", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 0), {R1, R2, R3}},
+ {"pack2.sss", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 0), {R1, R2, R3}},
+ {"pack4.sss", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 0), {R1, R2, R3}},
+ {"unpack1.h", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 1), {R1, R2, R3}},
+ {"unpack2.h", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 1), {R1, R2, R3}},
+ {"unpack4.h", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 1), {R1, R2, R3}},
+ {"unpack1.l", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 1), {R1, R2, R3}},
+ {"unpack2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 1), {R1, R2, R3}},
+ {"unpack4.l", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 1), {R1, R2, R3}},
+ {"pmin1.u", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 0), {R1, R2, R3}},
+ {"pmax1.u", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 1), {R1, R2, R3}},
+ {"pmin2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 0), {R1, R2, R3}},
+ {"pmax2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 1), {R1, R2, R3}},
+ {"psad1", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 3, 2), {R1, R2, R3}},
+ {"mux1", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 3, 2, 2), {R1, R2, MBTYPE4}},
+ {"mux2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 2, 2), {R1, R2, MHTYPE8}},
+ {"pshr2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 2, 0), {R1, R3, R2}},
+ {"pshr4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 2, 0), {R1, R3, R2}},
+ {"shr", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 2, 0), {R1, R3, R2}},
+ {"pshr2.u", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 0), {R1, R3, R2}},
+ {"pshr4.u", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 0), {R1, R3, R2}},
+ {"shr.u", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 0), {R1, R3, R2}},
+ {"pshr2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 3, 0), {R1, R3, CNT5}},
+ {"pshr4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 3, 0), {R1, R3, CNT5}},
+ {"pshr2.u", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 0), {R1, R3, CNT5}},
+ {"pshr4.u", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 1, 0), {R1, R3, CNT5}},
+ {"pshl2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 1), {R1, R2, R3}},
+ {"pshl4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 1), {R1, R2, R3}},
+ {"shl", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 1), {R1, R2, R3}},
+ {"pshl2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 1, 1), {R1, R2, CCNT5}},
+ {"pshl4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 3, 1, 1), {R1, R2, CCNT5}},
+ {"popcnt", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 2), {R1, R3}},
+
+ {0}
+ };
+
+#undef I0
+#undef I
+#undef I2
+#undef L
+#undef bC
+#undef bIh
+#undef bTa
+#undef bTag13
+#undef bTb
+#undef bVc
+#undef bVe
+#undef bWh
+#undef bX
+#undef bXb
+#undef bX2
+#undef bX2a
+#undef bX2b
+#undef bX2c
+#undef bX3
+#undef bX6
+#undef bY
+#undef bZa
+#undef bZb
+#undef mC
+#undef mIh
+#undef mTa
+#undef mTag13
+#undef mTb
+#undef mVc
+#undef mVe
+#undef mWh
+#undef mX
+#undef mXb
+#undef mX2
+#undef mX2a
+#undef mX2b
+#undef mX2c
+#undef mX3
+#undef mX6
+#undef mY
+#undef mZa
+#undef mZb
+#undef OpZaZbVeX2aX2b
+#undef OpZaZbVeX2aX2bX2c
+#undef OpX2X
+#undef OpX2XYa
+#undef OpX2XYb
+#undef OpX2TaTbYaC
+#undef OpX3
+#undef OpX3X6
+#undef OpX3XbIhWh
+#undef OpX3XbIhWhTag13
diff --git a/opcodes/ia64-opc-m.c b/opcodes/ia64-opc-m.c
new file mode 100644
index 00000000000..13a971e5e0d
--- /dev/null
+++ b/opcodes/ia64-opc-m.c
@@ -0,0 +1,1042 @@
+/* ia64-opc-m.c -- IA-64 `M' opcode table.
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+ This file is part of GDB, GAS, and the GNU binutils.
+
+ GDB, GAS, and the GNU binutils are free software; you can redistribute
+ them and/or modify them under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either version
+ 2, or (at your option) any later version.
+
+ GDB, GAS, and the GNU binutils are distributed in the hope that they
+ 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 file; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#include "ia64-opc.h"
+
+#define M0 IA64_TYPE_M, 0
+#define M IA64_TYPE_M, 1
+#define M2 IA64_TYPE_M, 2
+
+/* instruction bit fields: */
+#define bM(x) (((ia64_insn) ((x) & 0x1)) << 36)
+#define bX(x) (((ia64_insn) ((x) & 0x1)) << 27)
+#define bX2(x) (((ia64_insn) ((x) & 0x3)) << 31)
+#define bX3(x) (((ia64_insn) ((x) & 0x7)) << 33)
+#define bX4(x) (((ia64_insn) ((x) & 0xf)) << 27)
+#define bX6a(x) (((ia64_insn) ((x) & 0x3f)) << 30)
+#define bX6b(x) (((ia64_insn) ((x) & 0x3f)) << 27)
+#define bHint(x) (((ia64_insn) ((x) & 0x3)) << 28)
+
+#define mM bM (-1)
+#define mX bX (-1)
+#define mX2 bX2 (-1)
+#define mX3 bX3 (-1)
+#define mX4 bX4 (-1)
+#define mX6a bX6a (-1)
+#define mX6b bX6b (-1)
+#define mHint bHint (-1)
+
+#define OpX3(a,b) (bOp (a) | bX3 (b)), (mOp | mX3)
+#define OpX3X6b(a,b,c) (bOp (a) | bX3 (b) | bX6b (c)), \
+ (mOp | mX3 | mX6b)
+#define OpX3X4(a,b,c) (bOp (a) | bX3 (b) | bX4 (c)), \
+ (mOp | mX3 | mX4)
+#define OpX3X4X2(a,b,c,d) (bOp (a) | bX3 (b) | bX4 (c) | bX2 (d)), \
+ (mOp | mX3 | mX4 | mX2)
+#define OpX6aHint(a,b,c) (bOp (a) | bX6a (b) | bHint (c)), \
+ (mOp | mX6a | mHint)
+#define OpXX6aHint(a,b,c,d) (bOp (a) | bX (b) | bX6a (c) | bHint (d)), \
+ (mOp | mX | mX6a | mHint)
+#define OpMXX6a(a,b,c,d) \
+ (bOp (a) | bM (b) | bX (c) | bX6a (d)), (mOp | mM | mX | mX6a)
+#define OpMXX6aHint(a,b,c,d,e) \
+ (bOp (a) | bM (b) | bX (c) | bX6a (d) | bHint (e)), \
+ (mOp | mM | mX | mX6a | mHint)
+
+struct ia64_opcode ia64_opcodes_m[] =
+ {
+ /* M-type instruction encodings (sorted according to major opcode) */
+
+ {"chk.a.nc", M0, OpX3 (0, 4), {R1, TGT25c}},
+ {"chk.a.clr", M0, OpX3 (0, 5), {R1, TGT25c}},
+ {"chk.a.nc", M0, OpX3 (0, 6), {F1, TGT25c}},
+ {"chk.a.clr", M0, OpX3 (0, 7), {F1, TGT25c}},
+
+ {"invala", M0, OpX3X4X2 (0, 0, 0, 1)},
+ {"fwb", M0, OpX3X4X2 (0, 0, 0, 2)},
+ {"mf", M0, OpX3X4X2 (0, 0, 2, 2)},
+ {"mf.a", M0, OpX3X4X2 (0, 0, 3, 2)},
+ {"srlz.d", M0, OpX3X4X2 (0, 0, 0, 3)},
+ {"srlz.i", M0, OpX3X4X2 (0, 0, 1, 3)},
+ {"sync.i", M0, OpX3X4X2 (0, 0, 3, 3)},
+ {"flushrs", M0, OpX3X4X2 (0, 0, 0xc, 0), {0, }, FIRST | NO_PRED},
+ {"loadrs", M0, OpX3X4X2 (0, 0, 0xa, 0), {0, }, FIRST | NO_PRED},
+ {"invala.e", M0, OpX3X4X2 (0, 0, 2, 1), {R1}},
+ {"invala.e", M0, OpX3X4X2 (0, 0, 3, 1), {F1}},
+ {"mov.m", M, OpX3X4X2 (0, 0, 8, 2), {AR3, IMM8}},
+
+ {"break.m", M0, OpX3X4X2 (0, 0, 0, 0), {IMMU21}},
+ {"nop.m", M0, OpX3X4X2 (0, 0, 1, 0), {IMMU21}},
+
+ {"sum", M0, OpX3X4 (0, 0, 4), {IMMU24}},
+ {"rum", M0, OpX3X4 (0, 0, 5), {IMMU24}},
+ {"ssm", M0, OpX3X4 (0, 0, 6), {IMMU24}, PRIV},
+ {"rsm", M0, OpX3X4 (0, 0, 7), {IMMU24}, PRIV},
+
+ {"mov.m", M, OpX3X6b (1, 0, 0x2a), {AR3, R2}},
+ {"mov.m", M, OpX3X6b (1, 0, 0x22), {R1, AR3}},
+ {"mov", M, OpX3X6b (1, 0, 0x2c), {CR3, R2}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x24), {R1, CR3}, PRIV},
+
+ {"alloc", M, OpX3 (1, 6), {R1, AR_PFS, SOF, SOL, SOR}, FIRST|NO_PRED|MOD_RRBS},
+
+ {"mov", M, OpX3X6b (1, 0, 0x2d), {PSR_L, R2}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x29), {PSR_UM, R2}},
+ {"mov", M, OpX3X6b (1, 0, 0x25), {R1, PSR}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x21), {R1, PSR_UM}},
+ {"probe.r", M, OpX3X6b (1, 0, 0x38), {R1, R3, R2}},
+ {"probe.w", M, OpX3X6b (1, 0, 0x39), {R1, R3, R2}},
+ {"probe.r", M, OpX3X6b (1, 0, 0x18), {R1, R3, IMMU2}},
+ {"probe.w", M, OpX3X6b (1, 0, 0x19), {R1, R3, IMMU2}},
+ {"probe.rw.fault", M0, OpX3X6b (1, 0, 0x31), {R3, IMMU2}},
+ {"probe.r.fault", M0, OpX3X6b (1, 0, 0x32), {R3, IMMU2}},
+ {"probe.w.fault", M0, OpX3X6b (1, 0, 0x33), {R3, IMMU2}},
+ {"itc.d", M0, OpX3X6b (1, 0, 0x2e), {R2}, LAST | PRIV},
+ {"itc.i", M0, OpX3X6b (1, 0, 0x2f), {R2}, LAST | PRIV},
+
+ {"mov", M, OpX3X6b (1, 0, 0x00), {RR_R3, R2}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x01), {DBR_R3, R2}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x02), {IBR_R3, R2}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x03), {PKR_R3, R2}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x04), {PMC_R3, R2}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x05), {PMD_R3, R2}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x06), {MSR_R3, R2}, PRIV},
+ {"itr.d", M, OpX3X6b (1, 0, 0x0e), {DTR_R3, R2}, PRIV},
+ {"itr.i", M, OpX3X6b (1, 0, 0x0f), {ITR_R3, R2}, PRIV},
+
+ {"mov", M, OpX3X6b (1, 0, 0x10), {R1, RR_R3}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x11), {R1, DBR_R3}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x12), {R1, IBR_R3}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x13), {R1, PKR_R3}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x14), {R1, PMC_R3}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x15), {R1, PMD_R3}},
+ {"mov", M, OpX3X6b (1, 0, 0x16), {R1, MSR_R3}, PRIV},
+ {"mov", M, OpX3X6b (1, 0, 0x17), {R1, CPUID_R3}},
+
+ {"ptc.l", M0, OpX3X6b (1, 0, 0x09), {R3, R2}, PRIV},
+ {"ptc.g", M0, OpX3X6b (1, 0, 0x0a), {R3, R2}, LAST | PRIV},
+ {"ptc.ga", M0, OpX3X6b (1, 0, 0x0b), {R3, R2}, LAST | PRIV},
+ {"ptr.d", M0, OpX3X6b (1, 0, 0x0c), {R3, R2}, PRIV},
+ {"ptr.i", M0, OpX3X6b (1, 0, 0x0d), {R3, R2}, PRIV},
+
+ {"thash", M, OpX3X6b (1, 0, 0x1a), {R1, R3}},
+ {"ttag", M, OpX3X6b (1, 0, 0x1b), {R1, R3}},
+ {"tpa", M, OpX3X6b (1, 0, 0x1e), {R1, R3}, PRIV},
+ {"tak", M, OpX3X6b (1, 0, 0x1f), {R1, R3}, PRIV},
+
+ {"chk.s.m", M0, OpX3 (1, 1), {R2, TGT25b}},
+ {"chk.s", M0, OpX3 (1, 3), {F2, TGT25b}},
+
+ {"fc", M0, OpX3X6b (1, 0, 0x30), {R3}},
+ {"ptc.e", M0, OpX3X6b (1, 0, 0x34), {R3}, PRIV},
+
+ /* integer load */
+ {"ld1", M, OpMXX6aHint (4, 0, 0, 0x00, 0), {R1, MR3}},
+ {"ld1.nt1", M, OpMXX6aHint (4, 0, 0, 0x00, 1), {R1, MR3}},
+ {"ld1.nta", M, OpMXX6aHint (4, 0, 0, 0x00, 3), {R1, MR3}},
+ {"ld2", M, OpMXX6aHint (4, 0, 0, 0x01, 0), {R1, MR3}},
+ {"ld2.nt1", M, OpMXX6aHint (4, 0, 0, 0x01, 1), {R1, MR3}},
+ {"ld2.nta", M, OpMXX6aHint (4, 0, 0, 0x01, 3), {R1, MR3}},
+ {"ld4", M, OpMXX6aHint (4, 0, 0, 0x02, 0), {R1, MR3}},
+ {"ld4.nt1", M, OpMXX6aHint (4, 0, 0, 0x02, 1), {R1, MR3}},
+ {"ld4.nta", M, OpMXX6aHint (4, 0, 0, 0x02, 3), {R1, MR3}},
+ {"ld8", M, OpMXX6aHint (4, 0, 0, 0x03, 0), {R1, MR3}},
+ {"ld8.nt1", M, OpMXX6aHint (4, 0, 0, 0x03, 1), {R1, MR3}},
+ {"ld8.nta", M, OpMXX6aHint (4, 0, 0, 0x03, 3), {R1, MR3}},
+ {"ld1.s", M, OpMXX6aHint (4, 0, 0, 0x04, 0), {R1, MR3}},
+ {"ld1.s.nt1", M, OpMXX6aHint (4, 0, 0, 0x04, 1), {R1, MR3}},
+ {"ld1.s.nta", M, OpMXX6aHint (4, 0, 0, 0x04, 3), {R1, MR3}},
+ {"ld2.s", M, OpMXX6aHint (4, 0, 0, 0x05, 0), {R1, MR3}},
+ {"ld2.s.nt1", M, OpMXX6aHint (4, 0, 0, 0x05, 1), {R1, MR3}},
+ {"ld2.s.nta", M, OpMXX6aHint (4, 0, 0, 0x05, 3), {R1, MR3}},
+ {"ld4.s", M, OpMXX6aHint (4, 0, 0, 0x06, 0), {R1, MR3}},
+ {"ld4.s.nt1", M, OpMXX6aHint (4, 0, 0, 0x06, 1), {R1, MR3}},
+ {"ld4.s.nta", M, OpMXX6aHint (4, 0, 0, 0x06, 3), {R1, MR3}},
+ {"ld8.s", M, OpMXX6aHint (4, 0, 0, 0x07, 0), {R1, MR3}},
+ {"ld8.s.nt1", M, OpMXX6aHint (4, 0, 0, 0x07, 1), {R1, MR3}},
+ {"ld8.s.nta", M, OpMXX6aHint (4, 0, 0, 0x07, 3), {R1, MR3}},
+ {"ld1.a", M, OpMXX6aHint (4, 0, 0, 0x08, 0), {R1, MR3}},
+ {"ld1.a.nt1", M, OpMXX6aHint (4, 0, 0, 0x08, 1), {R1, MR3}},
+ {"ld1.a.nta", M, OpMXX6aHint (4, 0, 0, 0x08, 3), {R1, MR3}},
+ {"ld2.a", M, OpMXX6aHint (4, 0, 0, 0x09, 0), {R1, MR3}},
+ {"ld2.a.nt1", M, OpMXX6aHint (4, 0, 0, 0x09, 1), {R1, MR3}},
+ {"ld2.a.nta", M, OpMXX6aHint (4, 0, 0, 0x09, 3), {R1, MR3}},
+ {"ld4.a", M, OpMXX6aHint (4, 0, 0, 0x0a, 0), {R1, MR3}},
+ {"ld4.a.nt1", M, OpMXX6aHint (4, 0, 0, 0x0a, 1), {R1, MR3}},
+ {"ld4.a.nta", M, OpMXX6aHint (4, 0, 0, 0x0a, 3), {R1, MR3}},
+ {"ld8.a", M, OpMXX6aHint (4, 0, 0, 0x0b, 0), {R1, MR3}},
+ {"ld8.a.nt1", M, OpMXX6aHint (4, 0, 0, 0x0b, 1), {R1, MR3}},
+ {"ld8.a.nta", M, OpMXX6aHint (4, 0, 0, 0x0b, 3), {R1, MR3}},
+ {"ld1.sa", M, OpMXX6aHint (4, 0, 0, 0x0c, 0), {R1, MR3}},
+ {"ld1.sa.nt1", M, OpMXX6aHint (4, 0, 0, 0x0c, 1), {R1, MR3}},
+ {"ld1.sa.nta", M, OpMXX6aHint (4, 0, 0, 0x0c, 3), {R1, MR3}},
+ {"ld2.sa", M, OpMXX6aHint (4, 0, 0, 0x0d, 0), {R1, MR3}},
+ {"ld2.sa.nt1", M, OpMXX6aHint (4, 0, 0, 0x0d, 1), {R1, MR3}},
+ {"ld2.sa.nta", M, OpMXX6aHint (4, 0, 0, 0x0d, 3), {R1, MR3}},
+ {"ld4.sa", M, OpMXX6aHint (4, 0, 0, 0x0e, 0), {R1, MR3}},
+ {"ld4.sa.nt1", M, OpMXX6aHint (4, 0, 0, 0x0e, 1), {R1, MR3}},
+ {"ld4.sa.nta", M, OpMXX6aHint (4, 0, 0, 0x0e, 3), {R1, MR3}},
+ {"ld8.sa", M, OpMXX6aHint (4, 0, 0, 0x0f, 0), {R1, MR3}},
+ {"ld8.sa.nt1", M, OpMXX6aHint (4, 0, 0, 0x0f, 1), {R1, MR3}},
+ {"ld8.sa.nta", M, OpMXX6aHint (4, 0, 0, 0x0f, 3), {R1, MR3}},
+ {"ld1.bias", M, OpMXX6aHint (4, 0, 0, 0x10, 0), {R1, MR3}},
+ {"ld1.bias.nt1", M, OpMXX6aHint (4, 0, 0, 0x10, 1), {R1, MR3}},
+ {"ld1.bias.nta", M, OpMXX6aHint (4, 0, 0, 0x10, 3), {R1, MR3}},
+ {"ld2.bias", M, OpMXX6aHint (4, 0, 0, 0x11, 0), {R1, MR3}},
+ {"ld2.bias.nt1", M, OpMXX6aHint (4, 0, 0, 0x11, 1), {R1, MR3}},
+ {"ld2.bias.nta", M, OpMXX6aHint (4, 0, 0, 0x11, 3), {R1, MR3}},
+ {"ld4.bias", M, OpMXX6aHint (4, 0, 0, 0x12, 0), {R1, MR3}},
+ {"ld4.bias.nt1", M, OpMXX6aHint (4, 0, 0, 0x12, 1), {R1, MR3}},
+ {"ld4.bias.nta", M, OpMXX6aHint (4, 0, 0, 0x12, 3), {R1, MR3}},
+ {"ld8.bias", M, OpMXX6aHint (4, 0, 0, 0x13, 0), {R1, MR3}},
+ {"ld8.bias.nt1", M, OpMXX6aHint (4, 0, 0, 0x13, 1), {R1, MR3}},
+ {"ld8.bias.nta", M, OpMXX6aHint (4, 0, 0, 0x13, 3), {R1, MR3}},
+ {"ld1.acq", M, OpMXX6aHint (4, 0, 0, 0x14, 0), {R1, MR3}},
+ {"ld1.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x14, 1), {R1, MR3}},
+ {"ld1.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x14, 3), {R1, MR3}},
+ {"ld2.acq", M, OpMXX6aHint (4, 0, 0, 0x15, 0), {R1, MR3}},
+ {"ld2.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x15, 1), {R1, MR3}},
+ {"ld2.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x15, 3), {R1, MR3}},
+ {"ld4.acq", M, OpMXX6aHint (4, 0, 0, 0x16, 0), {R1, MR3}},
+ {"ld4.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x16, 1), {R1, MR3}},
+ {"ld4.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x16, 3), {R1, MR3}},
+ {"ld8.acq", M, OpMXX6aHint (4, 0, 0, 0x17, 0), {R1, MR3}},
+ {"ld8.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x17, 1), {R1, MR3}},
+ {"ld8.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x17, 3), {R1, MR3}},
+ {"ld8.fill", M, OpMXX6aHint (4, 0, 0, 0x1b, 0), {R1, MR3}},
+ {"ld8.fill.nt1", M, OpMXX6aHint (4, 0, 0, 0x1b, 1), {R1, MR3}},
+ {"ld8.fill.nta", M, OpMXX6aHint (4, 0, 0, 0x1b, 3), {R1, MR3}},
+ {"ld1.c.clr", M, OpMXX6aHint (4, 0, 0, 0x20, 0), {R1, MR3}},
+ {"ld1.c.clr.nt1", M, OpMXX6aHint (4, 0, 0, 0x20, 1), {R1, MR3}},
+ {"ld1.c.clr.nta", M, OpMXX6aHint (4, 0, 0, 0x20, 3), {R1, MR3}},
+ {"ld2.c.clr", M, OpMXX6aHint (4, 0, 0, 0x21, 0), {R1, MR3}},
+ {"ld2.c.clr.nt1", M, OpMXX6aHint (4, 0, 0, 0x21, 1), {R1, MR3}},
+ {"ld2.c.clr.nta", M, OpMXX6aHint (4, 0, 0, 0x21, 3), {R1, MR3}},
+ {"ld4.c.clr", M, OpMXX6aHint (4, 0, 0, 0x22, 0), {R1, MR3}},
+ {"ld4.c.clr.nt1", M, OpMXX6aHint (4, 0, 0, 0x22, 1), {R1, MR3}},
+ {"ld4.c.clr.nta", M, OpMXX6aHint (4, 0, 0, 0x22, 3), {R1, MR3}},
+ {"ld8.c.clr", M, OpMXX6aHint (4, 0, 0, 0x23, 0), {R1, MR3}},
+ {"ld8.c.clr.nt1", M, OpMXX6aHint (4, 0, 0, 0x23, 1), {R1, MR3}},
+ {"ld8.c.clr.nta", M, OpMXX6aHint (4, 0, 0, 0x23, 3), {R1, MR3}},
+ {"ld1.c.nc", M, OpMXX6aHint (4, 0, 0, 0x24, 0), {R1, MR3}},
+ {"ld1.c.nc.nt1", M, OpMXX6aHint (4, 0, 0, 0x24, 1), {R1, MR3}},
+ {"ld1.c.nc.nta", M, OpMXX6aHint (4, 0, 0, 0x24, 3), {R1, MR3}},
+ {"ld2.c.nc", M, OpMXX6aHint (4, 0, 0, 0x25, 0), {R1, MR3}},
+ {"ld2.c.nc.nt1", M, OpMXX6aHint (4, 0, 0, 0x25, 1), {R1, MR3}},
+ {"ld2.c.nc.nta", M, OpMXX6aHint (4, 0, 0, 0x25, 3), {R1, MR3}},
+ {"ld4.c.nc", M, OpMXX6aHint (4, 0, 0, 0x26, 0), {R1, MR3}},
+ {"ld4.c.nc.nt1", M, OpMXX6aHint (4, 0, 0, 0x26, 1), {R1, MR3}},
+ {"ld4.c.nc.nta", M, OpMXX6aHint (4, 0, 0, 0x26, 3), {R1, MR3}},
+ {"ld8.c.nc", M, OpMXX6aHint (4, 0, 0, 0x27, 0), {R1, MR3}},
+ {"ld8.c.nc.nt1", M, OpMXX6aHint (4, 0, 0, 0x27, 1), {R1, MR3}},
+ {"ld8.c.nc.nta", M, OpMXX6aHint (4, 0, 0, 0x27, 3), {R1, MR3}},
+ {"ld1.c.clr.acq", M, OpMXX6aHint (4, 0, 0, 0x28, 0), {R1, MR3}},
+ {"ld1.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x28, 1), {R1, MR3}},
+ {"ld1.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x28, 3), {R1, MR3}},
+ {"ld2.c.clr.acq", M, OpMXX6aHint (4, 0, 0, 0x29, 0), {R1, MR3}},
+ {"ld2.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x29, 1), {R1, MR3}},
+ {"ld2.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x29, 3), {R1, MR3}},
+ {"ld4.c.clr.acq", M, OpMXX6aHint (4, 0, 0, 0x2a, 0), {R1, MR3}},
+ {"ld4.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x2a, 1), {R1, MR3}},
+ {"ld4.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x2a, 3), {R1, MR3}},
+ {"ld8.c.clr.acq", M, OpMXX6aHint (4, 0, 0, 0x2b, 0), {R1, MR3}},
+ {"ld8.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x2b, 1), {R1, MR3}},
+ {"ld8.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x2b, 3), {R1, MR3}},
+
+ /* integer load w/increment by register */
+ {"ld1", M, OpMXX6aHint (4, 1, 0, 0x00, 0), {R1, MR3, R2}},
+ {"ld1.nt1", M, OpMXX6aHint (4, 1, 0, 0x00, 1), {R1, MR3, R2}},
+ {"ld1.nta", M, OpMXX6aHint (4, 1, 0, 0x00, 3), {R1, MR3, R2}},
+ {"ld2", M, OpMXX6aHint (4, 1, 0, 0x01, 0), {R1, MR3, R2}},
+ {"ld2.nt1", M, OpMXX6aHint (4, 1, 0, 0x01, 1), {R1, MR3, R2}},
+ {"ld2.nta", M, OpMXX6aHint (4, 1, 0, 0x01, 3), {R1, MR3, R2}},
+ {"ld4", M, OpMXX6aHint (4, 1, 0, 0x02, 0), {R1, MR3, R2}},
+ {"ld4.nt1", M, OpMXX6aHint (4, 1, 0, 0x02, 1), {R1, MR3, R2}},
+ {"ld4.nta", M, OpMXX6aHint (4, 1, 0, 0x02, 3), {R1, MR3, R2}},
+ {"ld8", M, OpMXX6aHint (4, 1, 0, 0x03, 0), {R1, MR3, R2}},
+ {"ld8.nt1", M, OpMXX6aHint (4, 1, 0, 0x03, 1), {R1, MR3, R2}},
+ {"ld8.nta", M, OpMXX6aHint (4, 1, 0, 0x03, 3), {R1, MR3, R2}},
+ {"ld1.s", M, OpMXX6aHint (4, 1, 0, 0x04, 0), {R1, MR3, R2}},
+ {"ld1.s.nt1", M, OpMXX6aHint (4, 1, 0, 0x04, 1), {R1, MR3, R2}},
+ {"ld1.s.nta", M, OpMXX6aHint (4, 1, 0, 0x04, 3), {R1, MR3, R2}},
+ {"ld2.s", M, OpMXX6aHint (4, 1, 0, 0x05, 0), {R1, MR3, R2}},
+ {"ld2.s.nt1", M, OpMXX6aHint (4, 1, 0, 0x05, 1), {R1, MR3, R2}},
+ {"ld2.s.nta", M, OpMXX6aHint (4, 1, 0, 0x05, 3), {R1, MR3, R2}},
+ {"ld4.s", M, OpMXX6aHint (4, 1, 0, 0x06, 0), {R1, MR3, R2}},
+ {"ld4.s.nt1", M, OpMXX6aHint (4, 1, 0, 0x06, 1), {R1, MR3, R2}},
+ {"ld4.s.nta", M, OpMXX6aHint (4, 1, 0, 0x06, 3), {R1, MR3, R2}},
+ {"ld8.s", M, OpMXX6aHint (4, 1, 0, 0x07, 0), {R1, MR3, R2}},
+ {"ld8.s.nt1", M, OpMXX6aHint (4, 1, 0, 0x07, 1), {R1, MR3, R2}},
+ {"ld8.s.nta", M, OpMXX6aHint (4, 1, 0, 0x07, 3), {R1, MR3, R2}},
+ {"ld1.a", M, OpMXX6aHint (4, 1, 0, 0x08, 0), {R1, MR3, R2}},
+ {"ld1.a.nt1", M, OpMXX6aHint (4, 1, 0, 0x08, 1), {R1, MR3, R2}},
+ {"ld1.a.nta", M, OpMXX6aHint (4, 1, 0, 0x08, 3), {R1, MR3, R2}},
+ {"ld2.a", M, OpMXX6aHint (4, 1, 0, 0x09, 0), {R1, MR3, R2}},
+ {"ld2.a.nt1", M, OpMXX6aHint (4, 1, 0, 0x09, 1), {R1, MR3, R2}},
+ {"ld2.a.nta", M, OpMXX6aHint (4, 1, 0, 0x09, 3), {R1, MR3, R2}},
+ {"ld4.a", M, OpMXX6aHint (4, 1, 0, 0x0a, 0), {R1, MR3, R2}},
+ {"ld4.a.nt1", M, OpMXX6aHint (4, 1, 0, 0x0a, 1), {R1, MR3, R2}},
+ {"ld4.a.nta", M, OpMXX6aHint (4, 1, 0, 0x0a, 3), {R1, MR3, R2}},
+ {"ld8.a", M, OpMXX6aHint (4, 1, 0, 0x0b, 0), {R1, MR3, R2}},
+ {"ld8.a.nt1", M, OpMXX6aHint (4, 1, 0, 0x0b, 1), {R1, MR3, R2}},
+ {"ld8.a.nta", M, OpMXX6aHint (4, 1, 0, 0x0b, 3), {R1, MR3, R2}},
+ {"ld1.sa", M, OpMXX6aHint (4, 1, 0, 0x0c, 0), {R1, MR3, R2}},
+ {"ld1.sa.nt1", M, OpMXX6aHint (4, 1, 0, 0x0c, 1), {R1, MR3, R2}},
+ {"ld1.sa.nta", M, OpMXX6aHint (4, 1, 0, 0x0c, 3), {R1, MR3, R2}},
+ {"ld2.sa", M, OpMXX6aHint (4, 1, 0, 0x0d, 0), {R1, MR3, R2}},
+ {"ld2.sa.nt1", M, OpMXX6aHint (4, 1, 0, 0x0d, 1), {R1, MR3, R2}},
+ {"ld2.sa.nta", M, OpMXX6aHint (4, 1, 0, 0x0d, 3), {R1, MR3, R2}},
+ {"ld4.sa", M, OpMXX6aHint (4, 1, 0, 0x0e, 0), {R1, MR3, R2}},
+ {"ld4.sa.nt1", M, OpMXX6aHint (4, 1, 0, 0x0e, 1), {R1, MR3, R2}},
+ {"ld4.sa.nta", M, OpMXX6aHint (4, 1, 0, 0x0e, 3), {R1, MR3, R2}},
+ {"ld8.sa", M, OpMXX6aHint (4, 1, 0, 0x0f, 0), {R1, MR3, R2}},
+ {"ld8.sa.nt1", M, OpMXX6aHint (4, 1, 0, 0x0f, 1), {R1, MR3, R2}},
+ {"ld8.sa.nta", M, OpMXX6aHint (4, 1, 0, 0x0f, 3), {R1, MR3, R2}},
+ {"ld1.bias", M, OpMXX6aHint (4, 1, 0, 0x10, 0), {R1, MR3, R2}},
+ {"ld1.bias.nt1", M, OpMXX6aHint (4, 1, 0, 0x10, 1), {R1, MR3, R2}},
+ {"ld1.bias.nta", M, OpMXX6aHint (4, 1, 0, 0x10, 3), {R1, MR3, R2}},
+ {"ld2.bias", M, OpMXX6aHint (4, 1, 0, 0x11, 0), {R1, MR3, R2}},
+ {"ld2.bias.nt1", M, OpMXX6aHint (4, 1, 0, 0x11, 1), {R1, MR3, R2}},
+ {"ld2.bias.nta", M, OpMXX6aHint (4, 1, 0, 0x11, 3), {R1, MR3, R2}},
+ {"ld4.bias", M, OpMXX6aHint (4, 1, 0, 0x12, 0), {R1, MR3, R2}},
+ {"ld4.bias.nt1", M, OpMXX6aHint (4, 1, 0, 0x12, 1), {R1, MR3, R2}},
+ {"ld4.bias.nta", M, OpMXX6aHint (4, 1, 0, 0x12, 3), {R1, MR3, R2}},
+ {"ld8.bias", M, OpMXX6aHint (4, 1, 0, 0x13, 0), {R1, MR3, R2}},
+ {"ld8.bias.nt1", M, OpMXX6aHint (4, 1, 0, 0x13, 1), {R1, MR3, R2}},
+ {"ld8.bias.nta", M, OpMXX6aHint (4, 1, 0, 0x13, 3), {R1, MR3, R2}},
+ {"ld1.acq", M, OpMXX6aHint (4, 1, 0, 0x14, 0), {R1, MR3, R2}},
+ {"ld1.acq.nt1", M, OpMXX6aHint (4, 1, 0, 0x14, 1), {R1, MR3, R2}},
+ {"ld1.acq.nta", M, OpMXX6aHint (4, 1, 0, 0x14, 3), {R1, MR3, R2}},
+ {"ld2.acq", M, OpMXX6aHint (4, 1, 0, 0x15, 0), {R1, MR3, R2}},
+ {"ld2.acq.nt1", M, OpMXX6aHint (4, 1, 0, 0x15, 1), {R1, MR3, R2}},
+ {"ld2.acq.nta", M, OpMXX6aHint (4, 1, 0, 0x15, 3), {R1, MR3, R2}},
+ {"ld4.acq", M, OpMXX6aHint (4, 1, 0, 0x16, 0), {R1, MR3, R2}},
+ {"ld4.acq.nt1", M, OpMXX6aHint (4, 1, 0, 0x16, 1), {R1, MR3, R2}},
+ {"ld4.acq.nta", M, OpMXX6aHint (4, 1, 0, 0x16, 3), {R1, MR3, R2}},
+ {"ld8.acq", M, OpMXX6aHint (4, 1, 0, 0x17, 0), {R1, MR3, R2}},
+ {"ld8.acq.nt1", M, OpMXX6aHint (4, 1, 0, 0x17, 1), {R1, MR3, R2}},
+ {"ld8.acq.nta", M, OpMXX6aHint (4, 1, 0, 0x17, 3), {R1, MR3, R2}},
+ {"ld8.fill", M, OpMXX6aHint (4, 1, 0, 0x1b, 0), {R1, MR3, R2}},
+ {"ld8.fill.nt1", M, OpMXX6aHint (4, 1, 0, 0x1b, 1), {R1, MR3, R2}},
+ {"ld8.fill.nta", M, OpMXX6aHint (4, 1, 0, 0x1b, 3), {R1, MR3, R2}},
+ {"ld1.c.clr", M, OpMXX6aHint (4, 1, 0, 0x20, 0), {R1, MR3, R2}},
+ {"ld1.c.clr.nt1", M, OpMXX6aHint (4, 1, 0, 0x20, 1), {R1, MR3, R2}},
+ {"ld1.c.clr.nta", M, OpMXX6aHint (4, 1, 0, 0x20, 3), {R1, MR3, R2}},
+ {"ld2.c.clr", M, OpMXX6aHint (4, 1, 0, 0x21, 0), {R1, MR3, R2}},
+ {"ld2.c.clr.nt1", M, OpMXX6aHint (4, 1, 0, 0x21, 1), {R1, MR3, R2}},
+ {"ld2.c.clr.nta", M, OpMXX6aHint (4, 1, 0, 0x21, 3), {R1, MR3, R2}},
+ {"ld4.c.clr", M, OpMXX6aHint (4, 1, 0, 0x22, 0), {R1, MR3, R2}},
+ {"ld4.c.clr.nt1", M, OpMXX6aHint (4, 1, 0, 0x22, 1), {R1, MR3, R2}},
+ {"ld4.c.clr.nta", M, OpMXX6aHint (4, 1, 0, 0x22, 3), {R1, MR3, R2}},
+ {"ld8.c.clr", M, OpMXX6aHint (4, 1, 0, 0x23, 0), {R1, MR3, R2}},
+ {"ld8.c.clr.nt1", M, OpMXX6aHint (4, 1, 0, 0x23, 1), {R1, MR3, R2}},
+ {"ld8.c.clr.nta", M, OpMXX6aHint (4, 1, 0, 0x23, 3), {R1, MR3, R2}},
+ {"ld1.c.nc", M, OpMXX6aHint (4, 1, 0, 0x24, 0), {R1, MR3, R2}},
+ {"ld1.c.nc.nt1", M, OpMXX6aHint (4, 1, 0, 0x24, 1), {R1, MR3, R2}},
+ {"ld1.c.nc.nta", M, OpMXX6aHint (4, 1, 0, 0x24, 3), {R1, MR3, R2}},
+ {"ld2.c.nc", M, OpMXX6aHint (4, 1, 0, 0x25, 0), {R1, MR3, R2}},
+ {"ld2.c.nc.nt1", M, OpMXX6aHint (4, 1, 0, 0x25, 1), {R1, MR3, R2}},
+ {"ld2.c.nc.nta", M, OpMXX6aHint (4, 1, 0, 0x25, 3), {R1, MR3, R2}},
+ {"ld4.c.nc", M, OpMXX6aHint (4, 1, 0, 0x26, 0), {R1, MR3, R2}},
+ {"ld4.c.nc.nt1", M, OpMXX6aHint (4, 1, 0, 0x26, 1), {R1, MR3, R2}},
+ {"ld4.c.nc.nta", M, OpMXX6aHint (4, 1, 0, 0x26, 3), {R1, MR3, R2}},
+ {"ld8.c.nc", M, OpMXX6aHint (4, 1, 0, 0x27, 0), {R1, MR3, R2}},
+ {"ld8.c.nc.nt1", M, OpMXX6aHint (4, 1, 0, 0x27, 1), {R1, MR3, R2}},
+ {"ld8.c.nc.nta", M, OpMXX6aHint (4, 1, 0, 0x27, 3), {R1, MR3, R2}},
+ {"ld1.c.clr.acq", M, OpMXX6aHint (4, 1, 0, 0x28, 0), {R1, MR3, R2}},
+ {"ld1.c.clr.acq.nt1", M, OpMXX6aHint (4, 1, 0, 0x28, 1), {R1, MR3, R2}},
+ {"ld1.c.clr.acq.nta", M, OpMXX6aHint (4, 1, 0, 0x28, 3), {R1, MR3, R2}},
+ {"ld2.c.clr.acq", M, OpMXX6aHint (4, 1, 0, 0x29, 0), {R1, MR3, R2}},
+ {"ld2.c.clr.acq.nt1", M, OpMXX6aHint (4, 1, 0, 0x29, 1), {R1, MR3, R2}},
+ {"ld2.c.clr.acq.nta", M, OpMXX6aHint (4, 1, 0, 0x29, 3), {R1, MR3, R2}},
+ {"ld4.c.clr.acq", M, OpMXX6aHint (4, 1, 0, 0x2a, 0), {R1, MR3, R2}},
+ {"ld4.c.clr.acq.nt1", M, OpMXX6aHint (4, 1, 0, 0x2a, 1), {R1, MR3, R2}},
+ {"ld4.c.clr.acq.nta", M, OpMXX6aHint (4, 1, 0, 0x2a, 3), {R1, MR3, R2}},
+ {"ld8.c.clr.acq", M, OpMXX6aHint (4, 1, 0, 0x2b, 0), {R1, MR3, R2}},
+ {"ld8.c.clr.acq.nt1", M, OpMXX6aHint (4, 1, 0, 0x2b, 1), {R1, MR3, R2}},
+ {"ld8.c.clr.acq.nta", M, OpMXX6aHint (4, 1, 0, 0x2b, 3), {R1, MR3, R2}},
+
+ {"st1", M, OpMXX6aHint (4, 0, 0, 0x30, 0), {MR3, R2}},
+ {"st1.nta", M, OpMXX6aHint (4, 0, 0, 0x30, 3), {MR3, R2}},
+ {"st2", M, OpMXX6aHint (4, 0, 0, 0x31, 0), {MR3, R2}},
+ {"st2.nta", M, OpMXX6aHint (4, 0, 0, 0x31, 3), {MR3, R2}},
+ {"st4", M, OpMXX6aHint (4, 0, 0, 0x32, 0), {MR3, R2}},
+ {"st4.nta", M, OpMXX6aHint (4, 0, 0, 0x32, 3), {MR3, R2}},
+ {"st8", M, OpMXX6aHint (4, 0, 0, 0x33, 0), {MR3, R2}},
+ {"st8.nta", M, OpMXX6aHint (4, 0, 0, 0x33, 3), {MR3, R2}},
+ {"st1.rel", M, OpMXX6aHint (4, 0, 0, 0x34, 0), {MR3, R2}},
+ {"st1.rel.nta", M, OpMXX6aHint (4, 0, 0, 0x34, 3), {MR3, R2}},
+ {"st2.rel", M, OpMXX6aHint (4, 0, 0, 0x35, 0), {MR3, R2}},
+ {"st2.rel.nta", M, OpMXX6aHint (4, 0, 0, 0x35, 3), {MR3, R2}},
+ {"st4.rel", M, OpMXX6aHint (4, 0, 0, 0x36, 0), {MR3, R2}},
+ {"st4.rel.nta", M, OpMXX6aHint (4, 0, 0, 0x36, 3), {MR3, R2}},
+ {"st8.rel", M, OpMXX6aHint (4, 0, 0, 0x37, 0), {MR3, R2}},
+ {"st8.rel.nta", M, OpMXX6aHint (4, 0, 0, 0x37, 3), {MR3, R2}},
+ {"st8.spill", M, OpMXX6aHint (4, 0, 0, 0x3b, 0), {MR3, R2}},
+ {"st8.spill.nta", M, OpMXX6aHint (4, 0, 0, 0x3b, 3), {MR3, R2}},
+
+#define CMPXCHG(c,h) M, OpMXX6aHint (4, 0, 1, c, h), {R1, MR3, R2, AR_CCV}
+ {"cmpxchg1.acq", CMPXCHG (0x00, 0)},
+ {"cmpxchg1.acq.nt1", CMPXCHG (0x00, 1)},
+ {"cmpxchg1.acq.nta", CMPXCHG (0x00, 3)},
+ {"cmpxchg2.acq", CMPXCHG (0x01, 0)},
+ {"cmpxchg2.acq.nt1", CMPXCHG (0x01, 1)},
+ {"cmpxchg2.acq.nta", CMPXCHG (0x01, 3)},
+ {"cmpxchg4.acq", CMPXCHG (0x02, 0)},
+ {"cmpxchg4.acq.nt1", CMPXCHG (0x02, 1)},
+ {"cmpxchg4.acq.nta", CMPXCHG (0x02, 3)},
+ {"cmpxchg8.acq", CMPXCHG (0x03, 0)},
+ {"cmpxchg8.acq.nt1", CMPXCHG (0x03, 1)},
+ {"cmpxchg8.acq.nta", CMPXCHG (0x03, 3)},
+ {"cmpxchg1.rel", CMPXCHG (0x04, 0)},
+ {"cmpxchg1.rel.nt1", CMPXCHG (0x04, 1)},
+ {"cmpxchg1.rel.nta", CMPXCHG (0x04, 3)},
+ {"cmpxchg2.rel", CMPXCHG (0x05, 0)},
+ {"cmpxchg2.rel.nt1", CMPXCHG (0x05, 1)},
+ {"cmpxchg2.rel.nta", CMPXCHG (0x05, 3)},
+ {"cmpxchg4.rel", CMPXCHG (0x06, 0)},
+ {"cmpxchg4.rel.nt1", CMPXCHG (0x06, 1)},
+ {"cmpxchg4.rel.nta", CMPXCHG (0x06, 3)},
+ {"cmpxchg8.rel", CMPXCHG (0x07, 0)},
+ {"cmpxchg8.rel.nt1", CMPXCHG (0x07, 1)},
+ {"cmpxchg8.rel.nta", CMPXCHG (0x07, 3)},
+#undef CMPXCHG
+ {"xchg1", M, OpMXX6aHint (4, 0, 1, 0x08, 0), {R1, MR3, R2}},
+ {"xchg1.nt1", M, OpMXX6aHint (4, 0, 1, 0x08, 1), {R1, MR3, R2}},
+ {"xchg1.nta", M, OpMXX6aHint (4, 0, 1, 0x08, 3), {R1, MR3, R2}},
+ {"xchg2", M, OpMXX6aHint (4, 0, 1, 0x09, 0), {R1, MR3, R2}},
+ {"xchg2.nt1", M, OpMXX6aHint (4, 0, 1, 0x09, 1), {R1, MR3, R2}},
+ {"xchg2.nta", M, OpMXX6aHint (4, 0, 1, 0x09, 3), {R1, MR3, R2}},
+ {"xchg4", M, OpMXX6aHint (4, 0, 1, 0x0a, 0), {R1, MR3, R2}},
+ {"xchg4.nt1", M, OpMXX6aHint (4, 0, 1, 0x0a, 1), {R1, MR3, R2}},
+ {"xchg4.nta", M, OpMXX6aHint (4, 0, 1, 0x0a, 3), {R1, MR3, R2}},
+ {"xchg8", M, OpMXX6aHint (4, 0, 1, 0x0b, 0), {R1, MR3, R2}},
+ {"xchg8.nt1", M, OpMXX6aHint (4, 0, 1, 0x0b, 1), {R1, MR3, R2}},
+ {"xchg8.nta", M, OpMXX6aHint (4, 0, 1, 0x0b, 3), {R1, MR3, R2}},
+
+ {"fetchadd4.acq", M, OpMXX6aHint (4, 0, 1, 0x12, 0), {R1, MR3, INC3}},
+ {"fetchadd4.acq.nt1", M, OpMXX6aHint (4, 0, 1, 0x12, 1), {R1, MR3, INC3}},
+ {"fetchadd4.acq.nta", M, OpMXX6aHint (4, 0, 1, 0x12, 3), {R1, MR3, INC3}},
+ {"fetchadd8.acq", M, OpMXX6aHint (4, 0, 1, 0x13, 0), {R1, MR3, INC3}},
+ {"fetchadd8.acq.nt1", M, OpMXX6aHint (4, 0, 1, 0x13, 1), {R1, MR3, INC3}},
+ {"fetchadd8.acq.nta", M, OpMXX6aHint (4, 0, 1, 0x13, 3), {R1, MR3, INC3}},
+ {"fetchadd4.rel", M, OpMXX6aHint (4, 0, 1, 0x16, 0), {R1, MR3, INC3}},
+ {"fetchadd4.rel.nt1", M, OpMXX6aHint (4, 0, 1, 0x16, 1), {R1, MR3, INC3}},
+ {"fetchadd4.rel.nta", M, OpMXX6aHint (4, 0, 1, 0x16, 3), {R1, MR3, INC3}},
+ {"fetchadd8.rel", M, OpMXX6aHint (4, 0, 1, 0x17, 0), {R1, MR3, INC3}},
+ {"fetchadd8.rel.nt1", M, OpMXX6aHint (4, 0, 1, 0x17, 1), {R1, MR3, INC3}},
+ {"fetchadd8.rel.nta", M, OpMXX6aHint (4, 0, 1, 0x17, 3), {R1, MR3, INC3}},
+
+ {"getf.sig", M, OpMXX6a (4, 0, 1, 0x1c), {R1, F2}},
+ {"getf.exp", M, OpMXX6a (4, 0, 1, 0x1d), {R1, F2}},
+ {"getf.s", M, OpMXX6a (4, 0, 1, 0x1e), {R1, F2}},
+ {"getf.d", M, OpMXX6a (4, 0, 1, 0x1f), {R1, F2}},
+
+ /* integer load w/increment by immediate */
+ {"ld1", M, OpX6aHint (5, 0x00, 0), {R1, MR3, IMM9b}},
+ {"ld1.nt1", M, OpX6aHint (5, 0x00, 1), {R1, MR3, IMM9b}},
+ {"ld1.nta", M, OpX6aHint (5, 0x00, 3), {R1, MR3, IMM9b}},
+ {"ld2", M, OpX6aHint (5, 0x01, 0), {R1, MR3, IMM9b}},
+ {"ld2.nt1", M, OpX6aHint (5, 0x01, 1), {R1, MR3, IMM9b}},
+ {"ld2.nta", M, OpX6aHint (5, 0x01, 3), {R1, MR3, IMM9b}},
+ {"ld4", M, OpX6aHint (5, 0x02, 0), {R1, MR3, IMM9b}},
+ {"ld4.nt1", M, OpX6aHint (5, 0x02, 1), {R1, MR3, IMM9b}},
+ {"ld4.nta", M, OpX6aHint (5, 0x02, 3), {R1, MR3, IMM9b}},
+ {"ld8", M, OpX6aHint (5, 0x03, 0), {R1, MR3, IMM9b}},
+ {"ld8.nt1", M, OpX6aHint (5, 0x03, 1), {R1, MR3, IMM9b}},
+ {"ld8.nta", M, OpX6aHint (5, 0x03, 3), {R1, MR3, IMM9b}},
+ {"ld1.s", M, OpX6aHint (5, 0x04, 0), {R1, MR3, IMM9b}},
+ {"ld1.s.nt1", M, OpX6aHint (5, 0x04, 1), {R1, MR3, IMM9b}},
+ {"ld1.s.nta", M, OpX6aHint (5, 0x04, 3), {R1, MR3, IMM9b}},
+ {"ld2.s", M, OpX6aHint (5, 0x05, 0), {R1, MR3, IMM9b}},
+ {"ld2.s.nt1", M, OpX6aHint (5, 0x05, 1), {R1, MR3, IMM9b}},
+ {"ld2.s.nta", M, OpX6aHint (5, 0x05, 3), {R1, MR3, IMM9b}},
+ {"ld4.s", M, OpX6aHint (5, 0x06, 0), {R1, MR3, IMM9b}},
+ {"ld4.s.nt1", M, OpX6aHint (5, 0x06, 1), {R1, MR3, IMM9b}},
+ {"ld4.s.nta", M, OpX6aHint (5, 0x06, 3), {R1, MR3, IMM9b}},
+ {"ld8.s", M, OpX6aHint (5, 0x07, 0), {R1, MR3, IMM9b}},
+ {"ld8.s.nt1", M, OpX6aHint (5, 0x07, 1), {R1, MR3, IMM9b}},
+ {"ld8.s.nta", M, OpX6aHint (5, 0x07, 3), {R1, MR3, IMM9b}},
+ {"ld1.a", M, OpX6aHint (5, 0x08, 0), {R1, MR3, IMM9b}},
+ {"ld1.a.nt1", M, OpX6aHint (5, 0x08, 1), {R1, MR3, IMM9b}},
+ {"ld1.a.nta", M, OpX6aHint (5, 0x08, 3), {R1, MR3, IMM9b}},
+ {"ld2.a", M, OpX6aHint (5, 0x09, 0), {R1, MR3, IMM9b}},
+ {"ld2.a.nt1", M, OpX6aHint (5, 0x09, 1), {R1, MR3, IMM9b}},
+ {"ld2.a.nta", M, OpX6aHint (5, 0x09, 3), {R1, MR3, IMM9b}},
+ {"ld4.a", M, OpX6aHint (5, 0x0a, 0), {R1, MR3, IMM9b}},
+ {"ld4.a.nt1", M, OpX6aHint (5, 0x0a, 1), {R1, MR3, IMM9b}},
+ {"ld4.a.nta", M, OpX6aHint (5, 0x0a, 3), {R1, MR3, IMM9b}},
+ {"ld8.a", M, OpX6aHint (5, 0x0b, 0), {R1, MR3, IMM9b}},
+ {"ld8.a.nt1", M, OpX6aHint (5, 0x0b, 1), {R1, MR3, IMM9b}},
+ {"ld8.a.nta", M, OpX6aHint (5, 0x0b, 3), {R1, MR3, IMM9b}},
+ {"ld1.sa", M, OpX6aHint (5, 0x0c, 0), {R1, MR3, IMM9b}},
+ {"ld1.sa.nt1", M, OpX6aHint (5, 0x0c, 1), {R1, MR3, IMM9b}},
+ {"ld1.sa.nta", M, OpX6aHint (5, 0x0c, 3), {R1, MR3, IMM9b}},
+ {"ld2.sa", M, OpX6aHint (5, 0x0d, 0), {R1, MR3, IMM9b}},
+ {"ld2.sa.nt1", M, OpX6aHint (5, 0x0d, 1), {R1, MR3, IMM9b}},
+ {"ld2.sa.nta", M, OpX6aHint (5, 0x0d, 3), {R1, MR3, IMM9b}},
+ {"ld4.sa", M, OpX6aHint (5, 0x0e, 0), {R1, MR3, IMM9b}},
+ {"ld4.sa.nt1", M, OpX6aHint (5, 0x0e, 1), {R1, MR3, IMM9b}},
+ {"ld4.sa.nta", M, OpX6aHint (5, 0x0e, 3), {R1, MR3, IMM9b}},
+ {"ld8.sa", M, OpX6aHint (5, 0x0f, 0), {R1, MR3, IMM9b}},
+ {"ld8.sa.nt1", M, OpX6aHint (5, 0x0f, 1), {R1, MR3, IMM9b}},
+ {"ld8.sa.nta", M, OpX6aHint (5, 0x0f, 3), {R1, MR3, IMM9b}},
+ {"ld1.bias", M, OpX6aHint (5, 0x10, 0), {R1, MR3, IMM9b}},
+ {"ld1.bias.nt1", M, OpX6aHint (5, 0x10, 1), {R1, MR3, IMM9b}},
+ {"ld1.bias.nta", M, OpX6aHint (5, 0x10, 3), {R1, MR3, IMM9b}},
+ {"ld2.bias", M, OpX6aHint (5, 0x11, 0), {R1, MR3, IMM9b}},
+ {"ld2.bias.nt1", M, OpX6aHint (5, 0x11, 1), {R1, MR3, IMM9b}},
+ {"ld2.bias.nta", M, OpX6aHint (5, 0x11, 3), {R1, MR3, IMM9b}},
+ {"ld4.bias", M, OpX6aHint (5, 0x12, 0), {R1, MR3, IMM9b}},
+ {"ld4.bias.nt1", M, OpX6aHint (5, 0x12, 1), {R1, MR3, IMM9b}},
+ {"ld4.bias.nta", M, OpX6aHint (5, 0x12, 3), {R1, MR3, IMM9b}},
+ {"ld8.bias", M, OpX6aHint (5, 0x13, 0), {R1, MR3, IMM9b}},
+ {"ld8.bias.nt1", M, OpX6aHint (5, 0x13, 1), {R1, MR3, IMM9b}},
+ {"ld8.bias.nta", M, OpX6aHint (5, 0x13, 3), {R1, MR3, IMM9b}},
+ {"ld1.acq", M, OpX6aHint (5, 0x14, 0), {R1, MR3, IMM9b}},
+ {"ld1.acq.nt1", M, OpX6aHint (5, 0x14, 1), {R1, MR3, IMM9b}},
+ {"ld1.acq.nta", M, OpX6aHint (5, 0x14, 3), {R1, MR3, IMM9b}},
+ {"ld2.acq", M, OpX6aHint (5, 0x15, 0), {R1, MR3, IMM9b}},
+ {"ld2.acq.nt1", M, OpX6aHint (5, 0x15, 1), {R1, MR3, IMM9b}},
+ {"ld2.acq.nta", M, OpX6aHint (5, 0x15, 3), {R1, MR3, IMM9b}},
+ {"ld4.acq", M, OpX6aHint (5, 0x16, 0), {R1, MR3, IMM9b}},
+ {"ld4.acq.nt1", M, OpX6aHint (5, 0x16, 1), {R1, MR3, IMM9b}},
+ {"ld4.acq.nta", M, OpX6aHint (5, 0x16, 3), {R1, MR3, IMM9b}},
+ {"ld8.acq", M, OpX6aHint (5, 0x17, 0), {R1, MR3, IMM9b}},
+ {"ld8.acq.nt1", M, OpX6aHint (5, 0x17, 1), {R1, MR3, IMM9b}},
+ {"ld8.acq.nta", M, OpX6aHint (5, 0x17, 3), {R1, MR3, IMM9b}},
+ {"ld8.fill", M, OpX6aHint (5, 0x1b, 0), {R1, MR3, IMM9b}},
+ {"ld8.fill.nt1", M, OpX6aHint (5, 0x1b, 1), {R1, MR3, IMM9b}},
+ {"ld8.fill.nta", M, OpX6aHint (5, 0x1b, 3), {R1, MR3, IMM9b}},
+ {"ld1.c.clr", M, OpX6aHint (5, 0x20, 0), {R1, MR3, IMM9b}},
+ {"ld1.c.clr.nt1", M, OpX6aHint (5, 0x20, 1), {R1, MR3, IMM9b}},
+ {"ld1.c.clr.nta", M, OpX6aHint (5, 0x20, 3), {R1, MR3, IMM9b}},
+ {"ld2.c.clr", M, OpX6aHint (5, 0x21, 0), {R1, MR3, IMM9b}},
+ {"ld2.c.clr.nt1", M, OpX6aHint (5, 0x21, 1), {R1, MR3, IMM9b}},
+ {"ld2.c.clr.nta", M, OpX6aHint (5, 0x21, 3), {R1, MR3, IMM9b}},
+ {"ld4.c.clr", M, OpX6aHint (5, 0x22, 0), {R1, MR3, IMM9b}},
+ {"ld4.c.clr.nt1", M, OpX6aHint (5, 0x22, 1), {R1, MR3, IMM9b}},
+ {"ld4.c.clr.nta", M, OpX6aHint (5, 0x22, 3), {R1, MR3, IMM9b}},
+ {"ld8.c.clr", M, OpX6aHint (5, 0x23, 0), {R1, MR3, IMM9b}},
+ {"ld8.c.clr.nt1", M, OpX6aHint (5, 0x23, 1), {R1, MR3, IMM9b}},
+ {"ld8.c.clr.nta", M, OpX6aHint (5, 0x23, 3), {R1, MR3, IMM9b}},
+ {"ld1.c.nc", M, OpX6aHint (5, 0x24, 0), {R1, MR3, IMM9b}},
+ {"ld1.c.nc.nt1", M, OpX6aHint (5, 0x24, 1), {R1, MR3, IMM9b}},
+ {"ld1.c.nc.nta", M, OpX6aHint (5, 0x24, 3), {R1, MR3, IMM9b}},
+ {"ld2.c.nc", M, OpX6aHint (5, 0x25, 0), {R1, MR3, IMM9b}},
+ {"ld2.c.nc.nt1", M, OpX6aHint (5, 0x25, 1), {R1, MR3, IMM9b}},
+ {"ld2.c.nc.nta", M, OpX6aHint (5, 0x25, 3), {R1, MR3, IMM9b}},
+ {"ld4.c.nc", M, OpX6aHint (5, 0x26, 0), {R1, MR3, IMM9b}},
+ {"ld4.c.nc.nt1", M, OpX6aHint (5, 0x26, 1), {R1, MR3, IMM9b}},
+ {"ld4.c.nc.nta", M, OpX6aHint (5, 0x26, 3), {R1, MR3, IMM9b}},
+ {"ld8.c.nc", M, OpX6aHint (5, 0x27, 0), {R1, MR3, IMM9b}},
+ {"ld8.c.nc.nt1", M, OpX6aHint (5, 0x27, 1), {R1, MR3, IMM9b}},
+ {"ld8.c.nc.nta", M, OpX6aHint (5, 0x27, 3), {R1, MR3, IMM9b}},
+ {"ld1.c.clr.acq", M, OpX6aHint (5, 0x28, 0), {R1, MR3, IMM9b}},
+ {"ld1.c.clr.acq.nt1", M, OpX6aHint (5, 0x28, 1), {R1, MR3, IMM9b}},
+ {"ld1.c.clr.acq.nta", M, OpX6aHint (5, 0x28, 3), {R1, MR3, IMM9b}},
+ {"ld2.c.clr.acq", M, OpX6aHint (5, 0x29, 0), {R1, MR3, IMM9b}},
+ {"ld2.c.clr.acq.nt1", M, OpX6aHint (5, 0x29, 1), {R1, MR3, IMM9b}},
+ {"ld2.c.clr.acq.nta", M, OpX6aHint (5, 0x29, 3), {R1, MR3, IMM9b}},
+ {"ld4.c.clr.acq", M, OpX6aHint (5, 0x2a, 0), {R1, MR3, IMM9b}},
+ {"ld4.c.clr.acq.nt1", M, OpX6aHint (5, 0x2a, 1), {R1, MR3, IMM9b}},
+ {"ld4.c.clr.acq.nta", M, OpX6aHint (5, 0x2a, 3), {R1, MR3, IMM9b}},
+ {"ld8.c.clr.acq", M, OpX6aHint (5, 0x2b, 0), {R1, MR3, IMM9b}},
+ {"ld8.c.clr.acq.nt1", M, OpX6aHint (5, 0x2b, 1), {R1, MR3, IMM9b}},
+ {"ld8.c.clr.acq.nta", M, OpX6aHint (5, 0x2b, 3), {R1, MR3, IMM9b}},
+
+ /* store w/increment by immediate */
+ {"st1", M, OpX6aHint (5, 0x30, 0), {MR3, R2, IMM9a}},
+ {"st1.nta", M, OpX6aHint (5, 0x30, 3), {MR3, R2, IMM9a}},
+ {"st2", M, OpX6aHint (5, 0x31, 0), {MR3, R2, IMM9a}},
+ {"st2.nta", M, OpX6aHint (5, 0x31, 3), {MR3, R2, IMM9a}},
+ {"st4", M, OpX6aHint (5, 0x32, 0), {MR3, R2, IMM9a}},
+ {"st4.nta", M, OpX6aHint (5, 0x32, 3), {MR3, R2, IMM9a}},
+ {"st8", M, OpX6aHint (5, 0x33, 0), {MR3, R2, IMM9a}},
+ {"st8.nta", M, OpX6aHint (5, 0x33, 3), {MR3, R2, IMM9a}},
+ {"st1.rel", M, OpX6aHint (5, 0x34, 0), {MR3, R2, IMM9a}},
+ {"st1.rel.nta", M, OpX6aHint (5, 0x34, 3), {MR3, R2, IMM9a}},
+ {"st2.rel", M, OpX6aHint (5, 0x35, 0), {MR3, R2, IMM9a}},
+ {"st2.rel.nta", M, OpX6aHint (5, 0x35, 3), {MR3, R2, IMM9a}},
+ {"st4.rel", M, OpX6aHint (5, 0x36, 0), {MR3, R2, IMM9a}},
+ {"st4.rel.nta", M, OpX6aHint (5, 0x36, 3), {MR3, R2, IMM9a}},
+ {"st8.rel", M, OpX6aHint (5, 0x37, 0), {MR3, R2, IMM9a}},
+ {"st8.rel.nta", M, OpX6aHint (5, 0x37, 3), {MR3, R2, IMM9a}},
+ {"st8.spill", M, OpX6aHint (5, 0x3b, 0), {MR3, R2, IMM9a}},
+ {"st8.spill.nta", M, OpX6aHint (5, 0x3b, 3), {MR3, R2, IMM9a}},
+
+ /* floating-point load */
+ {"ldfs", M, OpMXX6aHint (6, 0, 0, 0x02, 0), {F1, MR3}},
+ {"ldfs.nt1", M, OpMXX6aHint (6, 0, 0, 0x02, 1), {F1, MR3}},
+ {"ldfs.nta", M, OpMXX6aHint (6, 0, 0, 0x02, 3), {F1, MR3}},
+ {"ldfd", M, OpMXX6aHint (6, 0, 0, 0x03, 0), {F1, MR3}},
+ {"ldfd.nt1", M, OpMXX6aHint (6, 0, 0, 0x03, 1), {F1, MR3}},
+ {"ldfd.nta", M, OpMXX6aHint (6, 0, 0, 0x03, 3), {F1, MR3}},
+ {"ldf8", M, OpMXX6aHint (6, 0, 0, 0x01, 0), {F1, MR3}},
+ {"ldf8.nt1", M, OpMXX6aHint (6, 0, 0, 0x01, 1), {F1, MR3}},
+ {"ldf8.nta", M, OpMXX6aHint (6, 0, 0, 0x01, 3), {F1, MR3}},
+ {"ldfe", M, OpMXX6aHint (6, 0, 0, 0x00, 0), {F1, MR3}},
+ {"ldfe.nt1", M, OpMXX6aHint (6, 0, 0, 0x00, 1), {F1, MR3}},
+ {"ldfe.nta", M, OpMXX6aHint (6, 0, 0, 0x00, 3), {F1, MR3}},
+ {"ldfs.s", M, OpMXX6aHint (6, 0, 0, 0x06, 0), {F1, MR3}},
+ {"ldfs.s.nt1", M, OpMXX6aHint (6, 0, 0, 0x06, 1), {F1, MR3}},
+ {"ldfs.s.nta", M, OpMXX6aHint (6, 0, 0, 0x06, 3), {F1, MR3}},
+ {"ldfd.s", M, OpMXX6aHint (6, 0, 0, 0x07, 0), {F1, MR3}},
+ {"ldfd.s.nt1", M, OpMXX6aHint (6, 0, 0, 0x07, 1), {F1, MR3}},
+ {"ldfd.s.nta", M, OpMXX6aHint (6, 0, 0, 0x07, 3), {F1, MR3}},
+ {"ldf8.s", M, OpMXX6aHint (6, 0, 0, 0x05, 0), {F1, MR3}},
+ {"ldf8.s.nt1", M, OpMXX6aHint (6, 0, 0, 0x05, 1), {F1, MR3}},
+ {"ldf8.s.nta", M, OpMXX6aHint (6, 0, 0, 0x05, 3), {F1, MR3}},
+ {"ldfe.s", M, OpMXX6aHint (6, 0, 0, 0x04, 0), {F1, MR3}},
+ {"ldfe.s.nt1", M, OpMXX6aHint (6, 0, 0, 0x04, 1), {F1, MR3}},
+ {"ldfe.s.nta", M, OpMXX6aHint (6, 0, 0, 0x04, 3), {F1, MR3}},
+ {"ldfs.a", M, OpMXX6aHint (6, 0, 0, 0x0a, 0), {F1, MR3}},
+ {"ldfs.a.nt1", M, OpMXX6aHint (6, 0, 0, 0x0a, 1), {F1, MR3}},
+ {"ldfs.a.nta", M, OpMXX6aHint (6, 0, 0, 0x0a, 3), {F1, MR3}},
+ {"ldfd.a", M, OpMXX6aHint (6, 0, 0, 0x0b, 0), {F1, MR3}},
+ {"ldfd.a.nt1", M, OpMXX6aHint (6, 0, 0, 0x0b, 1), {F1, MR3}},
+ {"ldfd.a.nta", M, OpMXX6aHint (6, 0, 0, 0x0b, 3), {F1, MR3}},
+ {"ldf8.a", M, OpMXX6aHint (6, 0, 0, 0x09, 0), {F1, MR3}},
+ {"ldf8.a.nt1", M, OpMXX6aHint (6, 0, 0, 0x09, 1), {F1, MR3}},
+ {"ldf8.a.nta", M, OpMXX6aHint (6, 0, 0, 0x09, 3), {F1, MR3}},
+ {"ldfe.a", M, OpMXX6aHint (6, 0, 0, 0x08, 0), {F1, MR3}},
+ {"ldfe.a.nt1", M, OpMXX6aHint (6, 0, 0, 0x08, 1), {F1, MR3}},
+ {"ldfe.a.nta", M, OpMXX6aHint (6, 0, 0, 0x08, 3), {F1, MR3}},
+ {"ldfs.sa", M, OpMXX6aHint (6, 0, 0, 0x0e, 0), {F1, MR3}},
+ {"ldfs.sa.nt1", M, OpMXX6aHint (6, 0, 0, 0x0e, 1), {F1, MR3}},
+ {"ldfs.sa.nta", M, OpMXX6aHint (6, 0, 0, 0x0e, 3), {F1, MR3}},
+ {"ldfd.sa", M, OpMXX6aHint (6, 0, 0, 0x0f, 0), {F1, MR3}},
+ {"ldfd.sa.nt1", M, OpMXX6aHint (6, 0, 0, 0x0f, 1), {F1, MR3}},
+ {"ldfd.sa.nta", M, OpMXX6aHint (6, 0, 0, 0x0f, 3), {F1, MR3}},
+ {"ldf8.sa", M, OpMXX6aHint (6, 0, 0, 0x0d, 0), {F1, MR3}},
+ {"ldf8.sa.nt1", M, OpMXX6aHint (6, 0, 0, 0x0d, 1), {F1, MR3}},
+ {"ldf8.sa.nta", M, OpMXX6aHint (6, 0, 0, 0x0d, 3), {F1, MR3}},
+ {"ldfe.sa", M, OpMXX6aHint (6, 0, 0, 0x0c, 0), {F1, MR3}},
+ {"ldfe.sa.nt1", M, OpMXX6aHint (6, 0, 0, 0x0c, 1), {F1, MR3}},
+ {"ldfe.sa.nta", M, OpMXX6aHint (6, 0, 0, 0x0c, 3), {F1, MR3}},
+ {"ldf.fill", M, OpMXX6aHint (6, 0, 0, 0x1b, 0), {F1, MR3}},
+ {"ldf.fill.nt1", M, OpMXX6aHint (6, 0, 0, 0x1b, 1), {F1, MR3}},
+ {"ldf.fill.nta", M, OpMXX6aHint (6, 0, 0, 0x1b, 3), {F1, MR3}},
+ {"ldfs.c.clr", M, OpMXX6aHint (6, 0, 0, 0x22, 0), {F1, MR3}},
+ {"ldfs.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x22, 1), {F1, MR3}},
+ {"ldfs.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x22, 3), {F1, MR3}},
+ {"ldfd.c.clr", M, OpMXX6aHint (6, 0, 0, 0x23, 0), {F1, MR3}},
+ {"ldfd.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x23, 1), {F1, MR3}},
+ {"ldfd.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x23, 3), {F1, MR3}},
+ {"ldf8.c.clr", M, OpMXX6aHint (6, 0, 0, 0x21, 0), {F1, MR3}},
+ {"ldf8.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x21, 1), {F1, MR3}},
+ {"ldf8.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x21, 3), {F1, MR3}},
+ {"ldfe.c.clr", M, OpMXX6aHint (6, 0, 0, 0x20, 0), {F1, MR3}},
+ {"ldfe.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x20, 1), {F1, MR3}},
+ {"ldfe.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x20, 3), {F1, MR3}},
+ {"ldfs.c.nc", M, OpMXX6aHint (6, 0, 0, 0x26, 0), {F1, MR3}},
+ {"ldfs.c.nc.nt1", M, OpMXX6aHint (6, 0, 0, 0x26, 1), {F1, MR3}},
+ {"ldfs.c.nc.nta", M, OpMXX6aHint (6, 0, 0, 0x26, 3), {F1, MR3}},
+ {"ldfd.c.nc", M, OpMXX6aHint (6, 0, 0, 0x27, 0), {F1, MR3}},
+ {"ldfd.c.nc.nt1", M, OpMXX6aHint (6, 0, 0, 0x27, 1), {F1, MR3}},
+ {"ldfd.c.nc.nta", M, OpMXX6aHint (6, 0, 0, 0x27, 3), {F1, MR3}},
+ {"ldf8.c.nc", M, OpMXX6aHint (6, 0, 0, 0x25, 0), {F1, MR3}},
+ {"ldf8.c.nc.nt1", M, OpMXX6aHint (6, 0, 0, 0x25, 1), {F1, MR3}},
+ {"ldf8.c.nc.nta", M, OpMXX6aHint (6, 0, 0, 0x25, 3), {F1, MR3}},
+ {"ldfe.c.nc", M, OpMXX6aHint (6, 0, 0, 0x24, 0), {F1, MR3}},
+ {"ldfe.c.nc.nt1", M, OpMXX6aHint (6, 0, 0, 0x24, 1), {F1, MR3}},
+ {"ldfe.c.nc.nta", M, OpMXX6aHint (6, 0, 0, 0x24, 3), {F1, MR3}},
+
+ {"ldfs", M, OpMXX6aHint (6, 1, 0, 0x02, 0), {F1, MR3, R2}},
+ {"ldfs.nt1", M, OpMXX6aHint (6, 1, 0, 0x02, 1), {F1, MR3, R2}},
+ {"ldfs.nta", M, OpMXX6aHint (6, 1, 0, 0x02, 3), {F1, MR3, R2}},
+ {"ldfd", M, OpMXX6aHint (6, 1, 0, 0x03, 0), {F1, MR3, R2}},
+ {"ldfd.nt1", M, OpMXX6aHint (6, 1, 0, 0x03, 1), {F1, MR3, R2}},
+ {"ldfd.nta", M, OpMXX6aHint (6, 1, 0, 0x03, 3), {F1, MR3, R2}},
+ {"ldf8", M, OpMXX6aHint (6, 1, 0, 0x01, 0), {F1, MR3, R2}},
+ {"ldf8.nt1", M, OpMXX6aHint (6, 1, 0, 0x01, 1), {F1, MR3, R2}},
+ {"ldf8.nta", M, OpMXX6aHint (6, 1, 0, 0x01, 3), {F1, MR3, R2}},
+ {"ldfe", M, OpMXX6aHint (6, 1, 0, 0x00, 0), {F1, MR3, R2}},
+ {"ldfe.nt1", M, OpMXX6aHint (6, 1, 0, 0x00, 1), {F1, MR3, R2}},
+ {"ldfe.nta", M, OpMXX6aHint (6, 1, 0, 0x00, 3), {F1, MR3, R2}},
+ {"ldfs.s", M, OpMXX6aHint (6, 1, 0, 0x06, 0), {F1, MR3, R2}},
+ {"ldfs.s.nt1", M, OpMXX6aHint (6, 1, 0, 0x06, 1), {F1, MR3, R2}},
+ {"ldfs.s.nta", M, OpMXX6aHint (6, 1, 0, 0x06, 3), {F1, MR3, R2}},
+ {"ldfd.s", M, OpMXX6aHint (6, 1, 0, 0x07, 0), {F1, MR3, R2}},
+ {"ldfd.s.nt1", M, OpMXX6aHint (6, 1, 0, 0x07, 1), {F1, MR3, R2}},
+ {"ldfd.s.nta", M, OpMXX6aHint (6, 1, 0, 0x07, 3), {F1, MR3, R2}},
+ {"ldf8.s", M, OpMXX6aHint (6, 1, 0, 0x05, 0), {F1, MR3, R2}},
+ {"ldf8.s.nt1", M, OpMXX6aHint (6, 1, 0, 0x05, 1), {F1, MR3, R2}},
+ {"ldf8.s.nta", M, OpMXX6aHint (6, 1, 0, 0x05, 3), {F1, MR3, R2}},
+ {"ldfe.s", M, OpMXX6aHint (6, 1, 0, 0x04, 0), {F1, MR3, R2}},
+ {"ldfe.s.nt1", M, OpMXX6aHint (6, 1, 0, 0x04, 1), {F1, MR3, R2}},
+ {"ldfe.s.nta", M, OpMXX6aHint (6, 1, 0, 0x04, 3), {F1, MR3, R2}},
+ {"ldfs.a", M, OpMXX6aHint (6, 1, 0, 0x0a, 0), {F1, MR3, R2}},
+ {"ldfs.a.nt1", M, OpMXX6aHint (6, 1, 0, 0x0a, 1), {F1, MR3, R2}},
+ {"ldfs.a.nta", M, OpMXX6aHint (6, 1, 0, 0x0a, 3), {F1, MR3, R2}},
+ {"ldfd.a", M, OpMXX6aHint (6, 1, 0, 0x0b, 0), {F1, MR3, R2}},
+ {"ldfd.a.nt1", M, OpMXX6aHint (6, 1, 0, 0x0b, 1), {F1, MR3, R2}},
+ {"ldfd.a.nta", M, OpMXX6aHint (6, 1, 0, 0x0b, 3), {F1, MR3, R2}},
+ {"ldf8.a", M, OpMXX6aHint (6, 1, 0, 0x09, 0), {F1, MR3, R2}},
+ {"ldf8.a.nt1", M, OpMXX6aHint (6, 1, 0, 0x09, 1), {F1, MR3, R2}},
+ {"ldf8.a.nta", M, OpMXX6aHint (6, 1, 0, 0x09, 3), {F1, MR3, R2}},
+ {"ldfe.a", M, OpMXX6aHint (6, 1, 0, 0x08, 0), {F1, MR3, R2}},
+ {"ldfe.a.nt1", M, OpMXX6aHint (6, 1, 0, 0x08, 1), {F1, MR3, R2}},
+ {"ldfe.a.nta", M, OpMXX6aHint (6, 1, 0, 0x08, 3), {F1, MR3, R2}},
+ {"ldfs.sa", M, OpMXX6aHint (6, 1, 0, 0x0e, 0), {F1, MR3, R2}},
+ {"ldfs.sa.nt1", M, OpMXX6aHint (6, 1, 0, 0x0e, 1), {F1, MR3, R2}},
+ {"ldfs.sa.nta", M, OpMXX6aHint (6, 1, 0, 0x0e, 3), {F1, MR3, R2}},
+ {"ldfd.sa", M, OpMXX6aHint (6, 1, 0, 0x0f, 0), {F1, MR3, R2}},
+ {"ldfd.sa.nt1", M, OpMXX6aHint (6, 1, 0, 0x0f, 1), {F1, MR3, R2}},
+ {"ldfd.sa.nta", M, OpMXX6aHint (6, 1, 0, 0x0f, 3), {F1, MR3, R2}},
+ {"ldf8.sa", M, OpMXX6aHint (6, 1, 0, 0x0d, 0), {F1, MR3, R2}},
+ {"ldf8.sa.nt1", M, OpMXX6aHint (6, 1, 0, 0x0d, 1), {F1, MR3, R2}},
+ {"ldf8.sa.nta", M, OpMXX6aHint (6, 1, 0, 0x0d, 3), {F1, MR3, R2}},
+ {"ldfe.sa", M, OpMXX6aHint (6, 1, 0, 0x0c, 0), {F1, MR3, R2}},
+ {"ldfe.sa.nt1", M, OpMXX6aHint (6, 1, 0, 0x0c, 1), {F1, MR3, R2}},
+ {"ldfe.sa.nta", M, OpMXX6aHint (6, 1, 0, 0x0c, 3), {F1, MR3, R2}},
+ {"ldf.fill", M, OpMXX6aHint (6, 1, 0, 0x1b, 0), {F1, MR3, R2}},
+ {"ldf.fill.nt1", M, OpMXX6aHint (6, 1, 0, 0x1b, 1), {F1, MR3, R2}},
+ {"ldf.fill.nta", M, OpMXX6aHint (6, 1, 0, 0x1b, 3), {F1, MR3, R2}},
+ {"ldfs.c.clr", M, OpMXX6aHint (6, 1, 0, 0x22, 0), {F1, MR3, R2}},
+ {"ldfs.c.clr.nt1", M, OpMXX6aHint (6, 1, 0, 0x22, 1), {F1, MR3, R2}},
+ {"ldfs.c.clr.nta", M, OpMXX6aHint (6, 1, 0, 0x22, 3), {F1, MR3, R2}},
+ {"ldfd.c.clr", M, OpMXX6aHint (6, 1, 0, 0x23, 0), {F1, MR3, R2}},
+ {"ldfd.c.clr.nt1", M, OpMXX6aHint (6, 1, 0, 0x23, 1), {F1, MR3, R2}},
+ {"ldfd.c.clr.nta", M, OpMXX6aHint (6, 1, 0, 0x23, 3), {F1, MR3, R2}},
+ {"ldf8.c.clr", M, OpMXX6aHint (6, 1, 0, 0x21, 0), {F1, MR3, R2}},
+ {"ldf8.c.clr.nt1", M, OpMXX6aHint (6, 1, 0, 0x21, 1), {F1, MR3, R2}},
+ {"ldf8.c.clr.nta", M, OpMXX6aHint (6, 1, 0, 0x21, 3), {F1, MR3, R2}},
+ {"ldfe.c.clr", M, OpMXX6aHint (6, 1, 0, 0x20, 0), {F1, MR3, R2}},
+ {"ldfe.c.clr.nt1", M, OpMXX6aHint (6, 1, 0, 0x20, 1), {F1, MR3, R2}},
+ {"ldfe.c.clr.nta", M, OpMXX6aHint (6, 1, 0, 0x20, 3), {F1, MR3, R2}},
+ {"ldfs.c.nc", M, OpMXX6aHint (6, 1, 0, 0x26, 0), {F1, MR3, R2}},
+ {"ldfs.c.nc.nt1", M, OpMXX6aHint (6, 1, 0, 0x26, 1), {F1, MR3, R2}},
+ {"ldfs.c.nc.nta", M, OpMXX6aHint (6, 1, 0, 0x26, 3), {F1, MR3, R2}},
+ {"ldfd.c.nc", M, OpMXX6aHint (6, 1, 0, 0x27, 0), {F1, MR3, R2}},
+ {"ldfd.c.nc.nt1", M, OpMXX6aHint (6, 1, 0, 0x27, 1), {F1, MR3, R2}},
+ {"ldfd.c.nc.nta", M, OpMXX6aHint (6, 1, 0, 0x27, 3), {F1, MR3, R2}},
+ {"ldf8.c.nc", M, OpMXX6aHint (6, 1, 0, 0x25, 0), {F1, MR3, R2}},
+ {"ldf8.c.nc.nt1", M, OpMXX6aHint (6, 1, 0, 0x25, 1), {F1, MR3, R2}},
+ {"ldf8.c.nc.nta", M, OpMXX6aHint (6, 1, 0, 0x25, 3), {F1, MR3, R2}},
+ {"ldfe.c.nc", M, OpMXX6aHint (6, 1, 0, 0x24, 0), {F1, MR3, R2}},
+ {"ldfe.c.nc.nt1", M, OpMXX6aHint (6, 1, 0, 0x24, 1), {F1, MR3, R2}},
+ {"ldfe.c.nc.nta", M, OpMXX6aHint (6, 1, 0, 0x24, 3), {F1, MR3, R2}},
+
+ /* floating-point store */
+ {"stfs", M, OpMXX6aHint (6, 0, 0, 0x32, 0), {MR3, F2}},
+ {"stfs.nta", M, OpMXX6aHint (6, 0, 0, 0x32, 3), {MR3, F2}},
+ {"stfd", M, OpMXX6aHint (6, 0, 0, 0x33, 0), {MR3, F2}},
+ {"stfd.nta", M, OpMXX6aHint (6, 0, 0, 0x33, 3), {MR3, F2}},
+ {"stf8", M, OpMXX6aHint (6, 0, 0, 0x31, 0), {MR3, F2}},
+ {"stf8.nta", M, OpMXX6aHint (6, 0, 0, 0x31, 3), {MR3, F2}},
+ {"stfe", M, OpMXX6aHint (6, 0, 0, 0x30, 0), {MR3, F2}},
+ {"stfe.nta", M, OpMXX6aHint (6, 0, 0, 0x30, 3), {MR3, F2}},
+ {"stf.spill", M, OpMXX6aHint (6, 0, 0, 0x3b, 0), {MR3, F2}},
+ {"stf.spill.nta", M, OpMXX6aHint (6, 0, 0, 0x3b, 3), {MR3, F2}},
+
+ /* floating-point load pair */
+ {"ldfps", M2, OpMXX6aHint (6, 0, 1, 0x02, 0), {F1, F2, MR3}},
+ {"ldfps.nt1", M2, OpMXX6aHint (6, 0, 1, 0x02, 1), {F1, F2, MR3}},
+ {"ldfps.nta", M2, OpMXX6aHint (6, 0, 1, 0x02, 3), {F1, F2, MR3}},
+ {"ldfpd", M2, OpMXX6aHint (6, 0, 1, 0x03, 0), {F1, F2, MR3}},
+ {"ldfpd.nt1", M2, OpMXX6aHint (6, 0, 1, 0x03, 1), {F1, F2, MR3}},
+ {"ldfpd.nta", M2, OpMXX6aHint (6, 0, 1, 0x03, 3), {F1, F2, MR3}},
+ {"ldfp8", M2, OpMXX6aHint (6, 0, 1, 0x01, 0), {F1, F2, MR3}},
+ {"ldfp8.nt1", M2, OpMXX6aHint (6, 0, 1, 0x01, 1), {F1, F2, MR3}},
+ {"ldfp8.nta", M2, OpMXX6aHint (6, 0, 1, 0x01, 3), {F1, F2, MR3}},
+ {"ldfps.s", M2, OpMXX6aHint (6, 0, 1, 0x06, 0), {F1, F2, MR3}},
+ {"ldfps.s.nt1", M2, OpMXX6aHint (6, 0, 1, 0x06, 1), {F1, F2, MR3}},
+ {"ldfps.s.nta", M2, OpMXX6aHint (6, 0, 1, 0x06, 3), {F1, F2, MR3}},
+ {"ldfpd.s", M2, OpMXX6aHint (6, 0, 1, 0x07, 0), {F1, F2, MR3}},
+ {"ldfpd.s.nt1", M2, OpMXX6aHint (6, 0, 1, 0x07, 1), {F1, F2, MR3}},
+ {"ldfpd.s.nta", M2, OpMXX6aHint (6, 0, 1, 0x07, 3), {F1, F2, MR3}},
+ {"ldfp8.s", M2, OpMXX6aHint (6, 0, 1, 0x05, 0), {F1, F2, MR3}},
+ {"ldfp8.s.nt1", M2, OpMXX6aHint (6, 0, 1, 0x05, 1), {F1, F2, MR3}},
+ {"ldfp8.s.nta", M2, OpMXX6aHint (6, 0, 1, 0x05, 3), {F1, F2, MR3}},
+ {"ldfps.a", M2, OpMXX6aHint (6, 0, 1, 0x0a, 0), {F1, F2, MR3}},
+ {"ldfps.a.nt1", M2, OpMXX6aHint (6, 0, 1, 0x0a, 1), {F1, F2, MR3}},
+ {"ldfps.a.nta", M2, OpMXX6aHint (6, 0, 1, 0x0a, 3), {F1, F2, MR3}},
+ {"ldfpd.a", M2, OpMXX6aHint (6, 0, 1, 0x0b, 0), {F1, F2, MR3}},
+ {"ldfpd.a.nt1", M2, OpMXX6aHint (6, 0, 1, 0x0b, 1), {F1, F2, MR3}},
+ {"ldfpd.a.nta", M2, OpMXX6aHint (6, 0, 1, 0x0b, 3), {F1, F2, MR3}},
+ {"ldfp8.a", M2, OpMXX6aHint (6, 0, 1, 0x09, 0), {F1, F2, MR3}},
+ {"ldfp8.a.nt1", M2, OpMXX6aHint (6, 0, 1, 0x09, 1), {F1, F2, MR3}},
+ {"ldfp8.a.nta", M2, OpMXX6aHint (6, 0, 1, 0x09, 3), {F1, F2, MR3}},
+ {"ldfps.sa", M2, OpMXX6aHint (6, 0, 1, 0x0e, 0), {F1, F2, MR3}},
+ {"ldfps.sa.nt1", M2, OpMXX6aHint (6, 0, 1, 0x0e, 1), {F1, F2, MR3}},
+ {"ldfps.sa.nta", M2, OpMXX6aHint (6, 0, 1, 0x0e, 3), {F1, F2, MR3}},
+ {"ldfpd.sa", M2, OpMXX6aHint (6, 0, 1, 0x0f, 0), {F1, F2, MR3}},
+ {"ldfpd.sa.nt1", M2, OpMXX6aHint (6, 0, 1, 0x0f, 1), {F1, F2, MR3}},
+ {"ldfpd.sa.nta", M2, OpMXX6aHint (6, 0, 1, 0x0f, 3), {F1, F2, MR3}},
+ {"ldfp8.sa", M2, OpMXX6aHint (6, 0, 1, 0x0d, 0), {F1, F2, MR3}},
+ {"ldfp8.sa.nt1", M2, OpMXX6aHint (6, 0, 1, 0x0d, 1), {F1, F2, MR3}},
+ {"ldfp8.sa.nta", M2, OpMXX6aHint (6, 0, 1, 0x0d, 3), {F1, F2, MR3}},
+ {"ldfps.c.clr", M2, OpMXX6aHint (6, 0, 1, 0x22, 0), {F1, F2, MR3}},
+ {"ldfps.c.clr.nt1", M2, OpMXX6aHint (6, 0, 1, 0x22, 1), {F1, F2, MR3}},
+ {"ldfps.c.clr.nta", M2, OpMXX6aHint (6, 0, 1, 0x22, 3), {F1, F2, MR3}},
+ {"ldfpd.c.clr", M2, OpMXX6aHint (6, 0, 1, 0x23, 0), {F1, F2, MR3}},
+ {"ldfpd.c.clr.nt1", M2, OpMXX6aHint (6, 0, 1, 0x23, 1), {F1, F2, MR3}},
+ {"ldfpd.c.clr.nta", M2, OpMXX6aHint (6, 0, 1, 0x23, 3), {F1, F2, MR3}},
+ {"ldfp8.c.clr", M2, OpMXX6aHint (6, 0, 1, 0x21, 0), {F1, F2, MR3}},
+ {"ldfp8.c.clr.nt1", M2, OpMXX6aHint (6, 0, 1, 0x21, 1), {F1, F2, MR3}},
+ {"ldfp8.c.clr.nta", M2, OpMXX6aHint (6, 0, 1, 0x21, 3), {F1, F2, MR3}},
+ {"ldfps.c.nc", M2, OpMXX6aHint (6, 0, 1, 0x26, 0), {F1, F2, MR3}},
+ {"ldfps.c.nc.nt1", M2, OpMXX6aHint (6, 0, 1, 0x26, 1), {F1, F2, MR3}},
+ {"ldfps.c.nc.nta", M2, OpMXX6aHint (6, 0, 1, 0x26, 3), {F1, F2, MR3}},
+ {"ldfpd.c.nc", M2, OpMXX6aHint (6, 0, 1, 0x27, 0), {F1, F2, MR3}},
+ {"ldfpd.c.nc.nt1", M2, OpMXX6aHint (6, 0, 1, 0x27, 1), {F1, F2, MR3}},
+ {"ldfpd.c.nc.nta", M2, OpMXX6aHint (6, 0, 1, 0x27, 3), {F1, F2, MR3}},
+ {"ldfp8.c.nc", M2, OpMXX6aHint (6, 0, 1, 0x25, 0), {F1, F2, MR3}},
+ {"ldfp8.c.nc.nt1", M2, OpMXX6aHint (6, 0, 1, 0x25, 1), {F1, F2, MR3}},
+ {"ldfp8.c.nc.nta", M2, OpMXX6aHint (6, 0, 1, 0x25, 3), {F1, F2, MR3}},
+
+ /* floating-point load pair w/increment by immediate */
+#define LD(a,b,c) M2, OpMXX6aHint (6, 1, 1, a, b), {F1, F2, MR3, c}
+ {"ldfps", LD (0x02, 0, C8)},
+ {"ldfps.nt1", LD (0x02, 1, C8)},
+ {"ldfps.nta", LD (0x02, 3, C8)},
+ {"ldfpd", LD (0x03, 0, C16)},
+ {"ldfpd.nt1", LD (0x03, 1, C16)},
+ {"ldfpd.nta", LD (0x03, 3, C16)},
+ {"ldfp8", LD (0x01, 0, C16)},
+ {"ldfp8.nt1", LD (0x01, 1, C16)},
+ {"ldfp8.nta", LD (0x01, 3, C16)},
+ {"ldfps.s", LD (0x06, 0, C8)},
+ {"ldfps.s.nt1", LD (0x06, 1, C8)},
+ {"ldfps.s.nta", LD (0x06, 3, C8)},
+ {"ldfpd.s", LD (0x07, 0, C16)},
+ {"ldfpd.s.nt1", LD (0x07, 1, C16)},
+ {"ldfpd.s.nta", LD (0x07, 3, C16)},
+ {"ldfp8.s", LD (0x05, 0, C16)},
+ {"ldfp8.s.nt1", LD (0x05, 1, C16)},
+ {"ldfp8.s.nta", LD (0x05, 3, C16)},
+ {"ldfps.a", LD (0x0a, 0, C8)},
+ {"ldfps.a.nt1", LD (0x0a, 1, C8)},
+ {"ldfps.a.nta", LD (0x0a, 3, C8)},
+ {"ldfpd.a", LD (0x0b, 0, C16)},
+ {"ldfpd.a.nt1", LD (0x0b, 1, C16)},
+ {"ldfpd.a.nta", LD (0x0b, 3, C16)},
+ {"ldfp8.a", LD (0x09, 0, C16)},
+ {"ldfp8.a.nt1", LD (0x09, 1, C16)},
+ {"ldfp8.a.nta", LD (0x09, 3, C16)},
+ {"ldfps.sa", LD (0x0e, 0, C8)},
+ {"ldfps.sa.nt1", LD (0x0e, 1, C8)},
+ {"ldfps.sa.nta", LD (0x0e, 3, C8)},
+ {"ldfpd.sa", LD (0x0f, 0, C16)},
+ {"ldfpd.sa.nt1", LD (0x0f, 1, C16)},
+ {"ldfpd.sa.nta", LD (0x0f, 3, C16)},
+ {"ldfp8.sa", LD (0x0d, 0, C16)},
+ {"ldfp8.sa.nt1", LD (0x0d, 1, C16)},
+ {"ldfp8.sa.nta", LD (0x0d, 3, C16)},
+ {"ldfps.c.clr", LD (0x22, 0, C8)},
+ {"ldfps.c.clr.nt1", LD (0x22, 1, C8)},
+ {"ldfps.c.clr.nta", LD (0x22, 3, C8)},
+ {"ldfpd.c.clr", LD (0x23, 0, C16)},
+ {"ldfpd.c.clr.nt1", LD (0x23, 1, C16)},
+ {"ldfpd.c.clr.nta", LD (0x23, 3, C16)},
+ {"ldfp8.c.clr", LD (0x21, 0, C16)},
+ {"ldfp8.c.clr.nt1", LD (0x21, 1, C16)},
+ {"ldfp8.c.clr.nta", LD (0x21, 3, C16)},
+ {"ldfps.c.nc", LD (0x26, 0, C8)},
+ {"ldfps.c.nc.nt1", LD (0x26, 1, C8)},
+ {"ldfps.c.nc.nta", LD (0x26, 3, C8)},
+ {"ldfpd.c.nc", LD (0x27, 0, C16)},
+ {"ldfpd.c.nc.nt1", LD (0x27, 1, C16)},
+ {"ldfpd.c.nc.nta", LD (0x27, 3, C16)},
+ {"ldfp8.c.nc", LD (0x25, 0, C16)},
+ {"ldfp8.c.nc.nt1", LD (0x25, 1, C16)},
+ {"ldfp8.c.nc.nta", LD (0x25, 3, C16)},
+#undef LD
+
+ /* line prefetch */
+ {"lfetch", M0, OpMXX6aHint (6, 0, 0, 0x2c, 0), {MR3}},
+ {"lfetch.nt1", M0, OpMXX6aHint (6, 0, 0, 0x2c, 1), {MR3}},
+ {"lfetch.nt2", M0, OpMXX6aHint (6, 0, 0, 0x2c, 2), {MR3}},
+ {"lfetch.nta", M0, OpMXX6aHint (6, 0, 0, 0x2c, 3), {MR3}},
+ {"lfetch.excl", M0, OpMXX6aHint (6, 0, 0, 0x2d, 0), {MR3}},
+ {"lfetch.excl.nt1", M0, OpMXX6aHint (6, 0, 0, 0x2d, 1), {MR3}},
+ {"lfetch.excl.nt2", M0, OpMXX6aHint (6, 0, 0, 0x2d, 2), {MR3}},
+ {"lfetch.excl.nta", M0, OpMXX6aHint (6, 0, 0, 0x2d, 3), {MR3}},
+ {"lfetch.fault", M0, OpMXX6aHint (6, 0, 0, 0x2e, 0), {MR3}},
+ {"lfetch.fault.nt1", M0, OpMXX6aHint (6, 0, 0, 0x2e, 1), {MR3}},
+ {"lfetch.fault.nt2", M0, OpMXX6aHint (6, 0, 0, 0x2e, 2), {MR3}},
+ {"lfetch.fault.nta", M0, OpMXX6aHint (6, 0, 0, 0x2e, 3), {MR3}},
+ {"lfetch.fault.excl", M0, OpMXX6aHint (6, 0, 0, 0x2f, 0), {MR3}},
+ {"lfetch.fault.excl.nt1", M0, OpMXX6aHint (6, 0, 0, 0x2f, 1), {MR3}},
+ {"lfetch.fault.excl.nt2", M0, OpMXX6aHint (6, 0, 0, 0x2f, 2), {MR3}},
+ {"lfetch.fault.excl.nta", M0, OpMXX6aHint (6, 0, 0, 0x2f, 3), {MR3}},
+
+ /* line prefetch w/increment by register */
+ {"lfetch", M0, OpMXX6aHint (6, 1, 0, 0x2c, 0), {MR3, R2}},
+ {"lfetch.nt1", M0, OpMXX6aHint (6, 1, 0, 0x2c, 1), {MR3, R2}},
+ {"lfetch.nt2", M0, OpMXX6aHint (6, 1, 0, 0x2c, 2), {MR3, R2}},
+ {"lfetch.nta", M0, OpMXX6aHint (6, 1, 0, 0x2c, 3), {MR3, R2}},
+ {"lfetch.excl", M0, OpMXX6aHint (6, 1, 0, 0x2d, 0), {MR3, R2}},
+ {"lfetch.excl.nt1", M0, OpMXX6aHint (6, 1, 0, 0x2d, 1), {MR3, R2}},
+ {"lfetch.excl.nt2", M0, OpMXX6aHint (6, 1, 0, 0x2d, 2), {MR3, R2}},
+ {"lfetch.excl.nta", M0, OpMXX6aHint (6, 1, 0, 0x2d, 3), {MR3, R2}},
+ {"lfetch.fault", M0, OpMXX6aHint (6, 1, 0, 0x2e, 0), {MR3, R2}},
+ {"lfetch.fault.nt1", M0, OpMXX6aHint (6, 1, 0, 0x2e, 1), {MR3, R2}},
+ {"lfetch.fault.nt2", M0, OpMXX6aHint (6, 1, 0, 0x2e, 2), {MR3, R2}},
+ {"lfetch.fault.nta", M0, OpMXX6aHint (6, 1, 0, 0x2e, 3), {MR3, R2}},
+ {"lfetch.fault.excl", M0, OpMXX6aHint (6, 1, 0, 0x2f, 0), {MR3, R2}},
+ {"lfetch.fault.excl.nt1", M0, OpMXX6aHint (6, 1, 0, 0x2f, 1), {MR3, R2}},
+ {"lfetch.fault.excl.nt2", M0, OpMXX6aHint (6, 1, 0, 0x2f, 2), {MR3, R2}},
+ {"lfetch.fault.excl.nta", M0, OpMXX6aHint (6, 1, 0, 0x2f, 3), {MR3, R2}},
+
+ /* semaphore operations */
+ {"setf.sig", M, OpMXX6a (6, 0, 1, 0x1c), {F1, R2}},
+ {"setf.exp", M, OpMXX6a (6, 0, 1, 0x1d), {F1, R2}},
+ {"setf.s", M, OpMXX6a (6, 0, 1, 0x1e), {F1, R2}},
+ {"setf.d", M, OpMXX6a (6, 0, 1, 0x1f), {F1, R2}},
+
+ {"ldfs", M, OpX6aHint (7, 0x02, 0), {F1, MR3, IMM9b}},
+ {"ldfs.nt1", M, OpX6aHint (7, 0x02, 1), {F1, MR3, IMM9b}},
+ {"ldfs.nta", M, OpX6aHint (7, 0x02, 3), {F1, MR3, IMM9b}},
+ {"ldfd", M, OpX6aHint (7, 0x03, 0), {F1, MR3, IMM9b}},
+ {"ldfd.nt1", M, OpX6aHint (7, 0x03, 1), {F1, MR3, IMM9b}},
+ {"ldfd.nta", M, OpX6aHint (7, 0x03, 3), {F1, MR3, IMM9b}},
+ {"ldf8", M, OpX6aHint (7, 0x01, 0), {F1, MR3, IMM9b}},
+ {"ldf8.nt1", M, OpX6aHint (7, 0x01, 1), {F1, MR3, IMM9b}},
+ {"ldf8.nta", M, OpX6aHint (7, 0x01, 3), {F1, MR3, IMM9b}},
+ {"ldfe", M, OpX6aHint (7, 0x00, 0), {F1, MR3, IMM9b}},
+ {"ldfe.nt1", M, OpX6aHint (7, 0x00, 1), {F1, MR3, IMM9b}},
+ {"ldfe.nta", M, OpX6aHint (7, 0x00, 3), {F1, MR3, IMM9b}},
+ {"ldfs.s", M, OpX6aHint (7, 0x06, 0), {F1, MR3, IMM9b}},
+ {"ldfs.s.nt1", M, OpX6aHint (7, 0x06, 1), {F1, MR3, IMM9b}},
+ {"ldfs.s.nta", M, OpX6aHint (7, 0x06, 3), {F1, MR3, IMM9b}},
+ {"ldfd.s", M, OpX6aHint (7, 0x07, 0), {F1, MR3, IMM9b}},
+ {"ldfd.s.nt1", M, OpX6aHint (7, 0x07, 1), {F1, MR3, IMM9b}},
+ {"ldfd.s.nta", M, OpX6aHint (7, 0x07, 3), {F1, MR3, IMM9b}},
+ {"ldf8.s", M, OpX6aHint (7, 0x05, 0), {F1, MR3, IMM9b}},
+ {"ldf8.s.nt1", M, OpX6aHint (7, 0x05, 1), {F1, MR3, IMM9b}},
+ {"ldf8.s.nta", M, OpX6aHint (7, 0x05, 3), {F1, MR3, IMM9b}},
+ {"ldfe.s", M, OpX6aHint (7, 0x04, 0), {F1, MR3, IMM9b}},
+ {"ldfe.s.nt1", M, OpX6aHint (7, 0x04, 1), {F1, MR3, IMM9b}},
+ {"ldfe.s.nta", M, OpX6aHint (7, 0x04, 3), {F1, MR3, IMM9b}},
+ {"ldfs.a", M, OpX6aHint (7, 0x0a, 0), {F1, MR3, IMM9b}},
+ {"ldfs.a.nt1", M, OpX6aHint (7, 0x0a, 1), {F1, MR3, IMM9b}},
+ {"ldfs.a.nta", M, OpX6aHint (7, 0x0a, 3), {F1, MR3, IMM9b}},
+ {"ldfd.a", M, OpX6aHint (7, 0x0b, 0), {F1, MR3, IMM9b}},
+ {"ldfd.a.nt1", M, OpX6aHint (7, 0x0b, 1), {F1, MR3, IMM9b}},
+ {"ldfd.a.nta", M, OpX6aHint (7, 0x0b, 3), {F1, MR3, IMM9b}},
+ {"ldf8.a", M, OpX6aHint (7, 0x09, 0), {F1, MR3, IMM9b}},
+ {"ldf8.a.nt1", M, OpX6aHint (7, 0x09, 1), {F1, MR3, IMM9b}},
+ {"ldf8.a.nta", M, OpX6aHint (7, 0x09, 3), {F1, MR3, IMM9b}},
+ {"ldfe.a", M, OpX6aHint (7, 0x08, 0), {F1, MR3, IMM9b}},
+ {"ldfe.a.nt1", M, OpX6aHint (7, 0x08, 1), {F1, MR3, IMM9b}},
+ {"ldfe.a.nta", M, OpX6aHint (7, 0x08, 3), {F1, MR3, IMM9b}},
+ {"ldfs.sa", M, OpX6aHint (7, 0x0e, 0), {F1, MR3, IMM9b}},
+ {"ldfs.sa.nt1", M, OpX6aHint (7, 0x0e, 1), {F1, MR3, IMM9b}},
+ {"ldfs.sa.nta", M, OpX6aHint (7, 0x0e, 3), {F1, MR3, IMM9b}},
+ {"ldfd.sa", M, OpX6aHint (7, 0x0f, 0), {F1, MR3, IMM9b}},
+ {"ldfd.sa.nt1", M, OpX6aHint (7, 0x0f, 1), {F1, MR3, IMM9b}},
+ {"ldfd.sa.nta", M, OpX6aHint (7, 0x0f, 3), {F1, MR3, IMM9b}},
+ {"ldf8.sa", M, OpX6aHint (7, 0x0d, 0), {F1, MR3, IMM9b}},
+ {"ldf8.sa.nt1", M, OpX6aHint (7, 0x0d, 1), {F1, MR3, IMM9b}},
+ {"ldf8.sa.nta", M, OpX6aHint (7, 0x0d, 3), {F1, MR3, IMM9b}},
+ {"ldfe.sa", M, OpX6aHint (7, 0x0c, 0), {F1, MR3, IMM9b}},
+ {"ldfe.sa.nt1", M, OpX6aHint (7, 0x0c, 1), {F1, MR3, IMM9b}},
+ {"ldfe.sa.nta", M, OpX6aHint (7, 0x0c, 3), {F1, MR3, IMM9b}},
+ {"ldf.fill", M, OpX6aHint (7, 0x1b, 0), {F1, MR3, IMM9b}},
+ {"ldf.fill.nt1", M, OpX6aHint (7, 0x1b, 1), {F1, MR3, IMM9b}},
+ {"ldf.fill.nta", M, OpX6aHint (7, 0x1b, 3), {F1, MR3, IMM9b}},
+ {"ldfs.c.clr", M, OpX6aHint (7, 0x22, 0), {F1, MR3, IMM9b}},
+ {"ldfs.c.clr.nt1", M, OpX6aHint (7, 0x22, 1), {F1, MR3, IMM9b}},
+ {"ldfs.c.clr.nta", M, OpX6aHint (7, 0x22, 3), {F1, MR3, IMM9b}},
+ {"ldfd.c.clr", M, OpX6aHint (7, 0x23, 0), {F1, MR3, IMM9b}},
+ {"ldfd.c.clr.nt1", M, OpX6aHint (7, 0x23, 1), {F1, MR3, IMM9b}},
+ {"ldfd.c.clr.nta", M, OpX6aHint (7, 0x23, 3), {F1, MR3, IMM9b}},
+ {"ldf8.c.clr", M, OpX6aHint (7, 0x21, 0), {F1, MR3, IMM9b}},
+ {"ldf8.c.clr.nt1", M, OpX6aHint (7, 0x21, 1), {F1, MR3, IMM9b}},
+ {"ldf8.c.clr.nta", M, OpX6aHint (7, 0x21, 3), {F1, MR3, IMM9b}},
+ {"ldfe.c.clr", M, OpX6aHint (7, 0x20, 0), {F1, MR3, IMM9b}},
+ {"ldfe.c.clr.nt1", M, OpX6aHint (7, 0x20, 1), {F1, MR3, IMM9b}},
+ {"ldfe.c.clr.nta", M, OpX6aHint (7, 0x20, 3), {F1, MR3, IMM9b}},
+ {"ldfs.c.nc", M, OpX6aHint (7, 0x26, 0), {F1, MR3, IMM9b}},
+ {"ldfs.c.nc.nt1", M, OpX6aHint (7, 0x26, 1), {F1, MR3, IMM9b}},
+ {"ldfs.c.nc.nta", M, OpX6aHint (7, 0x26, 3), {F1, MR3, IMM9b}},
+ {"ldfd.c.nc", M, OpX6aHint (7, 0x27, 0), {F1, MR3, IMM9b}},
+ {"ldfd.c.nc.nt1", M, OpX6aHint (7, 0x27, 1), {F1, MR3, IMM9b}},
+ {"ldfd.c.nc.nta", M, OpX6aHint (7, 0x27, 3), {F1, MR3, IMM9b}},
+ {"ldf8.c.nc", M, OpX6aHint (7, 0x25, 0), {F1, MR3, IMM9b}},
+ {"ldf8.c.nc.nt1", M, OpX6aHint (7, 0x25, 1), {F1, MR3, IMM9b}},
+ {"ldf8.c.nc.nta", M, OpX6aHint (7, 0x25, 3), {F1, MR3, IMM9b}},
+ {"ldfe.c.nc", M, OpX6aHint (7, 0x24, 0), {F1, MR3, IMM9b}},
+ {"ldfe.c.nc.nt1", M, OpX6aHint (7, 0x24, 1), {F1, MR3, IMM9b}},
+ {"ldfe.c.nc.nta", M, OpX6aHint (7, 0x24, 3), {F1, MR3, IMM9b}},
+
+ /* floating-point store w/increment by immediate */
+ {"stfs", M, OpX6aHint (7, 0x32, 0), {MR3, F2, IMM9a}},
+ {"stfs.nta", M, OpX6aHint (7, 0x32, 3), {MR3, F2, IMM9a}},
+ {"stfd", M, OpX6aHint (7, 0x33, 0), {MR3, F2, IMM9a}},
+ {"stfd.nta", M, OpX6aHint (7, 0x33, 3), {MR3, F2, IMM9a}},
+ {"stf8", M, OpX6aHint (7, 0x31, 0), {MR3, F2, IMM9a}},
+ {"stf8.nta", M, OpX6aHint (7, 0x31, 3), {MR3, F2, IMM9a}},
+ {"stfe", M, OpX6aHint (7, 0x30, 0), {MR3, F2, IMM9a}},
+ {"stfe.nta", M, OpX6aHint (7, 0x30, 3), {MR3, F2, IMM9a}},
+ {"stf.spill", M, OpX6aHint (7, 0x3b, 0), {MR3, F2, IMM9a}},
+ {"stf.spill.nta", M, OpX6aHint (7, 0x3b, 3), {MR3, F2, IMM9a}},
+
+ /* line prefetch w/increment by immediate */
+ {"lfetch", M0, OpX6aHint (7, 0x2c, 0), {MR3, IMM9b}},
+ {"lfetch.nt1", M0, OpX6aHint (7, 0x2c, 1), {MR3, IMM9b}},
+ {"lfetch.nt2", M0, OpX6aHint (7, 0x2c, 2), {MR3, IMM9b}},
+ {"lfetch.nta", M0, OpX6aHint (7, 0x2c, 3), {MR3, IMM9b}},
+ {"lfetch.excl", M0, OpX6aHint (7, 0x2d, 0), {MR3, IMM9b}},
+ {"lfetch.excl.nt1", M0, OpX6aHint (7, 0x2d, 1), {MR3, IMM9b}},
+ {"lfetch.excl.nt2", M0, OpX6aHint (7, 0x2d, 2), {MR3, IMM9b}},
+ {"lfetch.excl.nta", M0, OpX6aHint (7, 0x2d, 3), {MR3, IMM9b}},
+ {"lfetch.fault", M0, OpX6aHint (7, 0x2e, 0), {MR3, IMM9b}},
+ {"lfetch.fault.nt1", M0, OpX6aHint (7, 0x2e, 1), {MR3, IMM9b}},
+ {"lfetch.fault.nt2", M0, OpX6aHint (7, 0x2e, 2), {MR3, IMM9b}},
+ {"lfetch.fault.nta", M0, OpX6aHint (7, 0x2e, 3), {MR3, IMM9b}},
+ {"lfetch.fault.excl", M0, OpX6aHint (7, 0x2f, 0), {MR3, IMM9b}},
+ {"lfetch.fault.excl.nt1", M0, OpX6aHint (7, 0x2f, 1), {MR3, IMM9b}},
+ {"lfetch.fault.excl.nt2", M0, OpX6aHint (7, 0x2f, 2), {MR3, IMM9b}},
+ {"lfetch.fault.excl.nta", M0, OpX6aHint (7, 0x2f, 3), {MR3, IMM9b}},
+
+ {0}
+ };
+
+#undef M0
+#undef M
+#undef M2
+#undef bM
+#undef bX
+#undef bX2
+#undef bX3
+#undef bX4
+#undef bX6a
+#undef bX6b
+#undef bHint
+#undef mM
+#undef mX
+#undef mX2
+#undef mX3
+#undef mX4
+#undef mX6a
+#undef mX6b
+#undef mHint
+#undef OpX3
+#undef OpX3X6b
+#undef OpX3X4
+#undef OpX3X4X2
+#undef OpX6aHint
+#undef OpXX6aHint
+#undef OpMXX6a
+#undef OpMXX6aHint
diff --git a/opcodes/ia64-opc-x.c b/opcodes/ia64-opc-x.c
new file mode 100644
index 00000000000..8432d68ad97
--- /dev/null
+++ b/opcodes/ia64-opc-x.c
@@ -0,0 +1,178 @@
+/* ia64-opc-x.c -- IA-64 `X' opcode table.
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Contributed by Timothy Wall <twall@cygnus.com>
+
+ This file is part of GDB, GAS, and the GNU binutils.
+
+ GDB, GAS, and the GNU binutils are free software; you can redistribute
+ them and/or modify them under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either version
+ 2, or (at your option) any later version.
+
+ GDB, GAS, and the GNU binutils are distributed in the hope that they
+ 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 file; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#include "ia64-opc.h"
+
+/* identify the specific X-unit type */
+#define X0 IA64_TYPE_X, 0
+#define X IA64_TYPE_X, 1
+
+/* instruction bit fields: */
+#define bBtype(x) (((ia64_insn) ((x) & 0x7)) << 6)
+#define bD(x) (((ia64_insn) ((x) & 0x1)) << 35)
+#define bPa(x) (((ia64_insn) ((x) & 0x1)) << 12)
+#define bPr(x) (((ia64_insn) ((x) & 0x3f)) << 0)
+#define bVc(x) (((ia64_insn) ((x) & 0x1)) << 20)
+#define bWha(x) (((ia64_insn) ((x) & 0x3)) << 33)
+#define bX3(x) (((ia64_insn) ((x) & 0x7)) << 33)
+#define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27)
+
+#define mBtype bBtype (-1)
+#define mD bD (-1)
+#define mPa bPa (-1)
+#define mPr bPr (-1)
+#define mVc bVc (-1)
+#define mWha bWha (-1)
+#define mX3 bX3 (-1)
+#define mX6 bX6 (-1)
+
+#define OpX3X6(a,b,c) (bOp (a) | bX3 (b) | bX6(c)), \
+ (mOp | mX3 | mX6)
+#define OpVc(a,b) (bOp (a) | bVc (b)), (mOp | mVc)
+#define OpPaWhaD(a,b,c,d) \
+ (bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD)
+#define OpBtypePaWhaD(a,b,c,d,e) \
+ (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \
+ (mOp | mBtype | mPa | mWha | mD)
+#define OpBtypePaWhaDPr(a,b,c,d,e,f) \
+ (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \
+ (mOp | mBtype | mPa | mWha | mD | mPr)
+
+struct ia64_opcode ia64_opcodes_x[] =
+ {
+ {"break.x", X0, OpX3X6 (0, 0, 0x00), {IMMU62}},
+ {"nop.x", X0, OpX3X6 (0, 0, 0x01), {IMMU62}},
+ {"movl", X, OpVc (6, 0), {R1, IMMU64}},
+#define BRL(a,b) \
+ X0, OpBtypePaWhaDPr (0xC, 0, a, 0, b, 0), {TGT64}, 0
+ {"brl.few", BRL (0, 0) | PSEUDO},
+ {"brl", BRL (0, 0) | PSEUDO},
+ {"brl.few.clr", BRL (0, 1) | PSEUDO},
+ {"brl.clr", BRL (0, 1) | PSEUDO},
+ {"brl.many", BRL (1, 0) | PSEUDO},
+ {"brl.many.clr", BRL (1, 1) | PSEUDO},
+#undef BRL
+#define BRL(a,b,c) \
+ X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, 0
+ {"brl.cond.sptk.few", BRL (0, 0, 0)},
+ {"brl.cond.sptk", BRL (0, 0, 0) | PSEUDO},
+ {"brl.cond.sptk.few.clr", BRL (0, 0, 1)},
+ {"brl.cond.sptk.clr", BRL (0, 0, 1) | PSEUDO},
+ {"brl.cond.spnt.few", BRL (0, 1, 0)},
+ {"brl.cond.spnt", BRL (0, 1, 0) | PSEUDO},
+ {"brl.cond.spnt.few.clr", BRL (0, 1, 1)},
+ {"brl.cond.spnt.clr", BRL (0, 1, 1) | PSEUDO},
+ {"brl.cond.dptk.few", BRL (0, 2, 0)},
+ {"brl.cond.dptk", BRL (0, 2, 0) | PSEUDO},
+ {"brl.cond.dptk.few.clr", BRL (0, 2, 1)},
+ {"brl.cond.dptk.clr", BRL (0, 2, 1) | PSEUDO},
+ {"brl.cond.dpnt.few", BRL (0, 3, 0)},
+ {"brl.cond.dpnt", BRL (0, 3, 0) | PSEUDO},
+ {"brl.cond.dpnt.few.clr", BRL (0, 3, 1)},
+ {"brl.cond.dpnt.clr", BRL (0, 3, 1) | PSEUDO},
+ {"brl.cond.sptk.many", BRL (1, 0, 0)},
+ {"brl.cond.sptk.many.clr", BRL (1, 0, 1)},
+ {"brl.cond.spnt.many", BRL (1, 1, 0)},
+ {"brl.cond.spnt.many.clr", BRL (1, 1, 1)},
+ {"brl.cond.dptk.many", BRL (1, 2, 0)},
+ {"brl.cond.dptk.many.clr", BRL (1, 2, 1)},
+ {"brl.cond.dpnt.many", BRL (1, 3, 0)},
+ {"brl.cond.dpnt.many.clr", BRL (1, 3, 1)},
+ {"brl.sptk.few", BRL (0, 0, 0)},
+ {"brl.sptk", BRL (0, 0, 0) | PSEUDO},
+ {"brl.sptk.few.clr", BRL (0, 0, 1)},
+ {"brl.sptk.clr", BRL (0, 0, 1) | PSEUDO},
+ {"brl.spnt.few", BRL (0, 1, 0)},
+ {"brl.spnt", BRL (0, 1, 0) | PSEUDO},
+ {"brl.spnt.few.clr", BRL (0, 1, 1)},
+ {"brl.spnt.clr", BRL (0, 1, 1) | PSEUDO},
+ {"brl.dptk.few", BRL (0, 2, 0)},
+ {"brl.dptk", BRL (0, 2, 0) | PSEUDO},
+ {"brl.dptk.few.clr", BRL (0, 2, 1)},
+ {"brl.dptk.clr", BRL (0, 2, 1) | PSEUDO},
+ {"brl.dpnt.few", BRL (0, 3, 0)},
+ {"brl.dpnt", BRL (0, 3, 0) | PSEUDO},
+ {"brl.dpnt.few.clr", BRL (0, 3, 1)},
+ {"brl.dpnt.clr", BRL (0, 3, 1) | PSEUDO},
+ {"brl.sptk.many", BRL (1, 0, 0)},
+ {"brl.sptk.many.clr", BRL (1, 0, 1)},
+ {"brl.spnt.many", BRL (1, 1, 0)},
+ {"brl.spnt.many.clr", BRL (1, 1, 1)},
+ {"brl.dptk.many", BRL (1, 2, 0)},
+ {"brl.dptk.many.clr", BRL (1, 2, 1)},
+ {"brl.dpnt.many", BRL (1, 3, 0)},
+ {"brl.dpnt.many.clr", BRL (1, 3, 1)},
+#undef BRL
+#define BRL(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, 0
+ {"brl.call.sptk.few", BRL (0, 0, 0)},
+ {"brl.call.sptk", BRL (0, 0, 0) | PSEUDO},
+ {"brl.call.sptk.few.clr", BRL (0, 0, 1)},
+ {"brl.call.sptk.clr", BRL (0, 0, 1) | PSEUDO},
+ {"brl.call.spnt.few", BRL (0, 1, 0)},
+ {"brl.call.spnt", BRL (0, 1, 0) | PSEUDO},
+ {"brl.call.spnt.few.clr", BRL (0, 1, 1)},
+ {"brl.call.spnt.clr", BRL (0, 1, 1) | PSEUDO},
+ {"brl.call.dptk.few", BRL (0, 2, 0)},
+ {"brl.call.dptk", BRL (0, 2, 0) | PSEUDO},
+ {"brl.call.dptk.few.clr", BRL (0, 2, 1)},
+ {"brl.call.dptk.clr", BRL (0, 2, 1) | PSEUDO},
+ {"brl.call.dpnt.few", BRL (0, 3, 0)},
+ {"brl.call.dpnt", BRL (0, 3, 0) | PSEUDO},
+ {"brl.call.dpnt.few.clr", BRL (0, 3, 1)},
+ {"brl.call.dpnt.clr", BRL (0, 3, 1) | PSEUDO},
+ {"brl.call.sptk.many", BRL (1, 0, 0)},
+ {"brl.call.sptk.many.clr", BRL (1, 0, 1)},
+ {"brl.call.spnt.many", BRL (1, 1, 0)},
+ {"brl.call.spnt.many.clr", BRL (1, 1, 1)},
+ {"brl.call.dptk.many", BRL (1, 2, 0)},
+ {"brl.call.dptk.many.clr", BRL (1, 2, 1)},
+ {"brl.call.dpnt.many", BRL (1, 3, 0)},
+ {"brl.call.dpnt.many.clr", BRL (1, 3, 1)},
+#undef BRL
+ {0}
+ };
+
+#undef X0
+#undef X
+
+#undef bBtype
+#undef bD
+#undef bPa
+#undef bPr
+#undef bVc
+#undef bWha
+#undef bX3
+#undef bX6
+
+#undef mBtype
+#undef mD
+#undef mPa
+#undef mPr
+#undef mVc
+#undef mWha
+#undef mX3
+#undef mX6
+
+#undef OpX3X6
+#undef OpVc
+#undef OpPaWhaD
+#undef OpBtypePaWhaD
+#undef OpBtypePaWhaDPr
diff --git a/opcodes/ia64-opc.c b/opcodes/ia64-opc.c
new file mode 100644
index 00000000000..c054b3d283e
--- /dev/null
+++ b/opcodes/ia64-opc.c
@@ -0,0 +1,747 @@
+/* ia64-opc.c -- Functions to access the compacted opcode table
+ Copyright (C) 1999 Free Software Foundation, Inc.
+ Written by Bob Manson of Cygnus Solutions, <manson@cygnus.com>
+
+ This file is part of GDB, GAS, and the GNU binutils.
+
+ GDB, GAS, and the GNU binutils are free software; you can redistribute
+ them and/or modify them under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either version
+ 2, or (at your option) any later version.
+
+ GDB, GAS, and the GNU binutils are distributed in the hope that they
+ 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 file; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#include "ansidecl.h"
+#include "libiberty.h"
+#include "sysdep.h"
+#include "ia64-asmtab.h"
+#include "ia64-asmtab.c"
+
+const struct ia64_templ_desc ia64_templ_desc[16] =
+ {
+ { 0, { IA64_UNIT_M, IA64_UNIT_I, IA64_UNIT_I }, "MII" }, /* 0 */
+ { 2, { IA64_UNIT_M, IA64_UNIT_I, IA64_UNIT_I }, "MII" },
+ { 0, { IA64_UNIT_M, IA64_UNIT_L, IA64_UNIT_X }, "MLX" },
+ { 0, { 0, }, "-3-" },
+ { 0, { IA64_UNIT_M, IA64_UNIT_M, IA64_UNIT_I }, "MMI" }, /* 4 */
+ { 1, { IA64_UNIT_M, IA64_UNIT_M, IA64_UNIT_I }, "MMI" },
+ { 0, { IA64_UNIT_M, IA64_UNIT_F, IA64_UNIT_I }, "MFI" },
+ { 0, { IA64_UNIT_M, IA64_UNIT_M, IA64_UNIT_F }, "MMF" },
+ { 0, { IA64_UNIT_M, IA64_UNIT_I, IA64_UNIT_B }, "MIB" }, /* 8 */
+ { 0, { IA64_UNIT_M, IA64_UNIT_B, IA64_UNIT_B }, "MBB" },
+ { 0, { 0, }, "-a-" },
+ { 0, { IA64_UNIT_B, IA64_UNIT_B, IA64_UNIT_B }, "BBB" },
+ { 0, { IA64_UNIT_M, IA64_UNIT_M, IA64_UNIT_B }, "MMB" }, /* c */
+ { 0, { 0, }, "-d-" },
+ { 0, { IA64_UNIT_M, IA64_UNIT_F, IA64_UNIT_B }, "MFB" },
+ { 0, { 0, }, "-f-" },
+ };
+
+
+/* Copy the prefix contained in *PTR (up to a '.' or a NUL) to DEST.
+ PTR will be adjusted to point to the start of the next portion
+ of the opcode, or at the NUL character. */
+
+static void
+get_opc_prefix (ptr, dest)
+ const char **ptr;
+ char *dest;
+{
+ char *c = strchr (*ptr, '.');
+ if (c != NULL)
+ {
+ memcpy (dest, *ptr, c - *ptr);
+ dest[c - *ptr] = '\0';
+ *ptr = c + 1;
+ }
+ else
+ {
+ int l = strlen (*ptr);
+ memcpy (dest, *ptr, l);
+ dest[l] = '\0';
+ *ptr += l;
+ }
+}
+
+/* Find the index of the entry in the string table corresponding to
+ STR; return -1 if one does not exist. */
+
+static short
+find_string_ent (str)
+ const char *str;
+{
+ short start = 0;
+ short end = sizeof (ia64_strings) / sizeof (const char *);
+ short i = (start + end) / 2;
+
+ if (strcmp (str, ia64_strings[end - 1]) > 0)
+ {
+ return -1;
+ }
+ while (start <= end)
+ {
+ int c = strcmp (str, ia64_strings[i]);
+ if (c < 0)
+ {
+ end = i - 1;
+ }
+ else if (c == 0)
+ {
+ return i;
+ }
+ else
+ {
+ start = i + 1;
+ }
+ i = (start + end) / 2;
+ }
+ return -1;
+}
+
+/* Find the opcode in the main opcode table whose name is STRINGINDEX, or
+ return -1 if one does not exist. */
+
+static short
+find_main_ent (nameindex)
+ short nameindex;
+{
+ short start = 0;
+ short end = sizeof (main_table) / sizeof (struct ia64_main_table);
+ short i = (start + end) / 2;
+
+ if (nameindex < main_table[0].name_index
+ || nameindex > main_table[end - 1].name_index)
+ {
+ return -1;
+ }
+ while (start <= end)
+ {
+ if (nameindex < main_table[i].name_index)
+ {
+ end = i - 1;
+ }
+ else if (nameindex == main_table[i].name_index)
+ {
+ while (i > 0 && main_table[i - 1].name_index == nameindex)
+ {
+ i--;
+ }
+ return i;
+ }
+ else
+ {
+ start = i + 1;
+ }
+ i = (start + end) / 2;
+ }
+ return -1;
+}
+
+/* Find the index of the entry in the completer table that is part of
+ MAIN_ENT (starting from PREV_COMPLETER) that matches NAME, or
+ return -1 if one does not exist. */
+
+static short
+find_completer (main_ent, prev_completer, name)
+ short main_ent;
+ short prev_completer;
+ const char *name;
+{
+ short name_index = find_string_ent (name);
+
+ if (name_index < 0)
+ {
+ return -1;
+ }
+
+ if (prev_completer == -1)
+ {
+ prev_completer = main_table[main_ent].completers;
+ }
+ else
+ {
+ prev_completer = completer_table[prev_completer].subentries;
+ }
+
+ while (prev_completer != -1)
+ {
+ if (completer_table[prev_completer].name_index == name_index)
+ {
+ return prev_completer;
+ }
+ prev_completer = completer_table[prev_completer].alternative;
+ }
+ return -1;
+}
+
+/* Apply the completer referred to by COMPLETER_INDEX to OPCODE, and
+ return the result. */
+
+static ia64_insn
+apply_completer (opcode, completer_index)
+ ia64_insn opcode;
+ int completer_index;
+{
+ ia64_insn mask = completer_table[completer_index].mask;
+ ia64_insn bits = completer_table[completer_index].bits;
+ int shiftamt = (completer_table[completer_index].offset & 63);
+
+ mask = mask << shiftamt;
+ bits = bits << shiftamt;
+ opcode = (opcode & ~mask) | bits;
+ return opcode;
+}
+
+/* Extract BITS number of bits starting from OP_POINTER + BITOFFSET in
+ the dis_table array, and return its value. (BITOFFSET is numbered
+ starting from MSB to LSB, so a BITOFFSET of 0 indicates the MSB of the
+ first byte in OP_POINTER.) */
+
+static int
+extract_op_bits (op_pointer, bitoffset, bits)
+ int op_pointer;
+ int bitoffset;
+ int bits;
+{
+ int res = 0;
+
+ op_pointer += (bitoffset / 8);
+
+ if (bitoffset % 8)
+ {
+ unsigned int op = dis_table[op_pointer++];
+ int numb = 8 - (bitoffset % 8);
+ int mask = (1 << numb) - 1;
+ int bata = (bits < numb) ? bits : numb;
+ int delta = numb - bata;
+
+ res = (res << bata) | ((op & mask) >> delta);
+ bitoffset += bata;
+ bits -= bata;
+ }
+ while (bits >= 8)
+ {
+ res = (res << 8) | (dis_table[op_pointer++] & 255);
+ bits -= 8;
+ }
+ if (bits > 0)
+ {
+ unsigned int op = (dis_table[op_pointer++] & 255);
+ res = (res << bits) | (op >> (8 - bits));
+ }
+ return res;
+}
+
+/* Examine the state machine entry at OP_POINTER in the dis_table
+ array, and extract its values into OPVAL and OP. The length of the
+ state entry in bits is returned. */
+
+static int
+extract_op (op_pointer, opval, op)
+ int op_pointer;
+ int *opval;
+ unsigned int *op;
+{
+ int oplen = 5;
+
+ *op = dis_table[op_pointer];
+
+ if ((*op) & 0x40)
+ {
+ opval[0] = extract_op_bits (op_pointer, oplen, 5);
+ oplen += 5;
+ }
+ switch ((*op) & 0x30)
+ {
+ case 0x10:
+ {
+ opval[1] = extract_op_bits (op_pointer, oplen, 8);
+ oplen += 8;
+ opval[1] += op_pointer;
+ break;
+ }
+ case 0x20:
+ {
+ opval[1] = extract_op_bits (op_pointer, oplen, 16);
+ if (! (opval[1] & 32768))
+ {
+ opval[1] += op_pointer;
+ }
+ oplen += 16;
+ break;
+ }
+ case 0x30:
+ {
+ oplen--;
+ opval[2] = extract_op_bits (op_pointer, oplen, 12);
+ oplen += 12;
+ opval[2] |= 32768;
+ break;
+ }
+ }
+ if (((*op) & 0x08) && (((*op) & 0x30) != 0x30))
+ {
+ opval[2] = extract_op_bits (op_pointer, oplen, 16);
+ oplen += 16;
+ if (! (opval[2] & 32768))
+ {
+ opval[2] += op_pointer;
+ }
+ }
+ return oplen;
+}
+
+/* Returns a non-zero value if the opcode in the main_table list at
+ PLACE matches OPCODE and is of type TYPE. */
+
+static int
+opcode_verify (opcode, place, type)
+ ia64_insn opcode;
+ int place;
+ enum ia64_insn_type type;
+{
+ if (main_table[place].opcode_type != type)
+ {
+ return 0;
+ }
+ if (main_table[place].flags
+ & (IA64_OPCODE_F2_EQ_F3 | IA64_OPCODE_LEN_EQ_64MCNT))
+ {
+ const struct ia64_operand *o1, *o2;
+ ia64_insn f2, f3;
+
+ if (main_table[place].flags & IA64_OPCODE_F2_EQ_F3)
+ {
+ o1 = elf64_ia64_operands + IA64_OPND_F2;
+ o2 = elf64_ia64_operands + IA64_OPND_F3;
+ (*o1->extract) (o1, opcode, &f2);
+ (*o2->extract) (o2, opcode, &f3);
+ if (f2 != f3)
+ return 0;
+ }
+ else
+ {
+ ia64_insn len, count;
+
+ /* length must equal 64-count: */
+ o1 = elf64_ia64_operands + IA64_OPND_LEN6;
+ o2 = elf64_ia64_operands + main_table[place].operands[2];
+ (*o1->extract) (o1, opcode, &len);
+ (*o2->extract) (o2, opcode, &count);
+ if (len != 64 - count)
+ return 0;
+ }
+ }
+ return 1;
+}
+
+/* Find an instruction entry in the ia64_dis_names array that matches
+ opcode OPCODE and is of type TYPE. Returns either a positive index
+ into the array, or a negative value if an entry for OPCODE could
+ not be found. Checks all matches and returns the one with the highest
+ priority. */
+
+static int
+locate_opcode_ent (opcode, type)
+ ia64_insn opcode;
+ enum ia64_insn_type type;
+{
+ int currtest[41];
+ int bitpos[41];
+ int op_ptr[41];
+ int currstatenum = 0;
+ short found_disent = -1;
+ short found_priority = -1;
+
+ currtest[currstatenum] = 0;
+ op_ptr[currstatenum] = 0;
+ bitpos[currstatenum] = 40;
+
+ while (1)
+ {
+ int op_pointer = op_ptr[currstatenum];
+ unsigned int op;
+ int currbitnum = bitpos[currstatenum];
+ int oplen;
+ int opval[3];
+ int next_op;
+ int currbit;
+
+ oplen = extract_op (op_pointer, opval, &op);
+
+ bitpos[currstatenum] = currbitnum;
+
+ /* Skip opval[0] bits in the instruction. */
+ if (op & 0x40)
+ {
+ currbitnum -= opval[0];
+ }
+
+ /* The value of the current bit being tested. */
+ currbit = opcode & (((ia64_insn) 1) << currbitnum) ? 1 : 0;
+ next_op = -1;
+
+ /* We always perform the tests specified in the current state in
+ a particular order, falling through to the next test if the
+ previous one failed. */
+ switch (currtest[currstatenum])
+ {
+ case 0:
+ currtest[currstatenum]++;
+ if (currbit == 0 && (op & 0x80))
+ {
+ /* Check for a zero bit. If this test solely checks for
+ a zero bit, we can check for up to 8 consecutive zero
+ bits (the number to check is specified by the lower 3
+ bits in the state code.)
+
+ If the state instruction matches, we go to the very
+ next state instruction; otherwise, try the next test. */
+
+ if ((op & 0xf8) == 0x80)
+ {
+ int count = op & 0x7;
+ int x;
+
+ for (x = 0; x <= count; x++)
+ {
+ int i =
+ opcode & (((ia64_insn) 1) << (currbitnum - x)) ? 1 : 0;
+ if (i)
+ {
+ break;
+ }
+ }
+ if (x > count)
+ {
+ next_op = op_pointer + ((oplen + 7) / 8);
+ currbitnum -= count;
+ break;
+ }
+ }
+ else if (! currbit)
+ {
+ next_op = op_pointer + ((oplen + 7) / 8);
+ break;
+ }
+ }
+ /* FALLTHROUGH */
+ case 1:
+ /* If the bit in the instruction is one, go to the state
+ instruction specified by opval[1]. */
+ currtest[currstatenum]++;
+ if (currbit && (op & 0x30) != 0 && ((op & 0x30) != 0x30))
+ {
+ next_op = opval[1];
+ break;
+ }
+ /* FALLTHROUGH */
+ case 2:
+ /* Don't care. Skip the current bit and go to the state
+ instruction specified by opval[2].
+
+ An encoding of 0x30 is special; this means that a 12-bit
+ offset into the ia64_dis_names[] array is specified. */
+ currtest[currstatenum]++;
+ if ((op & 0x08) || ((op & 0x30) == 0x30))
+ {
+ next_op = opval[2];
+ break;
+ }
+ }
+
+ /* If bit 15 is set in the address of the next state, an offset
+ in the ia64_dis_names array was specified instead. We then
+ check to see if an entry in the list of opcodes matches the
+ opcode we were given; if so, we have succeeded. */
+
+ if ((next_op >= 0) && (next_op & 32768))
+ {
+ short disent = next_op & 32767;
+ short priority = -1;
+
+ if (next_op > 65535)
+ {
+ abort ();
+ }
+
+ /* Run through the list of opcodes to check, trying to find
+ one that matches. */
+ while (disent >= 0)
+ {
+ int place = ia64_dis_names[disent].insn_index;
+
+ priority = ia64_dis_names[disent].priority;
+
+ if (opcode_verify (opcode, place, type)
+ && priority > found_priority)
+ {
+ break;
+ }
+ if (ia64_dis_names[disent].next_flag)
+ {
+ disent++;
+ }
+ else
+ {
+ disent = -1;
+ }
+ }
+
+ if (disent >= 0)
+ {
+ found_disent = disent;
+ found_priority = priority;
+ }
+ /* Try the next test in this state, regardless of whether a match
+ was found. */
+ next_op = -2;
+ }
+
+ /* next_op == -1 is "back up to the previous state".
+ next_op == -2 is "stay in this state and try the next test".
+ Otherwise, transition to the state indicated by next_op. */
+
+ if (next_op == -1)
+ {
+ currstatenum--;
+ if (currstatenum < 0)
+ {
+ return found_disent;
+ }
+ }
+ else if (next_op >= 0)
+ {
+ currstatenum++;
+ bitpos[currstatenum] = currbitnum - 1;
+ op_ptr[currstatenum] = next_op;
+ currtest[currstatenum] = 0;
+ }
+ }
+}
+
+/* Construct an ia64_opcode entry based on OPCODE, NAME and PLACE. */
+
+static struct ia64_opcode *
+make_ia64_opcode (opcode, name, place, depind)
+ ia64_insn opcode;
+ const char *name;
+ int place;
+ int depind;
+{
+ struct ia64_opcode *res =
+ (struct ia64_opcode *) xmalloc (sizeof (struct ia64_opcode));
+ res->name = xstrdup (name);
+ res->type = main_table[place].opcode_type;
+ res->num_outputs = main_table[place].num_outputs;
+ res->opcode = opcode;
+ res->mask = main_table[place].mask;
+ res->operands[0] = main_table[place].operands[0];
+ res->operands[1] = main_table[place].operands[1];
+ res->operands[2] = main_table[place].operands[2];
+ res->operands[3] = main_table[place].operands[3];
+ res->operands[4] = main_table[place].operands[4];
+ res->flags = main_table[place].flags;
+ res->ent_index = place;
+ res->dependencies = &op_dependencies[depind];
+ return res;
+}
+
+/* Determine the ia64_opcode entry for the opcode specified by INSN
+ and TYPE. If a valid entry is not found, return NULL. */
+struct ia64_opcode *
+ia64_dis_opcode (insn, type)
+ ia64_insn insn;
+ enum ia64_insn_type type;
+{
+ int disent = locate_opcode_ent (insn, type);
+
+ if (disent < 0)
+ {
+ return NULL;
+ }
+ else
+ {
+ unsigned int cb = ia64_dis_names[disent].completer_index;
+ static char name[128];
+ int place = ia64_dis_names[disent].insn_index;
+ int ci = main_table[place].completers;
+ ia64_insn tinsn = main_table[place].opcode;
+
+ strcpy (name, ia64_strings [main_table[place].name_index]);
+
+ while (cb)
+ {
+ if (cb & 1)
+ {
+ int cname = completer_table[ci].name_index;
+
+ tinsn = apply_completer (tinsn, ci);
+
+ if (ia64_strings[cname][0] != '\0')
+ {
+ strcat (name, ".");
+ strcat (name, ia64_strings[cname]);
+ }
+ if (cb != 1)
+ {
+ ci = completer_table[ci].subentries;
+ }
+ }
+ else
+ {
+ ci = completer_table[ci].alternative;
+ }
+ if (ci < 0)
+ {
+ abort ();
+ }
+ cb = cb >> 1;
+ }
+ if (tinsn != (insn & main_table[place].mask))
+ {
+ abort ();
+ }
+ return make_ia64_opcode (insn, name, place,
+ completer_table[ci].dependencies);
+ }
+}
+
+/* Search the main_opcode table starting from PLACE for an opcode that
+ matches NAME. Return NULL if one is not found. */
+
+static struct ia64_opcode *
+ia64_find_matching_opcode (name, place)
+ const char *name;
+ short place;
+{
+ char op[129];
+ const char *suffix;
+ short name_index;
+
+ if (strlen (name) > 128)
+ {
+ return NULL;
+ }
+ suffix = name;
+ get_opc_prefix (&suffix, op);
+ name_index = find_string_ent (op);
+ if (name_index < 0)
+ {
+ return NULL;
+ }
+
+ while (main_table[place].name_index == name_index)
+ {
+ const char *curr_suffix = suffix;
+ ia64_insn curr_insn = main_table[place].opcode;
+ short completer = -1;
+
+ do {
+ if (suffix[0] == '\0')
+ {
+ completer = find_completer (place, completer, suffix);
+ }
+ else
+ {
+ get_opc_prefix (&curr_suffix, op);
+ completer = find_completer (place, completer, op);
+ }
+ if (completer != -1)
+ {
+ curr_insn = apply_completer (curr_insn, completer);
+ }
+ } while (completer != -1 && curr_suffix[0] != '\0');
+
+ if (completer != -1 && curr_suffix[0] == '\0'
+ && completer_table[completer].terminal_completer)
+ {
+ int depind = completer_table[completer].dependencies;
+ return make_ia64_opcode (curr_insn, name, place, depind);
+ }
+ else
+ {
+ place++;
+ }
+ }
+ return NULL;
+}
+
+/* Find the next opcode after PREV_ENT that matches PREV_ENT, or return NULL
+ if one does not exist.
+
+ It is the caller's responsibility to invoke ia64_free_opcode () to
+ release any resources used by the returned entry. */
+
+struct ia64_opcode *
+ia64_find_next_opcode (prev_ent)
+ struct ia64_opcode *prev_ent;
+{
+ return ia64_find_matching_opcode (prev_ent->name,
+ prev_ent->ent_index + 1);
+}
+
+/* Find the first opcode that matches NAME, or return NULL if it does
+ not exist.
+
+ It is the caller's responsibility to invoke ia64_free_opcode () to
+ release any resources used by the returned entry. */
+
+struct ia64_opcode *
+ia64_find_opcode (name)
+ const char *name;
+{
+ char op[129];
+ const char *suffix;
+ short place;
+ short name_index;
+
+ if (strlen (name) > 128)
+ {
+ return NULL;
+ }
+ suffix = name;
+ get_opc_prefix (&suffix, op);
+ name_index = find_string_ent (op);
+ if (name_index < 0)
+ {
+ return NULL;
+ }
+
+ place = find_main_ent (name_index);
+
+ if (place < 0)
+ {
+ return NULL;
+ }
+ return ia64_find_matching_opcode (name, place);
+}
+
+/* Free any resources used by ENT. */
+void
+ia64_free_opcode (ent)
+ struct ia64_opcode *ent;
+{
+ free ((void *)ent->name);
+ free (ent);
+}
+
+const struct ia64_dependency *
+ia64_find_dependency (index)
+ int index;
+{
+ index = DEP(index);
+
+ if (index < 0 || index >= sizeof(dependencies) / sizeof(dependencies[0]))
+ return NULL;
+
+ return &dependencies[index];
+}
diff --git a/opcodes/ia64-opc.h b/opcodes/ia64-opc.h
new file mode 100644
index 00000000000..8a208fda483
--- /dev/null
+++ b/opcodes/ia64-opc.h
@@ -0,0 +1,129 @@
+/* ia64-opc.h -- IA-64 opcode table.
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+ This file is part of GDB, GAS, and the GNU binutils.
+
+ GDB, GAS, and the GNU binutils are free software; you can redistribute
+ them and/or modify them under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either version
+ 2, or (at your option) any later version.
+
+ GDB, GAS, and the GNU binutils are distributed in the hope that they
+ 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 file; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#ifndef IA64_OPC_H
+#define IA64_OPC_H
+
+#include "opcode/ia64.h"
+
+/* define a couple of abbreviations: */
+
+#define bOp(x) (((ia64_insn) ((x) & 0xf)) << 37)
+#define mOp bOp (-1)
+#define Op(x) bOp (x), mOp
+
+#define FIRST IA64_OPCODE_FIRST
+#define X_IN_MLX IA64_OPCODE_X_IN_MLX
+#define LAST IA64_OPCODE_LAST
+#define PRIV IA64_OPCODE_PRIV
+#define NO_PRED IA64_OPCODE_NO_PRED
+#define SLOT2 IA64_OPCODE_SLOT2
+#define PSEUDO IA64_OPCODE_PSEUDO
+#define F2_EQ_F3 IA64_OPCODE_F2_EQ_F3
+#define LEN_EQ_64MCNT IA64_OPCODE_LEN_EQ_64MCNT
+#define MOD_RRBS IA64_OPCODE_MOD_RRBS
+
+#define AR_CCV IA64_OPND_AR_CCV
+#define AR_PFS IA64_OPND_AR_PFS
+#define C1 IA64_OPND_C1
+#define C8 IA64_OPND_C8
+#define C16 IA64_OPND_C16
+#define GR0 IA64_OPND_GR0
+#define IP IA64_OPND_IP
+#define PR IA64_OPND_PR
+#define PR_ROT IA64_OPND_PR_ROT
+#define PSR IA64_OPND_PSR
+#define PSR_L IA64_OPND_PSR_L
+#define PSR_UM IA64_OPND_PSR_UM
+
+#define AR3 IA64_OPND_AR3
+#define B1 IA64_OPND_B1
+#define B2 IA64_OPND_B2
+#define CR3 IA64_OPND_CR3
+#define F1 IA64_OPND_F1
+#define F2 IA64_OPND_F2
+#define F3 IA64_OPND_F3
+#define F4 IA64_OPND_F4
+#define P1 IA64_OPND_P1
+#define P2 IA64_OPND_P2
+#define R1 IA64_OPND_R1
+#define R2 IA64_OPND_R2
+#define R3 IA64_OPND_R3
+#define R3_2 IA64_OPND_R3_2
+
+#define CPUID_R3 IA64_OPND_CPUID_R3
+#define DBR_R3 IA64_OPND_DBR_R3
+#define DTR_R3 IA64_OPND_DTR_R3
+#define ITR_R3 IA64_OPND_ITR_R3
+#define IBR_R3 IA64_OPND_IBR_R3
+#define MR3 IA64_OPND_MR3
+#define MSR_R3 IA64_OPND_MSR_R3
+#define PKR_R3 IA64_OPND_PKR_R3
+#define PMC_R3 IA64_OPND_PMC_R3
+#define PMD_R3 IA64_OPND_PMD_R3
+#define RR_R3 IA64_OPND_RR_R3
+
+#define CCNT5 IA64_OPND_CCNT5
+#define CNT2a IA64_OPND_CNT2a
+#define CNT2b IA64_OPND_CNT2b
+#define CNT2c IA64_OPND_CNT2c
+#define CNT5 IA64_OPND_CNT5
+#define CNT6 IA64_OPND_CNT6
+#define CPOS6a IA64_OPND_CPOS6a
+#define CPOS6b IA64_OPND_CPOS6b
+#define CPOS6c IA64_OPND_CPOS6c
+#define IMM1 IA64_OPND_IMM1
+#define IMM14 IA64_OPND_IMM14
+#define IMM17 IA64_OPND_IMM17
+#define IMM22 IA64_OPND_IMM22
+#define IMM44 IA64_OPND_IMM44
+#define SOF IA64_OPND_SOF
+#define SOL IA64_OPND_SOL
+#define SOR IA64_OPND_SOR
+#define IMM8 IA64_OPND_IMM8
+#define IMM8U4 IA64_OPND_IMM8U4
+#define IMM8M1 IA64_OPND_IMM8M1
+#define IMM8M1U4 IA64_OPND_IMM8M1U4
+#define IMM8M1U8 IA64_OPND_IMM8M1U8
+#define IMM9a IA64_OPND_IMM9a
+#define IMM9b IA64_OPND_IMM9b
+#define IMMU2 IA64_OPND_IMMU2
+#define IMMU21 IA64_OPND_IMMU21
+#define IMMU24 IA64_OPND_IMMU24
+#define IMMU62 IA64_OPND_IMMU62
+#define IMMU64 IA64_OPND_IMMU64
+#define IMMU7a IA64_OPND_IMMU7a
+#define IMMU7b IA64_OPND_IMMU7b
+#define IMMU9 IA64_OPND_IMMU9
+#define INC3 IA64_OPND_INC3
+#define LEN4 IA64_OPND_LEN4
+#define LEN6 IA64_OPND_LEN6
+#define MBTYPE4 IA64_OPND_MBTYPE4
+#define MHTYPE8 IA64_OPND_MHTYPE8
+#define POS6 IA64_OPND_POS6
+#define TAG13 IA64_OPND_TAG13
+#define TAG13b IA64_OPND_TAG13b
+#define TGT25 IA64_OPND_TGT25
+#define TGT25b IA64_OPND_TGT25b
+#define TGT25c IA64_OPND_TGT25c
+#define TGT64 IA64_OPND_TGT64
+
+#endif
diff --git a/opcodes/ia64-raw.tbl b/opcodes/ia64-raw.tbl
new file mode 100644
index 00000000000..3b39e730a84
--- /dev/null
+++ b/opcodes/ia64-raw.tbl
@@ -0,0 +1,171 @@
+Resource Name; Writers; Readers; Semantics of Dependency
+ALAT; chk.a.clr, IC:mem-readers-alat, IC:mem-writers, IC:invala-all; IC:mem-readers-alat, IC:mem-writers, IC:chk-a, invala.e; none
+AR[BSP]; br.call, brl.call, br.ret, cover, IC:mov-to-AR-BSPSTORE, rfi; br.call, brl.call, br.ia, br.ret, cover, flushrs, loadrs, IC:mov-from-AR-BSP, rfi; impliedF
+AR[BSPSTORE]; alloc, loadrs, flushrs, IC:mov-to-AR-BSPSTORE; alloc, br.ia, flushrs, IC:mov-from-AR-BSPSTORE; impliedF
+AR[CCV]; IC:mov-to-AR-CCV; br.ia, IC:cmpxchg, IC:mov-from-AR-CCV; impliedF
+AR[EC]; IC:mod-sched-brs, br.ret, IC:mov-to-AR-EC; br.call, brl.call, br.ia, IC:mod-sched-brs, IC:mov-from-AR-EC; impliedF
+AR[FPSR].sf0.controls; IC:mov-to-AR-FPSR, fsetc.s0; br.ia, IC:fp-arith-s0, IC:fcmp-s0, IC:fpcmp-s0, fsetc, IC:mov-from-AR-FPSR; impliedF
+AR[FPSR].sf1.controls; IC:mov-to-AR-FPSR, fsetc.s1; br.ia, IC:fp-arith-s1, IC:fcmp-s1, IC:fpcmp-s1, IC:mov-from-AR-FPSR; impliedF
+AR[FPSR].sf2.controls; IC:mov-to-AR-FPSR, fsetc.s2; br.ia, IC:fp-arith-s2, IC:fcmp-s2, IC:fpcmp-s2, IC:mov-from-AR-FPSR; impliedF
+AR[FPSR].sf3.controls; IC:mov-to-AR-FPSR, fsetc.s3; br.ia, IC:fp-arith-s3, IC:fcmp-s3, IC:fpcmp-s3, IC:mov-from-AR-FPSR; impliedF
+AR[FPSR].sf0.flags; IC:fp-arith-s0, fclrf.s0, IC:fcmp-s0, IC:fpcmp-s0, IC:mov-to-AR-FPSR; br.ia, fchkf, IC:mov-from-AR-FPSR; impliedF
+AR[FPSR].sf1.flags; IC:fp-arith-s1, fclrf.s1, IC:fcmp-s1, IC:fpcmp-s1, IC:mov-to-AR-FPSR; br.ia, fchkf.s1, IC:mov-from-AR-FPSR; impliedF
+AR[FPSR].sf2.flags; IC:fp-arith-s2, fclrf.s2, IC:fcmp-s2, IC:fpcmp-s2, IC:mov-to-AR-FPSR; br.ia, fchkf.s2, IC:mov-from-AR-FPSR; impliedF
+AR[FPSR].sf3.flags; IC:fp-arith-s3, fclrf.s3, IC:fcmp-s3, IC:fpcmp-s3, IC:mov-to-AR-FPSR; br.ia, fchkf.s3, IC:mov-from-AR-FPSR; impliedF
+AR[FPSR].traps; IC:mov-to-AR-FPSR; br.ia, IC:fp-arith, fchkf, fcmp, fpcmp, IC:mov-from-AR-FPSR; impliedF
+AR[FPSR].rv; IC:mov-to-AR-FPSR; br.ia, IC:fp-arith, fchkf, fcmp, fpcmp, IC:mov-from-AR-FPSR; impliedF
+AR[ITC]; IC:mov-to-AR-ITC; br.ia, IC:mov-from-AR-ITC; impliedF
+AR[K%], % in 0 - 7; IC:mov-to-AR-K+1; br.ia, IC:mov-from-AR-K+1; impliedF
+AR[LC]; IC:mod-sched-brs-counted, IC:mov-to-AR-LC; br.ia, IC:mod-sched-brs-counted, IC:mov-from-AR-LC; impliedF
+AR[PFS]; br.call, brl.call; alloc, br.ia, br.ret, epc, IC:mov-from-AR-PFS; impliedF
+AR[PFS]; IC:mov-to-AR-PFS; alloc, br.ia, epc, IC:mov-from-AR-PFS; impliedF
+AR[PFS]; IC:mov-to-AR-PFS; br.ret; none
+AR[RNAT]; alloc, flushrs, loadrs, IC:mov-to-AR-RNAT, IC:mov-to-AR-BSPSTORE; alloc, br.ia, flushrs, loadrs, IC:mov-from-AR-RNAT; impliedF
+AR[RSC]; IC:mov-to-AR-RSC; alloc, br.ia, flushrs, loadrs, IC:mov-from-AR-RSC, IC:mov-from-AR-BSPSTORE, IC:mov-to-AR-RNAT, IC:mov-from-AR-RNAT, IC:mov-to-AR-BSPSTORE; impliedF
+AR[UNAT]{%}, % in 0 - 63; IC:mov-to-AR-UNAT, st8.spill; br.ia, ld8.fill, IC:mov-from-AR-UNAT; impliedF
+AR%, % in 8-15, 20, 22-23, 31, 33-35, 37-39, 41-43, 45-47, 67-111; IC:none; br.ia, IC:mov-from-AR-rv+1; none
+AR%, % in 48-63, 112-127; IC:mov-to-AR-ig+1; br.ia, IC:mov-from-AR-ig+1; impliedF
+BR%, % in 0 - 7; br.call+1, brl.call+1; IC:indirect-brs+1, IC:indirect-brp+1, IC:mov-from-BR+1; impliedF
+BR%, % in 0 - 7; IC:mov-to-BR+1; IC:indirect-brs+1; none
+BR%, % in 0 - 7; IC:mov-to-BR+1; IC:indirect-brp+1, IC:mov-from-BR+1; impliedF
+CFM; IC:mod-sched-brs; IC:mod-sched-brs; impliedF
+CFM; IC:mod-sched-brs; cover, alloc, rfi, loadrs, br.ret, br.call, brl.call; impliedF
+CFM; IC:mod-sched-brs; IC:cfm-readers+2; impliedF
+CFM; br.call, brl.call, br.ret, clrrrb, cover, rfi; IC:cfm-readers; impliedF
+CFM; alloc; IC:cfm-readers; none
+CPUID#; IC:none; IC:mov-from-IND-CPUID+3; specific
+CR[CMCV]; IC:mov-to-CR-CMCV; IC:mov-from-CR-CMCV; data
+CR[DCR]; IC:mov-to-CR-DCR; IC:mov-from-CR-DCR, IC:mem-readers-spec; data
+CR[EOI]; IC:mov-to-CR-EOI; IC:none; SC Section 10.8.3.4
+CR[GPTA]; IC:mov-to-CR-GPTA; IC:mov-from-CR-GPTA, thash; data
+CR[IFA]; IC:mov-to-CR-IFA; itc.i, itc.d, itr.i, itr.d; implied
+CR[IFA]; IC:mov-to-CR-IFA; IC:mov-from-CR-IFA; data
+CR[IFS]; IC:mov-to-CR-IFS; IC:mov-from-CR-IFS; data
+CR[IFS]; IC:mov-to-CR-IFS; rfi; implied
+CR[IFS]; cover; rfi, IC:mov-from-CR-IFS; implied
+CR[IHA]; IC:mov-to-CR-IHA; IC:mov-from-CR-IHA; data
+CR[IIM]; IC:mov-to-CR-IIM; IC:mov-from-CR-IIM; data
+CR[IIP]; IC:mov-to-CR-IIP; IC:mov-from-CR-IIP; data
+CR[IIP]; IC:mov-to-CR-IIP; rfi; implied
+CR[IIPA]; IC:mov-to-CR-IIPA; IC:mov-from-CR-IIPA; data
+CR[IPSR]; IC:mov-to-CR-IPSR; IC:mov-from-CR-IPSR; data
+CR[IPSR]; IC:mov-to-CR-IPSR; rfi; implied
+CR[IRR%], % in 0 - 3; IC:mov-from-CR-IVR; IC:mov-from-CR-IRR+1; data
+CR[ISR]; IC:mov-to-CR-ISR; IC:mov-from-CR-ISR; data
+CR[ITIR]; IC:mov-to-CR-ITIR; IC:mov-from-CR-ITIR; data
+CR[ITIR]; IC:mov-to-CR-ITIR; itc.i, itc.d, itr.i, itc.d; implied
+CR[ITM]; IC:mov-to-CR-ITM; IC:mov-from-CR-ITM; data
+CR[ITV]; IC:mov-to-CR-ITV; IC:mov-from-CR-ITV; data
+CR[IVA]; IC:mov-to-CR-IVA; IC:mov-from-CR-IVA; instr
+CR[IVR]; IC:none; IC:mov-from-CR-IVR; SC Section 10.8.3.2
+CR[LID]; IC:mov-to-CR-LID; IC:mov-from-CR-LID; SC Section 10.8.3.1
+CR[LRR%], % in 0 - 1; IC:mov-to-CR-LRR+1; IC:mov-from-CR-LRR+1; data
+CR[PMV]; IC:mov-to-CR-PMV; IC:mov-from-CR-PMV; data
+CR[PTA]; IC:mov-to-CR-PTA; IC:mov-from-CR-PTA, thash; data
+CR[TPR]; IC:mov-to-CR-TPR; IC:mov-from-CR-TPR, IC:mov-from-CR-IVR; data
+CR[TPR]; IC:mov-to-CR-TPR; IC:mov-to-PSR-l, rfi, rsm, ssm; SC Section 10.8.3.3
+CR%, % in 3-7, 10-15, 18, 26-63, 75-79, 82-127; IC:none; IC:mov-from-CR-rv+1; none
+DBR#; IC:mov-to-IND-DBR+3; IC:mov-from-IND-DBR+3; impliedF
+DBR#; IC:mov-to-IND-DBR+3; IC:probe-all, IC:lfetch-all, IC:mem-readers, IC:mem-writers; data
+DTC; ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d, itc.i, itc.d, itr.i, itr.d; IC:mem-readers, IC:mem-writers, fc, IC:probe-all, tak, tpa; data
+DTC; itc.i, itc.d, itr.i, itr.d; ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d, itc.i, itc.d, itr.i, itr.d; impliedF
+DTC; ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d; ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d; none
+DTC; ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d; itc.i, itc.d, itr.i, itr.d; impliedF
+DTC_LIMIT*; ptc.g, ptc.ga; ptc.g, ptc.ga; impliedF
+DTR; itr.d; IC:mem-readers, IC:mem-writers, fc, IC:probe-all, tak, tpa; data
+DTR; itr.d; ptc.g, ptc.ga, ptc.l, ptr.d, itr.d; impliedF
+DTR; ptr.d; IC:mem-readers, IC:mem-writers, fc, IC:probe-all, tak, tpa; data
+DTR; ptr.d; ptc.g, ptc.ga, ptc.l, ptr.d; none
+DTR; ptr.d; itr.d, itc.d; impliedF
+FR%, % in 0 - 1; IC:none; IC:fr-readers+1; none
+FR%, % in 2 - 127; IC:fr-writers+1\IC:ldf-c+1\IC:ldfp-c+1; IC:fr-readers+1; impliedF
+FR%, % in 2 - 127; IC:ldf-c+1, IC:ldfp-c+1; IC:fr-readers+1; none
+GR0; IC:none; IC:gr-readers+1, IC:mov-immediate; none
+GR%, % in 1 - 127; IC:ld-c+1+13; IC:gr-readers+1; none
+GR%, % in 1 - 127; IC:gr-writers+1\IC:ld-c+1+13; IC:gr-readers+1; impliedF
+IBR#; IC:mov-to-IND-IBR+3; IC:mov-from-IND-IBR+3; impliedF
+InService*; IC:mov-to-CR-EOI; IC:mov-from-CR-IVR; data
+InService*; IC:mov-from-CR-IVR; IC:mov-from-CR-IVR; impliedF
+InService*; IC:mov-to-CR-EOI; IC:mov-to-CR-EOI; impliedF
+IP; IC:all; IC:all; none
+ITC; ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d; epc; instr
+ITC; ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d; itc.i, itc.d, itr.i, itr.d; impliedF
+ITC; ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d; ptr.i, ptr.d, ptc.e, ptc.g, ptc.ga, ptc.l; none
+ITC; itc.i, itc.d, itr.i, itr.d; epc; instr
+ITC; itc.i, itc.d, itr.i, itr.d; itc.d, itc.i, itr.d, itr.i, ptr.d, ptr.i, ptc.g, ptc.ga, ptc.l; impliedF
+ITC_LIMIT*; ptc.g, ptc.ga; ptc.g, ptc.ga; impliedF
+ITR; itr.i; itr.i, itc.i, ptc.g, ptc.ga, ptc.l, ptr.i; impliedF
+ITR; itr.i; epc; instr
+ITR; ptr.i; itc.i, itr.i; impliedF
+ITR; ptr.i; ptc.g, ptc.ga, ptc.l, ptr.i; none
+ITR; ptr.i; epc; instr
+memory; IC:mem-writers; IC:mem-readers; none
+MSR#; IC:mov-to-IND-MSR+5; IC:mov-from-IND-MSR+5; specific
+PKR#; IC:mov-to-IND-PKR+3; IC:mem-readers, IC:mem-writers, IC:mov-from-IND-PKR+4, IC:probe-all; data
+PKR#; IC:mov-to-IND-PKR+3; IC:mov-to-IND-PKR+4; none
+PKR#; IC:mov-to-IND-PKR+3; IC:mov-from-IND-PKR+3; impliedF
+PKR#; IC:mov-to-IND-PKR+3; IC:mov-to-IND-PKR+3; impliedF
+PMC#; IC:mov-to-IND-PMC+3; IC:mov-from-IND-PMC+3; impliedF
+PMC#; IC:mov-to-IND-PMC+3; IC:mov-from-IND-PMD+3; SC+3 Section 12.1.1
+PMD#; IC:mov-to-IND-PMD+3; IC:mov-from-IND-PMD+3; impliedF
+PR0; IC:pr-writers+1; IC:pr-readers-br+1, IC:pr-readers-nobr-nomovpr+1 , IC:mov-from-PR+12, IC:mov-to-PR+12; none
+PR%, % in 1 - 62; IC:pr-writers+1, IC:mov-to-PR-allreg+7, IC:mov-to-PR-rotreg; IC:pr-readers-nobr-nomovpr+1 , IC:mov-from-PR, IC:mov-to-PR+12; impliedF
+PR%, % in 1 - 62; IC:pr-writers-fp+1; IC:pr-readers-br+1; impliedF
+PR%, % in 1 - 62; IC:pr-writers-int+1, IC:mov-to-PR-allreg+7, IC:mov-to-PR-rotreg; IC:pr-readers-br+1; none
+PR63; IC:mod-sched-brs, IC:pr-writers+1, IC:mov-to-PR-allreg+7, IC:mov-to-PR-rotreg; IC:pr-readers-nobr-nomovpr+1 , IC:mov-from-PR, IC:mov-to-PR+12; impliedF
+PR63; IC:pr-writers-fp+1, IC:mod-sched-brs; IC:pr-readers-br+1; impliedF
+PR63; IC:pr-writers-int+1, IC:mov-to-PR-allreg+7, IC:mov-to-PR-rotreg; IC:pr-readers-br+1; none
+PSR.ac; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um; IC:mem-readers, IC:mem-writers; implied
+PSR.ac; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mem-readers, IC:mem-writers; data
+PSR.ac; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-PSR, IC:mov-from-PSR-um; impliedF
+PSR.be; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um; IC:mem-readers, IC:mem-writers; implied
+PSR.be; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mem-readers, IC:mem-writers; data
+PSR.be; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-PSR, IC:mov-from-PSR-um; impliedF
+PSR.bn; bsw, rfi; IC:gr-readers+10, IC:gr-writers+10; impliedF
+PSR.cpl; epc, br.ret, rfi; IC:priv-ops, br.call, brl.call, epc, IC:mov-from-AR-ITC, IC:mov-to-AR-ITC, IC:mov-to-AR-RSC, IC:mov-to-AR-K, IC:mov-from-IND-PMD, IC:probe-all, IC:mem-readers, IC:mem-writers, IC:lfetch-all; implied
+PSR.da; rfi; IC:mem-readers, IC:lfetch-fault, IC:mem-writers, IC:probe-fault; data
+PSR.db; IC:mov-to-PSR-l; IC:mem-readers, IC:mem-writers, IC:probe-fault; data
+PSR.db; IC:mov-to-PSR-l; IC:mov-from-PSR; impliedF
+PSR.db; rfi; IC:mem-readers, IC:mem-writers, IC:mov-from-PSR, IC:probe-fault; data
+PSR.dd; rfi; IC:mem-readers, IC:probe-fault, IC:mem-writers, IC:lfetch-fault; data
+PSR.dfh; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:fr-readers+8, IC:fr-writers+8; data
+PSR.dfh; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-PSR; impliedF
+PSR.dfl; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:fr-writers+8, IC:fr-readers+8; data
+PSR.dfl; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-PSR; impliedF
+PSR.di; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; br.ia; data
+PSR.di; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-PSR; impliedF
+PSR.dt; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mem-readers, IC:mem-writers; data
+PSR.dt; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-PSR; impliedF
+PSR.ed; rfi; IC:lfetch-all, IC:mem-readers-spec; data
+PSR.i; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l; IC:mov-from-PSR; impliedF
+PSR.i; rfi; IC:mov-from-PSR; data
+PSR.ia; rfi; IC:none; none
+PSR.ic; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-PSR; impliedF
+PSR.ic; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; cover, itc.i, itc.d, itr.i, itr.d, IC:mov-from-CR-ITIR, IC:mov-from-CR-IFS, IC:mov-from-CR-IIM, IC:mov-from-CR-IIP, IC:mov-from-CR-IPSR, IC:mov-from-CR-ISR, IC:mov-from-CR-IFA, IC:mov-from-CR-IHA, IC:mov-from-CR-IIPA, IC:mov-to-CR-ITIR, IC:mov-to-CR-IFS, IC:mov-to-CR-IIM, IC:mov-to-CR-IIP, IC:mov-to-CR-IPSR, IC:mov-to-CR-ISR, IC:mov-to-CR-IFA, IC:mov-to-CR-IHA, IC:mov-to-CR-IIPA; data
+PSR.id; rfi; IC:none; none
+PSR.is; br.ia, rfi; IC:none; none
+PSR.it; rfi; IC:branches, IC:mov-from-PSR, chk, epc, fchkf; data
+PSR.lp; IC:mov-to-PSR-l; IC:mov-from-PSR; impliedF
+PSR.lp; IC:mov-to-PSR-l; br.ret; data
+PSR.lp; rfi; IC:mov-from-PSR, br.ret; data
+PSR.mc; rfi; IC:mov-from-PSR; none
+PSR.mfh; IC:fr-writers+9, IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-PSR-um, IC:mov-from-PSR; impliedF
+PSR.mfl; IC:fr-writers+9, IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-PSR-um, IC:mov-from-PSR; impliedF
+PSR.pk; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mem-readers, IC:mem-writers, IC:probe-all; data
+PSR.pk; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-PSR; impliedF
+PSR.pp; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-PSR; impliedF
+PSR.ri; rfi; IC:none; none
+PSR.rt; IC:mov-to-PSR-l; IC:mov-from-PSR; impliedF
+PSR.rt; IC:mov-to-PSR-l; alloc, flushrs, loadrs; data
+PSR.rt; rfi; IC:mov-from-PSR, alloc, flushrs, loadrs; data
+PSR.si; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-PSR; impliedF
+PSR.si; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-AR-ITC; data
+PSR.sp; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-PSR; impliedF
+PSR.sp; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-IND-PMD, IC:mov-to-PSR-um, rum, sum; data
+PSR.ss; rfi; IC:all; data
+PSR.tb; IC:mov-to-PSR-l, rfi; IC:branches, chk, fchkf; data
+PSR.tb; IC:mov-to-PSR-l, rfi; IC:mov-from-PSR; impliedF
+PSR.up; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:mov-from-PSR-um, IC:mov-from-PSR; impliedF
+RR#; IC:mov-to-IND-RR+6; IC:mem-readers, IC:mem-writers, itc.i, itc.d, itr.i, itr.d, IC:probe-all, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d, tak, thash, tpa, ttag; data
+RR#; IC:mov-to-IND-RR+6; IC:mov-from-IND-RR+6; impliedF
+RSE; IC:rse-writers+14; IC:rse-readers+14; impliedF
diff --git a/opcodes/ia64-war.tbl b/opcodes/ia64-war.tbl
new file mode 100644
index 00000000000..aa49e08b77f
--- /dev/null
+++ b/opcodes/ia64-war.tbl
@@ -0,0 +1,2 @@
+Resource Name; Readers; Writers; Results of Dependency
+PR63; IC:pr-readers-br+1; IC:mod-sched-brs; impliedF
diff --git a/opcodes/ia64-waw.tbl b/opcodes/ia64-waw.tbl
new file mode 100644
index 00000000000..0fa743e4589
--- /dev/null
+++ b/opcodes/ia64-waw.tbl
@@ -0,0 +1,125 @@
+Resource Name; Writers; Writers; Semantics of Dependency
+ALAT; IC:mem-readers-alat, IC:mem-writers, chk.a.clr, IC:invala-all; IC:mem-readers-alat, IC:mem-writers, chk.a.clr, IC:invala-all; none
+AR[BSP]; br.call, brl.call, br.ret, cover, IC:mov-to-AR-BSPSTORE, rfi; br.call, brl.call, br.ret, cover, IC:mov-to-AR-BSPSTORE, rfi; impliedF
+AR[BSPSTORE]; alloc, loadrs, flushrs, IC:mov-to-AR-BSPSTORE; alloc, loadrs, flushrs, IC:mov-to-AR-BSPSTORE; impliedF
+AR[CCV]; IC:mov-to-AR-CCV; IC:mov-to-AR-CCV; impliedF
+AR[EC]; br.ret, IC:mod-sched-brs, IC:mov-to-AR-EC; br.ret, IC:mod-sched-brs, IC:mov-to-AR-EC; impliedF
+AR[FPSR].sf0.controls; IC:mov-to-AR-FPSR, fsetc.s0; IC:mov-to-AR-FPSR, fsetc.s0; impliedF
+AR[FPSR].sf1.controls; IC:mov-to-AR-FPSR, fsetc.s1; IC:mov-to-AR-FPSR, fsetc.s1; impliedF
+AR[FPSR].sf2.controls; IC:mov-to-AR-FPSR, fsetc.s2; IC:mov-to-AR-FPSR, fsetc.s2; impliedF
+AR[FPSR].sf3.controls; IC:mov-to-AR-FPSR, fsetc.s3; IC:mov-to-AR-FPSR, fsetc.s3; impliedF
+AR[FPSR].sf0.flags; IC:fp-arith-s0, IC:fcmp-s0, IC:fpcmp-s0; IC:fp-arith-s0, IC:fcmp-s0, IC:fpcmp-s0; none
+AR[FPSR].sf0.flags; fclrf.s0, IC:fcmp-s0, IC:fp-arith-s0, IC:fpcmp-s0, IC:mov-to-AR-FPSR; fclrf.s0, IC:mov-to-AR-FPSR; impliedF
+AR[FPSR].sf1.flags; IC:fp-arith-s1, IC:fcmp-s1, IC:fpcmp-s1; IC:fp-arith-s1, IC:fcmp-s1, IC:fpcmp-s1; none
+AR[FPSR].sf1.flags; fclrf.s1, IC:fcmp-s1, IC:fp-arith-s1, IC:fpcmp-s1, IC:mov-to-AR-FPSR; fclrf.s1, IC:mov-to-AR-FPSR; impliedF
+AR[FPSR].sf2.flags; IC:fp-arith-s2, IC:fcmp-s2, IC:fpcmp-s2; IC:fp-arith-s2, IC:fcmp-s2, IC:fpcmp-s2; none
+AR[FPSR].sf2.flags; fclrf.s2, IC:fcmp-s2, IC:fp-arith-s2, IC:fpcmp-s2, IC:mov-to-AR-FPSR; fclrf.s2, IC:mov-to-AR-FPSR; impliedF
+AR[FPSR].sf3.flags; IC:fp-arith-s3, IC:fcmp-s3, IC:fpcmp-s3; IC:fp-arith-s3, IC:fcmp-s3, IC:fpcmp-s3; none
+AR[FPSR].sf3.flags; fclrf.s3, IC:fcmp-s3, IC:fp-arith-s3, IC:fpcmp-s3, IC:mov-to-AR-FPSR; fclrf.s3, IC:mov-to-AR-FPSR; impliedF
+AR[FPSR].rv; IC:mov-to-AR-FPSR; IC:mov-to-AR-FPSR; impliedF
+AR[FPSR].traps; IC:mov-to-AR-FPSR; IC:mov-to-AR-FPSR; impliedF
+AR[ITC]; IC:mov-to-AR-ITC; IC:mov-to-AR-ITC; impliedF
+AR[K%], % in 0 - 7; IC:mov-to-AR-K+1; IC:mov-to-AR-K+1; impliedF
+AR[LC]; IC:mod-sched-brs-counted, IC:mov-to-AR-LC; IC:mod-sched-brs-counted, IC:mov-to-AR-LC; impliedF
+AR[PFS]; br.call, brl.call; br.call, brl.call; none
+AR[PFS]; br.call, brl.call; IC:mov-to-AR-PFS; impliedF
+AR[RNAT]; alloc, flushrs, loadrs, IC:mov-to-AR-RNAT, IC:mov-to-AR-BSPSTORE; alloc, flushrs, loadrs, IC:mov-to-AR-RNAT, IC:mov-to-AR-BSPSTORE; impliedF
+AR[RSC]; IC:mov-to-AR-RSC; IC:mov-to-AR-RSC; impliedF
+AR[UNAT]{%}, % in 0 - 63; IC:mov-to-AR-UNAT, st8.spill; IC:mov-to-AR-UNAT, st8.spill; impliedF
+AR%, % in 8-15, 20, 22-23, 31, 33-35, 37-39, 41-43, 45-47, 67-111; IC:none; IC:none; none
+AR%, % in 48 - 63, 112-127; IC:mov-to-AR-ig+1; IC:mov-to-AR-ig+1; impliedF
+BR%, % in 0 - 7; br.call+1, brl.call+1; IC:mov-to-BR+1; impliedF
+BR%, % in 0 - 7; IC:mov-to-BR+1; IC:mov-to-BR+1; impliedF
+BR%, % in 0 - 7; br.call+1, brl.call+1; br.call+1, brl.call+1; none
+CFM; IC:mod-sched-brs, br.call, brl.call, br.ret, alloc, clrrrb, cover, rfi; IC:mod-sched-brs, br.call, brl.call, br.ret, alloc, clrrrb, cover, rfi; impliedF
+CPUID#; IC:none; IC:none; none
+CR[CMCV]; IC:mov-to-CR-CMCV; IC:mov-to-CR-CMCV; impliedF
+CR[DCR]; IC:mov-to-CR-DCR; IC:mov-to-CR-DCR; impliedF
+CR[EOI]; IC:mov-to-CR-EOI; IC:mov-to-CR-EOI; SC Section 10.8.3.4
+CR[GPTA]; IC:mov-to-CR-GPTA; IC:mov-to-CR-GPTA; impliedF
+CR[IFA]; IC:mov-to-CR-IFA; IC:mov-to-CR-IFA; impliedF
+CR[IFS]; IC:mov-to-CR-IFS, cover; IC:mov-to-CR-IFS, cover; impliedF
+CR[IHA]; IC:mov-to-CR-IHA; IC:mov-to-CR-IHA; impliedF
+CR[IIM]; IC:mov-to-CR-IIM; IC:mov-to-CR-IIM; impliedF
+CR[IIP]; IC:mov-to-CR-IIP; IC:mov-to-CR-IIP; impliedF
+CR[IIPA]; IC:mov-to-CR-IIPA; IC:mov-to-CR-IIPA; impliedF
+CR[IPSR]; IC:mov-to-CR-IPSR; IC:mov-to-CR-IPSR; impliedF
+CR[IRR%], % in 0 - 3; IC:mov-from-CR-IVR; IC:mov-from-CR-IVR; impliedF
+CR[ISR]; IC:mov-to-CR-ISR; IC:mov-to-CR-ISR; impliedF
+CR[ITIR]; IC:mov-to-CR-ITIR; IC:mov-to-CR-ITIR; impliedF
+CR[ITM]; IC:mov-to-CR-ITM; IC:mov-to-CR-ITM; impliedF
+CR[ITV]; IC:mov-to-CR-ITV; IC:mov-to-CR-ITV; impliedF
+CR[IVA]; IC:mov-to-CR-IVA; IC:mov-to-CR-IVA; impliedF
+CR[IVR]; IC:none; IC:none; SC
+CR[LID]; IC:mov-to-CR-LID; IC:mov-to-CR-LID; SC
+CR[LRR%], % in 0 - 1; IC:mov-to-CR-LRR+1; IC:mov-to-CR-LRR+1; impliedF
+CR[PMV]; IC:mov-to-CR-PMV; IC:mov-to-CR-PMV; impliedF
+CR[PTA]; IC:mov-to-CR-PTA; IC:mov-to-CR-PTA; impliedF
+CR[TPR]; IC:mov-to-CR-TPR; IC:mov-to-CR-TPR; impliedF
+CR%, % in 3-7, 10-15, 18, 26-63, 75-79, 82-127; IC:none; IC:none; none
+DBR#; IC:mov-to-IND-DBR+3; IC:mov-to-IND-DBR+3; impliedF
+DTC; ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d; ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d; none
+DTC; ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d, itc.i, itc.d, itr.i, itr.d; itc.i, itc.d, itr.i, itr.d; impliedF
+DTC_LIMIT*; ptc.g, ptc.ga; ptc.g, ptc.ga; impliedF
+DTR; itr.d; itr.d; impliedF
+DTR; itr.d; ptr.d; impliedF
+DTR; ptr.d; ptr.d; none
+FR%, % in 0 - 1; IC:none; IC:none; none
+FR%, % in 2 - 127; IC:fr-writers+1, IC:ldf-c+1, IC:ldfp-c+1; IC:fr-writers+1, IC:ldf-c+1, IC:ldfp-c+1; impliedF
+GR0; IC:none; IC:none; none
+GR%, % in 1 - 127; IC:ld-c+1, IC:gr-writers+1; IC:ld-c+1, IC:gr-writers+1; impliedF
+IBR#; IC:mov-to-IND-IBR+3; IC:mov-to-IND-IBR+3; impliedF
+InService*; IC:mov-to-CR-EOI, IC:mov-from-CR-IVR; IC:mov-to-CR-EOI, IC:mov-from-CR-IVR; SC
+IP; IC:all; IC:all; none
+ITC; ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d; ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d; none
+ITC; ptc.e, ptc.g, ptc.ga, ptc.l, ptr.i, ptr.d, itc.i, itc.d, itr.i, itr.d; itc.i, itc.d, itr.i, itr.d; impliedF
+ITR; itr.i; itr.i, ptr.i; impliedF
+ITR; ptr.i; ptr.i; none
+memory; IC:mem-writers; IC:mem-writers; none
+MSR#; IC:mov-to-IND-MSR+5; IC:mov-to-IND-MSR+5; SC
+PKR#; IC:mov-to-IND-PKR+3; IC:mov-to-IND-PKR+4; none
+PKR#; IC:mov-to-IND-PKR+3; IC:mov-to-IND-PKR+3; impliedF
+PMC#; IC:mov-to-IND-PMC+3; IC:mov-to-IND-PMC+3; impliedF
+PMD#; IC:mov-to-IND-PMD+3; IC:mov-to-IND-PMD+3; impliedF
+PR0; IC:pr-writers+1; IC:pr-writers+1; none
+PR%, % in 1 - 62; IC:pr-and-writers+1; IC:pr-and-writers+1; none
+PR%, % in 1 - 62; IC:pr-or-writers+1; IC:pr-or-writers+1; none
+PR%, % in 1 - 62; IC:pr-unc-writers-fp+1, IC:pr-unc-writers-int+1, IC:pr-norm-writers-fp+1, IC:pr-norm-writers-int+1, IC:pr-and-writers+1, IC:mov-to-PR+7; IC:pr-unc-writers-fp+1, IC:pr-unc-writers-int+1, IC:pr-norm-writers-fp+1, IC:pr-norm-writers-int+1, IC:pr-or-writers+1, IC:mov-to-PR+7; impliedF
+PR63; IC:pr-and-writers+1; IC:pr-and-writers+1; none
+PR63; IC:pr-or-writers+1; IC:pr-or-writers+1; none
+PR63; IC:mod-sched-brs, IC:pr-unc-writers-fp+1, IC:pr-unc-writers-int+1, IC:pr-norm-writers-fp+1, IC:pr-norm-writers-int+1, IC:pr-and-writers+1, IC:mov-to-PR+7; IC:mod-sched-brs, IC:pr-unc-writers-fp+1, IC:pr-unc-writers-int+1, IC:pr-norm-writers-fp+1, IC:pr-norm-writers-int+1, IC:pr-or-writers+1, IC:mov-to-PR+7; impliedF
+PSR.ac; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+PSR.be; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+PSR.bn; bsw, rfi; bsw, rfi; impliedF
+PSR.cpl; epc, br.ret, rfi; epc, br.ret, rfi; impliedF
+PSR.da; rfi; rfi; impliedF
+PSR.db; IC:mov-to-PSR-l, rfi; IC:mov-to-PSR-l, rfi; impliedF
+PSR.dd; rfi; rfi; impliedF
+PSR.dfh; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+PSR.dfl; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+PSR.di; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+PSR.dt; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+PSR.ed; rfi; rfi; impliedF
+PSR.i; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+PSR.ia; rfi; rfi; impliedF
+PSR.ic; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+PSR.id; rfi; rfi; impliedF
+PSR.is; br.ia, rfi; br.ia, rfi; impliedF
+PSR.it; rfi; rfi; impliedF
+PSR.lp; IC:mov-to-PSR-l, rfi; IC:mov-to-PSR-l, rfi; impliedF
+PSR.mc; rfi; rfi; impliedF
+PSR.mfh; IC:fr-writers+9; IC:fr-writers+9; none
+PSR.mfh; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:fr-writers+9, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+PSR.mfl; IC:fr-writers+9; IC:fr-writers+9; none
+PSR.mfl; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:fr-writers+9, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+PSR.pk; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+PSR.pp; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+PSR.ri; rfi; rfi; impliedF
+PSR.rt; IC:mov-to-PSR-l, rfi; IC:mov-to-PSR-l, rfi; impliedF
+PSR.si; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+PSR.sp; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+PSR.ss; rfi; rfi; impliedF
+PSR.tb; IC:mov-to-PSR-l, rfi; IC:mov-to-PSR-l, rfi; impliedF
+PSR.up; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; IC:user-mask-writers-partial+7, IC:mov-to-PSR-um, IC:sys-mask-writers-partial+7, IC:mov-to-PSR-l, rfi; impliedF
+RR#; IC:mov-to-IND-RR+6; IC:mov-to-IND-RR+6; impliedF
+RSE; IC:rse-writers+14; IC:rse-writers+14; impliedF
diff --git a/opcodes/m10200-dis.c b/opcodes/m10200-dis.c
index 022c7e3410b..01d54627b14 100644
--- a/opcodes/m10200-dis.c
+++ b/opcodes/m10200-dis.c
@@ -18,7 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/mn10200.h"
#include "dis-asm.h"
#include "opintl.h"
diff --git a/opcodes/m10200-opc.c b/opcodes/m10200-opc.c
index 2f70b9081ae..6d97137dc69 100644
--- a/opcodes/m10200-opc.c
+++ b/opcodes/m10200-opc.c
@@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/mn10200.h"
diff --git a/opcodes/m10300-dis.c b/opcodes/m10300-dis.c
index 7d7f74c947f..7dc899f0992 100644
--- a/opcodes/m10300-dis.c
+++ b/opcodes/m10300-dis.c
@@ -1,5 +1,5 @@
/* Disassemble MN10300 instructions.
- Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1998, 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
@@ -18,7 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/mn10300.h"
#include "dis-asm.h"
#include "opintl.h"
@@ -26,6 +26,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
static void disassemble PARAMS ((bfd_vma, struct disassemble_info *,
unsigned long insn, unsigned int));
+#define HAVE_AM33 (info->mach == AM33)
+#define HAVE_AM30 (info->mach == AM30)
+
int
print_insn_mn10300 (memaddr, info)
bfd_vma memaddr;
@@ -250,7 +253,8 @@ disassemble (memaddr, info, insn, size)
if ((op->mask & insn) == op->opcode
&& size == (unsigned int) mysize
&& (op->machine == 0
- || op->machine == info->mach))
+ || (op->machine == AM33 && HAVE_AM33)
+ || (op->machine == AM30 && HAVE_AM30)))
{
const unsigned char *opindex_ptr;
unsigned int nocomma;
@@ -480,6 +484,8 @@ disassemble (memaddr, info, insn, size)
temp = extension >> operand->shift;
temp &= ((1 << (32 - operand->bits)) - 1);
value |= temp;
+ value = ((value ^ (((unsigned long)1) << 31))
+ - (((unsigned long)1) << 31));
}
else if ((operand->flags & MN10300_OPERAND_24BIT) != 0)
{
@@ -490,7 +496,7 @@ disassemble (memaddr, info, insn, size)
temp &= ((1 << (24 - operand->bits)) - 1);
value |= temp;
if ((operand->flags & MN10300_OPERAND_SIGNED) != 0)
- value = ((value & 0xffffff) ^ (~0x7fffff)) + 0x800000;
+ value = ((value & 0xffffff) ^ 0x800000) - 0x800000;
}
else if ((operand->flags & MN10300_OPERAND_EXTENDED) != 0)
{
@@ -504,11 +510,10 @@ disassemble (memaddr, info, insn, size)
}
if ((operand->flags & MN10300_OPERAND_SIGNED) != 0
- /* These are properly extended by the code above. */
- && ((operand->flags & MN10300_OPERAND_24BIT) == 0)
- )
- value = ((long)(value << (32 - operand->bits))
- >> (32 - operand->bits));
+ /* These are properly extended by the code above. */
+ && ((operand->flags & MN10300_OPERAND_24BIT) == 0))
+ value = ((value ^ (((unsigned long)1) << (operand->bits - 1)))
+ - (((unsigned long)1) << (operand->bits - 1)));
if (!nocomma
&& (!paren
@@ -521,14 +526,14 @@ disassemble (memaddr, info, insn, size)
{
value = ((insn >> (operand->shift + extra_shift))
& ((1 << operand->bits) - 1));
- (*info->fprintf_func) (info->stream, "d%d", value);
+ (*info->fprintf_func) (info->stream, "d%d", (int)value);
}
else if ((operand->flags & MN10300_OPERAND_AREG) != 0)
{
value = ((insn >> (operand->shift + extra_shift))
& ((1 << operand->bits) - 1));
- (*info->fprintf_func) (info->stream, "a%d", value);
+ (*info->fprintf_func) (info->stream, "a%d", (int)value);
}
else if ((operand->flags & MN10300_OPERAND_SP) != 0)
@@ -545,11 +550,11 @@ disassemble (memaddr, info, insn, size)
value = ((insn >> (operand->shift + extra_shift))
& ((1 << operand->bits) - 1));
if (value < 8)
- (*info->fprintf_func) (info->stream, "r%d", value);
+ (*info->fprintf_func) (info->stream, "r%d", (int)value);
else if (value < 12)
- (*info->fprintf_func) (info->stream, "a%d", value - 8);
+ (*info->fprintf_func) (info->stream, "a%d", (int)value - 8);
else
- (*info->fprintf_func) (info->stream, "d%d", value - 12);
+ (*info->fprintf_func) (info->stream, "d%d", (int)value - 12);
}
else if ((operand->flags & MN10300_OPERAND_XRREG) != 0)
@@ -559,7 +564,7 @@ disassemble (memaddr, info, insn, size)
if (value == 0)
(*info->fprintf_func) (info->stream, "sp", value);
else
- (*info->fprintf_func) (info->stream, "xr%d", value);
+ (*info->fprintf_func) (info->stream, "xr%d", (int)value);
}
else if ((operand->flags & MN10300_OPERAND_USP) != 0)
@@ -666,7 +671,7 @@ disassemble (memaddr, info, insn, size)
}
else
- (*info->fprintf_func) (info->stream, "%d", value);
+ (*info->fprintf_func) (info->stream, "%ld", (long)value);
}
/* All done. */
break;
diff --git a/opcodes/m10300-opc.c b/opcodes/m10300-opc.c
index c779dbc1933..2b0b98dc622 100644
--- a/opcodes/m10300-opc.c
+++ b/opcodes/m10300-opc.c
@@ -17,7 +17,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* This file is formatted at > 80 columns. Attempting to read it on a
screeen with less than 80 columns will be difficult. */
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/mn10300.h"
diff --git a/opcodes/m32r-desc.h b/opcodes/m32r-desc.h
index 7d428072e2a..32ea2f7e0ce 100644
--- a/opcodes/m32r-desc.h
+++ b/opcodes/m32r-desc.h
@@ -44,18 +44,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#define CGEN_INT_INSN_P 1
-/* FIXME: Need to compute CGEN_MAX_SYNTAX_BYTES. */
+/* Maximum number of syntax bytes in an instruction. */
+#define CGEN_ACTUAL_MAX_SYNTAX_BYTES 15
/* CGEN_MNEMONIC_OPERANDS is defined if mnemonics have operands.
e.g. In "b,a foo" the ",a" is an operand. If mnemonics have operands
we can't hash on everything up to the space. */
#define CGEN_MNEMONIC_OPERANDS
-/* Maximum number of operands any insn or macro-insn has. */
-#define CGEN_MAX_INSN_OPERANDS 16
-
/* Maximum number of fields in an instruction. */
-#define CGEN_MAX_IFMT_OPERANDS 7
+#define CGEN_ACTUAL_MAX_IFMT_OPERANDS 7
/* Enums. */
diff --git a/opcodes/m68k-dis.c b/opcodes/m68k-dis.c
index 23d3a8217c4..7f4b1104744 100644
--- a/opcodes/m68k-dis.c
+++ b/opcodes/m68k-dis.c
@@ -1,5 +1,5 @@
/* Print Motorola 68k instructions.
- Copyright 1986, 87, 89, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright 1986, 87, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
This file is free software; you can redistribute it and/or modify
@@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+#include "sysdep.h"
#include "dis-asm.h"
#include "floatformat.h"
#include <libiberty.h>
@@ -150,16 +151,17 @@ fetch_data (info, addr)
/* This function is used to print to the bit-bucket. */
static int
#ifdef __STDC__
-dummy_printer (FILE * file, const char * format, ...)
+dummy_printer (FILE * file ATTRIBUTE_UNUSED,
+ const char * format ATTRIBUTE_UNUSED, ...)
#else
-dummy_printer (file) FILE *file;
+dummy_printer (file) FILE *file ATTRIBUTE_UNUSED;
#endif
{ return 0; }
static void
dummy_print_address (vma, info)
- bfd_vma vma;
- struct disassemble_info *info;
+ bfd_vma vma ATTRIBUTE_UNUSED;
+ struct disassemble_info *info ATTRIBUTE_UNUSED;
{
}
diff --git a/opcodes/m68k-opc.c b/opcodes/m68k-opc.c
index 847ad7c7f8f..49ce5de704b 100644
--- a/opcodes/m68k-opc.c
+++ b/opcodes/m68k-opc.c
@@ -19,7 +19,7 @@ along with this file; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/m68k.h"
#define one(x) ((unsigned int) (x) << 16)
diff --git a/opcodes/m88k-dis.c b/opcodes/m88k-dis.c
index 8af6b87929b..ef3f32a284b 100644
--- a/opcodes/m88k-dis.c
+++ b/opcodes/m88k-dis.c
@@ -20,6 +20,7 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+#include "sysdep.h"
#include "dis-asm.h"
#include "opcode/m88k.h"
#include "opintl.h"
diff --git a/opcodes/mcore-dis.c b/opcodes/mcore-dis.c
index 096cec9aec0..6df124f958d 100644
--- a/opcodes/mcore-dis.c
+++ b/opcodes/mcore-dis.c
@@ -15,6 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+#include "sysdep.h"
#include <stdio.h>
#define STATIC_TABLE
#define DEFINE_TABLE
@@ -168,7 +169,7 @@ print_insn_mcore (memaddr, info)
if (strcmp (op->name, "bsr") == 0)
{
- /* for bsr, we'll try to get a symbol for the target */
+ /* For bsr, we'll try to get a symbol for the target. */
val = memaddr + 2 + (val << 1);
if (info->print_address_func && val != 0)
@@ -267,12 +268,12 @@ print_insn_mcore (memaddr, info)
break;
default:
- /* if the disassembler lags the instruction set */
+ /* If the disassembler lags the instruction set. */
fprintf (stream, "\tundecoded operands, inst is 0x%04x", inst);
break;
}
}
- /* Say how many bytes we consumed? */
+ /* Say how many bytes we consumed. */
return 2;
}
diff --git a/opcodes/mips-dis.c b/opcodes/mips-dis.c
index 2e75266cef2..fa33821f32c 100644
--- a/opcodes/mips-dis.c
+++ b/opcodes/mips-dis.c
@@ -1,5 +1,6 @@
/* Print mips instructions for GDB, the GNU debugger, or for objdump.
- Copyright (c) 1989, 91-97, 1998 Free Software Foundation, Inc.
+ Copyright (c) 1989, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+ Free Software Foundation, Inc.
Contributed by Nobuyuki Hikichi(hikichi@sra.co.jp).
This file is part of GDB, GAS, and the GNU binutils.
@@ -18,7 +19,6 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-#include <ansidecl.h>
#include "sysdep.h"
#include "dis-asm.h"
#include "opcode/mips.h"
@@ -50,7 +50,7 @@ static int _print_insn_mips PARAMS ((bfd_vma, unsigned long int,
/* FIXME: This should be shared with gdb somehow. */
-#define REGISTER_NAMES \
+#define STD_REGISTER_NAMES \
{ "zero", "at", "v0", "v1", "a0", "a1", "a2", "a3", \
"t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", \
"s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", \
@@ -64,13 +64,17 @@ static int _print_insn_mips PARAMS ((bfd_vma, unsigned long int,
"epc", "prid"\
}
-static CONST char * CONST reg_names[] = REGISTER_NAMES;
+static CONST char * CONST std_reg_names[] = STD_REGISTER_NAMES;
/* The mips16 register names. */
static const char * const mips16_reg_names[] =
{
"s0", "s1", "v0", "v1", "a0", "a1", "a2", "a3"
};
+
+/* Scalar register names. set_mips_isa_type() decides which register name
+ table to use. */
+static CONST char * CONST *reg_names = NULL;
/* subroutine */
static void
@@ -133,7 +137,8 @@ print_insn_arg (d, l, pc, info)
case 'a':
(*info->print_address_func)
- (((pc & 0xF0000000) | (((l >> OP_SH_TARGET) & OP_MASK_TARGET) << 2)),
+ (((pc & ~ (bfd_vma) 0x0fffffff)
+ | (((l >> OP_SH_TARGET) & OP_MASK_TARGET) << 2)),
info);
break;
@@ -254,6 +259,9 @@ set_mips_isa_type (mach, isa, cputype)
int target_processor = 0;
int mips_isa = 0;
+ /* Use standard MIPS register names by default. */
+ reg_names = std_reg_names;
+
switch (mach)
{
case bfd_mach_mips3000:
diff --git a/opcodes/mips-opc.c b/opcodes/mips-opc.c
index 6cdd8330270..75926f62443 100644
--- a/opcodes/mips-opc.c
+++ b/opcodes/mips-opc.c
@@ -20,7 +20,7 @@ along with this file; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/mips.h"
/* Short hand so the lines aren't too long. */
@@ -155,9 +155,9 @@ const struct mips_opcode mips_builtin_opcodes[] = {
{"bc0t", "p", 0x41010000, 0xffff0000, CBD|RD_CC, I1 },
{"bc0tl", "p", 0x41030000, 0xffff0000, CBL|RD_CC, I2|T3 },
{"bc1t", "p", 0x45010000, 0xffff0000, CBD|RD_CC|FP_S, I1 },
-{"bc1t", "N,p", 0x45010000, 0xffe30000, CBD|RD_CC|FP_S, I4 },
+{"bc1t", "N,p", 0x45010000, 0xffe30000, CBD|RD_CC|FP_S, I4|M1 },
{"bc1tl", "p", 0x45030000, 0xffff0000, CBL|RD_CC|FP_S, I2|T3 },
-{"bc1tl", "N,p", 0x45030000, 0xffe30000, CBL|RD_CC|FP_S, I4 },
+{"bc1tl", "N,p", 0x45030000, 0xffe30000, CBL|RD_CC|FP_S, I4|M1 },
{"bc2t", "p", 0x49010000, 0xffff0000, CBD|RD_CC, I1 },
{"bc2tl", "p", 0x49030000, 0xffff0000, CBL|RD_CC, I2|T3 },
{"bc3t", "p", 0x4d010000, 0xffff0000, CBD|RD_CC, I1 },
@@ -222,99 +222,99 @@ const struct mips_opcode mips_builtin_opcodes[] = {
{"break", "c", 0x0000000d, 0xfc00ffff, TRAP, I1 },
{"break", "c,q", 0x0000000d, 0xfc00003f, TRAP, I1 },
{"c.f.d", "S,T", 0x46200030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.f.d", "M,S,T", 0x46200030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.f.d", "M,S,T", 0x46200030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.f.s", "S,T", 0x46000030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.f.s", "M,S,T", 0x46000030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.f.s", "M,S,T", 0x46000030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.f.ps", "S,T", 0x46c00030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.f.ps", "M,S,T", 0x46c00030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.un.d", "S,T", 0x46200031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.un.d", "M,S,T", 0x46200031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.un.d", "M,S,T", 0x46200031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.un.s", "S,T", 0x46000031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.un.s", "M,S,T", 0x46000031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.un.s", "M,S,T", 0x46000031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.un.ps", "S,T", 0x46c00031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.un.ps", "M,S,T", 0x46c00031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.eq.d", "S,T", 0x46200032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.eq.d", "M,S,T", 0x46200032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.eq.d", "M,S,T", 0x46200032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.eq.s", "S,T", 0x46000032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.eq.s", "M,S,T", 0x46000032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.eq.s", "M,S,T", 0x46000032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.eq.ps", "S,T", 0x46c00032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.eq.ps", "M,S,T", 0x46c00032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.ueq.d", "S,T", 0x46200033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.ueq.d", "M,S,T", 0x46200033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.ueq.d", "M,S,T", 0x46200033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.ueq.s", "S,T", 0x46000033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.ueq.s", "M,S,T", 0x46000033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.ueq.s", "M,S,T", 0x46000033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.ueq.ps","S,T", 0x46c00033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.ueq.ps","M,S,T", 0x46c00033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.lt.s", "S,T", 0x4600003c, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.lt.s", "M,S,T", 0x4600003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.lt.s", "M,S,T", 0x4600003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.olt.d", "S,T", 0x46200034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.olt.d", "M,S,T", 0x46200034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.olt.d", "M,S,T", 0x46200034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.olt.s", "S,T", 0x46000034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.olt.s", "M,S,T", 0x46000034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.olt.s", "M,S,T", 0x46000034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.olt.ps","S,T", 0x46c00034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.olt.ps","M,S,T", 0x46c00034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.ult.d", "S,T", 0x46200035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.ult.d", "M,S,T", 0x46200035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.ult.d", "M,S,T", 0x46200035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.ult.s", "S,T", 0x46000035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.ult.s", "M,S,T", 0x46000035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.ult.s", "M,S,T", 0x46000035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.ult.ps","S,T", 0x46c00035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.ult.ps","M,S,T", 0x46c00035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.le.s", "S,T", 0x4600003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.le.s", "M,S,T", 0x4600003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.le.s", "M,S,T", 0x4600003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.ole.d", "S,T", 0x46200036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.ole.d", "M,S,T", 0x46200036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.ole.d", "M,S,T", 0x46200036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.ole.s", "S,T", 0x46000036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.ole.s", "M,S,T", 0x46000036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.ole.s", "M,S,T", 0x46000036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.ole.ps","S,T", 0x46c00036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.ole.ps","M,S,T", 0x46c00036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.ule.d", "S,T", 0x46200037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.ule.d", "M,S,T", 0x46200037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.ule.d", "M,S,T", 0x46200037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.ule.s", "S,T", 0x46000037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.ule.s", "M,S,T", 0x46000037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.ule.s", "M,S,T", 0x46000037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.ule.ps","S,T", 0x46c00037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.ule.ps","M,S,T", 0x46c00037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.sf.d", "S,T", 0x46200038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.sf.d", "M,S,T", 0x46200038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.sf.d", "M,S,T", 0x46200038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.sf.s", "S,T", 0x46000038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.sf.s", "M,S,T", 0x46000038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.sf.s", "M,S,T", 0x46000038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.sf.ps", "S,T", 0x46c00038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.sf.ps", "M,S,T", 0x46c00038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.ngle.d","S,T", 0x46200039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.ngle.d","M,S,T", 0x46200039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.ngle.d","M,S,T", 0x46200039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.ngle.s","S,T", 0x46000039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.ngle.s","M,S,T", 0x46000039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.ngle.s","M,S,T", 0x46000039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.ngle.ps","S,T", 0x46c00039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.ngle.ps","M,S,T", 0x46c00039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.seq.d", "S,T", 0x4620003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.seq.d", "M,S,T", 0x4620003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.seq.d", "M,S,T", 0x4620003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.seq.s", "S,T", 0x4600003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.seq.s", "M,S,T", 0x4600003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.seq.s", "M,S,T", 0x4600003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.seq.ps","S,T", 0x46c0003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.seq.ps","M,S,T", 0x46c0003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.ngl.d", "S,T", 0x4620003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.ngl.d", "M,S,T", 0x4620003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.ngl.d", "M,S,T", 0x4620003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.ngl.s", "S,T", 0x4600003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.ngl.s", "M,S,T", 0x4600003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.ngl.s", "M,S,T", 0x4600003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.ngl.ps","S,T", 0x46c0003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.ngl.ps","M,S,T", 0x46c0003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.lt.d", "S,T", 0x4620003c, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.lt.d", "M,S,T", 0x4620003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.lt.d", "M,S,T", 0x4620003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.lt.ps", "S,T", 0x46c0003c, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.lt.ps", "M,S,T", 0x46c0003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.nge.d", "S,T", 0x4620003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.nge.d", "M,S,T", 0x4620003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.nge.d", "M,S,T", 0x4620003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.nge.s", "S,T", 0x4600003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.nge.s", "M,S,T", 0x4600003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.nge.s", "M,S,T", 0x4600003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.nge.ps","S,T", 0x46c0003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.nge.ps","M,S,T", 0x46c0003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.le.d", "S,T", 0x4620003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.le.d", "M,S,T", 0x4620003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.le.d", "M,S,T", 0x4620003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.le.ps", "S,T", 0x46c0003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.le.ps", "M,S,T", 0x46c0003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.ngt.d", "S,T", 0x4620003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
-{"c.ngt.d", "M,S,T", 0x4620003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
+{"c.ngt.d", "M,S,T", 0x4620003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|M1 },
{"c.ngt.s", "S,T", 0x4600003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
-{"c.ngt.s", "M,S,T", 0x4600003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
+{"c.ngt.s", "M,S,T", 0x4600003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|M1 },
{"c.ngt.ps","S,T", 0x46c0003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"c.ngt.ps","M,S,T", 0x46c0003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
{"cache", "k,o(b)", 0xbc000000, 0xfc000000, RD_b, I3|T3|M1 },
@@ -539,8 +539,8 @@ const struct mips_opcode mips_builtin_opcodes[] = {
{"maddu", "d,s,t", 0x70000001, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d|IS_M, G1},
{"madd16", "s,t", 0x00000028, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|RD_HI|RD_LO, V1 },
{"mfc0", "t,G", 0x40000000, 0xffe007ff, LCD|WR_t|RD_C0, I1 },
-{"mfc1", "t,S", 0x44000000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, I1 },
-{"mfc1", "t,G", 0x44000000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, I1 },
+{"mfc1", "t,S", 0x44000000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, I1},
+{"mfc1", "t,G", 0x44000000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, I1},
{"mfc2", "t,G", 0x48000000, 0xffe007ff, LCD|WR_t|RD_C2, I1 },
{"mfc3", "t,G", 0x4c000000, 0xffe007ff, LCD|WR_t|RD_C3, I1 },
{"mfhi", "d", 0x00000010, 0xffff07ff, WR_d|RD_HI, I1 },
diff --git a/opcodes/mips16-opc.c b/opcodes/mips16-opc.c
index dad2dbb2e5a..ab2d7c0795a 100644
--- a/opcodes/mips16-opc.c
+++ b/opcodes/mips16-opc.c
@@ -20,7 +20,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/mips.h"
/* This is the opcodes table for the mips16 processor. The format of
diff --git a/opcodes/opintl.h b/opcodes/opintl.h
index a5901604081..492fc1a6c89 100644
--- a/opcodes/opintl.h
+++ b/opcodes/opintl.h
@@ -12,6 +12,19 @@
#ifdef ENABLE_NLS
# include <libintl.h>
+/* Note the use of dgetext() and PACKAGE here, rather than gettext().
+
+ This is because the code in this directory is used to build a library which
+ will be linked with code in other directories to form programs. We want to
+ maintain a seperate translation file for this directory however, rather
+ than being forced to merge it with that of any program linked to
+ libopcodes. This is a library, so it cannot depend on the catalog
+ currently loaded.
+
+ In order to do this, we have to make sure that when we extract messages we
+ use the OPCODES domain rather than the domain of the program that included
+ the opcodes library, (eg OBJDUMP). Hence we use dgettext (PACKAGE, String)
+ and define PACKAGE to be 'opcodes'. (See the code in configure). */
# define _(String) dgettext (PACKAGE, String)
# ifdef gettext_noop
# define N_(String) gettext_noop (String)
@@ -19,12 +32,11 @@
# define N_(String) (String)
# endif
#else
-/* Stubs that do something close enough. */
-# define textdomain(String) (String)
-# define gettext(String) (String)
-# define dgettext(Domain,Message) (Message)
-# define dcgettext(Domain,Message,Type) (Message)
-# define bindtextdomain(Domain,Directory) (Domain)
+# define gettext(Msgid) (Msgid)
+# define dgettext(Domainname, Msgid) (Msgid)
+# define dcgettext(Domainname, Msgid, Category) (Msgid)
+# define textdomain(Domainname) while (0) /* nothing */
+# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */
# define _(String) (String)
# define N_(String) (String)
#endif
diff --git a/opcodes/pj-dis.c b/opcodes/pj-dis.c
index c098295ba7d..f93bbee362a 100644
--- a/opcodes/pj-dis.c
+++ b/opcodes/pj-dis.c
@@ -18,6 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
+#include "sysdep.h"
#include "opcode/pj.h"
#include "dis-asm.h"
diff --git a/opcodes/pj-opc.c b/opcodes/pj-opc.c
index 9f7e38e973a..0eabc647f6c 100644
--- a/opcodes/pj-opc.c
+++ b/opcodes/pj-opc.c
@@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/pj.h"
const pj_opc_info_t pj_opc_info[512] =
diff --git a/opcodes/po/POTFILES.in b/opcodes/po/POTFILES.in
index ec23c5aa429..361d98bae3e 100644
--- a/opcodes/po/POTFILES.in
+++ b/opcodes/po/POTFILES.in
@@ -5,6 +5,7 @@ arc-dis.c
arc-opc.c
arm-dis.c
arm-opc.h
+avr-dis.c
cgen-asm.c
cgen-dis.c
cgen-opc.c
@@ -12,8 +13,8 @@ d10v-dis.c
d10v-opc.c
d30v-dis.c
d30v-opc.c
-dis-buf.c
disassemble.c
+dis-buf.c
fr30-asm.c
fr30-desc.c
fr30-desc.h
@@ -29,6 +30,18 @@ i370-dis.c
i370-opc.c
i386-dis.c
i960-dis.c
+ia64-asmtab.c
+ia64-asmtab.h
+ia64-dis.c
+ia64-gen.c
+ia64-opc-a.c
+ia64-opc-b.c
+ia64-opc.c
+ia64-opc-d.c
+ia64-opc-f.c
+ia64-opc.h
+ia64-opc-i.c
+ia64-opc-m.c
m10200-dis.c
m10200-opc.c
m10300-dis.c
@@ -46,9 +59,9 @@ m68k-opc.c
m88k-dis.c
mcore-dis.c
mcore-opc.h
+mips16-opc.c
mips-dis.c
mips-opc.c
-mips16-opc.c
ns32k-dis.c
pj-dis.c
pj-opc.c
@@ -60,6 +73,8 @@ sparc-dis.c
sparc-opc.c
sysdep.h
tic30-dis.c
+tic54x-dis.c
+tic54x-opc.c
tic80-dis.c
tic80-opc.c
v850-dis.c
@@ -68,5 +83,5 @@ vax-dis.c
w65-dis.c
w65-opc.h
z8k-dis.c
-z8k-opc.h
z8kgen.c
+z8k-opc.h
diff --git a/opcodes/po/opcodes.pot b/opcodes/po/opcodes.pot
index 211d0d15d22..8bc5cee43a8 100644
--- a/opcodes/po/opcodes.pot
+++ b/opcodes/po/opcodes.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-04-04 23:21+0930\n"
+"POT-Creation-Date: 2000-05-30 11:33-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,7 +22,7 @@ msgstr ""
msgid "jump hint unaligned"
msgstr ""
-#: arc-dis.c:231
+#: arc-dis.c:232
msgid "*unknown*"
msgstr ""
@@ -48,21 +48,21 @@ msgstr ""
msgid "branch address not on 4 byte boundary"
msgstr ""
-#: arm-dis.c:470
+#: arm-dis.c:476
msgid "<illegal precision>"
msgstr ""
-#: arm-dis.c:882
+#: arm-dis.c:888
#, c-format
msgid "Unrecognised register name set: %s\n"
msgstr ""
-#: arm-dis.c:889
+#: arm-dis.c:895
#, c-format
msgid "Unrecognised disassembler option: %s\n"
msgstr ""
-#: arm-dis.c:1053
+#: arm-dis.c:1059
msgid ""
"\n"
"The following ARM specific disassembler options are supported for use with\n"
@@ -83,7 +83,7 @@ msgstr ""
msgid "operand out of range (%lu not between %lu and %lu)"
msgstr ""
-#: d30v-dis.c:305
+#: d30v-dis.c:306
#, c-format
msgid "<unknown register %d>"
msgstr ""
@@ -171,23 +171,23 @@ msgstr ""
msgid "Unrecognized field %d while setting vma operand.\n"
msgstr ""
-#: h8300-dis.c:404
+#: h8300-dis.c:405
#, c-format
msgid "Hmmmm %x"
msgstr ""
-#: h8300-dis.c:416
+#: h8300-dis.c:417
#, c-format
msgid "Don't understand %x \n"
msgstr ""
-#: h8500-dis.c:139
+#: h8500-dis.c:140
#, c-format
msgid "can't cope with insert %d\n"
msgstr ""
#. Couldn't understand anything
-#: h8500-dis.c:344
+#: h8500-dis.c:345
#, c-format
msgid "%02x\t\t*unknown*"
msgstr ""
@@ -202,27 +202,27 @@ msgstr ""
msgid "unknown\t0x%04lx"
msgstr ""
-#: m10300-dis.c:680
+#: m10300-dis.c:685
#, c-format
msgid "unknown\t0x%04x"
msgstr ""
-#: m68k-dis.c:410
+#: m68k-dis.c:412
#, c-format
msgid "<internal error in opcode table: %s %s>\n"
msgstr ""
-#: m68k-dis.c:988
+#: m68k-dis.c:990
#, c-format
msgid "<function code %d>"
msgstr ""
-#: m88k-dis.c:273
+#: m88k-dis.c:274
#, c-format
msgid "# <dis error: %08x>"
msgstr ""
-#: mips-dis.c:237
+#: mips-dis.c:242
#, c-format
msgid "# internal error, undefined modifier(%c)"
msgstr ""
@@ -237,50 +237,50 @@ msgstr ""
msgid "$<undefined>"
msgstr ""
-#: ppc-opc.c:586 ppc-opc.c:617
+#: ppc-opc.c:619 ppc-opc.c:650
msgid "invalid conditional option"
msgstr ""
-#: ppc-opc.c:619
+#: ppc-opc.c:652
msgid "attempt to set y bit when using + or - modifier"
msgstr ""
-#: ppc-opc.c:674
+#: ppc-opc.c:707
msgid "ignoring least significant bits in branch offset"
msgstr ""
-#: ppc-opc.c:709 ppc-opc.c:746
+#: ppc-opc.c:742 ppc-opc.c:779
msgid "illegal bitmask"
msgstr ""
-#: ppc-opc.c:815
+#: ppc-opc.c:848
msgid "value out of range"
msgstr ""
-#: ppc-opc.c:889
+#: ppc-opc.c:922
msgid "index register in load range"
msgstr ""
-#: ppc-opc.c:904
+#: ppc-opc.c:937
msgid "invalid register operand when updating"
msgstr ""
#. Mark as non-valid instruction
-#: sparc-dis.c:744
+#: sparc-dis.c:743
msgid "unknown"
msgstr ""
-#: sparc-dis.c:816
+#: sparc-dis.c:815
#, c-format
msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
msgstr ""
-#: sparc-dis.c:827
+#: sparc-dis.c:826
#, c-format
msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
msgstr ""
-#: sparc-dis.c:876
+#: sparc-dis.c:875
#, c-format
msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"
msgstr ""
diff --git a/opcodes/ppc-dis.c b/opcodes/ppc-dis.c
index 70716ea2471..47b79ca7648 100644
--- a/opcodes/ppc-dis.c
+++ b/opcodes/ppc-dis.c
@@ -19,7 +19,6 @@ along with this file; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
#include "sysdep.h"
#include "dis-asm.h"
#include "opcode/ppc.h"
@@ -34,7 +33,8 @@ static int print_insn_powerpc PARAMS ((bfd_vma, struct disassemble_info *,
int bigendian, int dialect));
/* Print a big endian PowerPC instruction. For convenience, also
- disassemble instructions supported by the Motorola PowerPC 601. */
+ disassemble instructions supported by the Motorola PowerPC 601
+ and the Altivec vector unit. */
int
print_insn_big_powerpc (memaddr, info)
@@ -42,11 +42,13 @@ print_insn_big_powerpc (memaddr, info)
struct disassemble_info *info;
{
return print_insn_powerpc (memaddr, info, 1,
- PPC_OPCODE_PPC | PPC_OPCODE_601);
+ PPC_OPCODE_PPC | PPC_OPCODE_601 |
+ PPC_OPCODE_ALTIVEC);
}
/* Print a little endian PowerPC instruction. For convenience, also
- disassemble instructions supported by the Motorola PowerPC 601. */
+ disassemble instructions supported by the Motorola PowerPC 601
+ and the Altivec vector unit. */
int
print_insn_little_powerpc (memaddr, info)
@@ -54,7 +56,8 @@ print_insn_little_powerpc (memaddr, info)
struct disassemble_info *info;
{
return print_insn_powerpc (memaddr, info, 0,
- PPC_OPCODE_PPC | PPC_OPCODE_601);
+ PPC_OPCODE_PPC | PPC_OPCODE_601 |
+ PPC_OPCODE_ALTIVEC);
}
/* Print a POWER (RS/6000) instruction. */
@@ -182,6 +185,8 @@ print_insn_powerpc (memaddr, info, bigendian, dialect)
(*info->fprintf_func) (info->stream, "r%ld", value);
else if ((operand->flags & PPC_OPERAND_FPR) != 0)
(*info->fprintf_func) (info->stream, "f%ld", value);
+ else if ((operand->flags & PPC_OPERAND_VR) != 0)
+ (*info->fprintf_func) (info->stream, "v%ld", value);
else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0)
(*info->print_address_func) (memaddr + value, info);
else if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0)
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index 6e44e2dc9bd..62f7bd0e36c 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -20,7 +20,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/ppc.h"
#include "opintl.h"
@@ -396,6 +396,39 @@ const struct powerpc_operand powerpc_operands[] =
/* The UI field in a D form instruction. */
#define UI U + 1
{ 16, 0, 0, 0, 0 },
+
+ /* The VA field in a VA, VX or VXR form instruction. */
+#define VA UI + 1
+#define VA_MASK (0x1f << 16)
+ {5, 16, 0, 0, PPC_OPERAND_VR},
+
+ /* The VB field in a VA, VX or VXR form instruction. */
+#define VB VA + 1
+#define VB_MASK (0x1f << 11)
+ {5, 11, 0, 0, PPC_OPERAND_VR},
+
+ /* The VC field in a VA form instruction. */
+#define VC VB + 1
+#define VC_MASK (0x1f << 6)
+ {5, 6, 0, 0, PPC_OPERAND_VR},
+
+ /* The VD or VS field in a VA, VX, VXR or X form instruction. */
+#define VD VC + 1
+#define VS VD
+#define VD_MASK (0x1f << 21)
+ {5, 21, 0, 0, PPC_OPERAND_VR},
+
+ /* The SIMM field in a VX form instruction. */
+#define SIMM VD + 1
+ { 5, 16, 0, 0, PPC_OPERAND_SIGNED},
+
+ /* The UIMM field in a VX form instruction. */
+#define UIMM SIMM + 1
+ { 5, 16, 0, 0, 0 },
+
+ /* The SHB field in a VA form instruction. */
+#define SHB UIMM + 1
+ { 4, 6, 0, 0, 0 },
};
/* The functions used to insert and extract complicated operands. */
@@ -1105,6 +1138,24 @@ extract_tbr (insn, invalid)
#define SC(op, sa, lk) (OP (op) | ((((unsigned long)(sa)) & 1) << 1) | ((lk) & 1))
#define SC_MASK (OP_MASK | (((unsigned long)0x3ff) << 16) | (((unsigned long)1) << 1) | 1)
+/* An VX form instruction. */
+#define VX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
+
+/* The mask for an VX form instruction. */
+#define VX_MASK VX(0x3f, 0x7ff)
+
+/* An VA form instruction. */
+#define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x07f))
+
+/* The mask for an VA form instruction. */
+#define VXA_MASK VXA(0x3f, 0x7f)
+
+/* An VXR form instruction. */
+#define VXR(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | (((unsigned long)(xop)) & 0x3ff))
+
+/* The mask for a VXR form instruction. */
+#define VXR_MASK VXR(0x3f, 0x3ff, 1)
+
/* An X form instruction. */
#define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
@@ -1272,6 +1323,7 @@ extract_tbr (insn, invalid)
#define PPC403 PPC
#define PPC750 PPC
#define PPC860 PPC
+#define PPCVEC PPC_OPCODE_ALTIVEC | PPC_OPCODE_ANY
#define POWER PPC_OPCODE_POWER | PPC_OPCODE_ANY
#define POWER2 PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_ANY
#define PPCPWR2 PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_ANY
@@ -1348,6 +1400,164 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "tnei", OPTO(3,TONE), OPTO_MASK, PWRCOM, { RA, SI } },
{ "twi", OP(3), OP_MASK, PPCCOM, { TO, RA, SI } },
{ "ti", OP(3), OP_MASK, PWRCOM, { TO, RA, SI } },
+
+{ "mfvscr", VX(4, 1540), VX_MASK, PPCVEC, { VD } },
+{ "mtvscr", VX(4, 1604), VX_MASK, PPCVEC, { VD } },
+{ "vaddcuw", VX(4, 384), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vaddfp", VX(4, 10), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vaddsbs", VX(4, 768), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vaddshs", VX(4, 832), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vaddsws", VX(4, 896), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vaddubm", VX(4, 0), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vaddubs", VX(4, 512), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vadduhm", VX(4, 64), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vadduhs", VX(4, 576), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vadduwm", VX(4, 128), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vadduws", VX(4, 640), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vand", VX(4, 1028), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vandc", VX(4, 1092), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vavgsb", VX(4, 1282), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vavgsh", VX(4, 1346), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vavgsw", VX(4, 1410), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vavgub", VX(4, 1026), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vavguh", VX(4, 1090), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vavguw", VX(4, 1154), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcfsx", VX(4, 842), VX_MASK, PPCVEC, { VD, VB, UIMM } },
+{ "vcfux", VX(4, 778), VX_MASK, PPCVEC, { VD, VB, UIMM } },
+{ "vcmpbfp", VXR(4, 966, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpbfp.", VXR(4, 966, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpeqfp", VXR(4, 198, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpeqfp.", VXR(4, 198, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpequb", VXR(4, 6, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpequb.", VXR(4, 6, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpequh", VXR(4, 70, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpequh.", VXR(4, 70, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpequw", VXR(4, 134, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpequw.", VXR(4, 134, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgefp", VXR(4, 454, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgefp.", VXR(4, 454, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtfp", VXR(4, 710, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtfp.", VXR(4, 710, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtsb", VXR(4, 774, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtsb.", VXR(4, 774, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtsh", VXR(4, 838, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtsh.", VXR(4, 838, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtsw", VXR(4, 902, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtsw.", VXR(4, 902, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtub", VXR(4, 518, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtub.", VXR(4, 518, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtuh", VXR(4, 582, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtuh.", VXR(4, 582, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtuw", VXR(4, 646, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtuw.", VXR(4, 646, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vctsxs", VX(4, 970), VX_MASK, PPCVEC, { VD, VB, UIMM } },
+{ "vctuxs", VX(4, 906), VX_MASK, PPCVEC, { VD, VB, UIMM } },
+{ "vexptefp", VX(4, 394), VX_MASK, PPCVEC, { VD, VB } },
+{ "vlogefp", VX(4, 458), VX_MASK, PPCVEC, { VD, VB } },
+{ "vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmaxfp", VX(4, 1034), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmaxsb", VX(4, 258), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmaxsh", VX(4, 322), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmaxsw", VX(4, 386), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmaxub", VX(4, 2), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmaxuh", VX(4, 66), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmaxuw", VX(4, 130), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmhaddshs", VXA(4, 32), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmhraddshs", VXA(4, 33), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vminfp", VX(4, 1098), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vminsb", VX(4, 770), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vminsh", VX(4, 834), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vminsw", VX(4, 898), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vminub", VX(4, 514), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vminuh", VX(4, 578), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vminuw", VX(4, 642), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmladduhm", VXA(4, 34), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmrghb", VX(4, 12), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmrghh", VX(4, 76), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmrghw", VX(4, 140), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmrglb", VX(4, 268), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmrglh", VX(4, 332), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmrglw", VX(4, 396), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmsummbm", VXA(4, 37), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmsumshm", VXA(4, 40), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmsumshs", VXA(4, 41), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmsumubm", VXA(4, 36), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmsumuhm", VXA(4, 38), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmsumuhs", VXA(4, 39), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmulesb", VX(4, 776), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmulesh", VX(4, 840), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmuleub", VX(4, 520), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmuleuh", VX(4, 584), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmulosb", VX(4, 264), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmulosh", VX(4, 328), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmuloub", VX(4, 8), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmulouh", VX(4, 72), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC, { VD, VA, VC, VB } },
+{ "vnor", VX(4, 1284), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vor", VX(4, 1156), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vperm", VXA(4, 43), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vpkpx", VX(4, 782), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkshss", VX(4, 398), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkshus", VX(4, 270), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkswss", VX(4, 462), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkswus", VX(4, 334), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkuhum", VX(4, 14), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkuhus", VX(4, 142), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkuwum", VX(4, 78), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkuwus", VX(4, 206), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vrefp", VX(4, 266), VX_MASK, PPCVEC, { VD, VB } },
+{ "vrfim", VX(4, 714), VX_MASK, PPCVEC, { VD, VB } },
+{ "vrfin", VX(4, 522), VX_MASK, PPCVEC, { VD, VB } },
+{ "vrfip", VX(4, 650), VX_MASK, PPCVEC, { VD, VB } },
+{ "vrfiz", VX(4, 586), VX_MASK, PPCVEC, { VD, VB } },
+{ "vrlb", VX(4, 4), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vrlh", VX(4, 68), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vrlw", VX(4, 132), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vrsqrtefp", VX(4, 330), VX_MASK, PPCVEC, { VD, VB } },
+{ "vsel", VXA(4, 42), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vsl", VX(4, 452), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vslb", VX(4, 260), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsldoi", VXA(4, 44), VXA_MASK, PPCVEC, { VD, VA, VB, SHB } },
+{ "vslh", VX(4, 324), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vslo", VX(4, 1036), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vslw", VX(4, 338), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vspltb", VX(4, 524), VX_MASK, PPCVEC, { VD, VB, UIMM } },
+{ "vsplth", VX(4, 588), VX_MASK, PPCVEC, { VD, VB, UIMM } },
+{ "vspltisb", VX(4, 780), VX_MASK, PPCVEC, { VD, SIMM } },
+{ "vspltish", VX(4, 844), VX_MASK, PPCVEC, { VD, SIMM } },
+{ "vspltisw", VX(4, 908), VX_MASK, PPCVEC, { VD, SIMM } },
+{ "vspltw", VX(4, 652), VX_MASK, PPCVEC, { VD, VB, UIMM } },
+{ "vsr", VX(4, 708), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsrab", VX(4, 772), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsrah", VX(4, 836), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsraw", VX(4, 900), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsrb", VX(4, 516), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsrh", VX(4, 580), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsro", VX(4, 1100), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsrw", VX(4, 644), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubcuw", VX(4, 1408), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubfp", VX(4, 74), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubsbs", VX(4, 1792), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubshs", VX(4, 1856), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubsws", VX(4, 1920), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsububm", VX(4, 1024), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsububs", VX(4, 1536), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubuhm", VX(4, 1088), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubuhs", VX(4, 1600), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubuwm", VX(4, 1152), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubuws", VX(4, 1664), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsumsws", VX(4, 1928), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsum2sws", VX(4, 1672), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsum4sbs", VX(4, 1800), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsum4shs", VX(4, 1608), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsum4ubs", VX(4, 1544), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vupkhpx", VX(4, 846), VX_MASK, PPCVEC, { VD, VB } },
+{ "vupkhsb", VX(4, 526), VX_MASK, PPCVEC, { VD, VB } },
+{ "vupkhsh", VX(4, 590), VX_MASK, PPCVEC, { VD, VB } },
+{ "vupklpx", VX(4, 974), VX_MASK, PPCVEC, { VD, VB } },
+{ "vupklsb", VX(4, 654), VX_MASK, PPCVEC, { VD, VB } },
+{ "vupklsh", VX(4, 718), VX_MASK, PPCVEC, { VD, VB } },
+{ "vxor", VX(4, 1220), VX_MASK, PPCVEC, { VD, VA, VB } },
{ "mulli", OP(7), OP_MASK, PPCCOM, { RT, RA, SI } },
{ "muli", OP(7), OP_MASK, PWRCOM, { RT, RA, SI } },
@@ -1388,269 +1598,269 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "cau", OP(15), OP_MASK, PWRCOM, { RT,RA,SISIGNOPT } },
{ "subis", OP(15), OP_MASK, PPCCOM, { RT, RA, NSI } },
-{ "bdnz-", BBO(16,BODNZ,0,0), BBOYBI_MASK, PPC, { BDM } },
-{ "bdnz+", BBO(16,BODNZ,0,0), BBOYBI_MASK, PPC, { BDP } },
+{ "bdnz-", BBO(16,BODNZ,0,0), BBOYBI_MASK, PPCCOM, { BDM } },
+{ "bdnz+", BBO(16,BODNZ,0,0), BBOYBI_MASK, PPCCOM, { BDP } },
{ "bdnz", BBO(16,BODNZ,0,0), BBOYBI_MASK, PPCCOM, { BD } },
{ "bdn", BBO(16,BODNZ,0,0), BBOYBI_MASK, PWRCOM, { BD } },
-{ "bdnzl-", BBO(16,BODNZ,0,1), BBOYBI_MASK, PPC, { BDM } },
-{ "bdnzl+", BBO(16,BODNZ,0,1), BBOYBI_MASK, PPC, { BDP } },
+{ "bdnzl-", BBO(16,BODNZ,0,1), BBOYBI_MASK, PPCCOM, { BDM } },
+{ "bdnzl+", BBO(16,BODNZ,0,1), BBOYBI_MASK, PPCCOM, { BDP } },
{ "bdnzl", BBO(16,BODNZ,0,1), BBOYBI_MASK, PPCCOM, { BD } },
{ "bdnl", BBO(16,BODNZ,0,1), BBOYBI_MASK, PWRCOM, { BD } },
-{ "bdnza-", BBO(16,BODNZ,1,0), BBOYBI_MASK, PPC, { BDMA } },
-{ "bdnza+", BBO(16,BODNZ,1,0), BBOYBI_MASK, PPC, { BDPA } },
+{ "bdnza-", BBO(16,BODNZ,1,0), BBOYBI_MASK, PPCCOM, { BDMA } },
+{ "bdnza+", BBO(16,BODNZ,1,0), BBOYBI_MASK, PPCCOM, { BDPA } },
{ "bdnza", BBO(16,BODNZ,1,0), BBOYBI_MASK, PPCCOM, { BDA } },
{ "bdna", BBO(16,BODNZ,1,0), BBOYBI_MASK, PWRCOM, { BDA } },
-{ "bdnzla-", BBO(16,BODNZ,1,1), BBOYBI_MASK, PPC, { BDMA } },
-{ "bdnzla+", BBO(16,BODNZ,1,1), BBOYBI_MASK, PPC, { BDPA } },
+{ "bdnzla-", BBO(16,BODNZ,1,1), BBOYBI_MASK, PPCCOM, { BDMA } },
+{ "bdnzla+", BBO(16,BODNZ,1,1), BBOYBI_MASK, PPCCOM, { BDPA } },
{ "bdnzla", BBO(16,BODNZ,1,1), BBOYBI_MASK, PPCCOM, { BDA } },
{ "bdnla", BBO(16,BODNZ,1,1), BBOYBI_MASK, PWRCOM, { BDA } },
-{ "bdz-", BBO(16,BODZ,0,0), BBOYBI_MASK, PPC, { BDM } },
-{ "bdz+", BBO(16,BODZ,0,0), BBOYBI_MASK, PPC, { BDP } },
+{ "bdz-", BBO(16,BODZ,0,0), BBOYBI_MASK, PPCCOM, { BDM } },
+{ "bdz+", BBO(16,BODZ,0,0), BBOYBI_MASK, PPCCOM, { BDP } },
{ "bdz", BBO(16,BODZ,0,0), BBOYBI_MASK, COM, { BD } },
-{ "bdzl-", BBO(16,BODZ,0,1), BBOYBI_MASK, PPC, { BDM } },
-{ "bdzl+", BBO(16,BODZ,0,1), BBOYBI_MASK, PPC, { BDP } },
+{ "bdzl-", BBO(16,BODZ,0,1), BBOYBI_MASK, PPCCOM, { BDM } },
+{ "bdzl+", BBO(16,BODZ,0,1), BBOYBI_MASK, PPCCOM, { BDP } },
{ "bdzl", BBO(16,BODZ,0,1), BBOYBI_MASK, COM, { BD } },
-{ "bdza-", BBO(16,BODZ,1,0), BBOYBI_MASK, PPC, { BDMA } },
-{ "bdza+", BBO(16,BODZ,1,0), BBOYBI_MASK, PPC, { BDPA } },
+{ "bdza-", BBO(16,BODZ,1,0), BBOYBI_MASK, PPCCOM, { BDMA } },
+{ "bdza+", BBO(16,BODZ,1,0), BBOYBI_MASK, PPCCOM, { BDPA } },
{ "bdza", BBO(16,BODZ,1,0), BBOYBI_MASK, COM, { BDA } },
-{ "bdzla-", BBO(16,BODZ,1,1), BBOYBI_MASK, PPC, { BDMA } },
-{ "bdzla+", BBO(16,BODZ,1,1), BBOYBI_MASK, PPC, { BDPA } },
+{ "bdzla-", BBO(16,BODZ,1,1), BBOYBI_MASK, PPCCOM, { BDMA } },
+{ "bdzla+", BBO(16,BODZ,1,1), BBOYBI_MASK, PPCCOM, { BDPA } },
{ "bdzla", BBO(16,BODZ,1,1), BBOYBI_MASK, COM, { BDA } },
-{ "blt-", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "blt+", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "blt", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bltl-", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bltl+", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bltl", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "blta-", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "blta+", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "blta", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bltla-", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bltla+", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bltla", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bgt-", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bgt+", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bgt", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bgtl", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "bgta-", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bgta+", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bgta", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bgtla", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "beq-", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "beq+", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "beq", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "beql-", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "beql+", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "beql", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "beqa", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "beqla", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bso-", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bso+", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bso", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bsol-", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bsol+", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bsol", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bsoa", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bsola-", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bsola+", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bsola", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bun-", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bun+", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bun", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BD } },
-{ "bunl-", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bunl+", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bunl", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BD } },
-{ "buna-", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "buna+", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "buna", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDA } },
-{ "bunla-", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bunla+", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bunla", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDA } },
-{ "bge-", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bge+", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bge", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bgel-", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bgel+", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bgel", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "bgea-", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bgea+", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bgea", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bgela-", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bgela+", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bgela", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bnl-", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bnl+", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bnl", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bnll-", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bnll+", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bnll", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "bnla-", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnla+", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnla", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnlla", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "ble-", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "ble+", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "ble", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "blel-", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "blel+", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "blel", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "blea-", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "blea+", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "blea", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "blela-", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "blela+", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "blela", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bng-", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bng+", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bng", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bngl-", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bngl+", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bngl", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "bnga-", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnga+", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnga", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bngla-", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bngla+", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bngla", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bne-", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bne+", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bne", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bnel", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnea", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnela", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bns-", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bns+", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bns", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bnsl", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnsa", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnsla", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bnu-", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bnu+", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bnu", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BD } },
-{ "bnul-", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bnul+", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bnul", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BD } },
-{ "bnua-", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnua+", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnua", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDA } },
-{ "bnula-", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnula+", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnula", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDA } },
-{ "bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, PPC, { BI, BDP } },
+{ "blt-", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "blt+", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "blt", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bltl-", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bltl+", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bltl", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "blta-", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "blta+", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "blta", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bltla-", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bltla+", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bltla", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bgt-", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bgt+", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bgt", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bgtl", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "bgta-", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bgta+", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bgta", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bgtla", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "beq-", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "beq+", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "beq", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "beql-", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "beql+", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "beql", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "beqa", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "beqla", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bso-", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bso+", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bso", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bsol-", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bsol+", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bsol", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bsoa", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bsola-", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bsola+", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bsola", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bun-", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bun+", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bun", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BD } },
+{ "bunl-", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bunl+", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bunl", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BD } },
+{ "buna-", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "buna+", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "buna", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDA } },
+{ "bunla-", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bunla+", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bunla", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDA } },
+{ "bge-", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bge+", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bge", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bgel-", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bgel+", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bgel", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "bgea-", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bgea+", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bgea", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bgela-", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bgela+", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bgela", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bnl-", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bnl+", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bnl", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bnll-", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bnll+", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bnll", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "bnla-", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnla+", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnla", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnlla", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "ble-", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "ble+", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "ble", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "blel-", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "blel+", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "blel", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "blea-", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "blea+", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "blea", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "blela-", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "blela+", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "blela", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bng-", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bng+", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bng", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bngl-", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bngl+", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bngl", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "bnga-", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnga+", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnga", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bngla-", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bngla+", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bngla", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bne-", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bne+", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bne", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bnel", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnea", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnela", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bns-", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bns+", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bns", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bnsl", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnsa", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnsla", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bnu-", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bnu+", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bnu", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BD } },
+{ "bnul-", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bnul+", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bnul", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BD } },
+{ "bnua-", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnua+", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnua", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDA } },
+{ "bnula-", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnula+", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnula", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDA } },
+{ "bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, PPC, { BI, BDP } },
+{ "bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bdnztla-",BBO(16,BODNZT,1,1), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdnztla+",BBO(16,BODNZT,1,1), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdnztla-",BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdnztla+",BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, PPC, { BI, BDP } },
+{ "bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, PPC, { BI, BDP } },
+{ "bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bdnzfla-",BBO(16,BODNZF,1,1), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdnzfla+",BBO(16,BODNZF,1,1), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdnzfla-",BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdnzfla+",BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bt-", BBO(16,BOT,0,0), BBOY_MASK, PPC, { BI, BDM } },
-{ "bt+", BBO(16,BOT,0,0), BBOY_MASK, PPC, { BI, BDP } },
+{ "bt-", BBO(16,BOT,0,0), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bt+", BBO(16,BOT,0,0), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bt", BBO(16,BOT,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
{ "bbt", BBO(16,BOT,0,0), BBOY_MASK, PWRCOM, { BI, BD } },
-{ "btl-", BBO(16,BOT,0,1), BBOY_MASK, PPC, { BI, BDM } },
-{ "btl+", BBO(16,BOT,0,1), BBOY_MASK, PPC, { BI, BDP } },
+{ "btl-", BBO(16,BOT,0,1), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "btl+", BBO(16,BOT,0,1), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "btl", BBO(16,BOT,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
{ "bbtl", BBO(16,BOT,0,1), BBOY_MASK, PWRCOM, { BI, BD } },
-{ "bta-", BBO(16,BOT,1,0), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bta+", BBO(16,BOT,1,0), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bta-", BBO(16,BOT,1,0), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bta+", BBO(16,BOT,1,0), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bta", BBO(16,BOT,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
{ "bbta", BBO(16,BOT,1,0), BBOY_MASK, PWRCOM, { BI, BDA } },
-{ "btla-", BBO(16,BOT,1,1), BBOY_MASK, PPC, { BI, BDMA } },
-{ "btla+", BBO(16,BOT,1,1), BBOY_MASK, PPC, { BI, BDPA } },
+{ "btla-", BBO(16,BOT,1,1), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "btla+", BBO(16,BOT,1,1), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "btla", BBO(16,BOT,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
{ "bbtla", BBO(16,BOT,1,1), BBOY_MASK, PWRCOM, { BI, BDA } },
-{ "bf-", BBO(16,BOF,0,0), BBOY_MASK, PPC, { BI, BDM } },
-{ "bf+", BBO(16,BOF,0,0), BBOY_MASK, PPC, { BI, BDP } },
+{ "bf-", BBO(16,BOF,0,0), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bf+", BBO(16,BOF,0,0), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bf", BBO(16,BOF,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
{ "bbf", BBO(16,BOF,0,0), BBOY_MASK, PWRCOM, { BI, BD } },
-{ "bfl-", BBO(16,BOF,0,1), BBOY_MASK, PPC, { BI, BDM } },
-{ "bfl+", BBO(16,BOF,0,1), BBOY_MASK, PPC, { BI, BDP } },
+{ "bfl-", BBO(16,BOF,0,1), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bfl+", BBO(16,BOF,0,1), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bfl", BBO(16,BOF,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
{ "bbfl", BBO(16,BOF,0,1), BBOY_MASK, PWRCOM, { BI, BD } },
-{ "bfa-", BBO(16,BOF,1,0), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bfa+", BBO(16,BOF,1,0), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bfa-", BBO(16,BOF,1,0), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bfa+", BBO(16,BOF,1,0), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bfa", BBO(16,BOF,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
{ "bbfa", BBO(16,BOF,1,0), BBOY_MASK, PWRCOM, { BI, BDA } },
-{ "bfla-", BBO(16,BOF,1,1), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bfla+", BBO(16,BOF,1,1), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bfla-", BBO(16,BOF,1,1), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bfla+", BBO(16,BOF,1,1), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bfla", BBO(16,BOF,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
{ "bbfla", BBO(16,BOF,1,1), BBOY_MASK, PWRCOM, { BI, BDA } },
-{ "bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, PPC, { BI, BDP } },
+{ "bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, PPC, { BI, BDP } },
+{ "bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, PPC, { BI, BDP } },
+{ "bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, PPC, { BI, BDP } },
+{ "bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bc-", B(16,0,0), B_MASK, PPC, { BOE, BI, BDM } },
-{ "bc+", B(16,0,0), B_MASK, PPC, { BOE, BI, BDP } },
+{ "bc-", B(16,0,0), B_MASK, PPCCOM, { BOE, BI, BDM } },
+{ "bc+", B(16,0,0), B_MASK, PPCCOM, { BOE, BI, BDP } },
{ "bc", B(16,0,0), B_MASK, COM, { BO, BI, BD } },
-{ "bcl-", B(16,0,1), B_MASK, PPC, { BOE, BI, BDM } },
-{ "bcl+", B(16,0,1), B_MASK, PPC, { BOE, BI, BDP } },
+{ "bcl-", B(16,0,1), B_MASK, PPCCOM, { BOE, BI, BDM } },
+{ "bcl+", B(16,0,1), B_MASK, PPCCOM, { BOE, BI, BDP } },
{ "bcl", B(16,0,1), B_MASK, COM, { BO, BI, BD } },
-{ "bca-", B(16,1,0), B_MASK, PPC, { BOE, BI, BDMA } },
-{ "bca+", B(16,1,0), B_MASK, PPC, { BOE, BI, BDPA } },
+{ "bca-", B(16,1,0), B_MASK, PPCCOM, { BOE, BI, BDMA } },
+{ "bca+", B(16,1,0), B_MASK, PPCCOM, { BOE, BI, BDPA } },
{ "bca", B(16,1,0), B_MASK, COM, { BO, BI, BDA } },
-{ "bcla-", B(16,1,1), B_MASK, PPC, { BOE, BI, BDMA } },
-{ "bcla+", B(16,1,1), B_MASK, PPC, { BOE, BI, BDPA } },
+{ "bcla-", B(16,1,1), B_MASK, PPCCOM, { BOE, BI, BDMA } },
+{ "bcla+", B(16,1,1), B_MASK, PPCCOM, { BOE, BI, BDPA } },
{ "bcla", B(16,1,1), B_MASK, COM, { BO, BI, BDA } },
{ "sc", SC(17,1,0), 0xffffffff, PPC, { 0 } },
@@ -1671,155 +1881,155 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
{ "brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM, { 0 } },
{ "bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
-{ "bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPC, { 0 } },
-{ "bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPC, { 0 } },
+{ "bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
+{ "bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
{ "bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
-{ "bdnzlrl-",XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPC, { 0 } },
-{ "bdnzlrl+",XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPC, { 0 } },
+{ "bdnzlrl-",XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
+{ "bdnzlrl+",XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
{ "bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
-{ "bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPC, { 0 } },
-{ "bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, PPC, { 0 } },
+{ "bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
+{ "bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
{ "bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
-{ "bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPC, { 0 } },
-{ "bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, PPC, { 0 } },
+{ "bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
+{ "bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
{ "bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, PPC, { BI } },
-{ "btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, PPC, { BI } },
+{ "btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM, { BI } },
{ "btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, PPC, { BI } },
-{ "btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, PPC, { BI } },
+{ "btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, PPCCOM, { BI } },
{ "bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM, { BI } },
{ "bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, PPC, { BI } },
-{ "bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, PPC, { BI } },
+{ "bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM, { BI } },
{ "bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, PPC, { BI } },
-{ "bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, PPC, { BI } },
+{ "bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, PPCCOM, { BI } },
{ "bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM, { BI } },
{ "bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdnztlr-",XLO(19,BODNZT,16,0), XLBOBB_MASK, PPC, { BI } },
-{ "bdnztlr+",XLO(19,BODNZTP,16,0), XLBOBB_MASK, PPC, { BI } },
+{ "bdnztlr-",XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdnztlr+",XLO(19,BODNZTP,16,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "bdnztlrl",XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdnztlrl-",XLO(19,BODNZT,16,1), XLBOBB_MASK, PPC, { BI } },
-{ "bdnztlrl+",XLO(19,BODNZTP,16,1), XLBOBB_MASK, PPC, { BI } },
+{ "bdnztlrl-",XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdnztlrl+",XLO(19,BODNZTP,16,1), XLBOBB_MASK, PPCCOM,{ BI } },
{ "bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdnzflr-",XLO(19,BODNZF,16,0), XLBOBB_MASK, PPC, { BI } },
-{ "bdnzflr+",XLO(19,BODNZFP,16,0), XLBOBB_MASK, PPC, { BI } },
+{ "bdnzflr-",XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdnzflr+",XLO(19,BODNZFP,16,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "bdnzflrl",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPC, { BI } },
-{ "bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, PPC, { BI } },
+{ "bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, PPCCOM,{ BI } },
{ "bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, PPC, { BI } },
-{ "bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, PPC, { BI } },
+{ "bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdztlrl-",XLO(19,BODZT,16,1), XLBOBB_MASK, PPC, { BI } },
-{ "bdztlrl+",XLO(19,BODZTP,16,1), XLBOBB_MASK, PPC, { BI } },
+{ "bdztlrl-",XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdztlrl+",XLO(19,BODZTP,16,1), XLBOBB_MASK, PPCCOM, { BI } },
{ "bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, PPC, { BI } },
-{ "bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, PPC, { BI } },
+{ "bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdzflrl-",XLO(19,BODZF,16,1), XLBOBB_MASK, PPC, { BI } },
-{ "bdzflrl+",XLO(19,BODZFP,16,1), XLBOBB_MASK, PPC, { BI } },
+{ "bdzflrl-",XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdzflrl+",XLO(19,BODZFP,16,1), XLBOBB_MASK, PPCCOM, { BI } },
{ "bclr", XLLK(19,16,0), XLYBB_MASK, PPCCOM, { BO, BI } },
{ "bclrl", XLLK(19,16,1), XLYBB_MASK, PPCCOM, { BO, BI } },
-{ "bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPC, { BOE, BI } },
-{ "bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPC, { BOE, BI } },
-{ "bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPC, { BOE, BI } },
-{ "bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPC, { BOE, BI } },
+{ "bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPCCOM, { BOE, BI } },
+{ "bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPCCOM, { BOE, BI } },
+{ "bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPCCOM, { BOE, BI } },
+{ "bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPCCOM, { BOE, BI } },
{ "bcr", XLLK(19,16,0), XLBB_MASK, PWRCOM, { BO, BI } },
{ "bcrl", XLLK(19,16,1), XLBB_MASK, PWRCOM, { BO, BI } },
@@ -1854,95 +2064,95 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, COM, { 0 } },
{ "bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, COM, { 0 } },
{ "bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "btctr", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, PPC, { BI } },
-{ "btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, PPC, { BI } },
+{ "btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "btctrl", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, PPC, { BI } },
-{ "btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, PPC, { BI } },
+{ "btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, PPCCOM, { BI } },
{ "bfctr", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, PPC, { BI } },
-{ "bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, PPC, { BI } },
+{ "bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "bfctrl", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, PPC, { BI } },
-{ "bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, PPC, { BI } },
+{ "bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, PPCCOM, { BI } },
{ "bcctr", XLLK(19,528,0), XLYBB_MASK, PPCCOM, { BO, BI } },
-{ "bcctr-", XLYLK(19,528,0,0), XLYBB_MASK, PPC, { BOE, BI } },
-{ "bcctr+", XLYLK(19,528,1,0), XLYBB_MASK, PPC, { BOE, BI } },
+{ "bcctr-", XLYLK(19,528,0,0), XLYBB_MASK, PPCCOM, { BOE, BI } },
+{ "bcctr+", XLYLK(19,528,1,0), XLYBB_MASK, PPCCOM, { BOE, BI } },
{ "bcctrl", XLLK(19,528,1), XLYBB_MASK, PPCCOM, { BO, BI } },
-{ "bcctrl-", XLYLK(19,528,0,1), XLYBB_MASK, PPC, { BOE, BI } },
-{ "bcctrl+", XLYLK(19,528,1,1), XLYBB_MASK, PPC, { BOE, BI } },
+{ "bcctrl-", XLYLK(19,528,0,1), XLYBB_MASK, PPCCOM, { BOE, BI } },
+{ "bcctrl+", XLYLK(19,528,1,1), XLYBB_MASK, PPCCOM, { BOE, BI } },
{ "bcc", XLLK(19,528,0), XLBB_MASK, PWRCOM, { BO, BI } },
{ "bccl", XLLK(19,528,1), XLBB_MASK, PWRCOM, { BO, BI } },
@@ -2854,6 +3064,19 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "dcbz", X(31,1014), XRT_MASK, PPC, { RA, RB } },
{ "dclz", X(31,1014), XRT_MASK, PPC, { RA, RB } },
+{ "lvebx", X(31, 7), X_MASK, PPCVEC, { VD, RA, RB } },
+{ "lvehx", X(31, 39), X_MASK, PPCVEC, { VD, RA, RB } },
+{ "lvewx", X(31, 71), X_MASK, PPCVEC, { VD, RA, RB } },
+{ "lvsl", X(31, 6), X_MASK, PPCVEC, { VD, RA, RB } },
+{ "lvsr", X(31, 38), X_MASK, PPCVEC, { VD, RA, RB } },
+{ "lvx", X(31, 103), X_MASK, PPCVEC, { VD, RA, RB } },
+{ "lvxl", X(31, 359), X_MASK, PPCVEC, { VD, RA, RB } },
+{ "stvebx", X(31, 135), X_MASK, PPCVEC, { VS, RA, RB } },
+{ "stvehx", X(31, 167), X_MASK, PPCVEC, { VS, RA, RB } },
+{ "stvewx", X(31, 199), X_MASK, PPCVEC, { VS, RA, RB } },
+{ "stvx", X(31, 231), X_MASK, PPCVEC, { VS, RA, RB } },
+{ "stvxl", X(31, 487), X_MASK, PPCVEC, { VS, RA, RB } },
+
{ "lwz", OP(32), OP_MASK, PPCCOM, { RT, D, RA } },
{ "l", OP(32), OP_MASK, PWRCOM, { RT, D, RA } },
diff --git a/opcodes/sh-dis.c b/opcodes/sh-dis.c
index 3fc99dddf9e..548e2a83af6 100644
--- a/opcodes/sh-dis.c
+++ b/opcodes/sh-dis.c
@@ -16,6 +16,7 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
+#include "sysdep.h"
#define STATIC_TABLE
#define DEFINE_TABLE
diff --git a/opcodes/sparc-dis.c b/opcodes/sparc-dis.c
index 9fbdb60c8c2..a595d0f3835 100644
--- a/opcodes/sparc-dis.c
+++ b/opcodes/sparc-dis.c
@@ -17,7 +17,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
#include "sysdep.h"
#include "opcode/sparc.h"
#include "dis-asm.h"
diff --git a/opcodes/sparc-opc.c b/opcodes/sparc-opc.c
index 7ad9d183878..a7132bb61f7 100644
--- a/opcodes/sparc-opc.c
+++ b/opcodes/sparc-opc.c
@@ -24,7 +24,7 @@ Boston, MA 02111-1307, USA. */
slower, but would mess up some macros a bit. xoxorich. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/sparc.h"
/* Some defines to make life easy. */
diff --git a/opcodes/sysdep.h b/opcodes/sysdep.h
index bb23e5fcf5d..238eb5d6860 100644
--- a/opcodes/sysdep.h
+++ b/opcodes/sysdep.h
@@ -27,7 +27,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "config.h"
-#include <ansidecl.h>
+#include "ansidecl.h"
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
diff --git a/opcodes/tic54x-dis.c b/opcodes/tic54x-dis.c
new file mode 100644
index 00000000000..e2c0b208dd3
--- /dev/null
+++ b/opcodes/tic54x-dis.c
@@ -0,0 +1,615 @@
+/* Disassembly routines for TMS320C54X architecture
+ Copyright (C) 1999,2000 Free Software Foundation, Inc.
+ Contributed by Timothy Wall (twall@cygnus.com)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#include <errno.h>
+#include <math.h>
+#include <stdlib.h>
+#include "sysdep.h"
+#include "dis-asm.h"
+#include "opcode/tic54x.h"
+#include "coff/tic54x.h"
+
+typedef struct _instruction {
+ int parallel;
+ template *tm;
+ partemplate *ptm;
+} instruction;
+
+static int get_insn_size PARAMS ((unsigned short, instruction *));
+static int get_instruction PARAMS ((disassemble_info *, bfd_vma,
+ unsigned short, instruction *));
+static int print_instruction PARAMS ((disassemble_info *, bfd_vma,
+ unsigned short, char *,
+ enum optype [], int, int));
+static int print_parallel_instruction PARAMS ((disassemble_info *, bfd_vma,
+ unsigned short, partemplate *,
+ int));
+static int sprint_dual_address (disassemble_info *,char [],
+ unsigned short);
+static int sprint_indirect_address (disassemble_info *,char [],
+ unsigned short);
+static int sprint_direct_address (disassemble_info *,char [],
+ unsigned short);
+static int sprint_mmr (disassemble_info *,char [],int);
+static int sprint_condition (disassemble_info *,char *,unsigned short);
+static int sprint_cc2 (disassemble_info *,char *,unsigned short);
+
+int
+print_insn_tic54x(memaddr, info)
+ bfd_vma memaddr;
+ disassemble_info *info;
+{
+ bfd_byte opbuf[2];
+ unsigned short opcode;
+ int status, size;
+ instruction insn;
+
+ status = (*info->read_memory_func) (memaddr, opbuf, 2, info);
+ if (status != 0)
+ {
+ (*info->memory_error_func)(status, memaddr, info);
+ return -1;
+ }
+
+ opcode = bfd_getl16(opbuf);
+ if (!get_instruction (info, memaddr, opcode, &insn))
+ return -1;
+
+ size = get_insn_size (opcode, &insn);
+ info->bytes_per_line = 2;
+ info->bytes_per_chunk = 2;
+ info->octets_per_byte = 2;
+ info->display_endian = BFD_ENDIAN_LITTLE;
+
+ if (insn.parallel)
+ {
+ if (!print_parallel_instruction (info, memaddr, opcode, insn.ptm, size))
+ return -1;
+ }
+ else
+ {
+ if (!print_instruction (info, memaddr, opcode,
+ (char *)insn.tm->name,
+ insn.tm->operand_types,
+ size, (insn.tm->flags & FL_EXT)))
+ return -1;
+ }
+
+ return size*2;
+}
+
+static int
+has_lkaddr(opcode, tm)
+ unsigned short opcode;
+ template *tm;
+{
+ return IS_LKADDR(opcode) &&
+ (OPTYPE(tm->operand_types[0]) == OP_Smem ||
+ OPTYPE(tm->operand_types[1]) == OP_Smem ||
+ OPTYPE(tm->operand_types[2]) == OP_Smem ||
+ OPTYPE(tm->operand_types[1]) == OP_Sind);
+}
+
+/* always returns 1 (whether an insn template was found) since we provide an
+ "unknown instruction" template */
+static int
+get_instruction (info, addr, opcode, insn)
+ disassemble_info *info;
+ bfd_vma addr;
+ unsigned short opcode;
+ instruction *insn;
+{
+ template * tm;
+ partemplate * ptm;
+
+ insn->parallel = 0;
+ for (tm = (template *)tic54x_optab; tm->name; tm++)
+ {
+ if (tm->opcode == (opcode & tm->mask))
+ {
+ /* a few opcodes span two words */
+ if (tm->flags & FL_EXT)
+ {
+ /* if lk addressing is used, the second half of the opcode gets
+ pushed one word later */
+ bfd_byte opbuf[2];
+ bfd_vma addr2 = addr + 1 + has_lkaddr(opcode, tm);
+ int status = (*info->read_memory_func)(addr2, opbuf, 2, info);
+ if (status == 0)
+ {
+ unsigned short opcode2 = bfd_getl16(opbuf);
+ if (tm->opcode2 == (opcode2 & tm->mask2))
+ {
+ insn->tm = tm;
+ return 1;
+ }
+ }
+ }
+ else
+ {
+ insn->tm = tm;
+ return 1;
+ }
+ }
+ }
+ for (ptm = (partemplate *)tic54x_paroptab; ptm->name; ptm++)
+ {
+ if (ptm->opcode == (opcode & ptm->mask))
+ {
+ insn->parallel = 1;
+ insn->ptm = ptm;
+ return 1;
+ }
+ }
+
+ insn->tm = (template *)&tic54x_unknown_opcode;
+ return 1;
+}
+
+static int
+get_insn_size (opcode, insn)
+ unsigned short opcode;
+ instruction *insn;
+{
+ int size;
+
+ if (insn->parallel)
+ {
+ /* only non-parallel instructions support lk addressing */
+ size = insn->ptm->words;
+ }
+ else
+ {
+ size = insn->tm->words + has_lkaddr(opcode, insn->tm);
+ }
+
+ return size;
+}
+
+int
+print_instruction (info, memaddr, opcode, tm_name, tm_operands, size, ext)
+ disassemble_info *info;
+ bfd_vma memaddr;
+ unsigned short opcode;
+ char *tm_name;
+ enum optype tm_operands[];
+ int size;
+ int ext;
+{
+ static int n;
+ /* string storage for multiple operands */
+ char operand[4][64] = { {0},{0},{0},{0}, };
+ bfd_byte buf[2];
+ unsigned long opcode2, lkaddr;
+ enum optype src = OP_None;
+ enum optype dst = OP_None;
+ int i, shift;
+ char *comma = "";
+
+ info->fprintf_func (info->stream, "%-7s", tm_name);
+
+ if (size > 1)
+ {
+ int status = (*info->read_memory_func) (memaddr+1, buf, 2, info);
+ if (status != 0)
+ return 0;
+ lkaddr = opcode2 = bfd_getl16(buf);
+ if (size > 2)
+ {
+ status = (*info->read_memory_func) (memaddr+2, buf, 2, info);
+ if (status != 0)
+ return 0;
+ opcode2 = bfd_getl16(buf);
+ }
+ }
+
+ for (i=0;i < MAX_OPERANDS && OPTYPE(tm_operands[i]) != OP_None;i++)
+ {
+ char *next_comma = ",";
+ int optional = (tm_operands[i] & OPT) != 0;
+
+ switch (OPTYPE(tm_operands[i]))
+ {
+ case OP_Xmem:
+ sprint_dual_address (info, operand[i], XMEM(opcode));
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_Ymem:
+ sprint_dual_address (info, operand[i], YMEM(opcode));
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_Smem:
+ case OP_Sind:
+ case OP_Lmem:
+ info->fprintf_func (info->stream, "%s", comma);
+ if (INDIRECT(opcode))
+ {
+ if (MOD(opcode) >= 12)
+ {
+ bfd_vma addr = lkaddr;
+ int arf = ARF(opcode);
+ int mod = MOD(opcode);
+ if (mod == 15)
+ info->fprintf_func (info->stream, "*(");
+ else
+ info->fprintf_func (info->stream, "*%sar%d(",
+ (mod == 13 || mod == 14 ? "+" : ""),
+ arf);
+ (*(info->print_address_func))((bfd_vma)addr, info);
+ info->fprintf_func (info->stream, ")%s",
+ mod == 14 ? "%" : "");
+ }
+ else
+ {
+ sprint_indirect_address (info, operand[i], opcode);
+ info->fprintf_func (info->stream, "%s", operand[i]);
+ }
+ }
+ else
+ {
+ /* FIXME -- use labels (print_address_func) */
+ /* in order to do this, we need to guess what DP is */
+ sprint_direct_address (info, operand[i], opcode);
+ info->fprintf_func (info->stream, "%s", operand[i]);
+ }
+ break;
+ case OP_dmad:
+ info->fprintf_func (info->stream, "%s", comma);
+ (*(info->print_address_func))((bfd_vma)opcode2, info);
+ break;
+ case OP_xpmad:
+ /* upper 7 bits of address are in the opcode */
+ opcode2 += ((unsigned long)opcode & 0x7F) << 16;
+ /* fall through */
+ case OP_pmad:
+ info->fprintf_func (info->stream, "%s", comma);
+ (*(info->print_address_func))((bfd_vma)opcode2, info);
+ break;
+ case OP_MMRX:
+ sprint_mmr (info, operand[i], MMRX(opcode));
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_MMRY:
+ sprint_mmr (info, operand[i], MMRY(opcode));
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_MMR:
+ sprint_mmr (info, operand[i], MMR(opcode));
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_PA:
+ sprintf (operand[i], "pa%d", (unsigned)opcode2);
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_SRC:
+ src = SRC(ext ? opcode2 : opcode) ? OP_B : OP_A;
+ sprintf (operand[i], (src == OP_B) ? "b" : "a");
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_SRC1:
+ src = SRC1(ext ? opcode2 : opcode) ? OP_B : OP_A;
+ sprintf (operand[i], (src == OP_B) ? "b" : "a");
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_RND:
+ dst = DST(opcode) ? OP_B : OP_A;
+ sprintf (operand[i], (dst == OP_B) ? "a" : "b");
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_DST:
+ dst = DST(ext ? opcode2 : opcode) ? OP_B : OP_A;
+ if (!optional || dst != src)
+ {
+ sprintf (operand[i], (dst == OP_B) ? "b" : "a");
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ }
+ else
+ next_comma = comma;
+ break;
+ case OP_B:
+ sprintf (operand[i], "b");
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_A:
+ sprintf (operand[i], "a");
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_ARX:
+ sprintf (operand[i],"ar%d", (int)ARX(opcode));
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_SHIFT:
+ shift = SHIFT(ext ? opcode2 : opcode);
+ if (!optional || shift != 0)
+ {
+ sprintf (operand[i],"%d", shift);
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ }
+ else
+ next_comma = comma;
+ break;
+ case OP_SHFT:
+ shift = SHFT(opcode);
+ if (!optional || shift != 0)
+ {
+ sprintf (operand[i],"%d", (unsigned)shift);
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ }
+ else
+ next_comma = comma;
+ break;
+ case OP_lk:
+ sprintf (operand[i],"#%d", (int)(short)opcode2);
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_T:
+ sprintf (operand[i], "t");
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_TS:
+ sprintf (operand[i], "ts");
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_k8:
+ sprintf (operand[i], "%d", (int)((signed char)(opcode & 0xFF)));
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_16:
+ sprintf (operand[i], "16");
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_ASM:
+ sprintf (operand[i], "asm");
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_BITC:
+ sprintf (operand[i], "%d", (int)(opcode & 0xF));
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_CC:
+ /* put all CC operands in the same operand */
+ sprint_condition (info, operand[i], opcode);
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ i = MAX_OPERANDS;
+ break;
+ case OP_CC2:
+ sprint_cc2 (info, operand[i], opcode);
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_CC3:
+ {
+ const char *code[] = { "eq", "lt", "gt", "neq" };
+ sprintf (operand[i], code[CC3(opcode)]);
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ }
+ case OP_123:
+ {
+ int code = (opcode>>8) & 0x3;
+ sprintf (operand[i], "%d", (code == 0) ? 1 : (code == 2) ? 2 : 3);
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ }
+ case OP_k5:
+ sprintf (operand[i], "#%d",
+ (int)(((signed char)opcode & 0x1F) << 3)>>3);
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_k8u:
+ sprintf (operand[i], "#%d", (unsigned)(opcode & 0xFF));
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_k3:
+ sprintf (operand[i], "#%d", (int)(opcode & 0x7));
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_lku:
+ sprintf (operand[i], "#%d", (unsigned)opcode2);
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_N:
+ n = (opcode >> 9) & 0x1;
+ sprintf (operand[i], "st%d", n);
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_SBIT:
+ {
+ const char *status0[] = {
+ "0", "1", "2", "3", "4", "5", "6", "7", "8",
+ "ovb", "ova", "c", "tc", "13", "14", "15"
+ };
+ const char *status1[] = {
+ "0", "1", "2", "3", "4",
+ "cmpt", "frct", "c16", "sxm", "ovm", "10",
+ "intm", "hm", "xf", "cpl", "braf"
+ };
+ sprintf (operand[i], "%s",
+ n ? status1[SBIT(opcode)] : status0[SBIT(opcode)]);
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ }
+ case OP_12:
+ sprintf (operand[i], "%d", (int)((opcode >> 9)&1) + 1);
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_TRN:
+ sprintf (operand[i], "trn");
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_DP:
+ sprintf (operand[i], "dp");
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_k9:
+ /* FIXME-- this is DP, print the original address? */
+ sprintf (operand[i], "#%d", (int)(opcode & 0x1FF));
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_ARP:
+ sprintf (operand[i], "arp");
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ case OP_031:
+ sprintf (operand[i], "%d", (int)(opcode & 0x1F));
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ default:
+ sprintf (operand[i], "??? (0x%x)", tm_operands[i]);
+ info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
+ break;
+ }
+ comma = next_comma;
+ }
+ return 1;
+}
+
+static int
+print_parallel_instruction (info, memaddr, opcode, ptm, size)
+ disassemble_info *info;
+ bfd_vma memaddr;
+ unsigned short opcode;
+ partemplate *ptm;
+ int size;
+{
+ print_instruction (info, memaddr, opcode,
+ ptm->name, ptm->operand_types, size, 0);
+ info->fprintf_func (info->stream, " || ");
+ return print_instruction (info, memaddr, opcode,
+ ptm->parname, ptm->paroperand_types, size, 0);
+}
+
+static int
+sprint_dual_address (info, buf, code)
+ disassemble_info *info;
+ char buf[];
+ unsigned short code;
+{
+ const char *formats[] = {
+ "*ar%d",
+ "*ar%d-",
+ "*ar%d+",
+ "*ar%d+0%%",
+ };
+ return sprintf (buf, formats[XMOD(code)], XARX(code));
+}
+
+static int
+sprint_indirect_address (info, buf, opcode)
+ disassemble_info *info;
+ char buf[];
+ unsigned short opcode;
+{
+ const char *formats[] = {
+ "*ar%d",
+ "*ar%d-",
+ "*ar%d+",
+ "*+ar%d",
+ "*ar%d-0B",
+ "*ar%d-0",
+ "*ar%d+0",
+ "*ar%d+0B",
+ "*ar%d-%%",
+ "*ar%d-0%%",
+ "*ar%d+%%",
+ "*ar%d+0%%",
+ };
+ return sprintf (buf, formats[MOD(opcode)], ARF(opcode));
+}
+
+static int
+sprint_direct_address (info, buf, opcode)
+ disassemble_info *info;
+ char buf[];
+ unsigned short opcode;
+{
+ /* FIXME -- look up relocation if available */
+ return sprintf (buf, "0x??%02x", (int)(opcode & 0x7F));
+}
+
+static int
+sprint_mmr (info, buf, mmr)
+ disassemble_info *info;
+ char buf[];
+ int mmr;
+{
+ symbol *reg = (symbol *)mmregs;
+ while (reg->name != NULL)
+ {
+ if (mmr == reg->value)
+ {
+ sprintf (buf, "%s", (reg+1)->name);
+ return 1;
+ }
+ ++reg;
+ }
+ sprintf (buf, "MMR(%d)", mmr); // FIXME -- different targets
+ return 0;
+}
+
+static int
+sprint_cc2 (info, buf, opcode)
+ disassemble_info *info;
+ char *buf;
+ unsigned short opcode;
+{
+ const char *cc2[] = {
+ "??", "??", "ageq", "alt", "aneq", "aeq", "agt", "aleq",
+ "??", "??", "bgeq", "blt", "bneq", "beq", "bgt", "bleq",
+ };
+ return sprintf (buf, "%s", cc2[opcode & 0xF]);
+}
+
+static int
+sprint_condition (info, buf, opcode)
+ disassemble_info *info;
+ char *buf;
+ unsigned short opcode;
+{
+ char *start = buf;
+ const char *cmp[] = {
+ "??", "??", "geq", "lt", "neq", "eq", "gt", "leq"
+ };
+ if (opcode & 0x40)
+ {
+ char acc = (opcode & 0x8) ? 'b' : 'a';
+ if (opcode & 0x7)
+ buf += sprintf (buf, "%c%s%s", acc, cmp[(opcode&0x7)],
+ (opcode&0x20) ? ", " : "");
+ if (opcode & 0x20)
+ buf += sprintf (buf, "%c%s", acc, (opcode&0x10) ? "ov" : "nov");
+ }
+ else if (opcode & 0x3F)
+ {
+ if (opcode & 0x30)
+ buf += sprintf (buf, "%s%s",
+ ((opcode & 0x30) == 0x30) ? "tc" : "ntc",
+ (opcode & 0x0F) ? ", " : "");
+ if (opcode & 0x0C)
+ buf += sprintf (buf, "%s%s",
+ ((opcode & 0x0C) == 0x0C) ? "c" : "nc",
+ (opcode & 0x03) ? ", " : "");
+ if (opcode & 0x03)
+ buf += sprintf (buf, "%s",
+ ((opcode & 0x03) == 0x03) ? "bio" : "nbio");
+ }
+ else
+ buf += sprintf (buf, "unc");
+
+ return buf - start;
+}
diff --git a/opcodes/tic54x-opc.c b/opcodes/tic54x-opc.c
new file mode 100644
index 00000000000..adf4b7e18bf
--- /dev/null
+++ b/opcodes/tic54x-opc.c
@@ -0,0 +1,476 @@
+/* Table of opcodes for the Texas Instruments TMS320C54X
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+ Contributed by Timothy Wall (twall@cygnus.com)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#include "sysdep.h"
+#include "opcode/tic54x.h"
+
+/* these are the only register names not found in mmregs */
+const symbol regs[] = {
+ { "AR0", 16 }, { "ar0", 16 },
+ { "AR1", 17 }, { "ar1", 17 },
+ { "AR2", 18 }, { "ar2", 18 },
+ { "AR3", 19 }, { "ar3", 19 },
+ { "AR4", 20 }, { "ar4", 20 },
+ { "AR5", 21 }, { "ar5", 21 },
+ { "AR6", 22 }, { "ar6", 22 },
+ { "AR7", 23 }, { "ar7", 23 },
+ { NULL, }
+};
+
+/* status bits, MM registers, condition codes, etc */
+/* some symbols are only valid for certain chips... */
+const symbol mmregs[] = {
+ { "IMR", 0 }, { "imr", 0 },
+ { "IFR", 1 }, { "ifr", 1 },
+ { "ST0", 6 }, { "st0", 6 },
+ { "ST1", 7 }, { "st1", 7 },
+ { "AL", 8 }, { "al", 8 },
+ { "AH", 9 }, { "ah", 9 },
+ { "AG", 10 }, { "ag", 10 },
+ { "BL", 11 }, { "bl", 11 },
+ { "BH", 12 }, { "bh", 12 },
+ { "BG", 13 }, { "bg", 13 },
+ { "T", 14 }, { "t", 14 },
+ { "TRN", 15 }, { "trn", 15 },
+ { "AR0", 16 }, { "ar0", 16 },
+ { "AR1", 17 }, { "ar1", 17 },
+ { "AR2", 18 }, { "ar2", 18 },
+ { "AR3", 19 }, { "ar3", 19 },
+ { "AR4", 20 }, { "ar4", 20 },
+ { "AR5", 21 }, { "ar5", 21 },
+ { "AR6", 22 }, { "ar6", 22 },
+ { "AR7", 23 }, { "ar7", 23 },
+ { "SP", 24 }, { "sp", 24 },
+ { "BK", 25 }, { "bk", 25 },
+ { "BRC", 26 }, { "brc", 26 },
+ { "RSA", 27 }, { "rsa", 27 },
+ { "REA", 28 }, { "rea", 28 },
+ { "PMST",29 }, { "pmst",29 },
+ { "XPC", 30 }, { "xpc", 30 }, /* 'c548 only */
+ /* optional peripherals */ /* optional peripherals */
+ { "M1F", 31 }, { "m1f", 31 },
+ { "DRR0",0x20 }, { "drr0",0x20 },
+ { "BDRR0",0x20 }, { "bdrr0",0x20 }, /* 'c543, 545 */
+ { "DXR0",0x21 }, { "dxr0",0x21 },
+ { "BDXR0",0x21 }, { "bdxr0",0x21 }, /* 'c543, 545 */
+ { "SPC0",0x22 }, { "spc0",0x22 },
+ { "BSPC0",0x22 }, { "bspc0",0x22 }, /* 'c543, 545 */
+ { "SPCE0",0x23 }, { "spce0",0x23 },
+ { "BSPCE0",0x23 }, { "bspce0",0x23 }, /* 'c543, 545 */
+ { "TIM", 0x24 }, { "tim", 0x24 },
+ { "PRD", 0x25 }, { "prd", 0x25 },
+ { "TCR", 0x26 }, { "tcr", 0x26 },
+ { "SWWSR",0x28 }, { "swwsr",0x28 },
+ { "BSCR",0x29 }, { "bscr",0x29 },
+ { "HPIC",0x2C }, { "hpic",0x2c },
+ /* 'c541, 'c545 */ /* 'c541, 'c545 */
+ { "DRR1",0x30 }, { "drr1",0x30 },
+ { "DXR1",0x31 }, { "dxr1",0x31 },
+ { "SPC1",0x32 }, { "spc1",0x32 },
+ /* 'c542, 'c543 */ /* 'c542, 'c543 */
+ { "TRCV",0x30 }, { "trcv",0x30 },
+ { "TDXR",0x31 }, { "tdxr",0x31 },
+ { "TSPC",0x32 }, { "tspc",0x32 },
+ { "TCSR",0x33 }, { "tcsr",0x33 },
+ { "TRTA",0x34 }, { "trta",0x34 },
+ { "TRAD",0x35 }, { "trad",0x35 },
+ { "AXR0",0x38 }, { "axr0",0x38 },
+ { "BKX0",0x39 }, { "bkx0",0x39 },
+ { "ARR0",0x3A }, { "arr0",0x3a },
+ { "BKR0",0x3B }, { "bkr0",0x3b },
+ /* 'c545, 'c546, 'c548 */ /* 'c545, 'c546, 'c548 */
+ { "CLKMD",0x58 }, { "clkmd",0x58 },
+ /* 'c548 */ /* 'c548 */
+ { "AXR1",0x3C }, { "axr1",0x3c },
+ { "BKX1",0x3D }, { "bkx1",0x3d },
+ { "ARR1",0x3E }, { "arr1",0x3e },
+ { "BKR1",0x3F }, { "bkr1",0x3f },
+ { "BDRR1",0x40 }, { "bdrr1",0x40 },
+ { "BDXR1",0x41 }, { "bdxr1",0x41 },
+ { "BSPC1",0x42 }, { "bspc1",0x42 },
+ { "BSPCE1",0x43 }, { "bspce1",0x43 },
+ { NULL },
+};
+
+const symbol condition_codes[] = {
+ /* condition codes */
+ { "UNC", 0 }, { "unc", 0 },
+#define CC1 0x40
+#define CCB 0x08
+#define CCEQ 0x05
+#define CCNEQ 0x04
+#define CCLT 0x03
+#define CCLEQ 0x07
+#define CCGT 0x06
+#define CCGEQ 0x02
+#define CCOV 0x70
+#define CCNOV 0x60
+#define CCBIO 0x03
+#define CCNBIO 0x02
+#define CCTC 0x30
+#define CCNTC 0x20
+#define CCC 0x0C
+#define CCNC 0x08
+ { "aeq", CC1|CCEQ }, { "AEQ", CC1|CCEQ },
+ { "aneq", CC1|CCNEQ }, { "ANEQ", CC1|CCNEQ },
+ { "alt", CC1|CCLT }, { "ALT", CC1|CCLT },
+ { "aleq", CC1|CCLEQ }, { "ALEQ", CC1|CCLEQ },
+ { "agt", CC1|CCGT }, { "AGT", CC1|CCGT },
+ { "ageq", CC1|CCGEQ }, { "AGEQ", CC1|CCGEQ },
+ { "aov", CC1|CCOV }, { "AOV", CC1|CCOV },
+ { "anov", CC1|CCNOV }, { "ANOV", CC1|CCNOV },
+ { "beq", CC1|CCB|CCEQ }, { "BEQ", CC1|CCB|CCEQ },
+ { "bneq", CC1|CCB|CCNEQ }, { "BNEQ", CC1|CCB|CCNEQ },
+ { "blt", CC1|CCB|CCLT }, { "BLT", CC1|CCB|CCLT },
+ { "bleq", CC1|CCB|CCLEQ }, { "BLEQ", CC1|CCB|CCLEQ },
+ { "bgt", CC1|CCB|CCGT }, { "BGT", CC1|CCB|CCGT },
+ { "bgeq", CC1|CCB|CCGEQ }, { "BGEQ", CC1|CCB|CCGEQ },
+ { "bov", CC1|CCB|CCOV }, { "BOV", CC1|CCB|CCOV },
+ { "bnov", CC1|CCB|CCNOV }, { "BNOV", CC1|CCB|CCNOV },
+ { "tc", CCTC }, { "TC", CCTC },
+ { "ntc", CCNTC }, { "NTC", CCNTC },
+ { "c", CCC }, { "C", CCC },
+ { "nc", CCNC }, { "NC", CCNC },
+ { "bio", CCBIO }, { "BIO", CCBIO },
+ { "nbio", CCNBIO }, { "NBIO", CCNBIO },
+ { NULL, }
+};
+
+const symbol cc2_codes[] = {
+ { "UNC", 0 }, { "unc", 0 },
+ { "AEQ", 5 }, { "aeq", 5 },
+ { "ANEQ", 4 }, { "aneq", 4 },
+ { "AGT", 6 }, { "agt", 6 },
+ { "ALT", 3 }, { "alt", 3 },
+ { "ALEQ", 7 }, { "aleq", 7 },
+ { "AGEQ", 2 }, { "ageq", 2 },
+ { "BEQ", 13 }, { "beq", 13 },
+ { "BNEQ", 12 },{ "bneq", 12 },
+ { "BGT", 14 }, { "bgt", 14 },
+ { "BLT", 11 }, { "blt", 11 },
+ { "BLEQ", 15 },{ "bleq", 15 },
+ { "BGEQ", 10 },{ "bgeq", 10 },
+ { NULL },
+};
+
+const symbol cc3_codes[] = {
+ { "EQ", 0x0000 }, { "eq", 0x0000 },
+ { "LT", 0x0100 }, { "lt", 0x0100 },
+ { "GT", 0x0200 }, { "gt", 0x0200 },
+ { "NEQ", 0x0300 }, { "neq", 0x0300 },
+ { "0", 0x0000 },
+ { "1", 0x0100 },
+ { "2", 0x0200 },
+ { "3", 0x0300 },
+ { "00", 0x0000 },
+ { "01", 0x0100 },
+ { "10", 0x0200 },
+ { "11", 0x0300 },
+ { NULL },
+};
+
+/* FIXME -- also allow decimal digits */
+const symbol status_bits[] = {
+ /* status register 0 */
+ { "TC", 12 }, { "tc", 12 },
+ { "C", 11 }, { "c", 11 },
+ { "OVA", 10 }, { "ova", 10 },
+ { "OVB", 9 }, { "ovb", 9 },
+ /* status register 1 */
+ { "BRAF",15 }, { "braf",15 },
+ { "CPL", 14 }, { "cpl", 14 },
+ { "XF", 13 }, { "xf", 13 },
+ { "HM", 12 }, { "hm", 12 },
+ { "INTM",11 }, { "intm",11 },
+ { "OVM", 9 }, { "ovm", 9 },
+ { "SXM", 8 }, { "sxm", 8 },
+ { "C16", 7 }, { "c16", 7 },
+ { "FRCT", 6 }, { "frct", 6 },
+ { "CMPT", 5 }, { "cmpt", 5 },
+ { NULL },
+};
+
+const char *misc_symbols[] = {
+ "ARP", "arp",
+ "DP", "dp",
+ "ASM", "asm",
+ "TS", "ts",
+ NULL
+};
+
+/* Due to the way instructions are hashed and scanned in
+ gas/config/tc-tic54x.c, all identically-named opcodes must be consecutively
+ placed
+
+ Items marked with "PREFER" have been moved prior to a more costly
+ instruction with a similar operand format.
+
+ Mnemonics which can take either a predefined symbol or a memory reference
+ as an argument are arranged so that the more restrictive (predefined
+ symbol) version is checked first (marked "SRC").
+*/
+const template tic54x_unknown_opcode =
+ { "???", 1,0,0,0x0000, 0x0000, {0}, };
+const template tic54x_optab[] = {
+ /* these must precede bc/bcd, cc/ccd to avoid misinterpretation */
+ { "fb", 2,1,1,0xF880, 0xFF80, {OP_xpmad}, B_BRANCH|FL_FAR|FL_NR, },
+ { "fbd", 2,1,1,0xFA80, 0xFF80, {OP_xpmad}, B_BRANCH|FL_FAR|FL_DELAY|FL_NR, },
+ { "fcall", 2,1,1,0xF980, 0xFF80, {OP_xpmad}, B_BRANCH|FL_FAR|FL_NR, },
+ { "fcalld",2,1,1,0xFB80, 0xFF80, {OP_xpmad}, B_BRANCH|FL_FAR|FL_DELAY|FL_NR, },
+
+ { "abdst", 1,2,2,0xE300, 0xFF00, {OP_Xmem,OP_Ymem}, },
+ { "abs", 1,1,2,0xF485, 0xFCFF, {OP_SRC,OPT|OP_DST}, },
+ { "add", 1,1,3,0xF400, 0xFCE0, {OP_SRC,OPT|OP_SHIFT,OPT|OP_DST}, },/*SRC*/
+ { "add", 1,2,3,0xF480, 0xFCFF, {OP_SRC,OP_ASM,OPT|OP_DST}, },/*SRC*/
+ { "add", 1,2,2,0x0000, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "add", 1,3,3,0x0400, 0xFE00, {OP_Smem,OP_TS,OP_SRC1}, FL_SMR },
+ { "add", 1,3,4,0x3C00, 0xFC00, {OP_Smem,OP_16,OP_SRC,OPT|OP_DST}, FL_SMR},
+ { "add", 1,3,3,0x9000, 0xFE00, {OP_Xmem,OP_SHFT,OP_SRC1}, },/*PREFER*/
+ { "add", 2,2,4,0x6F00, 0xFF00, {OP_Smem,OPT|OP_SHIFT,OP_SRC,OPT|OP_DST},
+ FL_EXT|FL_SMR, 0x0C00, 0xFCE0},
+ { "add", 1,3,3,0xA000, 0xFE00, {OP_Xmem,OP_Ymem,OP_DST}, },
+ { "add", 2,2,4,0xF000, 0xFCF0, {OP_lk,OPT|OP_SHIFT,OP_SRC,OPT|OP_DST}, },
+ { "add", 2,3,4,0xF060, 0xFCFF, {OP_lk,OP_16,OP_SRC,OPT|OP_DST}, },
+ { "addc", 1,2,2,0x0600, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "addm", 2,2,2,0x6B00, 0xFF00, {OP_lk,OP_Smem}, FL_NR|FL_SMR, },
+ { "adds", 1,2,2,0x0200, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "and", 1,1,3,0xF080, 0xFCE0, {OP_SRC,OPT|OP_SHIFT,OPT|OP_DST}, },
+ { "and", 1,2,2,0x1800, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "and", 2,2,4,0xF030, 0xFCF0, {OP_lk,OPT|OP_SHFT,OP_SRC,OPT|OP_DST}, },
+ { "and", 2,3,4,0xF063, 0xFCFF, {OP_lk,OP_16,OP_SRC,OPT|OP_DST}, },
+ { "andm", 2,2,2,0x6800, 0xFF00, {OP_lk,OP_Smem}, FL_NR, },
+ { "b", 2,1,1,0xF073, 0xFFFF, {OP_pmad}, B_BRANCH|FL_NR, },
+ { "bd", 2,1,1,0xF273, 0xFFFF, {OP_pmad}, B_BRANCH|FL_DELAY|FL_NR, },
+ { "bacc", 1,1,1,0xF4E2, 0xFEFF, {OP_SRC1}, B_BACC|FL_NR, },
+ { "baccd", 1,1,1,0xF6E2, 0xFEFF, {OP_SRC1}, B_BACC|FL_DELAY|FL_NR, },
+ { "banz", 2,2,2,0x6C00, 0xFF00, {OP_pmad,OP_Sind}, B_BRANCH|FL_NR, },
+ { "banzd", 2,2,2,0x6E00, 0xFF00, {OP_pmad,OP_Sind}, B_BRANCH|FL_DELAY|FL_NR, },
+ { "bc", 2,2,4,0xF800, 0xFF00, {OP_pmad,OP_CC,OPT|OP_CC,OPT|OP_CC},
+ B_BRANCH|FL_NR, },
+ { "bcd", 2,2,4,0xFA00, 0xFF00, {OP_pmad,OP_CC,OPT|OP_CC,OPT|OP_CC},
+ B_BRANCH|FL_DELAY|FL_NR, },
+ { "bit", 1,2,2,0x9600, 0xFF00, {OP_Xmem,OP_BITC}, },
+ { "bitf", 2,2,2,0x6100, 0xFF00, {OP_Smem,OP_lk}, FL_SMR },
+ { "bitt", 1,1,1,0x3400, 0xFF00, {OP_Smem}, FL_SMR },
+ { "cala", 1,1,1,0xF4E3, 0xFEFF, {OP_SRC1}, B_BACC|FL_NR, },
+ { "calad", 1,1,1,0xF6E3, 0xFEFF, {OP_SRC1}, B_BACC|FL_DELAY|FL_NR, },
+ { "call", 2,1,1,0xF074, 0xFFFF, {OP_pmad}, B_BRANCH|FL_NR, },
+ { "calld", 2,1,1,0xF274, 0xFFFF, {OP_pmad}, B_BRANCH|FL_DELAY|FL_NR, },
+ { "cc", 2,2,4,0xF900, 0xFF00, {OP_pmad,OP_CC,OPT|OP_CC,OPT|OP_CC},
+ B_BRANCH|FL_NR, },
+ { "ccd", 2,2,4,0xFB00, 0xFF00, {OP_pmad,OP_CC,OPT|OP_CC,OPT|OP_CC},
+ B_BRANCH|FL_DELAY|FL_NR, },
+ { "cmpl", 1,1,2,0xF493, 0xFCFF, {OP_SRC,OPT|OP_DST}, },
+ { "cmpm", 2,2,2,0x6000, 0xFF00, {OP_Smem,OP_lk}, FL_SMR },
+ { "cmpr", 1,2,2,0xF4A8, 0xFCF8, {OP_CC3,OP_ARX}, FL_NR, },
+ { "cmps", 1,2,2,0x8E00, 0xFE00, {OP_SRC1,OP_Smem}, },
+ { "dadd", 1,2,3,0x5000, 0xFC00, {OP_Lmem,OP_SRC,OPT|OP_DST}, },
+ { "dadst", 1,2,2,0x5A00, 0xFE00, {OP_Lmem,OP_DST}, },
+ { "delay", 1,1,1,0x4D00, 0xFF00, {OP_Smem}, FL_SMR },
+ { "dld", 1,2,2,0x5600, 0xFE00, {OP_Lmem,OP_DST}, },
+ { "drsub", 1,2,2,0x5800, 0xFE00, {OP_Lmem,OP_SRC1}, },
+ { "dsadt", 1,2,2,0x5E00, 0xFE00, {OP_Lmem,OP_DST}, },
+ { "dst", 1,2,2,0x4E00, 0xFE00, {OP_SRC1,OP_Lmem}, FL_NR, },
+ { "dsub", 1,2,2,0x5400, 0xFE00, {OP_Lmem,OP_SRC1}, },
+ { "dsubt", 1,2,2,0x5C00, 0xFE00, {OP_Lmem,OP_DST}, },
+ { "exp", 1,1,1,0xF48E, 0xFEFF, {OP_SRC1}, },
+ { "fbacc", 1,1,1,0xF4E6, 0xFEFF, {OP_SRC1}, B_BACC|FL_FAR|FL_NR, },
+ { "fbaccd",1,1,1,0xF6E6, 0xFEFF, {OP_SRC1}, B_BACC|FL_FAR|FL_DELAY|FL_NR, },
+ { "fcala", 1,1,1,0xF4E7, 0xFEFF, {OP_SRC1}, B_BACC|FL_FAR|FL_NR, },
+ { "fcalad",1,1,1,0xF6E7, 0xFEFF, {OP_SRC1}, B_BACC|FL_FAR|FL_DELAY|FL_NR, },
+ { "firs", 2,3,3,0xE000, 0xFF00, {OP_Xmem,OP_Ymem,OP_pmad}, },
+ { "frame", 1,1,1,0xEE00, 0xFF00, {OP_k8}, },
+ { "fret", 1,0,0,0xF4E4, 0xFFFF, {OP_None}, B_RET|FL_FAR|FL_NR, },
+ { "fretd", 1,0,0,0xF6E4, 0xFFFF, {OP_None}, B_RET|FL_FAR|FL_DELAY|FL_NR, },
+ { "frete", 1,0,0,0xF4E5, 0xFFFF, {OP_None}, B_RET|FL_FAR|FL_NR, },
+ { "freted",1,0,0,0xF6E5, 0xFFFF, {OP_None}, B_RET|FL_FAR|FL_DELAY|FL_NR, },
+ { "idle", 1,1,1,0xF4E1, 0xFCFF, {OP_123}, FL_NR, },
+ { "intr", 1,1,1,0xF7C0, 0xFFE0, {OP_031}, B_BRANCH|FL_NR, },
+ { "ld", 1,2,3,0xF482, 0xFCFF, {OP_SRC,OP_ASM,OPT|OP_DST}, },/*SRC*/
+ { "ld", 1,2,3,0xF440, 0xFCE0, {OP_SRC,OPT|OP_SHIFT,OP_DST}, },/*SRC*/
+ /* alternate syntax */
+ { "ld", 1,2,3,0xF440, 0xFCE0, {OP_SRC,OP_SHIFT,OPT|OP_DST}, },/*SRC*/
+ { "ld", 1,2,2,0xE800, 0xFE00, {OP_k8u,OP_DST}, },/*SRC*/
+ { "ld", 1,2,2,0xED00, 0xFFE0, {OP_k5,OP_ASM}, },/*SRC*/
+ { "ld", 1,2,2,0xF4A0, 0xFFF8, {OP_k3,OP_ARP}, FL_NR, },/*SRC*/
+ { "ld", 1,2,2,0xEA00, 0xFE00, {OP_k9,OP_DP}, FL_NR, },/*PREFER */
+ { "ld", 1,2,2,0x3000, 0xFF00, {OP_Smem,OP_T}, FL_SMR },/*SRC*/
+ { "ld", 1,2,2,0x4600, 0xFF00, {OP_Smem,OP_DP}, FL_SMR },/*SRC*/
+ { "ld", 1,2,2,0x3200, 0xFF00, {OP_Smem,OP_ASM}, FL_SMR },/*SRC*/
+ { "ld", 1,2,2,0x1000, 0xFE00, {OP_Smem,OP_DST}, FL_SMR },
+ { "ld", 1,3,3,0x1400, 0xFE00, {OP_Smem,OP_TS,OP_DST}, FL_SMR },
+ { "ld", 1,3,3,0x4400, 0xFE00, {OP_Smem,OP_16,OP_DST}, FL_SMR },
+ { "ld", 1,3,3,0x9400, 0xFE00, {OP_Xmem,OP_SHFT,OP_DST}, },/*PREFER*/
+ { "ld", 2,2,3,0x6F00, 0xFF00, {OP_Smem,OPT|OP_SHIFT,OP_DST},
+ FL_EXT|FL_SMR, 0x0C40, 0xFEE0 },
+ { "ld", 2,2,3,0xF020, 0xFEF0, {OP_lk,OPT|OP_SHFT,OP_DST}, },
+ { "ld", 2,3,3,0xF062, 0xFEFF, {OP_lk,OP_16,OP_DST}, },
+ { "ldm", 1,2,2,0x4800, 0xFE00, {OP_MMR,OP_DST}, },
+ { "ldr", 1,2,2,0x1600, 0xFE00, {OP_Smem,OP_DST}, FL_SMR },
+ { "ldu", 1,2,2,0x1200, 0xFE00, {OP_Smem,OP_DST}, FL_SMR },
+ { "ldx", 2,3,3,0xF062, 0xFEFF, {OP_xpmad_ms7,OP_16,OP_DST}, FL_FAR},/*pseudo-op*/
+ { "lms", 1,2,2,0xE100, 0xFF00, {OP_Xmem,OP_Ymem}, },
+ { "ltd", 1,1,1,0x4C00, 0xFF00, {OP_Smem}, FL_SMR },
+ { "mac", 1,2,2,0x2800, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "mac", 1,3,4,0xB000, 0xFC00, {OP_Xmem,OP_Ymem,OP_SRC,OPT|OP_DST}, },
+ { "mac", 2,2,3,0xF067, 0xFCFF, {OP_lk,OP_SRC,OPT|OP_DST}, },
+ { "mac", 2,3,4,0x6400, 0xFC00, {OP_Smem,OP_lk,OP_SRC,OPT|OP_DST}, FL_SMR },
+ { "macr", 1,2,2,0x2A00, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "macr", 1,3,4,0xB400, 0xFC00, {OP_Xmem,OP_Ymem,OP_SRC,OPT|OP_DST},FL_SMR},
+ { "maca", 1,2,3,0xF488, 0xFCFF, {OP_T,OP_SRC,OPT|OP_DST}, FL_SMR },/*SRC*/
+ { "maca", 1,1,2,0x3500, 0xFF00, {OP_Smem,OPT|OP_B}, FL_SMR },
+ { "macar", 1,2,3,0xF489, 0xFCFF, {OP_T,OP_SRC,OPT|OP_DST}, FL_SMR },/*SRC*/
+ { "macar", 1,1,2,0x3700, 0xFF00, {OP_Smem,OPT|OP_B}, FL_SMR },
+ { "macd", 2,3,3,0x7A00, 0xFE00, {OP_Smem,OP_pmad,OP_SRC1}, FL_SMR },
+ { "macp", 2,3,3,0x7800, 0xFE00, {OP_Smem,OP_pmad,OP_SRC1}, FL_SMR },
+ { "macsu", 1,3,3,0xA600, 0xFE00, {OP_Xmem,OP_Ymem,OP_SRC1}, },
+ { "mar", 1,1,1,0x6D00, 0xFF00, {OP_Smem}, },
+ { "mas", 1,2,2,0x2C00, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "mas", 1,3,4,0xB800, 0xFC00, {OP_Xmem,OP_Ymem,OP_SRC,OPT|OP_DST}, },
+ { "masr", 1,2,2,0x2E00, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "masr", 1,3,4,0xBC00, 0xFC00, {OP_Xmem,OP_Ymem,OP_SRC,OPT|OP_DST}, },
+ { "masa", 1,2,3,0xF48A, 0xFCFF, {OP_T,OP_SRC,OPT|OP_DST}, },/*SRC*/
+ { "masa", 1,1,2,0x3300, 0xFF00, {OP_Smem,OPT|OP_B}, FL_SMR },
+ { "masar", 1,2,3,0xF48B, 0xFCFF, {OP_T,OP_SRC,OPT|OP_DST}, },
+ { "max", 1,1,1,0xF486, 0xFEFF, {OP_DST}, },
+ { "min", 1,1,1,0xF487, 0xFEFF, {OP_DST}, },
+ { "mpy", 1,2,2,0x2000, 0xFE00, {OP_Smem,OP_DST}, FL_SMR },
+ { "mpy", 1,3,3,0xA400, 0xFE00, {OP_Xmem,OP_Ymem,OP_DST}, },
+ { "mpy", 2,3,3,0x6200, 0xFE00, {OP_Smem,OP_lk,OP_DST}, FL_SMR },
+ { "mpy", 2,2,2,0xF066, 0xFEFF, {OP_lk,OP_DST}, },
+ { "mpyr", 1,2,2,0x2200, 0xFE00, {OP_Smem,OP_DST}, FL_SMR },
+ { "mpya", 1,1,1,0xF48C, 0xFEFF, {OP_DST}, }, /*SRC*/
+ { "mpya", 1,1,1,0x3100, 0xFF00, {OP_Smem}, FL_SMR },
+ { "mpyu", 1,2,2,0x2400, 0xFE00, {OP_Smem,OP_DST}, FL_SMR },
+ { "mvdd", 1,2,2,0xE500, 0xFF00, {OP_Xmem,OP_Ymem}, },
+ { "mvdk", 2,2,2,0x7100, 0xFF00, {OP_Smem,OP_dmad}, FL_SMR },
+ { "mvdm", 2,2,2,0x7200, 0xFF00, {OP_dmad,OP_MMR}, },
+ { "mvdp", 2,2,2,0x7D00, 0xFF00, {OP_Smem,OP_pmad}, FL_SMR },
+ { "mvkd", 2,2,2,0x7000, 0xFF00, {OP_dmad,OP_Smem}, },
+ { "mvmd", 2,2,2,0x7300, 0xFF00, {OP_MMR,OP_dmad}, },
+ { "mvmm", 1,2,2,0xE700, 0xFF00, {OP_MMRX,OP_MMRY}, FL_NR, },
+ { "mvpd", 2,2,2,0x7C00, 0xFF00, {OP_pmad,OP_Smem}, },
+ { "neg", 1,1,2,0xF484, 0xFCFF, {OP_SRC,OPT|OP_DST}, },
+ { "nop", 1,0,0,0xF495, 0xFFFF, {OP_None}, },
+ { "norm", 1,1,2,0xF48F, 0xFCFF, {OP_SRC,OPT|OP_DST}, },
+ { "or", 1,1,3,0xF0A0, 0xFCE0, {OP_SRC,OPT|OP_SHIFT,OPT|OP_DST}, },/*SRC*/
+ { "or", 1,2,2,0x1A00, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "or", 2,2,4,0xF040, 0xFCF0, {OP_lk,OPT|OP_SHFT,OP_SRC,OPT|OP_DST}, },
+ { "or", 2,3,4,0xF064, 0xFCFF, {OP_lk,OP_16,OP_SRC,OPT|OP_DST}, },
+ { "orm", 2,2,2,0x6900, 0xFF00, {OP_lk,OP_Smem}, FL_NR|FL_SMR, },
+ { "poly", 1,1,1,0x3600, 0xFF00, {OP_Smem}, FL_SMR },
+ { "popd", 1,1,1,0x8B00, 0xFF00, {OP_Smem}, },
+ { "popm", 1,1,1,0x8A00, 0xFF00, {OP_MMR}, },
+ { "portr", 2,2,2,0x7400, 0xFF00, {OP_PA,OP_Smem}, },
+ { "portw", 2,2,2,0x7500, 0xFF00, {OP_Smem,OP_PA}, FL_SMR },
+ { "pshd", 1,1,1,0x4B00, 0xFF00, {OP_Smem}, FL_SMR },
+ { "pshm", 1,1,1,0x4A00, 0xFF00, {OP_MMR}, },
+ { "ret", 1,0,0,0xFC00, 0xFFFF, {OP_None}, B_RET|FL_NR, },
+ { "retd", 1,0,0,0xFE00, 0xFFFF, {OP_None}, B_RET|FL_DELAY|FL_NR, },
+ { "rc", 1,1,3,0xFC00, 0xFF00, {OP_CC,OPT|OP_CC,OPT|OP_CC},
+ B_RET|FL_NR, },
+ { "rcd", 1,1,3,0xFE00, 0xFF00, {OP_CC,OPT|OP_CC,OPT|OP_CC},
+ B_RET|FL_DELAY|FL_NR, },
+ { "reada", 1,1,1,0x7E00, 0xFF00, {OP_Smem}, },
+ { "reset", 1,0,0,0xF7E0, 0xFFFF, {OP_None}, FL_NR, },
+ { "rete", 1,0,0,0xF4EB, 0xFFFF, {OP_None}, B_RET|FL_NR, },
+ { "reted", 1,0,0,0xF6EB, 0xFFFF, {OP_None}, B_RET|FL_DELAY|FL_NR, },
+ { "retf", 1,0,0,0xF49B, 0xFFFF, {OP_None}, B_RET|FL_NR, },
+ { "retfd", 1,0,0,0xF69B, 0xFFFF, {OP_None}, B_RET|FL_DELAY|FL_NR, },
+ { "rnd", 1,1,2,0xF49F, 0xFCFF, {OP_SRC,OPT|OP_DST}, FL_LP|FL_NR },
+ { "rol", 1,1,1,0xF491, 0xFEFF, {OP_SRC1}, },
+ { "roltc", 1,1,1,0xF492, 0xFEFF, {OP_SRC1}, },
+ { "ror", 1,1,1,0xF490, 0xFEFF, {OP_SRC1}, },
+ { "rpt", 1,1,1,0x4700, 0xFF00, {OP_Smem}, B_REPEAT|FL_NR|FL_SMR, },
+ { "rpt", 1,1,1,0xEC00, 0xFF00, {OP_k8u}, B_REPEAT|FL_NR, },
+ { "rpt", 2,1,1,0xF070, 0xFFFF, {OP_lku}, B_REPEAT|FL_NR, },
+ { "rptb", 2,1,1,0xF072, 0xFFFF, {OP_pmad}, FL_NR, },
+ { "rptbd", 2,1,1,0xF272, 0xFFFF, {OP_pmad}, FL_DELAY|FL_NR, },
+ { "rptz", 2,2,2,0xF071, 0xFEFF, {OP_DST,OP_lku}, B_REPEAT|FL_NR, },
+ { "rsbx", 1,1,2,0xF4B0, 0xFDF0, {OPT|OP_N,OP_SBIT}, FL_NR, },
+ { "saccd", 1,3,3,0x9E00, 0xFE00, {OP_SRC1,OP_Xmem,OP_CC2}, },
+ { "sat", 1,1,1,0xF483, 0xFEFF, {OP_SRC1}, },
+ { "sfta", 1,2,3,0xF460, 0xFCE0, {OP_SRC,OP_SHIFT,OPT|OP_DST}, },
+ { "sftc", 1,1,1,0xF494, 0xFEFF, {OP_SRC1}, },
+ { "sftl", 1,2,3,0xF0E0, 0xFCE0, {OP_SRC,OP_SHIFT,OPT|OP_DST}, },
+ { "sqdst", 1,2,2,0xE200, 0xFF00, {OP_Xmem,OP_Ymem}, },
+ { "squr", 1,2,2,0xF48D, 0xFEFF, {OP_A,OP_DST}, },/*SRC*/
+ { "squr", 1,2,2,0x2600, 0xFE00, {OP_Smem,OP_DST}, FL_SMR },
+ { "squra", 1,2,2,0x3800, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "squrs", 1,2,2,0x3A00, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "srccd", 1,2,2,0x9D00, 0xFF00, {OP_Xmem,OP_CC2}, },
+ { "ssbx", 1,1,2,0xF5B0, 0xFDF0, {OPT|OP_N,OP_SBIT}, FL_NR, },
+ { "st", 1,2,2,0x8C00, 0xFF00, {OP_T,OP_Smem}, },
+ { "st", 1,2,2,0x8D00, 0xFF00, {OP_TRN,OP_Smem}, },
+ { "st", 2,2,2,0x7600, 0xFF00, {OP_lk,OP_Smem}, },
+ { "sth", 1,2,2,0x8200, 0xFE00, {OP_SRC1,OP_Smem}, },
+ { "sth", 1,3,3,0x8600, 0xFE00, {OP_SRC1,OP_ASM,OP_Smem}, },
+ { "sth", 1,3,3,0x9A00, 0xFE00, {OP_SRC1,OP_SHFT,OP_Xmem}, },
+ { "sth", 2,2,3,0x6F00, 0xFF00, {OP_SRC1,OPT|OP_SHIFT,OP_Smem},
+ FL_EXT, 0x0C60, 0xFEE0 },
+ { "stl", 1,2,2,0x8000, 0xFE00, {OP_SRC1,OP_Smem}, },
+ { "stl", 1,3,3,0x8400, 0xFE00, {OP_SRC1,OP_ASM,OP_Smem}, },
+ { "stl", 1,3,3,0x9800, 0xFE00, {OP_SRC1,OP_SHFT,OP_Xmem}, },
+ { "stl", 2,2,3,0x6F00, 0xFF00, {OP_SRC1,OPT|OP_SHIFT,OP_Smem},
+ FL_EXT, 0x0C80, 0xFEE0 },
+ { "stlm", 1,2,2,0x8800, 0xFE00, {OP_SRC1,OP_MMR}, },
+ { "stm", 2,2,2,0x7700, 0xFF00, {OP_lk,OP_MMR}, },
+ { "strcd", 1,2,2,0x9C00, 0xFF00, {OP_Xmem,OP_CC2}, },
+ { "sub", 1,1,3,0xF420, 0xFCE0, {OP_SRC,OPT|OP_SHIFT,OPT|OP_DST}, },/*SRC*/
+ { "sub", 1,2,3,0xF481, 0xFCFF, {OP_SRC,OP_ASM,OPT|OP_DST}, },/*SRC*/
+ { "sub", 1,2,2,0x0800, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "sub", 1,3,3,0x0C00, 0xFE00, {OP_Smem,OP_TS,OP_SRC1}, FL_SMR },
+ { "sub", 1,3,4,0x4000, 0xFC00, {OP_Smem,OP_16,OP_SRC,OPT|OP_DST}, FL_SMR },
+ { "sub", 1,3,3,0x9200, 0xFE00, {OP_Xmem,OP_SHFT,OP_SRC1}, }, /*PREFER*/
+ { "sub", 2,2,4,0x6F00, 0xFF00, {OP_Smem,OPT|OP_SHIFT,OP_SRC,OPT|OP_DST},
+ FL_EXT|FL_SMR, 0x0C20, 0xFCE0 },
+ { "sub", 1,3,3,0xA200, 0xFE00, {OP_Xmem,OP_Ymem,OP_DST}, },
+ { "sub", 2,2,4,0xF010, 0xFCF0, {OP_lk,OPT|OP_SHFT,OP_SRC,OPT|OP_DST}, },
+ { "sub", 2,3,4,0xF061, 0xFCFF, {OP_lk,OP_16,OP_SRC,OPT|OP_DST}, },
+ { "subb", 1,2,2,0x0E00, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "subc", 1,2,2,0x1E00, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "subs", 1,2,2,0x0A00, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "trap", 1,1,1,0xF4C0, 0xFFE0, {OP_031}, B_BRANCH|FL_NR, },
+ { "writa", 1,1,1,0x7F00, 0xFF00, {OP_Smem}, FL_SMR },
+ { "xc", 1,2,4,0xFD00, 0xFD00, {OP_12,OP_CC,OPT|OP_CC,OPT|OP_CC}, FL_NR, },
+ { "xor", 1,1,3,0xF0C0, 0xFCE0, {OP_SRC,OPT|OP_SHIFT,OPT|OP_DST}, },/*SRC*/
+ { "xor", 1,2,2,0x1C00, 0xFE00, {OP_Smem,OP_SRC1}, FL_SMR },
+ { "xor", 2,2,4,0xF050, 0xFCF0, {OP_lku,OPT|OP_SHFT,OP_SRC,OPT|OP_DST}, },
+ { "xor", 2,3,4,0xF065, 0xFCFF, {OP_lku,OP_16,OP_SRC,OPT|OP_DST}, },
+ { "xorm", 2,2,2,0x6A00, 0xFF00, {OP_lku,OP_Smem}, FL_NR|FL_SMR, },
+ { NULL, },
+};
+
+/* assume all parallel instructions have at least three operands */
+const partemplate tic54x_paroptab[] = {
+ { "ld","mac", 1,1,2,0xA800, 0xFE00, {OP_Xmem,OP_DST},{OP_Ymem,OPT|OP_RND},},
+ { "ld","macr",1,1,2,0xAA00, 0xFE00, {OP_Xmem,OP_DST},{OP_Ymem,OPT|OP_RND},},
+ { "ld","mas", 1,1,2,0xAC00, 0xFE00, {OP_Xmem,OP_DST},{OP_Ymem,OPT|OP_RND},},
+ { "ld","masr",1,1,2,0xAE00, 0xFE00, {OP_Xmem,OP_DST},{OP_Ymem,OPT|OP_RND},},
+ { "st","add", 1,2,2,0xC000, 0xFC00, {OP_SRC,OP_Ymem},{OP_Xmem,OP_DST}, },
+ { "st","ld", 1,2,2,0xC800, 0xFC00, {OP_SRC,OP_Ymem},{OP_Xmem,OP_DST}, },
+ { "st","ld", 1,2,2,0xE400, 0xFC00, {OP_SRC,OP_Ymem},{OP_Xmem,OP_T}, },
+ { "st","mac", 1,2,2,0xD000, 0xFC00, {OP_SRC,OP_Ymem},{OP_Xmem,OP_DST}, },
+ { "st","macr",1,2,2,0xD400, 0xFC00, {OP_SRC,OP_Ymem},{OP_Xmem,OP_DST}, },
+ { "st","mas", 1,2,2,0xD800, 0xFC00, {OP_SRC,OP_Ymem},{OP_Xmem,OP_DST}, },
+ { "st","masr",1,2,2,0xDC00, 0xFC00, {OP_SRC,OP_Ymem},{OP_Xmem,OP_DST}, },
+ { "st","mpy", 1,2,2,0xCC00, 0xFC00, {OP_SRC,OP_Ymem},{OP_Xmem,OP_DST}, },
+ { "st","sub", 1,2,2,0xC400, 0xFC00, {OP_SRC,OP_Ymem},{OP_Xmem,OP_DST}, },
+ { NULL,NULL },
+};
diff --git a/opcodes/tic80-dis.c b/opcodes/tic80-dis.c
index 726bc12e881..449ce8f7fba 100644
--- a/opcodes/tic80-dis.c
+++ b/opcodes/tic80-dis.c
@@ -17,7 +17,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/tic80.h"
#include "dis-asm.h"
diff --git a/opcodes/tic80-opc.c b/opcodes/tic80-opc.c
index 425c308ba64..4cdd06a64ff 100644
--- a/opcodes/tic80-opc.c
+++ b/opcodes/tic80-opc.c
@@ -19,7 +19,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/tic80.h"
/* This file holds various tables for the TMS320C80 (MVP).
diff --git a/opcodes/v850-dis.c b/opcodes/v850-dis.c
index 610625b6a19..d817f80bceb 100644
--- a/opcodes/v850-dis.c
+++ b/opcodes/v850-dis.c
@@ -18,7 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/v850.h"
#include "dis-asm.h"
#include "opintl.h"
diff --git a/opcodes/v850-opc.c b/opcodes/v850-opc.c
index d34857efa10..874db1b6ee9 100644
--- a/opcodes/v850-opc.c
+++ b/opcodes/v850-opc.c
@@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-#include "ansidecl.h"
+#include "sysdep.h"
#include "opcode/v850.h"
#include <stdio.h>
#include "opintl.h"
diff --git a/opcodes/vax-dis.c b/opcodes/vax-dis.c
index 54b59f30d40..29641f1768f 100644
--- a/opcodes/vax-dis.c
+++ b/opcodes/vax-dis.c
@@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+#include "sysdep.h"
#include "opcode/vax.h"
#include "dis-asm.h"
diff --git a/opcodes/w65-dis.c b/opcodes/w65-dis.c
index a12e896de67..309bd5aa0f4 100644
--- a/opcodes/w65-dis.c
+++ b/opcodes/w65-dis.c
@@ -16,6 +16,7 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
+#include "sysdep.h"
#define STATIC_TABLE
#define DEFINE_TABLE
diff --git a/opcodes/z8k-dis.c b/opcodes/z8k-dis.c
index 7123622a291..590f9d30bf0 100644
--- a/opcodes/z8k-dis.c
+++ b/opcodes/z8k-dis.c
@@ -17,7 +17,6 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-#include <ansidecl.h>
#include "sysdep.h"
#include "dis-asm.h"
diff --git a/opcodes/z8kgen.c b/opcodes/z8kgen.c
index e786bbb4c3d..44df0b2ec0d 100644
--- a/opcodes/z8kgen.c
+++ b/opcodes/z8kgen.c
@@ -18,7 +18,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* This program generates z8k-opc.h */
-#include <ansidecl.h>
#include "sysdep.h"
#define BYTE_INFO_LEN 10
diff --git a/readline/doc/ChangeLog b/readline/doc/ChangeLog
index 3a132d13b8c..3c26ae543f2 100644
--- a/readline/doc/ChangeLog
+++ b/readline/doc/ChangeLog
@@ -1,3 +1,8 @@
+Tue Apr 18 15:43:52 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * readline.0: Delete. Generated by Makefile, deleted by distclean
+ rule.
+
Tue Mar 28 16:06:22 2000 Andrew Cagney <cagney@b1.cygnus.com>
* inc-hist.texinfo, rluser.texinfo: Revert change Fri Mar 24
diff --git a/readline/doc/readline.0 b/readline/doc/readline.0
deleted file mode 100644
index 970d8c6d0c7..00000000000
--- a/readline/doc/readline.0
+++ /dev/null
@@ -1,1188 +0,0 @@
-
-
-
-READLINE(3) READLINE(3)
-
-
-NNAAMMEE
- readline - get a line from a user with editing
-
-SSYYNNOOPPSSIISS
- ##iinncclluuddee <<ssttddiioo..hh>>
- ##iinncclluuddee <<rreeaaddlliinnee..hh>>
- ##iinncclluuddee <<hhiissttoorryy..hh>>
-
- cchhaarr **rreeaaddlliinnee ((pprroommpptt))
- cchhaarr **pprroommpptt;;
-
-CCOOPPYYRRIIGGHHTT
- Readline is Copyright (C) 1989, 1991, 1993, 1995, 1996 by
- the Free Software Foundation, Inc.
-
-DDEESSCCRRIIPPTTIIOONN
- rreeaaddlliinnee will read a line from the terminal and return it,
- using pprroommpptt as a prompt. If pprroommpptt is null, no prompt is
- issued. The line returned is allocated with _m_a_l_l_o_c(3), so
- the caller must free it when finished. The line returned
- has the final newline removed, so only the text of the
- line remains.
-
- rreeaaddlliinnee offers editing capabilities while the user is
- entering the line. By default, the line editing commands
- are similar to those of emacs. A vi-style line editing
- interface is also available.
-
-RREETTUURRNN VVAALLUUEE
- rreeaaddlliinnee returns the text of the line read. A blank line
- returns the empty string. If EEOOFF is encountered while
- reading a line, and the line is empty, NNUULLLL is returned.
- If an EEOOFF is read with a non-empty line, it is treated as
- a newline.
-
-NNOOTTAATTIIOONN
- An emacs-style notation is used to denote keystrokes.
- Control keys are denoted by C-_k_e_y, e.g., C-n means Con-
- trol-N. Similarly, _m_e_t_a keys are denoted by M-_k_e_y, so M-x
- means Meta-X. (On keyboards without a _m_e_t_a key, M-_x means
- ESC _x, i.e., press the Escape key then the _x key. This
- makes ESC the _m_e_t_a _p_r_e_f_i_x. The combination M-C-_x means
- ESC-Control-_x, or press the Escape key then hold the Con-
- trol key while pressing the _x key.)
-
- Readline commands may be given numeric _a_r_g_u_m_e_n_t_s, which
- normally act as a repeat count. Sometimes, however, it is
- the sign of the argument that is significant. Passing a
- negative argument to a command that acts in the forward
- direction (e.g., kkiillll--lliinnee) causes that command to act in
- a backward direction. Commands whose behavior with argu-
- ments deviates from this are noted.
-
- When a command is described as _k_i_l_l_i_n_g text, the text
-
-
-
-GNU 1998 Dec 31 1
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- deleted is saved for possible future retrieval (_y_a_n_k_i_n_g).
- The killed text is saved in a _k_i_l_l _r_i_n_g. Consecutive
- kills cause the text to be accumulated into one unit,
- which can be yanked all at once. Commands which do not
- kill text separate the chunks of text on the kill ring.
-
-IINNIITTIIAALLIIZZAATTIIOONN FFIILLEE
- Readline is customized by putting commands in an initial-
- ization file (the _i_n_p_u_t_r_c file). The name of this file is
- taken from the value of the IINNPPUUTTRRCC environment variable.
- If that variable is unset, the default is _~_/_._i_n_p_u_t_r_c.
- When a program which uses the readline library starts up,
- the init file is read, and the key bindings and variables
- are set. There are only a few basic constructs allowed in
- the readline init file. Blank lines are ignored. Lines
- beginning with a ## are comments. Lines beginning with a $$
- indicate conditional constructs. Other lines denote key
- bindings and variable settings. Each program using this
- library may add its own commands and bindings.
-
- For example, placing
-
- M-Control-u: universal-argument
- or
- C-Meta-u: universal-argument
- into the _i_n_p_u_t_r_c would make M-C-u execute the readline
- command _u_n_i_v_e_r_s_a_l_-_a_r_g_u_m_e_n_t.
-
- The following symbolic character names are recognized
- while processing key bindings: _R_U_B_O_U_T, _D_E_L, _E_S_C, _L_F_D, _N_E_W_-
- _L_I_N_E, _R_E_T, _R_E_T_U_R_N, _S_P_C, _S_P_A_C_E, and _T_A_B. In addition to
- command names, readline allows keys to be bound to a
- string that is inserted when the key is pressed (a _m_a_c_r_o).
-
-
- KKeeyy BBiinnddiinnggss
- The syntax for controlling key bindings in the _i_n_p_u_t_r_c
- file is simple. All that is required is the name of the
- command or the text of a macro and a key sequence to which
- it should be bound. The name may be specified in one of
- two ways: as a symbolic key name, possibly with _M_e_t_a_- or
- _C_o_n_t_r_o_l_- prefixes, or as a key sequence. When using the
- form kkeeyynnaammee:_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, _k_e_y_n_a_m_e is the name
- of a key spelled out in English. For example:
-
- Control-u: universal-argument
- Meta-Rubout: backward-kill-word
- Control-o: ">&output"
-
- In the above example, _C_-_u is bound to the function uunniivveerr--
- ssaall--aarrgguummeenntt, _M_-_D_E_L is bound to the function bbaacckk--
- wwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to run the macro
- expressed on the right hand side (that is, to insert the
- text _>_&_o_u_t_p_u_t into the line).
-
-
-
-GNU 1998 Dec 31 2
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyy--
- sseeqq differs from kkeeyynnaammee above in that strings denoting an
- entire key sequence may be specified by placing the
- sequence within double quotes. Some GNU Emacs style key
- escapes can be used, as in the following example.
-
- "\C-u": universal-argument
- "\C-x\C-r": re-read-init-file
- "\e[11~": "Function Key 1"
-
- In this example, _C_-_u is again bound to the function uunnii--
- vveerrssaall--aarrgguummeenntt. _C_-_x _C_-_r is bound to the function
- rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is bound to insert the
- text FFuunnccttiioonn KKeeyy 11. The full set of GNU Emacs style
- escape sequences is
- \\CC-- control prefix
- \\MM-- meta prefix
- \\ee an escape character
- \\\\ backslash
- \\"" literal "
- \\'' literal '
-
- In addition to the GNU Emacs style escape sequences, a
- second set of backslash escapes is available:
- \\aa alert (bell)
- \\bb backspace
- \\dd delete
- \\ff form feed
- \\nn newline
- \\rr carriage return
- \\tt horizontal tab
- \\vv vertical tab
- \\_n_n_n the character whose ASCII code is the octal
- value _n_n_n (one to three digits)
- \\xx_n_n_n the character whose ASCII code is the hex-
- adecimal value _n_n_n (one to three digits)
-
- When entering the text of a macro, single or double quotes
- should be used to indicate a macro definition. Unquoted
- text is assumed to be a function name. In the macro body,
- the backslash escapes described above are expanded. Back-
- slash will quote any other character in the macro text,
- including " and '.
-
- BBaasshh allows the current readline key bindings to be dis-
- played or modified with the bbiinndd builtin command. The
- editing mode may be switched during interactive use by
- using the --oo option to the sseett builtin command. Other
- programs using this library provide similar mechanisms.
- The _i_n_p_u_t_r_c file may be edited and re-read if a program
- does not provide any other means to incorporate new bind-
- ings.
-
-
-
-
-
-GNU 1998 Dec 31 3
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- VVaarriiaabblleess
- Readline has variables that can be used to further cus-
- tomize its behavior. A variable may be set in the _i_n_p_u_t_r_c
- file with a statement of the form
-
- sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e
-
- Except where noted, readline variables can take the values
- OOnn or OOffff. The variables and their default values are:
-
- bbeellll--ssttyyllee ((aauuddiibbllee))
- Controls what happens when readline wants to ring
- the terminal bell. If set to nnoonnee, readline never
- rings the bell. If set to vviissiibbllee, readline uses a
- visible bell if one is available. If set to aauuddii--
- bbllee, readline attempts to ring the terminal's bell.
- ccoommmmeenntt--bbeeggiinn ((````##''''))
- The string that is inserted in vvii mode when the
- iinnsseerrtt--ccoommmmeenntt command is executed. This command
- is bound to MM--## in emacs mode and to ## in vi com-
- mand mode.
- ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff))
- If set to OOnn, readline performs filename matching
- and completion in a case-insensitive fashion.
- ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000))
- This determines when the user is queried about
- viewing the number of possible completions gener-
- ated by the ppoossssiibbllee--ccoommpplleettiioonnss command. It may
- be set to any integer value greater than or equal
- to zero. If the number of possible completions is
- greater than or equal to the value of this vari-
- able, the user is asked whether or not he wishes to
- view them; otherwise they are simply listed on the
- terminal.
- ccoonnvveerrtt--mmeettaa ((OOnn))
- If set to OOnn, readline will convert characters with
- the eighth bit set to an ASCII key sequence by
- stripping the eighth bit and prepending an escape
- character (in effect, using escape as the _m_e_t_a _p_r_e_-
- _f_i_x).
- ddiissaabbllee--ccoommpplleettiioonn ((OOffff))
- If set to OOnn, readline will inhibit word comple-
- tion. Completion characters will be inserted into
- the line as if they had been mapped to sseellff--iinnsseerrtt.
- eeddiittiinngg--mmooddee ((eemmaaccss))
- Controls whether readline begins with a set of key
- bindings similar to _e_m_a_c_s or _v_i. eeddiittiinngg--mmooddee can
- be set to either eemmaaccss or vvii.
- eennaabbllee--kkeeyyppaadd ((OOffff))
- When set to OOnn, readline will try to enable the
- application keypad when it is called. Some systems
- need this to enable the arrow keys.
- eexxppaanndd--ttiillddee ((OOffff))
- If set to oonn, tilde expansion is performed when
-
-
-
-GNU 1998 Dec 31 4
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- readline attempts word completion.
- hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff))
- When set to OOnn, makes readline use a single line
- for display, scrolling the input horizontally on a
- single screen line when it becomes longer than the
- screen width rather than wrapping to a new line.
- iinnppuutt--mmeettaa ((OOffff))
- If set to OOnn, readline will enable eight-bit input
- (that is, it will not strip the high bit from the
- characters it reads), regardless of what the termi-
- nal claims it can support. The name mmeettaa--ffllaagg is a
- synonym for this variable.
- iisseeaarrcchh--tteerrmmiinnaattoorrss ((````CC--[[CC--JJ''''))
- The string of characters that should terminate an
- incremental search without subsequently executing
- the character as a command. If this variable has
- not been given a value, the characters _E_S_C and _C_-_J
- will terminate an incremental search.
- kkeeyymmaapp ((eemmaaccss))
- Set the current readline keymap. The set of legal
- keymap names is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_,
- _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, and _v_i_-_i_n_s_e_r_t.
- _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is equivalent
- to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the
- value of eeddiittiinngg--mmooddee also affects the default
- keymap.
- mmaarrkk--ddiirreeccttoorriieess ((OOnn))
- If set to OOnn, complete<d directory names have a
- slash appended.
- mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff))
- If set to OOnn, history lines that have been modified
- are displayed with a preceding asterisk (**).
- oouuttppuutt--mmeettaa ((OOffff))
- If set to OOnn, readline will display characters with
- the eighth bit set directly rather than as a meta-
- prefixed escape sequence.
- pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff))
- If set to OOnn, readline will display completions
- with matches sorted horizontally in alphabetical
- order, rather than down the screen.
- sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff))
- This alters the default behavior of the completion
- functions. If set to oonn, words which have more
- than one possible completion cause the matches to
- be listed immediately instead of ringing the bell.
- vviissiibbllee--ssttaattss ((OOffff))
- If set to OOnn, a character denoting a file's type as
- reported by ssttaatt(2) is appended to the filename
- when listing possible completions.
-
- CCoonnddiittiioonnaall CCoonnssttrruuccttss
- Readline implements a facility similar in spirit to the
- conditional compilation features of the C preprocessor
- which allows key bindings and variable settings to be
-
-
-
-GNU 1998 Dec 31 5
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- performed as the result of tests. There are four parser
- directives used.
-
- $$iiff The $$iiff construct allows bindings to be made based
- on the editing mode, the terminal being used, or
- the application using readline. The text of the
- test extends to the end of the line; no characters
- are required to isolate it.
-
- mmooddee The mmooddee== form of the $$iiff directive is used
- to test whether readline is in emacs or vi
- mode. This may be used in conjunction with
- the sseett kkeeyymmaapp command, for instance, to set
- bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and _e_m_a_c_s_-
- _c_t_l_x keymaps only if readline is starting
- out in emacs mode.
-
- tteerrmm The tteerrmm== form may be used to include termi-
- nal-specific key bindings, perhaps to bind
- the key sequences output by the terminal's
- function keys. The word on the right side
- of the == is tested against the full name of
- the terminal and the portion of the terminal
- name before the first --. This allows _s_u_n to
- match both _s_u_n and _s_u_n_-_c_m_d, for instance.
-
- aapppplliiccaattiioonn
- The aapppplliiccaattiioonn construct is used to include
- application-specific settings. Each program
- using the readline library sets the _a_p_p_l_i_c_a_-
- _t_i_o_n _n_a_m_e, and an initialization file can
- test for a particular value. This could be
- used to bind key sequences to functions use-
- ful for a specific program. For instance,
- the following command adds a key sequence
- that quotes the current or previous word in
- Bash:
-
- $$iiff bash
- # Quote the current or previous word
- "\C-xq": "\eb\"\ef\""
- $$eennddiiff
-
- $$eennddiiff This command, as seen in the previous example, ter-
- minates an $$iiff command.
-
- $$eellssee Commands in this branch of the $$iiff directive are
- executed if the test fails.
-
- $$iinncclluuddee
- This directive takes a single filename as an argu-
- ment and reads commands and bindings from that
- file. For example, the following directive would
- read _/_e_t_c_/_i_n_p_u_t_r_c:
-
-
-
-GNU 1998 Dec 31 6
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- $$iinncclluuddee _/_e_t_c_/_i_n_p_u_t_r_c
-
-SSEEAARRCCHHIINNGG
- Readline provides commands for searching through the com-
- mand history for lines containing a specified string.
- There are two search modes: _i_n_c_r_e_m_e_n_t_a_l and _n_o_n_-_i_n_c_r_e_m_e_n_-
- _t_a_l.
-
- Incremental searches begin before the user has finished
- typing the search string. As each character of the search
- string is typed, readline displays the next entry from the
- history matching the string typed so far. An incremental
- search requires only as many characters as needed to find
- the desired history entry. The characters present in the
- value of the _i_s_e_a_r_c_h_-_t_e_r_m_i_n_a_t_o_r_s variable are used to ter-
- minate an incremental search. If that variable has not
- been assigned a value the Escape and Control-J characters
- will terminate an incremental search. Control-G will
- abort an incremental search and restore the original line.
- When the search is terminated, the history entry contain-
- ing the search string becomes the current line. To find
- other matching entries in the history list, type Control-S
- or Control-R as appropriate. This will search backward or
- forward in the history for the next line matching the
- search string typed so far. Any other key sequence bound
- to a readline command will terminate the search and exe-
- cute that command. For instance, a _n_e_w_l_i_n_e will terminate
- the search and accept the line, thereby executing the com-
- mand from the history list.
-
- Non-incremental searches read the entire search string
- before starting to search for matching history lines. The
- search string may be typed by the user or be part of the
- contents of the current line.
-
-EEDDIITTIINNGG CCOOMMMMAANNDDSS
- The following is a list of the names of the commands and
- the default key sequences to which they are bound. Com-
- mand names without an accompanying key sequence are
- unbound by default.
-
- CCoommmmaannddss ffoorr MMoovviinngg
- bbeeggiinnnniinngg--ooff--lliinnee ((CC--aa))
- Move to the start of the current line.
- eenndd--ooff--lliinnee ((CC--ee))
- Move to the end of the line.
- ffoorrwwaarrdd--cchhaarr ((CC--ff))
- Move forward a character.
- bbaacckkwwaarrdd--cchhaarr ((CC--bb))
- Move back a character.
- ffoorrwwaarrdd--wwoorrdd ((MM--ff))
- Move forward to the end of the next word. Words
- are composed of alphanumeric characters (letters
- and digits).
-
-
-
-GNU 1998 Dec 31 7
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- bbaacckkwwaarrdd--wwoorrdd ((MM--bb))
- Move back to the start of this, or the previous,
- word. Words are composed of alphanumeric charac-
- ters (letters and digits).
- cclleeaarr--ssccrreeeenn ((CC--ll))
- Clear the screen leaving the current line at the
- top of the screen. With an argument, refresh the
- current line without clearing the screen.
- rreeddrraaww--ccuurrrreenntt--lliinnee
- Refresh the current line.
-
- CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy
- aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn))
- Accept the line regardless of where the cursor is.
- If this line is non-empty, add it to the history
- list. If the line is a modified history line, then
- restore the history line to its original state.
- pprreevviioouuss--hhiissttoorryy ((CC--pp))
- Fetch the previous command from the history list,
- moving back in the list.
- nneexxtt--hhiissttoorryy ((CC--nn))
- Fetch the next command from the history list, mov-
- ing forward in the list.
- bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<))
- Move to the first line in the history.
- eenndd--ooff--hhiissttoorryy ((MM-->>))
- Move to the end of the input history, i.e., the
- line currently being entered.
- rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr))
- Search backward starting at the current line and
- moving `up' through the history as necessary. This
- is an incremental search.
- ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((CC--ss))
- Search forward starting at the current line and
- moving `down' through the history as necessary.
- This is an incremental search.
- nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp))
- Search backward through the history starting at the
- current line using a non-incremental search for a
- string supplied by the user.
- nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn))
- Search forward through the history using a non-
- incremental search for a string supplied by the
- user.
- hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd
- Search forward through the history for the string
- of characters between the start of the current line
- and the current cursor position (the _p_o_i_n_t). This
- is a non-incremental search.
- hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd
- Search backward through the history for the string
- of characters between the start of the current line
- and the point. This is a non-incremental search.
-
-
-
-
-GNU 1998 Dec 31 8
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- yyaannkk--nntthh--aarrgg ((MM--CC--yy))
- Insert the first argument to the previous command
- (usually the second word on the previous line) at
- point (the current cursor position). With an argu-
- ment _n, insert the _nth word from the previous com-
- mand (the words in the previous command begin with
- word 0). A negative argument inserts the _nth word
- from the end of the previous command.
- yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__))
- Insert the last argument to the previous command
- (the last word of the previous history entry).
- With an argument, behave exactly like yyaannkk--nntthh--aarrgg.
- Successive calls to yyaannkk--llaasstt--aarrgg move back through
- the history list, inserting the last argument of
- each line in turn.
-
- CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt
- ddeelleettee--cchhaarr ((CC--dd))
- Delete the character under the cursor. If point is
- at the beginning of the line, there are no charac-
- ters in the line, and the last character typed was
- not bound to BBddeelleettee--cchhaarr, then return EEOOFF.
- bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt))
- Delete the character behind the cursor. When given
- a numeric argument, save the deleted text on the
- kill ring.
- ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr
- Delete the character under the cursor, unless the
- cursor is at the end of the line, in which case the
- character behind the cursor is deleted. By
- default, this is not bound to a key.
- qquuootteedd--iinnsseerrtt ((CC--qq,, CC--vv))
- Add the next character that you type to the line
- verbatim. This is how to insert characters like
- CC--qq, for example.
- ttaabb--iinnsseerrtt ((MM--TTAABB))
- Insert a tab character.
- sseellff--iinnsseerrtt ((aa,, bb,, AA,, 11,, !!,, ......))
- Insert the character typed.
- ttrraannssppoossee--cchhaarrss ((CC--tt))
- Drag the character before point forward over the
- character at point. Point moves forward as well.
- If point is at the end of the line, then transpose
- the two characters before point. Negative argu-
- ments don't work.
- ttrraannssppoossee--wwoorrddss ((MM--tt))
- Drag the word behind the cursor past the word in
- front of the cursor moving the cursor over that
- word as well.
- uuppccaassee--wwoorrdd ((MM--uu))
- Uppercase the current (or following) word. With a
- negative argument, uppercase the previous word, but
- do not move point.
-
-
-
-
-GNU 1998 Dec 31 9
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- ddoowwnnccaassee--wwoorrdd ((MM--ll))
- Lowercase the current (or following) word. With a
- negative argument, lowercase the previous word, but
- do not move point.
- ccaappiittaalliizzee--wwoorrdd ((MM--cc))
- Capitalize the current (or following) word. With a
- negative argument, capitalize the previous word,
- but do not move point.
-
- KKiilllliinngg aanndd YYaannkkiinngg
- kkiillll--lliinnee ((CC--kk))
- Kill the text from the current cursor position to
- the end of the line.
- bbaacckkwwaarrdd--kkiillll--lliinnee ((CC--xx RRuubboouutt))
- Kill backward to the beginning of the line.
- uunniixx--lliinnee--ddiissccaarrdd ((CC--uu))
- Kill backward from point to the beginning of the
- line. The killed text is saved on the kill-ring.
- kkiillll--wwhhoollee--lliinnee
- Kill all characters on the current line, no matter
- where the cursor is.
- kkiillll--wwoorrdd ((MM--dd))
- Kill from the cursor to the end of the current
- word, or if between words, to the end of the next
- word. Word boundaries are the same as those used
- by ffoorrwwaarrdd--wwoorrdd.
- bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt))
- Kill the word behind the cursor. Word boundaries
- are the same as those used by bbaacckkwwaarrdd--wwoorrdd.
- uunniixx--wwoorrdd--rruubboouutt ((CC--ww))
- Kill the word behind the cursor, using white space
- as a word boundary. The word boundaries are dif-
- ferent from bbaacckkwwaarrdd--kkiillll--wwoorrdd.
- ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\))
- Delete all spaces and tabs around point.
- kkiillll--rreeggiioonn
- Kill the text between the point and _m_a_r_k (saved
- cursor position). This text is referred to as the
- _r_e_g_i_o_n.
- ccooppyy--rreeggiioonn--aass--kkiillll
- Copy the text in the region to the kill buffer.
- ccooppyy--bbaacckkwwaarrdd--wwoorrdd
- Copy the word before point to the kill buffer. The
- word boundaries are the same as bbaacckkwwaarrdd--wwoorrdd.
- ccooppyy--ffoorrwwaarrdd--wwoorrdd
- Copy the word following point to the kill buffer.
- The word boundaries are the same as ffoorrwwaarrdd--wwoorrdd.
- yyaannkk ((CC--yy))
- Yank the top of the kill ring into the buffer at
- the cursor.
- yyaannkk--ppoopp ((MM--yy))
- Rotate the kill ring, and yank the new top. Only
- works following yyaannkk or yyaannkk--ppoopp.
-
-
-
-
-GNU 1998 Dec 31 10
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- NNuummeerriicc AArrgguummeennttss
- ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ......,, MM----))
- Add this digit to the argument already accumulat-
- ing, or start a new argument. M-- starts a nega-
- tive argument.
- uunniivveerrssaall--aarrgguummeenntt
- This is another way to specify an argument. If
- this command is followed by one or more digits,
- optionally with a leading minus sign, those digits
- define the argument. If the command is followed by
- digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the
- numeric argument, but is otherwise ignored. As a
- special case, if this command is immediately fol-
- lowed by a character that is neither a digit or
- minus sign, the argument count for the next command
- is multiplied by four. The argument count is ini-
- tially one, so executing this function the first
- time makes the argument count four, a second time
- makes the argument count sixteen, and so on.
-
- CCoommpplleettiinngg
- ccoommpplleettee ((TTAABB))
- Attempt to perform completion on the text before
- point. The actual completion performed is applica-
- tion-specific. BBaasshh, for instance, attempts com-
- pletion treating the text as a variable (if the
- text begins with $$), username (if the text begins
- with ~~), hostname (if the text begins with @@), or
- command (including aliases and functions) in turn.
- If none of these produces a match, filename comple-
- tion is attempted. GGddbb, on the other hand, allows
- completion of program functions and variables, and
- only attempts filename completion under certain
- circumstances.
- ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??))
- List the possible completions of the text before
- point.
- iinnsseerrtt--ccoommpplleettiioonnss ((MM--**))
- Insert all completions of the text before point
- that would have been generated by ppoossssiibbllee--ccoommppllee--
- ttiioonnss.
- mmeennuu--ccoommpplleettee
- Similar to ccoommpplleettee, but replaces the word to be
- completed with a single match from the list of pos-
- sible completions. Repeated execution of mmeennuu--ccoomm--
- pplleettee steps through the list of possible comple-
- tions, inserting each match in turn. At the end of
- the list of completions, the bell is rung and the
- original text is restored. An argument of _n moves
- _n positions forward in the list of matches; a nega-
- tive argument may be used to move backward through
- the list. This command is intended to be bound to
- TTAABB, but is unbound by default.
-
-
-
-
-GNU 1998 Dec 31 11
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- ddeelleettee--cchhaarr--oorr--lliisstt
- Deletes the character under the cursor if not at
- the beginning or end of the line (like ddeelleettee--
- cchhaarr). If at the end of the line, behaves identi-
- cally to ppoossssiibbllee--ccoommpplleettiioonnss. This command is
- unbound by default.
-
- KKeeyybbooaarrdd MMaaccrrooss
- ssttaarrtt--kkbbdd--mmaaccrroo ((CC--xx (())
- Begin saving the characters typed into the current
- keyboard macro.
- eenndd--kkbbdd--mmaaccrroo ((CC--xx ))))
- Stop saving the characters typed into the current
- keyboard macro and store the definition.
- ccaallll--llaasstt--kkbbdd--mmaaccrroo ((CC--xx ee))
- Re-execute the last keyboard macro defined, by mak-
- ing the characters in the macro appear as if typed
- at the keyboard.
-
- MMiisscceellllaanneeoouuss
- rree--rreeaadd--iinniitt--ffiillee ((CC--xx CC--rr))
- Read in the contents of the _i_n_p_u_t_r_c file, and
- incorporate any bindings or variable assignments
- found there.
- aabboorrtt ((CC--gg))
- Abort the current editing command and ring the ter-
- minal's bell (subject to the setting of
- bbeellll--ssttyyllee).
- ddoo--uuppppeerrccaassee--vveerrssiioonn ((MM--aa,, MM--bb,, MM--_x,, ......))
- If the metafied character _x is lowercase, run the
- command that is bound to the corresponding upper-
- case character.
- pprreeffiixx--mmeettaa ((EESSCC))
- Metafy the next character typed. EESSCC ff is equiva-
- lent to MMeettaa--ff.
- uunnddoo ((CC--__,, CC--xx CC--uu))
- Incremental undo, separately remembered for each
- line.
- rreevveerrtt--lliinnee ((MM--rr))
- Undo all changes made to this line. This is like
- executing the uunnddoo command enough times to return
- the line to its initial state.
- ttiillddee--eexxppaanndd ((MM--&&))
- Perform tilde expansion on the current word.
- sseett--mmaarrkk ((CC--@@,, MM--<<ssppaaccee>>))
- Set the mark to the current point. If a numeric
- argument is supplied, the mark is set to that posi-
- tion.
- eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx))
- Swap the point with the mark. The current cursor
- position is set to the saved position, and the old
- cursor position is saved as the mark.
- cchhaarraacctteerr--sseeaarrcchh ((CC--]]))
- A character is read and point is moved to the next
-
-
-
-GNU 1998 Dec 31 12
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- occurrence of that character. A negative count
- searches for previous occurrences.
- cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]]))
- A character is read and point is moved to the pre-
- vious occurrence of that character. A negative
- count searches for subsequent occurrences.
- iinnsseerrtt--ccoommmmeenntt ((MM--##))
- The value of the readline ccoommmmeenntt--bbeeggiinn variable is
- inserted at the beginning of the current line, and
- the line is accepted as if a newline had been
- typed. This makes the current line a shell com-
- ment.
- dduummpp--ffuunnccttiioonnss
- Print all of the functions and their key bindings
- to the readline output stream. If a numeric argu-
- ment is supplied, the output is formatted in such a
- way that it can be made part of an _i_n_p_u_t_r_c file.
- dduummpp--vvaarriiaabblleess
- Print all of the settable variables and their val-
- ues to the readline output stream. If a numeric
- argument is supplied, the output is formatted in
- such a way that it can be made part of an _i_n_p_u_t_r_c
- file.
- dduummpp--mmaaccrrooss
- Print all of the readline key sequences bound to
- macros and the strings they ouput. If a numeric
- argument is supplied, the output is formatted in
- such a way that it can be made part of an _i_n_p_u_t_r_c
- file.
- eemmaaccss--eeddiittiinngg--mmooddee ((CC--ee))
- When in vvii editing mode, this causes a switch to
- eemmaaccss editing mode.
- vvii--eeddiittiinngg--mmooddee ((MM--CC--jj))
- When in eemmaaccss editing mode, this causes a switch to
- vvii editing mode.
-
-DDEEFFAAUULLTT KKEEYY BBIINNDDIINNGGSS
- The following is a list of the default emacs and vi bind-
- ings. Characters with the 8th bit set are written as
- M-<character>, and are referred to as _m_e_t_a_f_i_e_d characters.
- The printable ASCII characters not mentioned in the list
- of emacs standard bindings are bound to the _s_e_l_f_-_i_n_s_e_r_t
- function, which just inserts the given character into the
- input line. In vi insertion mode, all characters not
- specifically mentioned are bound to _s_e_l_f_-_i_n_s_e_r_t. Charac-
- ters assigned to signal generation by _s_t_t_y(1) or the ter-
- minal driver, such as C-Z or C-C, retain that function.
- Upper and lower case _m_e_t_a_f_i_e_d characters are bound to the
- same function in the emacs mode meta keymap. The remain-
- ing characters are unbound, which causes readline to ring
- the bell (subject to the setting of the bbeellll--ssttyyllee vari-
- able).
-
-
-
-
-
-GNU 1998 Dec 31 13
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- EEmmaaccss MMooddee
- Emacs Standard bindings
-
- "C-@" set-mark
- "C-A" beginning-of-line
- "C-B" backward-char
- "C-D" delete-char
- "C-E" end-of-line
- "C-F" forward-char
- "C-G" abort
- "C-H" backward-delete-char
- "C-I" complete
- "C-J" accept-line
- "C-K" kill-line
- "C-L" clear-screen
- "C-M" accept-line
- "C-N" next-history
- "C-P" previous-history
- "C-Q" quoted-insert
- "C-R" reverse-search-history
- "C-S" forward-search-history
- "C-T" transpose-chars
- "C-U" unix-line-discard
- "C-V" quoted-insert
- "C-W" unix-word-rubout
- "C-Y" yank
- "C-]" character-search
- "C-_" undo
- " " to "/" self-insert
- "0" to "9" self-insert
- ":" to "~" self-insert
- "C-?" backward-delete-char
-
- Emacs Meta bindings
-
- "M-C-G" abort
- "M-C-H" backward-kill-word
- "M-C-I" tab-insert
- "M-C-J" vi-editing-mode
- "M-C-M" vi-editing-mode
- "M-C-R" revert-line
- "M-C-Y" yank-nth-arg
- "M-C-[" complete
- "M-C-]" character-search-backward
- "M-space" set-mark
- "M-#" insert-comment
- "M-&" tilde-expand
- "M-*" insert-completions
- "M--" digit-argument
- "M-." yank-last-arg
- "M-0" digit-argument
- "M-1" digit-argument
- "M-2" digit-argument
- "M-3" digit-argument
-
-
-
-GNU 1998 Dec 31 14
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- "M-4" digit-argument
- "M-5" digit-argument
- "M-6" digit-argument
- "M-7" digit-argument
- "M-8" digit-argument
- "M-9" digit-argument
- "M-<" beginning-of-history
- "M-=" possible-completions
- "M->" end-of-history
- "M-?" possible-completions
- "M-B" backward-word
- "M-C" capitalize-word
- "M-D" kill-word
- "M-F" forward-word
- "M-L" downcase-word
- "M-N" non-incremental-forward-search-history
- "M-P" non-incremental-reverse-search-history
- "M-R" revert-line
- "M-T" transpose-words
- "M-U" upcase-word
- "M-Y" yank-pop
- "M-\" delete-horizontal-space
- "M-~" tilde-expand
- "M-C-?" backward-delete-word
- "M-_" yank-last-arg
-
- Emacs Control-X bindings
-
- "C-XC-G" abort
- "C-XC-R" re-read-init-file
- "C-XC-U" undo
- "C-XC-X" exchange-point-and-mark
- "C-X(" start-kbd-macro
- "C-X)" end-kbd-macro
- "C-XE" call-last-kbd-macro
- "C-XC-?" backward-kill-line
-
-
- VVII MMooddee bbiinnddiinnggss
- VI Insert Mode functions
-
- "C-D" vi-eof-maybe
- "C-H" backward-delete-char
- "C-I" complete
- "C-J" accept-line
- "C-M" accept-line
- "C-R" reverse-search-history
- "C-S" forward-search-history
- "C-T" transpose-chars
- "C-U" unix-line-discard
- "C-V" quoted-insert
- "C-W" unix-word-rubout
- "C-Y" yank
- "C-[" vi-movement-mode
-
-
-
-GNU 1998 Dec 31 15
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- "C-_" undo
- " " to "~" self-insert
- "C-?" backward-delete-char
-
- VI Command Mode functions
-
- "C-D" vi-eof-maybe
- "C-E" emacs-editing-mode
- "C-G" abort
- "C-H" backward-char
- "C-J" accept-line
- "C-K" kill-line
- "C-L" clear-screen
- "C-M" accept-line
- "C-N" next-history
- "C-P" previous-history
- "C-Q" quoted-insert
- "C-R" reverse-search-history
- "C-S" forward-search-history
- "C-T" transpose-chars
- "C-U" unix-line-discard
- "C-V" quoted-insert
- "C-W" unix-word-rubout
- "C-Y" yank
- " " forward-char
- "#" insert-comment
- "$" end-of-line
- "%" vi-match
- "&" vi-tilde-expand
- "*" vi-complete
- "+" next-history
- "," vi-char-search
- "-" previous-history
- "." vi-redo
- "/" vi-search
- "0" beginning-of-line
- "1" to "9" vi-arg-digit
- ";" vi-char-search
- "=" vi-complete
- "?" vi-search
- "A" vi-append-eol
- "B" vi-prev-word
- "C" vi-change-to
- "D" vi-delete-to
- "E" vi-end-word
- "F" vi-char-search
- "G" vi-fetch-history
- "I" vi-insert-beg
- "N" vi-search-again
- "P" vi-put
- "R" vi-replace
- "S" vi-subst
- "T" vi-char-search
- "U" revert-line
-
-
-
-GNU 1998 Dec 31 16
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- "W" vi-next-word
- "X" backward-delete-char
- "Y" vi-yank-to
- "\" vi-complete
- "^" vi-first-print
- "_" vi-yank-arg
- "`" vi-goto-mark
- "a" vi-append-mode
- "b" vi-prev-word
- "c" vi-change-to
- "d" vi-delete-to
- "e" vi-end-word
- "f" vi-char-search
- "h" backward-char
- "i" vi-insertion-mode
- "j" next-history
- "k" prev-history
- "l" forward-char
- "m" vi-set-mark
- "n" vi-search-again
- "p" vi-put
- "r" vi-change-char
- "s" vi-subst
- "t" vi-char-search
- "u" undo
- "w" vi-next-word
- "x" vi-delete
- "y" vi-yank-to
- "|" vi-column
- "~" vi-change-case
-
-SSEEEE AALLSSOO
- _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
- _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
- _b_a_s_h(1)
-
-FFIILLEESS
- _~_/_._i_n_p_u_t_r_c
- Individual rreeaaddlliinnee initialization file
-
-AAUUTTHHOORRSS
- Brian Fox, Free Software Foundation (primary author)
- bfox@ai.MIT.Edu
-
- Chet Ramey, Case Western Reserve University
- chet@ins.CWRU.Edu
-
-BBUUGG RREEPPOORRTTSS
- If you find a bug in rreeaaddlliinnee,, you should report it. But
- first, you should make sure that it really is a bug, and
- that it appears in the latest version of the rreeaaddlliinnee
- library that you have.
-
- Once you have determined that a bug actually exists, mail
-
-
-
-GNU 1998 Dec 31 17
-
-
-
-
-
-READLINE(3) READLINE(3)
-
-
- a bug report to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g. If you have a fix,
- you are welcome to mail that as well! Suggestions and
- `philosophical' bug reports may be mailed to _b_u_g_-_r_e_a_d_-
- _l_i_n_e@_g_n_u_._o_r_g or posted to the Usenet newsgroup
- ggnnuu..bbaasshh..bbuugg.
-
- Comments and bug reports concerning this manual page
- should be directed to _c_h_e_t_@_i_n_s_._C_W_R_U_._E_d_u.
-
-BBUUGGSS
- It's too big and too slow.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-GNU 1998 Dec 31 18
-
-
diff --git a/sim/arm/ChangeLog b/sim/arm/ChangeLog
index ce2a17e43f1..f7b78956495 100644
--- a/sim/arm/ChangeLog
+++ b/sim/arm/ChangeLog
@@ -1,3 +1,43 @@
+2000-05-25 Nick Clifton <nickc@cygnus.com>
+
+ * armcopro.c (MMUMCR): Only indicate mode change if a singal has
+ really changed.
+ (MMUWrite): Only indicate mode change if a singal has really
+ changed.
+
+ * armdefs.h (SYSTEMMODE): Define.
+ (BANK_CAN_ACEESS_SPSR): Define.
+
+ * armemu.c (ARM_Emulate26): If the mode has changed allow the PC
+ to advance before stopping the emulation.
+
+ * arminit.c (ARMul_Reset): Ensure Mode field of State is set
+ correctly.
+
+ * armos.c (ARMul_OSInit): Create a initial stack pointer for
+ System mode.
+
+ * armsupp.c (ModeToBank): Remove unused first parameter.
+ Add support for System Mode.
+ (ARMul_GetSPSR): Use BANK_CAN_ACCESS_SPSR macro.
+ (ARMul_SetSPSR): Use BANK_CAN_ACCESS_SPSR macro.
+ (ARMul_FixSPSR): Use BANK_CAN_ACCESS_SPSR macro.
+ (ARMulSwitchMode): Add support for System Mode.
+
+Wed May 24 14:40:34 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
+2000-05-23 Nick Clifton <nickc@cygnus.com>
+
+ * wrapper.c (sim_store_register): Special handling for CPSR
+ register.
+
+2000-03-11 Philip Blundell <philb@gnu.org>
+
+ * armemu.c (LoadSMult, LoadMult): Correct handling of aborts.
+ Patch from Allan Skillman <Allan.Skillman@arm.com>.
+
Wed Mar 22 15:24:21 2000 glen mccready <gkm@pobox.com>
* wrapper.c (sim_open,sim_close): Copy into myname, free myname.
diff --git a/sim/arm/Makefile.in b/sim/arm/Makefile.in
index e2f2b3c5f0a..19a9bcab4f9 100644
--- a/sim/arm/Makefile.in
+++ b/sim/arm/Makefile.in
@@ -20,15 +20,17 @@
SIM_EXTRA_CFLAGS = -DMODET -DNEED_UI_LOOP_HOOK
-SIM_OBJS = armcopro.o armemu26.o armemu32.o arminit.o armos.o armsupp.o \
- armvirt.o bag.o thumbemu.o wrapper.o sim-load.o
+COPRO=@COPRO@
+
+SIM_OBJS = armemu26.o armemu32.o arminit.o armos.o armsupp.o \
+ armvirt.o bag.o thumbemu.o wrapper.o sim-load.o $(COPRO)
## COMMON_POST_CONFIG_FRAG
armos.o: armos.c armdefs.h armos.h armfpe.h
-armcopro.o: armcopro.c armdefs.h
+armcopro.o: armcopro.c armdefs.h
armemu26.o: armemu.c armdefs.h armemu.h
$(CC) -c $< -o armemu26.o $(ALL_CFLAGS)
diff --git a/sim/arm/armcopro.c b/sim/arm/armcopro.c
index 579446c1959..48be6806ea2 100644
--- a/sim/arm/armcopro.c
+++ b/sim/arm/armcopro.c
@@ -16,6 +16,7 @@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "armdefs.h"
+#include "armemu.h"
#include "ansidecl.h"
extern unsigned ARMul_CoProInit (ARMul_State * state);
@@ -79,15 +80,29 @@ MMUMCR (ARMul_State * state, unsigned type ATTRIBUTE_UNUSED, ARMword instr, ARMw
int reg = BITS (16, 19) & 7;
MMUReg[reg] = value;
+
if (reg == 1)
{
+ ARMword p,d,l,b;
+
+ p = state->prog32Sig;
+ d = state->data32Sig;
+ l = state->lateabtSig;
+ b = state->bigendSig;
+
state->prog32Sig = value >> 4 & 1;
state->data32Sig = value >> 5 & 1;
state->lateabtSig = value >> 6 & 1;
state->bigendSig = value >> 7 & 1;
- state->Emulate = TRUE; /* force ARMulator to notice these now ! */
+
+ if (p != state->prog32Sig
+ || d != state->data32Sig
+ || l != state->lateabtSig
+ || b != state->bigendSig)
+ state->Emulate = CHANGEMODE; /* Force ARMulator to notice these now. */
}
- return (ARMul_DONE);
+
+ return ARMul_DONE;
}
@@ -106,15 +121,30 @@ MMUWrite (ARMul_State * state, unsigned reg, ARMword value)
{
if (reg < 8)
MMUReg[reg] = value;
+
if (reg == 1)
{
+ ARMword p,d,l,b;
+
+ p = state->prog32Sig;
+ d = state->data32Sig;
+ l = state->lateabtSig;
+ b = state->bigendSig;
+
state->prog32Sig = value >> 4 & 1;
state->data32Sig = value >> 5 & 1;
state->lateabtSig = value >> 6 & 1;
state->bigendSig = value >> 7 & 1;
- state->Emulate = TRUE; /* force ARMulator to notice these now ! */
+
+
+ if (p != state->prog32Sig
+ || d != state->data32Sig
+ || l != state->lateabtSig
+ || b != state->bigendSig)
+ state->Emulate = CHANGEMODE; /* Force ARMulator to notice these now. */
}
- return (TRUE);
+
+ return TRUE;
}
diff --git a/sim/arm/armdefs.h b/sim/arm/armdefs.h
index bce638dfe4d..b23f26f51f6 100644
--- a/sim/arm/armdefs.h
+++ b/sim/arm/armdefs.h
@@ -200,16 +200,17 @@ struct ARMul_State
* Mode and Bank Constants *
\***************************************************************************/
-#define USER26MODE 0L
-#define FIQ26MODE 1L
-#define IRQ26MODE 2L
-#define SVC26MODE 3L
-#define USER32MODE 16L
-#define FIQ32MODE 17L
-#define IRQ32MODE 18L
-#define SVC32MODE 19L
+#define USER26MODE 0L
+#define FIQ26MODE 1L
+#define IRQ26MODE 2L
+#define SVC26MODE 3L
+#define USER32MODE 16L
+#define FIQ32MODE 17L
+#define IRQ32MODE 18L
+#define SVC32MODE 19L
#define ABORT32MODE 23L
#define UNDEF32MODE 27L
+#define SYSTEMMODE 31L
#define ARM32BITMODE (state->Mode > 3)
#define ARM26BITMODE (state->Mode <= 3)
@@ -225,6 +226,10 @@ struct ARMul_State
#define ABORTBANK 4
#define UNDEFBANK 5
#define DUMMYBANK 6
+#define SYSTEMBANK 7
+
+#define BANK_CAN_ACCESS_SPSR(bank) \
+ ((bank) != USERBANK && (bank) != SYSTEMBANK && (bank) != DUMMYBANK)
/***************************************************************************\
* Definitons of things in the emulator *
diff --git a/sim/arm/armemu.c b/sim/arm/armemu.c
index 83853f1599c..acbcb752959 100644
--- a/sim/arm/armemu.c
+++ b/sim/arm/armemu.c
@@ -2864,6 +2864,9 @@ ARMul_Emulate26 (register ARMul_State * state)
if (state->Emulate == ONCE)
state->Emulate = STOP;
+ /* If we have changed mode, allow the PC to advance before stopping. */
+ else if (state->Emulate == CHANGEMODE)
+ continue;
else if (state->Emulate != RUN)
break;
}
@@ -2872,7 +2875,8 @@ ARMul_Emulate26 (register ARMul_State * state)
state->decoded = decoded;
state->loaded = loaded;
state->pc = pc;
- return (pc);
+
+ return pc;
} /* Emulate 26/32 in instruction based mode */
@@ -3457,7 +3461,7 @@ LoadMult (ARMul_State * state, ARMword instr, ARMword address, ARMword WBBase)
state->Aborted = ARMul_DataAbortV;
}
- if (BIT (15))
+ if (BIT (15) && !state->Aborted)
{ /* PC is in the reg list */
#ifdef MODE32
state->Reg[15] = PC;
@@ -3520,13 +3524,13 @@ LoadSMult (ARMul_State * state, ARMword instr,
{ /* load this register */
address += 4;
dest = ARMul_LoadWordS (state, address);
- if (!state->abortSig || state->Aborted)
+ if (!state->abortSig && !state->Aborted)
state->Reg[temp] = dest;
else if (!state->Aborted)
state->Aborted = ARMul_DataAbortV;
}
- if (BIT (15))
+ if (BIT (15) && !state->Aborted)
{ /* PC is in the reg list */
#ifdef MODE32
if (state->Mode != USER26MODE && state->Mode != USER32MODE)
diff --git a/sim/arm/arminit.c b/sim/arm/arminit.c
index 3e75b478b64..0105c17c0f6 100644
--- a/sim/arm/arminit.c
+++ b/sim/arm/arminit.c
@@ -85,7 +85,8 @@ ARMul_NewState (void)
}
for (i = 0; i < 7; i++)
state->Spsr[i] = 0;
- state->Mode = 0;
+
+ state->Mode = USER26MODE;
state->CallDebug = FALSE;
state->Debug = FALSE;
@@ -156,18 +157,23 @@ void
ARMul_Reset (ARMul_State * state)
{
state->NextInstr = 0;
+
if (state->prog32Sig)
{
state->Reg[15] = 0;
state->Cpsr = INTBITS | SVC32MODE;
+ state->Mode = SVC32MODE;
}
else
{
state->Reg[15] = R15INTBITS | SVC26MODE;
state->Cpsr = INTBITS | SVC26MODE;
+ state->Mode = SVC26MODE;
}
+
ARMul_CPSRAltered (state);
state->Bank = SVCBANK;
+
FLUSHPIPE;
state->EndCondition = 0;
diff --git a/sim/arm/armos.c b/sim/arm/armos.c
index 67dd51c16a3..958d4cde6ff 100644
--- a/sim/arm/armos.c
+++ b/sim/arm/armos.c
@@ -165,6 +165,7 @@ ARMul_OSInit (ARMul_State * state)
ARMul_SetReg (state, SVC32MODE, 13, ADDRSUPERSTACK); /* and for supervisor mode */
ARMul_SetReg (state, ABORT32MODE, 13, ADDRSUPERSTACK); /* and for abort 32 mode */
ARMul_SetReg (state, UNDEF32MODE, 13, ADDRSUPERSTACK); /* and for undef 32 mode */
+ ARMul_SetReg (state, SYSTEMMODE, 13, ADDRSUPERSTACK); /* and for system mode */
instr = 0xe59ff000 | (ADDRSOFTVECTORS - 8); /* load pc from soft vector */
for (i = ARMul_ResetV; i <= ARMFIQV; i += 4)
ARMul_WriteWord (state, i, instr); /* write hardware vectors */
diff --git a/sim/arm/armsupp.c b/sim/arm/armsupp.c
index 154d520d216..5c18ddd3b03 100644
--- a/sim/arm/armsupp.c
+++ b/sim/arm/armsupp.c
@@ -42,7 +42,7 @@ void ARMul_R15Altered (ARMul_State * state);
ARMword ARMul_SwitchMode (ARMul_State * state, ARMword oldmode,
ARMword newmode);
-static ARMword ModeToBank (ARMul_State * state, ARMword mode);
+static ARMword ModeToBank (ARMword mode);
unsigned ARMul_NthReg (ARMword instr, unsigned number);
@@ -87,7 +87,7 @@ ARMul_GetReg (ARMul_State * state, unsigned mode, unsigned reg)
{
mode &= MODEBITS;
if (mode != state->Mode)
- return (state->RegBank[ModeToBank (state, (ARMword) mode)][reg]);
+ return (state->RegBank[ModeToBank ((ARMword) mode)][reg]);
else
return (state->Reg[reg]);
}
@@ -101,7 +101,7 @@ ARMul_SetReg (ARMul_State * state, unsigned mode, unsigned reg, ARMword value)
{
mode &= MODEBITS;
if (mode != state->Mode)
- state->RegBank[ModeToBank (state, (ARMword) mode)][reg] = value;
+ state->RegBank[ModeToBank ((ARMword) mode)][reg] = value;
else
state->Reg[reg] = value;
}
@@ -233,11 +233,12 @@ ARMul_FixCPSR (ARMul_State * state, ARMword instr, ARMword rhs)
ARMword
ARMul_GetSPSR (ARMul_State * state, ARMword mode)
{
- ARMword bank = ModeToBank (state, mode & MODEBITS);
- if (bank == USERBANK || bank == DUMMYBANK)
- return (CPSR);
- else
- return (state->Spsr[bank]);
+ ARMword bank = ModeToBank (mode & MODEBITS);
+
+ if (! BANK_CAN_ACCESS_SPSR (bank))
+ return CPSR;
+
+ return state->Spsr[bank];
}
/***************************************************************************\
@@ -247,8 +248,9 @@ ARMul_GetSPSR (ARMul_State * state, ARMword mode)
void
ARMul_SetSPSR (ARMul_State * state, ARMword mode, ARMword value)
{
- ARMword bank = ModeToBank (state, mode & MODEBITS);
- if (bank != USERBANK && bank != DUMMYBANK)
+ ARMword bank = ModeToBank (mode & MODEBITS);
+
+ if (BANK_CAN_ACCESS_SPSR (bank))
state->Spsr[bank] = value;
}
@@ -259,7 +261,7 @@ ARMul_SetSPSR (ARMul_State * state, ARMword mode, ARMword value)
void
ARMul_FixSPSR (ARMul_State * state, ARMword instr, ARMword rhs)
{
- if (state->Bank != USERBANK && state->Bank != DUMMYBANK)
+ if (BANK_CAN_ACCESS_SPSR (state->Bank))
{
if (BITS (16, 19) == 9)
SETPSR (state->Spsr[state->Bank], rhs);
@@ -282,11 +284,14 @@ ARMul_CPSRAltered (ARMul_State * state)
if (state->prog32Sig == LOW)
state->Cpsr &= (CCBITS | INTBITS | R15MODEBITS);
+
oldmode = state->Mode;
+
if (state->Mode != (state->Cpsr & MODEBITS))
{
state->Mode =
ARMul_SwitchMode (state, state->Mode, state->Cpsr & MODEBITS);
+
state->NtransSig = (state->Mode & 3) ? HIGH : LOW;
}
@@ -317,7 +322,6 @@ ARMul_CPSRAltered (ARMul_State * state)
else
state->Reg[15] = ECC | ER15INT | EMODE | R15PC;
}
-
}
/***************************************************************************\
@@ -355,23 +359,30 @@ ARMword
ARMul_SwitchMode (ARMul_State * state, ARMword oldmode, ARMword newmode)
{
unsigned i;
-
- oldmode = ModeToBank (state, oldmode);
- state->Bank = ModeToBank (state, newmode);
- if (oldmode != state->Bank)
+ ARMword oldbank;
+ ARMword newbank;
+
+ oldbank = ModeToBank (oldmode);
+ newbank = state->Bank = ModeToBank (newmode);
+
+ if (oldbank != newbank)
{ /* really need to do it */
- switch (oldmode)
+ switch (oldbank)
{ /* save away the old registers */
+ case SYSTEMBANK:
+ /* The System mode uses the USER bank. */
+ oldbank = USERBANK;
+ /* Fall through. */
case USERBANK:
case IRQBANK:
case SVCBANK:
case ABORTBANK:
case UNDEFBANK:
- if (state->Bank == FIQBANK)
+ if (newbank == FIQBANK)
for (i = 8; i < 13; i++)
state->RegBank[USERBANK][i] = state->Reg[i];
- state->RegBank[oldmode][13] = state->Reg[13];
- state->RegBank[oldmode][14] = state->Reg[14];
+ state->RegBank[oldbank][13] = state->Reg[13];
+ state->RegBank[oldbank][14] = state->Reg[14];
break;
case FIQBANK:
for (i = 8; i < 15; i++)
@@ -381,20 +392,25 @@ ARMul_SwitchMode (ARMul_State * state, ARMword oldmode, ARMword newmode)
for (i = 8; i < 15; i++)
state->RegBank[DUMMYBANK][i] = 0;
break;
-
+ default:
+ abort ();
}
- switch (state->Bank)
+
+ switch (newbank)
{ /* restore the new registers */
+ case SYSTEMBANK:
+ newbank = USERBANK;
+ /* Fall through. */
case USERBANK:
case IRQBANK:
case SVCBANK:
case ABORTBANK:
case UNDEFBANK:
- if (oldmode == FIQBANK)
+ if (oldbank == FIQBANK)
for (i = 8; i < 13; i++)
state->Reg[i] = state->RegBank[USERBANK][i];
- state->Reg[13] = state->RegBank[state->Bank][13];
- state->Reg[14] = state->RegBank[state->Bank][14];
+ state->Reg[13] = state->RegBank[newbank][13];
+ state->Reg[14] = state->RegBank[newbank][14];
break;
case FIQBANK:
for (i = 8; i < 15; i++)
@@ -404,9 +420,12 @@ ARMul_SwitchMode (ARMul_State * state, ARMword oldmode, ARMword newmode)
for (i = 8; i < 15; i++)
state->Reg[i] = 0;
break;
+ default:
+ abort ();
} /* switch */
} /* if */
- return (newmode);
+
+ return newmode;
}
/***************************************************************************\
@@ -415,21 +434,24 @@ ARMul_SwitchMode (ARMul_State * state, ARMword oldmode, ARMword newmode)
\***************************************************************************/
static ARMword
-ModeToBank (ARMul_State * state ATTRIBUTE_UNUSED, ARMword mode)
+ModeToBank (ARMword mode)
{
- static ARMword bankofmode[] = { USERBANK, FIQBANK, IRQBANK, SVCBANK,
+ static ARMword bankofmode[] =
+ {
+ USERBANK, FIQBANK, IRQBANK, SVCBANK,
DUMMYBANK, DUMMYBANK, DUMMYBANK, DUMMYBANK,
DUMMYBANK, DUMMYBANK, DUMMYBANK, DUMMYBANK,
DUMMYBANK, DUMMYBANK, DUMMYBANK, DUMMYBANK,
- USERBANK, FIQBANK, IRQBANK, SVCBANK,
+ USERBANK, FIQBANK, IRQBANK, SVCBANK,
DUMMYBANK, DUMMYBANK, DUMMYBANK, ABORTBANK,
- DUMMYBANK, DUMMYBANK, DUMMYBANK, UNDEFBANK
+ DUMMYBANK, DUMMYBANK, DUMMYBANK, UNDEFBANK,
+ DUMMYBANK, DUMMYBANK, DUMMYBANK, SYSTEMBANK
};
- if (mode > UNDEF32MODE)
- return (DUMMYBANK);
- else
- return (bankofmode[mode]);
+ if (mode >= (sizeof (bankofmode) / sizeof (bankofmode[0])))
+ return DUMMYBANK;
+
+ return bankofmode[mode];
}
/***************************************************************************\
@@ -650,9 +672,11 @@ ARMul_MCR (ARMul_State * state, ARMword instr, ARMword source)
unsigned cpab;
cpab = (state->MCR[CPNum]) (state, ARMul_FIRST, instr, source);
+
while (cpab == ARMul_BUSY)
{
ARMul_Icycles (state, 1, 0);
+
if (IntPending (state))
{
cpab = (state->MCR[CPNum]) (state, ARMul_INTERRUPT, instr, 0);
@@ -661,6 +685,7 @@ ARMul_MCR (ARMul_State * state, ARMword instr, ARMword source)
else
cpab = (state->MCR[CPNum]) (state, ARMul_BUSY, instr, source);
}
+
if (cpab == ARMul_CANT)
ARMul_Abort (state, ARMul_UndefinedInstrV);
else
diff --git a/sim/arm/configure b/sim/arm/configure
index ccca2cbe933..2c574e4cd94 100755
--- a/sim/arm/configure
+++ b/sim/arm/configure
@@ -169,6 +169,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -283,6 +284,7 @@ Configuration:
--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
@@ -453,6 +455,11 @@ EOF
-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=*)
@@ -618,12 +625,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -664,7 +675,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:668: checking how to run the C preprocessor" >&5
+echo "configure:679: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -679,13 +690,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 683 "configure"
+#line 694 "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:689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:700: \"$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
:
@@ -696,13 +707,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 700 "configure"
+#line 711 "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:706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:717: \"$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
:
@@ -713,13 +724,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 717 "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:723: \"$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
:
@@ -744,7 +755,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:748: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:759: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -771,7 +782,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:775: checking for POSIXized ISC" >&5
+echo "configure:786: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -792,12 +803,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:796: checking for ANSI C header files" >&5
+echo "configure:807: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 801 "configure"
+#line 812 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -805,7 +816,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:820: \"$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*
@@ -822,7 +833,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 826 "configure"
+#line 837 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -840,7 +851,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 844 "configure"
+#line 855 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -861,7 +872,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 865 "configure"
+#line 876 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -872,7 +883,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -896,12 +907,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:900: checking for working const" >&5
+echo "configure:911: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 905 "configure"
+#line 916 "configure"
#include "confdefs.h"
int main() {
@@ -950,7 +961,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -971,21 +982,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:975: checking for inline" >&5
+echo "configure:986: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 982 "configure"
+#line 993 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:989: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1011,12 +1022,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1015: checking for off_t" >&5
+echo "configure:1026: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1020 "configure"
+#line 1031 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1044,12 +1055,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1048: checking for size_t" >&5
+echo "configure:1059: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1053 "configure"
+#line 1064 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1079,19 +1090,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1083: checking for working alloca.h" >&5
+echo "configure:1094: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1088 "configure"
+#line 1099 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1112,12 +1123,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1116: checking for alloca" >&5
+echo "configure:1127: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1121 "configure"
+#line 1132 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1145,7 +1156,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1177,12 +1188,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1181: checking whether alloca needs Cray hooks" >&5
+echo "configure:1192: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1186 "configure"
+#line 1197 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1207,12 +1218,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1211: checking for $ac_func" >&5
+echo "configure:1222: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1216 "configure"
+#line 1227 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1235,7 +1246,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1262,7 +1273,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1266: checking stack direction for C alloca" >&5
+echo "configure:1277: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1270,7 +1281,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1274 "configure"
+#line 1285 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1289,7 +1300,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1314,17 +1325,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1318: checking for $ac_hdr" >&5
+echo "configure:1329: 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 1323 "configure"
+#line 1334 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1339: \"$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*
@@ -1353,12 +1364,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1357: checking for $ac_func" >&5
+echo "configure:1368: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1362 "configure"
+#line 1373 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1381,7 +1392,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1406,7 +1417,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1410: checking for working mmap" >&5
+echo "configure:1421: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1414,7 +1425,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1418 "configure"
+#line 1429 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1554,7 +1565,7 @@ main()
}
EOF
-if { (eval echo configure:1558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1577,12 +1588,12 @@ EOF
fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1581: checking for Cygwin environment" >&5
+echo "configure:1592: 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 1586 "configure"
+#line 1597 "configure"
#include "confdefs.h"
int main() {
@@ -1593,7 +1604,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:1597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -1610,19 +1621,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1614: checking for mingw32 environment" >&5
+echo "configure:1625: 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 1619 "configure"
+#line 1630 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:1626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1689,7 +1700,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1693: checking host system type" >&5
+echo "configure:1704: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1710,7 +1721,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1714: checking target system type" >&5
+echo "configure:1725: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1728,7 +1739,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1732: checking build system type" >&5
+echo "configure:1743: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1772,7 +1783,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1776: checking for $ac_word" >&5
+echo "configure:1787: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1802,7 +1813,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1806: checking for $ac_word" >&5
+echo "configure:1817: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1853,7 +1864,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1857: checking for $ac_word" >&5
+echo "configure:1868: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1885,7 +1896,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1889: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1900: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1896,12 +1907,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1900 "configure"
+#line 1911 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1927,12 +1938,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1931: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1942: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1936: checking whether we are using GNU C" >&5
+echo "configure:1947: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1941,7 +1952,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1960,7 +1971,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1964: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1975: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2003,7 +2014,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2007: checking for a BSD compatible install" >&5
+echo "configure:2018: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2071,7 +2082,7 @@ AR=${AR-ar}
# 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:2075: checking for $ac_word" >&5
+echo "configure:2086: 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
@@ -2106,17 +2117,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2110: checking for $ac_hdr" >&5
+echo "configure:2121: 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 2115 "configure"
+#line 2126 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2120: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2131: \"$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*
@@ -2146,12 +2157,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2150: checking for $ac_func" >&5
+echo "configure:2161: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2155 "configure"
+#line 2166 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2174,7 +2185,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2203,12 +2214,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2207: checking for $ac_func" >&5
+echo "configure:2218: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2212 "configure"
+#line 2223 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2231,7 +2242,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2265,19 +2276,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2269: checking for LC_MESSAGES" >&5
+echo "configure:2280: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2274 "configure"
+#line 2285 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2298,7 +2309,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2302: checking whether NLS is requested" >&5
+echo "configure:2313: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2318,7 +2329,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2322: checking whether included gettext is requested" >&5
+echo "configure:2333: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2337,17 +2348,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2341: checking for libintl.h" >&5
+echo "configure:2352: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2346 "configure"
+#line 2357 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2351: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2362: \"$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*
@@ -2364,19 +2375,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2368: checking for gettext in libc" >&5
+echo "configure:2379: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2373 "configure"
+#line 2384 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2392,7 +2403,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2396: checking for bindtextdomain in -lintl" >&5
+echo "configure:2407: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2400,7 +2411,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2404 "configure"
+#line 2415 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2411,7 +2422,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2427,19 +2438,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2431: checking for gettext in libintl" >&5
+echo "configure:2442: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2436 "configure"
+#line 2447 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2467,7 +2478,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2471: checking for $ac_word" >&5
+echo "configure:2482: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2501,12 +2512,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2505: checking for $ac_func" >&5
+echo "configure:2516: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2510 "configure"
+#line 2521 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2529,7 +2540,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2556,7 +2567,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2560: checking for $ac_word" >&5
+echo "configure:2571: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2592,7 +2603,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2596: checking for $ac_word" >&5
+echo "configure:2607: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2624,7 +2635,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2628 "configure"
+#line 2639 "configure"
#include "confdefs.h"
int main() {
@@ -2632,7 +2643,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2664,7 +2675,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2668: checking for $ac_word" >&5
+echo "configure:2679: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2698,7 +2709,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2702: checking for $ac_word" >&5
+echo "configure:2713: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2734,7 +2745,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2738: checking for $ac_word" >&5
+echo "configure:2749: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2824,7 +2835,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2828: checking for catalogs to be installed" >&5
+echo "configure:2839: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2852,17 +2863,17 @@ echo "configure:2828: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2856: checking for linux/version.h" >&5
+echo "configure:2867: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2861 "configure"
+#line 2872 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2877: \"$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*
@@ -2931,17 +2942,17 @@ for ac_hdr in stdlib.h string.h strings.h unistd.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2935: checking for $ac_hdr" >&5
+echo "configure:2946: 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 2940 "configure"
+#line 2951 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2956: \"$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*
@@ -2971,17 +2982,17 @@ for ac_hdr in sys/time.h sys/resource.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2975: checking for $ac_hdr" >&5
+echo "configure:2986: 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 2980 "configure"
+#line 2991 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2985: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2996: \"$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*
@@ -3011,17 +3022,17 @@ for ac_hdr in fcntl.h fpu_control.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3015: checking for $ac_hdr" >&5
+echo "configure:3026: 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 3020 "configure"
+#line 3031 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3036: \"$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*
@@ -3051,17 +3062,17 @@ for ac_hdr in dlfcn.h errno.h sys/stat.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3055: checking for $ac_hdr" >&5
+echo "configure:3066: 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 3060 "configure"
+#line 3071 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3065: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3076: \"$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*
@@ -3090,12 +3101,12 @@ done
for ac_func in getrusage time sigaction __setfpucw
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3094: checking for $ac_func" >&5
+echo "configure:3105: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3099 "configure"
+#line 3110 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3118,7 +3129,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3145,7 +3156,7 @@ done
# Check for socket libraries
echo $ac_n "checking for bind in -lsocket""... $ac_c" 1>&6
-echo "configure:3149: checking for bind in -lsocket" >&5
+echo "configure:3160: checking for bind in -lsocket" >&5
ac_lib_var=`echo socket'_'bind | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3153,7 +3164,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3157 "configure"
+#line 3168 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3164,7 +3175,7 @@ int main() {
bind()
; return 0; }
EOF
-if { (eval echo configure:3168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3192,7 +3203,7 @@ else
fi
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3196: checking for gethostbyname in -lnsl" >&5
+echo "configure:3207: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3200,7 +3211,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3204 "configure"
+#line 3215 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3211,7 +3222,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3381,18 +3392,18 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3391: checking return type of signal handlers" >&5
+echo "configure:3402: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3396 "configure"
+#line 3407 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3409,7 +3420,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3431,7 +3442,7 @@ EOF
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3435: checking for executable suffix" >&5
+echo "configure:3446: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3441,10 +3452,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:3456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3486,17 +3497,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3490: checking for $ac_hdr" >&5
+echo "configure:3501: 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 3495 "configure"
+#line 3506 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3511: \"$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*
@@ -3523,6 +3534,7 @@ fi
done
+COPRO=armcopro.o
trap '' 1 2 15
@@ -3733,6 +3745,7 @@ s%@sim_stdio@%$sim_stdio%g
s%@sim_trace@%$sim_trace%g
s%@sim_profile@%$sim_profile%g
s%@EXEEXT@%$EXEEXT%g
+s%@COPRO@%$COPRO%g
CEOF
EOF
diff --git a/sim/arm/configure.in b/sim/arm/configure.in
index 033b0bc1615..cbfac44e4cd 100644
--- a/sim/arm/configure.in
+++ b/sim/arm/configure.in
@@ -7,4 +7,7 @@ SIM_AC_COMMON
AC_CHECK_HEADERS(unistd.h)
+COPRO=armcopro.o
+AC_SUBST(COPRO)
+
SIM_AC_OUTPUT
diff --git a/sim/arm/wrapper.c b/sim/arm/wrapper.c
index 8417f40938e..8fca85df14a 100644
--- a/sim/arm/wrapper.c
+++ b/sim/arm/wrapper.c
@@ -205,13 +205,11 @@ sim_create_inferior (sd, abfd, argv, env)
else
ARMul_SetPC (state, 0); /* ??? */
-#if 1 /* JGS */
/* We explicitly select a processor capable of supporting the ARM
- 32bit mode, and then we force the simulated CPU into the 32bit
- User mode: */
+ 32bit mode. JGS */
ARMul_SelectProcessor (state, ARM600);
+ /* And then we force the simulated CPU into the 32bit User mode. */
ARMul_SetCPSR (state, USER32MODE);
-#endif
if (argv != NULL)
{
@@ -320,7 +318,13 @@ sim_store_register (sd, rn, memory, length)
int length ATTRIBUTE_UNUSED;
{
init ();
- ARMul_SetReg (state, state->Mode, rn, frommem (state, memory));
+ if (rn == 25)
+ {
+ state->Cpsr = frommem (state, memory);
+ ARMul_CPSRAltered (state);
+ }
+ else
+ ARMul_SetReg (state, state->Mode, rn, frommem (state, memory));
return -1;
}
@@ -353,7 +357,7 @@ sim_open (kind, ptr, abfd, argv)
{
sim_kind = kind;
if (myname) free (myname);
- myname = xstrdup (argv[0]);
+ myname = (char *) xstrdup (argv[0]);
sim_callback = ptr;
/* Decide upon the endian-ness of the processor.
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index bc0e35d5056..41655f77ece 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,3 +1,20 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
+Tue May 23 21:35:53 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * aclocal.m4 (sim-profile): Enable the profiler by default.
+
+Tue May 23 20:30:12 2000 Andrew Cagney <cagney@amy.cygnus.com>
+
+ * run.c (main): Initialize sigrc.
+
+Wed Apr 26 16:18:44 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * sim-events.c (update_time_from_event): Add more detailed event
+ tracing.
+
2000-03-30 Dave Brolley <brolley@redhat.com>
* aclocal.m4 (cgen): Use guile to run cgen.
diff --git a/sim/common/aclocal.m4 b/sim/common/aclocal.m4
index 4adb53e4b2a..30934b24830 100644
--- a/sim/common/aclocal.m4
+++ b/sim/common/aclocal.m4
@@ -199,7 +199,7 @@ AC_ARG_ENABLE(sim-profile,
esac
if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
-fi],[sim_profile=""])dnl
+fi],[sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"])dnl
AC_SUBST(sim_profile)
diff --git a/sim/common/configure b/sim/common/configure
index 17be390701b..8fc9d0440e9 100755
--- a/sim/common/configure
+++ b/sim/common/configure
@@ -168,6 +168,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -282,6 +283,7 @@ Configuration:
--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
@@ -452,6 +454,11 @@ EOF
-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=*)
@@ -617,12 +624,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -664,7 +675,7 @@ fi
# This is intended for use by the target specific directories, and by us.
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:668: checking how to run the C preprocessor" >&5
+echo "configure:679: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -679,13 +690,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 683 "configure"
+#line 694 "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:689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:700: \"$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
:
@@ -696,13 +707,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 700 "configure"
+#line 711 "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:706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:717: \"$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
:
@@ -713,13 +724,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 717 "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:723: \"$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
:
@@ -744,7 +755,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:748: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:759: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -771,7 +782,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:775: checking for POSIXized ISC" >&5
+echo "configure:786: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -792,12 +803,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:796: checking for ANSI C header files" >&5
+echo "configure:807: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 801 "configure"
+#line 812 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -805,7 +816,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:820: \"$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*
@@ -822,7 +833,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 826 "configure"
+#line 837 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -840,7 +851,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 844 "configure"
+#line 855 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -861,7 +872,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 865 "configure"
+#line 876 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -872,7 +883,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -896,12 +907,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:900: checking for working const" >&5
+echo "configure:911: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 905 "configure"
+#line 916 "configure"
#include "confdefs.h"
int main() {
@@ -950,7 +961,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -971,21 +982,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:975: checking for inline" >&5
+echo "configure:986: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 982 "configure"
+#line 993 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:989: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1011,12 +1022,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1015: checking for off_t" >&5
+echo "configure:1026: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1020 "configure"
+#line 1031 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1044,12 +1055,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1048: checking for size_t" >&5
+echo "configure:1059: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1053 "configure"
+#line 1064 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1079,19 +1090,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1083: checking for working alloca.h" >&5
+echo "configure:1094: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1088 "configure"
+#line 1099 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1112,12 +1123,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1116: checking for alloca" >&5
+echo "configure:1127: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1121 "configure"
+#line 1132 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1145,7 +1156,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1177,12 +1188,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1181: checking whether alloca needs Cray hooks" >&5
+echo "configure:1192: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1186 "configure"
+#line 1197 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1207,12 +1218,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1211: checking for $ac_func" >&5
+echo "configure:1222: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1216 "configure"
+#line 1227 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1235,7 +1246,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1262,7 +1273,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1266: checking stack direction for C alloca" >&5
+echo "configure:1277: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1270,7 +1281,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1274 "configure"
+#line 1285 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1289,7 +1300,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1314,17 +1325,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1318: checking for $ac_hdr" >&5
+echo "configure:1329: 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 1323 "configure"
+#line 1334 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1339: \"$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*
@@ -1353,12 +1364,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1357: checking for $ac_func" >&5
+echo "configure:1368: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1362 "configure"
+#line 1373 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1381,7 +1392,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1406,7 +1417,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1410: checking for working mmap" >&5
+echo "configure:1421: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1414,7 +1425,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1418 "configure"
+#line 1429 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1554,7 +1565,7 @@ main()
}
EOF
-if { (eval echo configure:1558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1577,12 +1588,12 @@ EOF
fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1581: checking for Cygwin environment" >&5
+echo "configure:1592: 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 1586 "configure"
+#line 1597 "configure"
#include "confdefs.h"
int main() {
@@ -1593,7 +1604,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:1597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -1610,19 +1621,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1614: checking for mingw32 environment" >&5
+echo "configure:1625: 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 1619 "configure"
+#line 1630 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:1626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1689,7 +1700,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1693: checking host system type" >&5
+echo "configure:1704: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1710,7 +1721,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1714: checking target system type" >&5
+echo "configure:1725: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1728,7 +1739,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1732: checking build system type" >&5
+echo "configure:1743: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1772,7 +1783,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1776: checking for $ac_word" >&5
+echo "configure:1787: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1802,7 +1813,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1806: checking for $ac_word" >&5
+echo "configure:1817: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1853,7 +1864,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1857: checking for $ac_word" >&5
+echo "configure:1868: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1885,7 +1896,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1889: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1900: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1896,12 +1907,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1900 "configure"
+#line 1911 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1927,12 +1938,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1931: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1942: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1936: checking whether we are using GNU C" >&5
+echo "configure:1947: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1941,7 +1952,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1960,7 +1971,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1964: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1975: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2003,7 +2014,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2007: checking for a BSD compatible install" >&5
+echo "configure:2018: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2071,7 +2082,7 @@ AR=${AR-ar}
# 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:2075: checking for $ac_word" >&5
+echo "configure:2086: 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
@@ -2106,17 +2117,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2110: checking for $ac_hdr" >&5
+echo "configure:2121: 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 2115 "configure"
+#line 2126 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2120: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2131: \"$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*
@@ -2146,12 +2157,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2150: checking for $ac_func" >&5
+echo "configure:2161: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2155 "configure"
+#line 2166 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2174,7 +2185,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2203,12 +2214,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2207: checking for $ac_func" >&5
+echo "configure:2218: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2212 "configure"
+#line 2223 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2231,7 +2242,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2265,19 +2276,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2269: checking for LC_MESSAGES" >&5
+echo "configure:2280: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2274 "configure"
+#line 2285 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2298,7 +2309,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2302: checking whether NLS is requested" >&5
+echo "configure:2313: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2318,7 +2329,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2322: checking whether included gettext is requested" >&5
+echo "configure:2333: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2337,17 +2348,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2341: checking for libintl.h" >&5
+echo "configure:2352: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2346 "configure"
+#line 2357 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2351: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2362: \"$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*
@@ -2364,19 +2375,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2368: checking for gettext in libc" >&5
+echo "configure:2379: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2373 "configure"
+#line 2384 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2392,7 +2403,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2396: checking for bindtextdomain in -lintl" >&5
+echo "configure:2407: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2400,7 +2411,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2404 "configure"
+#line 2415 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2411,7 +2422,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2427,19 +2438,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2431: checking for gettext in libintl" >&5
+echo "configure:2442: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2436 "configure"
+#line 2447 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2467,7 +2478,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2471: checking for $ac_word" >&5
+echo "configure:2482: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2501,12 +2512,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2505: checking for $ac_func" >&5
+echo "configure:2516: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2510 "configure"
+#line 2521 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2529,7 +2540,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2556,7 +2567,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2560: checking for $ac_word" >&5
+echo "configure:2571: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2592,7 +2603,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2596: checking for $ac_word" >&5
+echo "configure:2607: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2624,7 +2635,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2628 "configure"
+#line 2639 "configure"
#include "confdefs.h"
int main() {
@@ -2632,7 +2643,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2664,7 +2675,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2668: checking for $ac_word" >&5
+echo "configure:2679: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2698,7 +2709,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2702: checking for $ac_word" >&5
+echo "configure:2713: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2734,7 +2745,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2738: checking for $ac_word" >&5
+echo "configure:2749: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2824,7 +2835,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2828: checking for catalogs to be installed" >&5
+echo "configure:2839: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2852,17 +2863,17 @@ echo "configure:2828: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2856: checking for linux/version.h" >&5
+echo "configure:2867: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2861 "configure"
+#line 2872 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2877: \"$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*
@@ -2931,17 +2942,17 @@ for ac_hdr in stdlib.h string.h strings.h unistd.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2935: checking for $ac_hdr" >&5
+echo "configure:2946: 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 2940 "configure"
+#line 2951 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2956: \"$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*
@@ -2971,17 +2982,17 @@ for ac_hdr in sys/time.h sys/resource.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2975: checking for $ac_hdr" >&5
+echo "configure:2986: 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 2980 "configure"
+#line 2991 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2985: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2996: \"$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*
@@ -3011,17 +3022,17 @@ for ac_hdr in fcntl.h fpu_control.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3015: checking for $ac_hdr" >&5
+echo "configure:3026: 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 3020 "configure"
+#line 3031 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3036: \"$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*
@@ -3051,17 +3062,17 @@ for ac_hdr in dlfcn.h errno.h sys/stat.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3055: checking for $ac_hdr" >&5
+echo "configure:3066: 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 3060 "configure"
+#line 3071 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3065: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3076: \"$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*
@@ -3090,12 +3101,12 @@ done
for ac_func in getrusage time sigaction __setfpucw
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3094: checking for $ac_func" >&5
+echo "configure:3105: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3099 "configure"
+#line 3110 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3118,7 +3129,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3145,7 +3156,7 @@ done
# Check for socket libraries
echo $ac_n "checking for bind in -lsocket""... $ac_c" 1>&6
-echo "configure:3149: checking for bind in -lsocket" >&5
+echo "configure:3160: checking for bind in -lsocket" >&5
ac_lib_var=`echo socket'_'bind | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3153,7 +3164,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3157 "configure"
+#line 3168 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3164,7 +3175,7 @@ int main() {
bind()
; return 0; }
EOF
-if { (eval echo configure:3168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3192,7 +3203,7 @@ else
fi
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3196: checking for gethostbyname in -lnsl" >&5
+echo "configure:3207: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3200,7 +3211,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3204 "configure"
+#line 3215 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3211,7 +3222,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3381,18 +3392,18 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3391: checking return type of signal handlers" >&5
+echo "configure:3402: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3396 "configure"
+#line 3407 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3409,7 +3420,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3431,7 +3442,7 @@ EOF
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3435: checking for executable suffix" >&5
+echo "configure:3446: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3441,10 +3452,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:3456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3515,17 +3526,17 @@ for ac_hdr in stdlib.h string.h strings.h time.h sys/times.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3519: checking for $ac_hdr" >&5
+echo "configure:3530: 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 3524 "configure"
+#line 3535 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3529: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3540: \"$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*
diff --git a/sim/common/run.c b/sim/common/run.c
index d23b5a0152e..2c98df87caa 100644
--- a/sim/common/run.c
+++ b/sim/common/run.c
@@ -242,6 +242,7 @@ main (ac, av)
sim_stop_reason() can be used to determine any stop reason. */
if (trace)
sim_set_trace ();
+ sigrc = 0;
do
{
prev_sigint = signal (SIGINT, cntrl_c);
@@ -265,6 +266,7 @@ main (ac, av)
else
{
prev_sigint = signal (SIGINT, cntrl_c);
+ sigrc = 0;
sim_resume (sd, 0, sigrc);
signal (SIGINT, prev_sigint);
sim_stop_reason (sd, &reason, &sigrc);
diff --git a/sim/common/sim-events.c b/sim/common/sim-events.c
index fc211644e85..fa294a7e147 100644
--- a/sim/common/sim-events.c
+++ b/sim/common/sim-events.c
@@ -395,6 +395,27 @@ update_time_from_event (SIM_DESC sd)
events->time_of_event = current_time - 1;
events->time_from_event = -1;
}
+ if (ETRACE_P)
+ {
+ sim_event *event;
+ int i;
+ for (event = events->queue, i = 0;
+ event != NULL;
+ event = event->next, i++)
+ {
+ ETRACE ((_ETRACE,
+ "event time-from-event - time %ld, delta %ld - event %d, tag 0x%lx, time %ld, handler 0x%lx, data 0x%lx%s%s\n",
+ (long)current_time,
+ (long)events->time_from_event,
+ i,
+ (long)event,
+ (long)event->time_of_event,
+ (long)event->handler,
+ (long)event->data,
+ (event->trace != NULL) ? ", " : "",
+ (event->trace != NULL) ? event->trace : ""));
+ }
+ }
SIM_ASSERT (current_time == sim_events_time (sd));
}
diff --git a/sim/d10v/ChangeLog b/sim/d10v/ChangeLog
index 6d8993ab4c2..08d899377c0 100644
--- a/sim/d10v/ChangeLog
+++ b/sim/d10v/ChangeLog
@@ -1,8 +1,40 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
+Tue Apr 18 16:26:41 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * interp.c (sim_resume): Deliver SIGILL.
+ (lookup_hash): Do not print SIGILL message.
+
Tue Feb 22 18:24:56 2000 Andrew Cagney <cagney@b1.cygnus.com>
* Makefile.in (SIM_EXTRA_CFLAGS): Define SIM_HAVE_ENVIRONMENT.
* interp.c (sim_set_trace): Replace sim_trace. Enable tracing.
+Tue Feb 8 17:41:12 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * d10v_sim.h (SIG_D10V_BUS): Define.
+
+ * simops.c (address_exception): Delete function.
+ (OP_30000000, OP_6401, OP_6001, OP_6000, OP_32010000, OP_31000000,
+ OP_6601, OP_6201, OP_6200, OP_33010000, OP_34000000, OP_6800,
+ OP_6C1F, OP_6801, OP_6C01, OP_36010000, OP_35000000, OP_6A00,
+ OP_6E1F, OP_6A01, OP_6E01, OP_37010000): Replace call to
+ address_exception with code that sets SIG_D10V_BUS.
+
+ * interp.c (sim_resume): When SIGBUS or SIGSEGV, deliver a bus
+ error to the simulator before resuming execution.
+ (sim_trace): Check stop reason and use that to determine sim_trace
+ return value.
+ (sim_stop_reason): For SIG_D10V_BUS return a SIGBUS / SIGSEGV
+ sigrc.
+
+Tue Jan 18 16:07:42 MST 2000 Diego Novillo <dnovillo@cygnus.com>
+
+ * interp.c (sim_create_inferior): Change internal initial value for
+ DMAP2 to 0x2000.
+
Mon Jan 3 02:06:07 2000 Andrew Cagney <cagney@b1.cygnus.com>
* interp.c (lookup_hash): Stop the update of the PC when there was
diff --git a/sim/d10v/configure b/sim/d10v/configure
index 6861bf5f8cd..a106c4cfd33 100755
--- a/sim/d10v/configure
+++ b/sim/d10v/configure
@@ -171,6 +171,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -285,6 +286,7 @@ Configuration:
--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
@@ -455,6 +457,11 @@ EOF
-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=*)
@@ -620,12 +627,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -666,7 +677,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:670: checking how to run the C preprocessor" >&5
+echo "configure:681: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -681,13 +692,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 685 "configure"
+#line 696 "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:691: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:702: \"$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
:
@@ -698,13 +709,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 702 "configure"
+#line 713 "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:708: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:719: \"$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
:
@@ -715,13 +726,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 719 "configure"
+#line 730 "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:725: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:736: \"$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
:
@@ -746,7 +757,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:750: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:761: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -773,7 +784,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:777: checking for POSIXized ISC" >&5
+echo "configure:788: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -794,12 +805,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:798: checking for ANSI C header files" >&5
+echo "configure:809: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 803 "configure"
+#line 814 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -807,7 +818,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:811: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:822: \"$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*
@@ -824,7 +835,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 828 "configure"
+#line 839 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -842,7 +853,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 846 "configure"
+#line 857 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -863,7 +874,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 867 "configure"
+#line 878 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -874,7 +885,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:889: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -898,12 +909,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:902: checking for working const" >&5
+echo "configure:913: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 907 "configure"
+#line 918 "configure"
#include "confdefs.h"
int main() {
@@ -952,7 +963,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:956: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -973,21 +984,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:977: checking for inline" >&5
+echo "configure:988: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 984 "configure"
+#line 995 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:991: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1002: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1013,12 +1024,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1017: checking for off_t" >&5
+echo "configure:1028: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1022 "configure"
+#line 1033 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1046,12 +1057,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1050: checking for size_t" >&5
+echo "configure:1061: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1055 "configure"
+#line 1066 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1081,19 +1092,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1085: checking for working alloca.h" >&5
+echo "configure:1096: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1090 "configure"
+#line 1101 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1114,12 +1125,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1118: checking for alloca" >&5
+echo "configure:1129: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1123 "configure"
+#line 1134 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1147,7 +1158,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1179,12 +1190,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1183: checking whether alloca needs Cray hooks" >&5
+echo "configure:1194: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1188 "configure"
+#line 1199 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1209,12 +1220,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1213: checking for $ac_func" >&5
+echo "configure:1224: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1218 "configure"
+#line 1229 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1237,7 +1248,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1241: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1252: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1264,7 +1275,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1268: checking stack direction for C alloca" >&5
+echo "configure:1279: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1272,7 +1283,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1276 "configure"
+#line 1287 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1291,7 +1302,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1295: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1316,17 +1327,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1320: checking for $ac_hdr" >&5
+echo "configure:1331: 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 1325 "configure"
+#line 1336 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1330: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1341: \"$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*
@@ -1355,12 +1366,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1359: checking for $ac_func" >&5
+echo "configure:1370: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1364 "configure"
+#line 1375 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1383,7 +1394,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1387: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1408,7 +1419,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1412: checking for working mmap" >&5
+echo "configure:1423: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1416,7 +1427,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1420 "configure"
+#line 1431 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1556,7 +1567,7 @@ main()
}
EOF
-if { (eval echo configure:1560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1579,12 +1590,12 @@ EOF
fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1583: checking for Cygwin environment" >&5
+echo "configure:1594: 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 1588 "configure"
+#line 1599 "configure"
#include "confdefs.h"
int main() {
@@ -1595,7 +1606,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:1599: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1610: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -1612,19 +1623,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1616: checking for mingw32 environment" >&5
+echo "configure:1627: 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 1621 "configure"
+#line 1632 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:1628: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1691,7 +1702,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1695: checking host system type" >&5
+echo "configure:1706: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1712,7 +1723,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1716: checking target system type" >&5
+echo "configure:1727: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1730,7 +1741,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1734: checking build system type" >&5
+echo "configure:1745: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1774,7 +1785,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1778: checking for $ac_word" >&5
+echo "configure:1789: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1804,7 +1815,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1808: checking for $ac_word" >&5
+echo "configure:1819: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1855,7 +1866,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1859: checking for $ac_word" >&5
+echo "configure:1870: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1887,7 +1898,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1891: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1902: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1898,12 +1909,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1902 "configure"
+#line 1913 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1929,12 +1940,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1933: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1944: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1938: checking whether we are using GNU C" >&5
+echo "configure:1949: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1943,7 +1954,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1947: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1958: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1962,7 +1973,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1966: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1977: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2005,7 +2016,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2009: checking for a BSD compatible install" >&5
+echo "configure:2020: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2073,7 +2084,7 @@ AR=${AR-ar}
# 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:2077: checking for $ac_word" >&5
+echo "configure:2088: 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
@@ -2108,17 +2119,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2112: checking for $ac_hdr" >&5
+echo "configure:2123: 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 2117 "configure"
+#line 2128 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2122: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2133: \"$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*
@@ -2148,12 +2159,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2152: checking for $ac_func" >&5
+echo "configure:2163: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2157 "configure"
+#line 2168 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2176,7 +2187,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2180: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2205,12 +2216,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2209: checking for $ac_func" >&5
+echo "configure:2220: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2214 "configure"
+#line 2225 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2233,7 +2244,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2267,19 +2278,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2271: checking for LC_MESSAGES" >&5
+echo "configure:2282: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2276 "configure"
+#line 2287 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2300,7 +2311,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2304: checking whether NLS is requested" >&5
+echo "configure:2315: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2320,7 +2331,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2324: checking whether included gettext is requested" >&5
+echo "configure:2335: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2339,17 +2350,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2343: checking for libintl.h" >&5
+echo "configure:2354: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2348 "configure"
+#line 2359 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2353: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2364: \"$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*
@@ -2366,19 +2377,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2370: checking for gettext in libc" >&5
+echo "configure:2381: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2375 "configure"
+#line 2386 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2394,7 +2405,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2398: checking for bindtextdomain in -lintl" >&5
+echo "configure:2409: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2402,7 +2413,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2406 "configure"
+#line 2417 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2413,7 +2424,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2428: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2429,19 +2440,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2433: checking for gettext in libintl" >&5
+echo "configure:2444: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2438 "configure"
+#line 2449 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2469,7 +2480,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2473: checking for $ac_word" >&5
+echo "configure:2484: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2503,12 +2514,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2507: checking for $ac_func" >&5
+echo "configure:2518: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2512 "configure"
+#line 2523 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2531,7 +2542,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2558,7 +2569,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2562: checking for $ac_word" >&5
+echo "configure:2573: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2594,7 +2605,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2598: checking for $ac_word" >&5
+echo "configure:2609: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2626,7 +2637,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2630 "configure"
+#line 2641 "configure"
#include "confdefs.h"
int main() {
@@ -2634,7 +2645,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2638: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2666,7 +2677,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2670: checking for $ac_word" >&5
+echo "configure:2681: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2700,7 +2711,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2704: checking for $ac_word" >&5
+echo "configure:2715: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2736,7 +2747,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2740: checking for $ac_word" >&5
+echo "configure:2751: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2826,7 +2837,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2830: checking for catalogs to be installed" >&5
+echo "configure:2841: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2854,17 +2865,17 @@ echo "configure:2830: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2858: checking for linux/version.h" >&5
+echo "configure:2869: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2863 "configure"
+#line 2874 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2868: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2879: \"$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*
@@ -2933,17 +2944,17 @@ for ac_hdr in stdlib.h string.h strings.h unistd.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2937: checking for $ac_hdr" >&5
+echo "configure:2948: 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 2942 "configure"
+#line 2953 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2947: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2958: \"$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*
@@ -2973,17 +2984,17 @@ for ac_hdr in sys/time.h sys/resource.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2977: checking for $ac_hdr" >&5
+echo "configure:2988: 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 2982 "configure"
+#line 2993 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2987: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2998: \"$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*
@@ -3013,17 +3024,17 @@ for ac_hdr in fcntl.h fpu_control.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3017: checking for $ac_hdr" >&5
+echo "configure:3028: 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 3022 "configure"
+#line 3033 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3027: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3038: \"$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*
@@ -3053,17 +3064,17 @@ for ac_hdr in dlfcn.h errno.h sys/stat.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3057: checking for $ac_hdr" >&5
+echo "configure:3068: 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 3062 "configure"
+#line 3073 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3067: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3078: \"$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*
@@ -3092,12 +3103,12 @@ done
for ac_func in getrusage time sigaction __setfpucw
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3096: checking for $ac_func" >&5
+echo "configure:3107: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3101 "configure"
+#line 3112 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3120,7 +3131,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3124: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3135: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3147,7 +3158,7 @@ done
# Check for socket libraries
echo $ac_n "checking for bind in -lsocket""... $ac_c" 1>&6
-echo "configure:3151: checking for bind in -lsocket" >&5
+echo "configure:3162: checking for bind in -lsocket" >&5
ac_lib_var=`echo socket'_'bind | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3155,7 +3166,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3159 "configure"
+#line 3170 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3166,7 +3177,7 @@ int main() {
bind()
; return 0; }
EOF
-if { (eval echo configure:3170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3194,7 +3205,7 @@ else
fi
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3198: checking for gethostbyname in -lnsl" >&5
+echo "configure:3209: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3202,7 +3213,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3206 "configure"
+#line 3217 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3213,7 +3224,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3217: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3383,18 +3394,18 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3393: checking return type of signal handlers" >&5
+echo "configure:3404: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3398 "configure"
+#line 3409 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3411,7 +3422,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3415: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3426: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3433,7 +3444,7 @@ EOF
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3437: checking for executable suffix" >&5
+echo "configure:3448: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3443,10 +3454,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3447: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:3458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3523,17 +3534,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3527: checking for $ac_hdr" >&5
+echo "configure:3538: 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 3532 "configure"
+#line 3543 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3537: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3548: \"$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*
diff --git a/sim/d10v/interp.c b/sim/d10v/interp.c
index 91ebee56ce9..f56df31c298 100644
--- a/sim/d10v/interp.c
+++ b/sim/d10v/interp.c
@@ -99,8 +99,6 @@ lookup_hash (ins, size)
{
if (h->next == NULL)
{
- (*d10v_callback->printf_filtered)
- (d10v_callback, "ERROR: Illegal instruction %x at PC %x\n", ins, PC);
State.exception = SIGILL;
State.pc_changed = 1; /* Don't increment the PC. */
return NULL;
@@ -979,6 +977,13 @@ sim_resume (sd, step, siggnal)
JMP (AE_VECTOR_START);
SLOT_FLUSH ();
break;
+ case SIGILL:
+ SET_BPC (PC);
+ SET_BPSW (PSW);
+ SET_HW_PSW ((PSW & (PSW_F0_BIT | PSW_F1_BIT | PSW_C_BIT)));
+ JMP (RIE_VECTOR_START);
+ SLOT_FLUSH ();
+ break;
default:
/* just ignore it */
break;
@@ -1247,7 +1252,8 @@ sim_create_inferior (sd, abfd, argv, env)
set_imap_register (1, 0x1000);
set_dmap_register (0, 0x2000);
set_dmap_register (1, 0x2000);
- set_dmap_register (2, 0x0000); /* Old DMAP, Value is not 0x2000 */
+ set_dmap_register (2, 0x2000); /* DMAP2 initial internal value is
+ 0x2000 on the new board. */
set_dmap_register (3, 0x0000);
}
diff --git a/sim/d30v/ChangeLog b/sim/d30v/ChangeLog
index 437c5844ea1..1845a45eda1 100644
--- a/sim/d30v/ChangeLog
+++ b/sim/d30v/ChangeLog
@@ -1,3 +1,12 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
+2000-04-12 Frank Ch. Eigler <fche@redhat.com>
+
+ * cpu.h (GPR_CLEAR): New macro.
+ (GPR_SET): Removed macro.
+
Thu Sep 2 18:15:53 1999 Andrew Cagney <cagney@b1.cygnus.com>
* configure: Regenerated to track ../common/aclocal.m4 changes.
diff --git a/sim/d30v/configure b/sim/d30v/configure
index 324d6d6de75..1779847e83b 100755
--- a/sim/d30v/configure
+++ b/sim/d30v/configure
@@ -183,6 +183,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -297,6 +298,7 @@ Configuration:
--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
@@ -467,6 +469,11 @@ EOF
-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=*)
@@ -632,12 +639,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -678,7 +689,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:682: checking how to run the C preprocessor" >&5
+echo "configure:693: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -693,13 +704,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 697 "configure"
+#line 708 "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:703: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:714: \"$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
:
@@ -710,13 +721,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 714 "configure"
+#line 725 "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:720: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:731: \"$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
:
@@ -727,13 +738,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 731 "configure"
+#line 742 "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:737: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:748: \"$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
:
@@ -758,7 +769,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:762: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:773: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -785,7 +796,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:789: checking for POSIXized ISC" >&5
+echo "configure:800: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -806,12 +817,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:810: checking for ANSI C header files" >&5
+echo "configure:821: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 815 "configure"
+#line 826 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -819,7 +830,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:823: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:834: \"$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*
@@ -836,7 +847,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 840 "configure"
+#line 851 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -854,7 +865,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 858 "configure"
+#line 869 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -875,7 +886,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 879 "configure"
+#line 890 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -886,7 +897,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -910,12 +921,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:914: checking for working const" >&5
+echo "configure:925: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 919 "configure"
+#line 930 "configure"
#include "confdefs.h"
int main() {
@@ -964,7 +975,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:968: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:979: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -985,21 +996,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:989: checking for inline" >&5
+echo "configure:1000: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 996 "configure"
+#line 1007 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:1003: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1025,12 +1036,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1029: checking for off_t" >&5
+echo "configure:1040: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1034 "configure"
+#line 1045 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1058,12 +1069,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1062: checking for size_t" >&5
+echo "configure:1073: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1067 "configure"
+#line 1078 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1093,19 +1104,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1097: checking for working alloca.h" >&5
+echo "configure:1108: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1102 "configure"
+#line 1113 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1109: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1126,12 +1137,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1130: checking for alloca" >&5
+echo "configure:1141: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1135 "configure"
+#line 1146 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1159,7 +1170,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1191,12 +1202,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1195: checking whether alloca needs Cray hooks" >&5
+echo "configure:1206: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1200 "configure"
+#line 1211 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1221,12 +1232,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1225: checking for $ac_func" >&5
+echo "configure:1236: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1230 "configure"
+#line 1241 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1249,7 +1260,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1276,7 +1287,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1280: checking stack direction for C alloca" >&5
+echo "configure:1291: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1284,7 +1295,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1288 "configure"
+#line 1299 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1303,7 +1314,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1328,17 +1339,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1332: checking for $ac_hdr" >&5
+echo "configure:1343: 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 1337 "configure"
+#line 1348 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1342: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1353: \"$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*
@@ -1367,12 +1378,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1371: checking for $ac_func" >&5
+echo "configure:1382: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1376 "configure"
+#line 1387 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1395,7 +1406,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1399: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1420,7 +1431,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1424: checking for working mmap" >&5
+echo "configure:1435: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1428,7 +1439,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1432 "configure"
+#line 1443 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1568,7 +1579,7 @@ main()
}
EOF
-if { (eval echo configure:1572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1591,12 +1602,12 @@ EOF
fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1595: checking for Cygwin environment" >&5
+echo "configure:1606: 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 1600 "configure"
+#line 1611 "configure"
#include "confdefs.h"
int main() {
@@ -1607,7 +1618,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:1611: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1622: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -1624,19 +1635,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1628: checking for mingw32 environment" >&5
+echo "configure:1639: 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 1633 "configure"
+#line 1644 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:1640: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1651: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1703,7 +1714,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1707: checking host system type" >&5
+echo "configure:1718: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1724,7 +1735,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1728: checking target system type" >&5
+echo "configure:1739: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1742,7 +1753,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1746: checking build system type" >&5
+echo "configure:1757: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1786,7 +1797,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1790: checking for $ac_word" >&5
+echo "configure:1801: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1816,7 +1827,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1820: checking for $ac_word" >&5
+echo "configure:1831: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1867,7 +1878,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1871: checking for $ac_word" >&5
+echo "configure:1882: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1899,7 +1910,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1903: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1914: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1910,12 +1921,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1914 "configure"
+#line 1925 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1941,12 +1952,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1945: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1956: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1950: checking whether we are using GNU C" >&5
+echo "configure:1961: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1955,7 +1966,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1959: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1970: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1974,7 +1985,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1978: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1989: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2017,7 +2028,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2021: checking for a BSD compatible install" >&5
+echo "configure:2032: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2085,7 +2096,7 @@ AR=${AR-ar}
# 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:2089: checking for $ac_word" >&5
+echo "configure:2100: 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
@@ -2120,17 +2131,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2124: checking for $ac_hdr" >&5
+echo "configure:2135: 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 2129 "configure"
+#line 2140 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2134: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2145: \"$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*
@@ -2160,12 +2171,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2164: checking for $ac_func" >&5
+echo "configure:2175: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2169 "configure"
+#line 2180 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2188,7 +2199,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2217,12 +2228,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2221: checking for $ac_func" >&5
+echo "configure:2232: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2226 "configure"
+#line 2237 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2245,7 +2256,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2249: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2279,19 +2290,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2283: checking for LC_MESSAGES" >&5
+echo "configure:2294: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2288 "configure"
+#line 2299 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2295: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2312,7 +2323,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2316: checking whether NLS is requested" >&5
+echo "configure:2327: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2332,7 +2343,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2336: checking whether included gettext is requested" >&5
+echo "configure:2347: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2351,17 +2362,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2355: checking for libintl.h" >&5
+echo "configure:2366: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2360 "configure"
+#line 2371 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2365: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2376: \"$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*
@@ -2378,19 +2389,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2382: checking for gettext in libc" >&5
+echo "configure:2393: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2387 "configure"
+#line 2398 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2394: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2406,7 +2417,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2410: checking for bindtextdomain in -lintl" >&5
+echo "configure:2421: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2414,7 +2425,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2418 "configure"
+#line 2429 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2425,7 +2436,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2441,19 +2452,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2445: checking for gettext in libintl" >&5
+echo "configure:2456: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2450 "configure"
+#line 2461 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2481,7 +2492,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2485: checking for $ac_word" >&5
+echo "configure:2496: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2515,12 +2526,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2519: checking for $ac_func" >&5
+echo "configure:2530: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2524 "configure"
+#line 2535 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2543,7 +2554,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2570,7 +2581,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2574: checking for $ac_word" >&5
+echo "configure:2585: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2606,7 +2617,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2610: checking for $ac_word" >&5
+echo "configure:2621: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2638,7 +2649,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2642 "configure"
+#line 2653 "configure"
#include "confdefs.h"
int main() {
@@ -2646,7 +2657,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2661: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2678,7 +2689,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2682: checking for $ac_word" >&5
+echo "configure:2693: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2712,7 +2723,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2716: checking for $ac_word" >&5
+echo "configure:2727: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2748,7 +2759,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2752: checking for $ac_word" >&5
+echo "configure:2763: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2838,7 +2849,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2842: checking for catalogs to be installed" >&5
+echo "configure:2853: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2866,17 +2877,17 @@ echo "configure:2842: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2870: checking for linux/version.h" >&5
+echo "configure:2881: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2875 "configure"
+#line 2886 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2880: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2891: \"$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*
@@ -2945,17 +2956,17 @@ for ac_hdr in stdlib.h string.h strings.h unistd.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2949: checking for $ac_hdr" >&5
+echo "configure:2960: 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 2954 "configure"
+#line 2965 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2959: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2970: \"$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*
@@ -2985,17 +2996,17 @@ for ac_hdr in sys/time.h sys/resource.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2989: checking for $ac_hdr" >&5
+echo "configure:3000: 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 2994 "configure"
+#line 3005 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2999: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3010: \"$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*
@@ -3025,17 +3036,17 @@ for ac_hdr in fcntl.h fpu_control.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3029: checking for $ac_hdr" >&5
+echo "configure:3040: 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 3034 "configure"
+#line 3045 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3039: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3050: \"$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*
@@ -3065,17 +3076,17 @@ for ac_hdr in dlfcn.h errno.h sys/stat.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3069: checking for $ac_hdr" >&5
+echo "configure:3080: 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 3074 "configure"
+#line 3085 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3079: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3090: \"$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*
@@ -3104,12 +3115,12 @@ done
for ac_func in getrusage time sigaction __setfpucw
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3108: checking for $ac_func" >&5
+echo "configure:3119: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3113 "configure"
+#line 3124 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3132,7 +3143,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3136: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3159,7 +3170,7 @@ done
# Check for socket libraries
echo $ac_n "checking for bind in -lsocket""... $ac_c" 1>&6
-echo "configure:3163: checking for bind in -lsocket" >&5
+echo "configure:3174: checking for bind in -lsocket" >&5
ac_lib_var=`echo socket'_'bind | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3167,7 +3178,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3171 "configure"
+#line 3182 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3178,7 +3189,7 @@ int main() {
bind()
; return 0; }
EOF
-if { (eval echo configure:3182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3206,7 +3217,7 @@ else
fi
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3210: checking for gethostbyname in -lnsl" >&5
+echo "configure:3221: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3214,7 +3225,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3218 "configure"
+#line 3229 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3225,7 +3236,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3240: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3395,18 +3406,18 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3405: checking return type of signal handlers" >&5
+echo "configure:3416: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3410 "configure"
+#line 3421 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3423,7 +3434,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3427: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3438: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3445,7 +3456,7 @@ EOF
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3449: checking for executable suffix" >&5
+echo "configure:3460: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3455,10 +3466,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:3470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3501,7 +3512,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3505: checking for $ac_word" >&5
+echo "configure:3516: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_M4'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3693,14 +3704,14 @@ else
if test "x$cross_compiling" = "xno"; then
echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:3697: checking whether byte ordering is bigendian" >&5
+echo "configure:3708: checking whether byte ordering is bigendian" >&5
if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_bigendian=unknown
# See if sys/param.h defines the BYTE_ORDER macro.
cat > conftest.$ac_ext <<EOF
-#line 3704 "configure"
+#line 3715 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
@@ -3711,11 +3722,11 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:3715: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3726: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
# It does; now see whether it defined to BIG_ENDIAN or not.
cat > conftest.$ac_ext <<EOF
-#line 3719 "configure"
+#line 3730 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
@@ -3726,7 +3737,7 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:3730: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3741: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_bigendian=yes
else
@@ -3746,7 +3757,7 @@ if test "$cross_compiling" = yes; then
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 3750 "configure"
+#line 3761 "configure"
#include "confdefs.h"
main () {
/* Are we little or big endian? From Harbison&Steele. */
@@ -3759,7 +3770,7 @@ main () {
exit (u.c[sizeof (long) - 1] == 1);
}
EOF
-if { (eval echo configure:3763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3774: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_bigendian=no
else
@@ -3869,17 +3880,17 @@ for ac_hdr in stdlib.h unistd.h string.h strings.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3873: checking for $ac_hdr" >&5
+echo "configure:3884: 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 3878 "configure"
+#line 3889 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3883: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3894: \"$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*
diff --git a/sim/d30v/cpu.h b/sim/d30v/cpu.h
index f848b61962f..56f749ccd73 100644
--- a/sim/d30v/cpu.h
+++ b/sim/d30v/cpu.h
@@ -137,7 +137,7 @@ struct _sim_cpu {
#define IBA (STATE_CPU (sd, 0)->regs.control[instruction_break_address_cr])
#define EIT_VB (STATE_CPU (sd, 0)->regs.control[eit_vector_base_cr])
#define GPR (STATE_CPU (sd, 0)->regs.general_purpose)
-#define GPR_SET(N,VAL) (GPR[(N)] = (VAL))
+#define GPR_CLEAR(N) (GPR[(N)] = 0)
#define ACC (STATE_CPU (sd, 0)->regs.accumulator)
#define CREG (STATE_CPU (sd, 0)->regs.control)
#define SP (GPR[STACK_POINTER_GPR])
diff --git a/sim/erc32/ChangeLog b/sim/erc32/ChangeLog
index 14ea3a80390..f2ff60050a1 100644
--- a/sim/erc32/ChangeLog
+++ b/sim/erc32/ChangeLog
@@ -1,3 +1,7 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
2000-03-07 Frank Ch. Eigler <fche@redhat.com>
From John Dallaway <jld@redhat.co.uk>:
diff --git a/sim/erc32/configure b/sim/erc32/configure
index b68c2d8cf91..0e562231021 100755
--- a/sim/erc32/configure
+++ b/sim/erc32/configure
@@ -169,6 +169,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -283,6 +284,7 @@ Configuration:
--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
@@ -453,6 +455,11 @@ EOF
-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=*)
@@ -618,12 +625,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -664,7 +675,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:668: checking how to run the C preprocessor" >&5
+echo "configure:679: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -679,13 +690,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 683 "configure"
+#line 694 "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:689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:700: \"$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
:
@@ -696,13 +707,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 700 "configure"
+#line 711 "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:706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:717: \"$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
:
@@ -713,13 +724,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 717 "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:723: \"$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
:
@@ -744,7 +755,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:748: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:759: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -771,7 +782,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:775: checking for POSIXized ISC" >&5
+echo "configure:786: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -792,12 +803,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:796: checking for ANSI C header files" >&5
+echo "configure:807: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 801 "configure"
+#line 812 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -805,7 +816,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:820: \"$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*
@@ -822,7 +833,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 826 "configure"
+#line 837 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -840,7 +851,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 844 "configure"
+#line 855 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -861,7 +872,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 865 "configure"
+#line 876 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -872,7 +883,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -896,12 +907,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:900: checking for working const" >&5
+echo "configure:911: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 905 "configure"
+#line 916 "configure"
#include "confdefs.h"
int main() {
@@ -950,7 +961,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -971,21 +982,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:975: checking for inline" >&5
+echo "configure:986: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 982 "configure"
+#line 993 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:989: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1011,12 +1022,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1015: checking for off_t" >&5
+echo "configure:1026: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1020 "configure"
+#line 1031 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1044,12 +1055,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1048: checking for size_t" >&5
+echo "configure:1059: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1053 "configure"
+#line 1064 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1079,19 +1090,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1083: checking for working alloca.h" >&5
+echo "configure:1094: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1088 "configure"
+#line 1099 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1112,12 +1123,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1116: checking for alloca" >&5
+echo "configure:1127: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1121 "configure"
+#line 1132 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1145,7 +1156,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1177,12 +1188,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1181: checking whether alloca needs Cray hooks" >&5
+echo "configure:1192: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1186 "configure"
+#line 1197 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1207,12 +1218,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1211: checking for $ac_func" >&5
+echo "configure:1222: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1216 "configure"
+#line 1227 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1235,7 +1246,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1262,7 +1273,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1266: checking stack direction for C alloca" >&5
+echo "configure:1277: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1270,7 +1281,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1274 "configure"
+#line 1285 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1289,7 +1300,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1314,17 +1325,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1318: checking for $ac_hdr" >&5
+echo "configure:1329: 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 1323 "configure"
+#line 1334 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1339: \"$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*
@@ -1353,12 +1364,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1357: checking for $ac_func" >&5
+echo "configure:1368: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1362 "configure"
+#line 1373 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1381,7 +1392,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1406,7 +1417,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1410: checking for working mmap" >&5
+echo "configure:1421: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1414,7 +1425,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1418 "configure"
+#line 1429 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1554,7 +1565,7 @@ main()
}
EOF
-if { (eval echo configure:1558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1577,12 +1588,12 @@ EOF
fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1581: checking for Cygwin environment" >&5
+echo "configure:1592: 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 1586 "configure"
+#line 1597 "configure"
#include "confdefs.h"
int main() {
@@ -1593,7 +1604,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:1597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -1610,19 +1621,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1614: checking for mingw32 environment" >&5
+echo "configure:1625: 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 1619 "configure"
+#line 1630 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:1626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1689,7 +1700,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1693: checking host system type" >&5
+echo "configure:1704: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1710,7 +1721,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1714: checking target system type" >&5
+echo "configure:1725: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1728,7 +1739,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1732: checking build system type" >&5
+echo "configure:1743: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1772,7 +1783,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1776: checking for $ac_word" >&5
+echo "configure:1787: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1802,7 +1813,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1806: checking for $ac_word" >&5
+echo "configure:1817: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1853,7 +1864,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1857: checking for $ac_word" >&5
+echo "configure:1868: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1885,7 +1896,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1889: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1900: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1896,12 +1907,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1900 "configure"
+#line 1911 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1927,12 +1938,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1931: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1942: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1936: checking whether we are using GNU C" >&5
+echo "configure:1947: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1941,7 +1952,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1960,7 +1971,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1964: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1975: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2003,7 +2014,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2007: checking for a BSD compatible install" >&5
+echo "configure:2018: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2071,7 +2082,7 @@ AR=${AR-ar}
# 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:2075: checking for $ac_word" >&5
+echo "configure:2086: 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
@@ -2106,17 +2117,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2110: checking for $ac_hdr" >&5
+echo "configure:2121: 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 2115 "configure"
+#line 2126 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2120: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2131: \"$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*
@@ -2146,12 +2157,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2150: checking for $ac_func" >&5
+echo "configure:2161: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2155 "configure"
+#line 2166 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2174,7 +2185,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2203,12 +2214,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2207: checking for $ac_func" >&5
+echo "configure:2218: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2212 "configure"
+#line 2223 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2231,7 +2242,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2265,19 +2276,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2269: checking for LC_MESSAGES" >&5
+echo "configure:2280: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2274 "configure"
+#line 2285 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2298,7 +2309,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2302: checking whether NLS is requested" >&5
+echo "configure:2313: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2318,7 +2329,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2322: checking whether included gettext is requested" >&5
+echo "configure:2333: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2337,17 +2348,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2341: checking for libintl.h" >&5
+echo "configure:2352: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2346 "configure"
+#line 2357 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2351: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2362: \"$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*
@@ -2364,19 +2375,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2368: checking for gettext in libc" >&5
+echo "configure:2379: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2373 "configure"
+#line 2384 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2392,7 +2403,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2396: checking for bindtextdomain in -lintl" >&5
+echo "configure:2407: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2400,7 +2411,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2404 "configure"
+#line 2415 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2411,7 +2422,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2427,19 +2438,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2431: checking for gettext in libintl" >&5
+echo "configure:2442: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2436 "configure"
+#line 2447 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2467,7 +2478,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2471: checking for $ac_word" >&5
+echo "configure:2482: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2501,12 +2512,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2505: checking for $ac_func" >&5
+echo "configure:2516: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2510 "configure"
+#line 2521 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2529,7 +2540,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2556,7 +2567,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2560: checking for $ac_word" >&5
+echo "configure:2571: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2592,7 +2603,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2596: checking for $ac_word" >&5
+echo "configure:2607: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2624,7 +2635,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2628 "configure"
+#line 2639 "configure"
#include "confdefs.h"
int main() {
@@ -2632,7 +2643,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2664,7 +2675,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2668: checking for $ac_word" >&5
+echo "configure:2679: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2698,7 +2709,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2702: checking for $ac_word" >&5
+echo "configure:2713: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2734,7 +2745,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2738: checking for $ac_word" >&5
+echo "configure:2749: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2824,7 +2835,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2828: checking for catalogs to be installed" >&5
+echo "configure:2839: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2852,17 +2863,17 @@ echo "configure:2828: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2856: checking for linux/version.h" >&5
+echo "configure:2867: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2861 "configure"
+#line 2872 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2877: \"$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*
@@ -2931,17 +2942,17 @@ for ac_hdr in stdlib.h string.h strings.h unistd.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2935: checking for $ac_hdr" >&5
+echo "configure:2946: 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 2940 "configure"
+#line 2951 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2956: \"$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*
@@ -2971,17 +2982,17 @@ for ac_hdr in sys/time.h sys/resource.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2975: checking for $ac_hdr" >&5
+echo "configure:2986: 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 2980 "configure"
+#line 2991 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2985: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2996: \"$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*
@@ -3011,17 +3022,17 @@ for ac_hdr in fcntl.h fpu_control.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3015: checking for $ac_hdr" >&5
+echo "configure:3026: 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 3020 "configure"
+#line 3031 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3036: \"$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*
@@ -3051,17 +3062,17 @@ for ac_hdr in dlfcn.h errno.h sys/stat.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3055: checking for $ac_hdr" >&5
+echo "configure:3066: 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 3060 "configure"
+#line 3071 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3065: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3076: \"$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*
@@ -3090,12 +3101,12 @@ done
for ac_func in getrusage time sigaction __setfpucw
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3094: checking for $ac_func" >&5
+echo "configure:3105: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3099 "configure"
+#line 3110 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3118,7 +3129,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3145,7 +3156,7 @@ done
# Check for socket libraries
echo $ac_n "checking for bind in -lsocket""... $ac_c" 1>&6
-echo "configure:3149: checking for bind in -lsocket" >&5
+echo "configure:3160: checking for bind in -lsocket" >&5
ac_lib_var=`echo socket'_'bind | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3153,7 +3164,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3157 "configure"
+#line 3168 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3164,7 +3175,7 @@ int main() {
bind()
; return 0; }
EOF
-if { (eval echo configure:3168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3192,7 +3203,7 @@ else
fi
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3196: checking for gethostbyname in -lnsl" >&5
+echo "configure:3207: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3200,7 +3211,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3204 "configure"
+#line 3215 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3211,7 +3222,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3381,18 +3392,18 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3391: checking return type of signal handlers" >&5
+echo "configure:3402: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3396 "configure"
+#line 3407 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3409,7 +3420,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3431,7 +3442,7 @@ EOF
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3435: checking for executable suffix" >&5
+echo "configure:3446: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3441,10 +3452,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:3456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3486,17 +3497,17 @@ for ac_hdr in stdlib.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3490: checking for $ac_hdr" >&5
+echo "configure:3501: 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 3495 "configure"
+#line 3506 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3511: \"$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*
@@ -3525,12 +3536,12 @@ done
# In the Cygwin environment, we need some additional flags.
echo $ac_n "checking for cygwin""... $ac_c" 1>&6
-echo "configure:3529: checking for cygwin" >&5
+echo "configure:3540: checking for cygwin" >&5
if eval "test \"`echo '$''{'sim_cv_os_cygwin'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3534 "configure"
+#line 3545 "configure"
#include "confdefs.h"
#ifdef __CYGWIN__
@@ -3555,7 +3566,7 @@ if test x$sim_cv_os_cygwin = xyes; then
TERMCAP='`if test -r ../../libtermcap/libtermcap.a; then echo ../../libtermcap/libtermcap.a; else echo -ltermcap; fi` -luser32'
else
echo $ac_n "checking for main in -ltermcap""... $ac_c" 1>&6
-echo "configure:3559: checking for main in -ltermcap" >&5
+echo "configure:3570: checking for main in -ltermcap" >&5
ac_lib_var=`echo termcap'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3563,14 +3574,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ltermcap $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3567 "configure"
+#line 3578 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:3574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
diff --git a/sim/fr30/ChangeLog b/sim/fr30/ChangeLog
index a5a59beba6b..14f255de340 100644
--- a/sim/fr30/ChangeLog
+++ b/sim/fr30/ChangeLog
@@ -1,3 +1,7 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
2000-03-30 Dave Brolley <brolley@redhat.com>
* configure: Regenerated.
diff --git a/sim/fr30/configure b/sim/fr30/configure
index 0bfa13d9b7f..969621708df 100644
--- a/sim/fr30/configure
+++ b/sim/fr30/configure
@@ -3406,7 +3406,7 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
diff --git a/sim/h8300/ChangeLog b/sim/h8300/ChangeLog
index 2c07d7e5b99..d4974108b3d 100644
--- a/sim/h8300/ChangeLog
+++ b/sim/h8300/ChangeLog
@@ -1,3 +1,7 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
Thu Sep 2 18:15:53 1999 Andrew Cagney <cagney@b1.cygnus.com>
* configure: Regenerated to track ../common/aclocal.m4 changes.
diff --git a/sim/h8300/configure b/sim/h8300/configure
index a9347a784ce..2ab6b755d1d 100755
--- a/sim/h8300/configure
+++ b/sim/h8300/configure
@@ -169,6 +169,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -283,6 +284,7 @@ Configuration:
--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
@@ -453,6 +455,11 @@ EOF
-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=*)
@@ -618,12 +625,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -664,7 +675,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:668: checking how to run the C preprocessor" >&5
+echo "configure:679: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -679,13 +690,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 683 "configure"
+#line 694 "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:689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:700: \"$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
:
@@ -696,13 +707,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 700 "configure"
+#line 711 "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:706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:717: \"$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
:
@@ -713,13 +724,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 717 "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:723: \"$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
:
@@ -744,7 +755,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:748: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:759: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -771,7 +782,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:775: checking for POSIXized ISC" >&5
+echo "configure:786: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -792,12 +803,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:796: checking for ANSI C header files" >&5
+echo "configure:807: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 801 "configure"
+#line 812 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -805,7 +816,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:820: \"$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*
@@ -822,7 +833,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 826 "configure"
+#line 837 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -840,7 +851,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 844 "configure"
+#line 855 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -861,7 +872,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 865 "configure"
+#line 876 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -872,7 +883,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -896,12 +907,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:900: checking for working const" >&5
+echo "configure:911: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 905 "configure"
+#line 916 "configure"
#include "confdefs.h"
int main() {
@@ -950,7 +961,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -971,21 +982,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:975: checking for inline" >&5
+echo "configure:986: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 982 "configure"
+#line 993 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:989: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1011,12 +1022,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1015: checking for off_t" >&5
+echo "configure:1026: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1020 "configure"
+#line 1031 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1044,12 +1055,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1048: checking for size_t" >&5
+echo "configure:1059: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1053 "configure"
+#line 1064 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1079,19 +1090,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1083: checking for working alloca.h" >&5
+echo "configure:1094: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1088 "configure"
+#line 1099 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1112,12 +1123,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1116: checking for alloca" >&5
+echo "configure:1127: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1121 "configure"
+#line 1132 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1145,7 +1156,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1177,12 +1188,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1181: checking whether alloca needs Cray hooks" >&5
+echo "configure:1192: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1186 "configure"
+#line 1197 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1207,12 +1218,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1211: checking for $ac_func" >&5
+echo "configure:1222: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1216 "configure"
+#line 1227 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1235,7 +1246,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1262,7 +1273,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1266: checking stack direction for C alloca" >&5
+echo "configure:1277: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1270,7 +1281,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1274 "configure"
+#line 1285 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1289,7 +1300,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1314,17 +1325,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1318: checking for $ac_hdr" >&5
+echo "configure:1329: 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 1323 "configure"
+#line 1334 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1339: \"$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*
@@ -1353,12 +1364,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1357: checking for $ac_func" >&5
+echo "configure:1368: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1362 "configure"
+#line 1373 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1381,7 +1392,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1406,7 +1417,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1410: checking for working mmap" >&5
+echo "configure:1421: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1414,7 +1425,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1418 "configure"
+#line 1429 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1554,7 +1565,7 @@ main()
}
EOF
-if { (eval echo configure:1558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1577,12 +1588,12 @@ EOF
fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1581: checking for Cygwin environment" >&5
+echo "configure:1592: 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 1586 "configure"
+#line 1597 "configure"
#include "confdefs.h"
int main() {
@@ -1593,7 +1604,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:1597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -1610,19 +1621,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1614: checking for mingw32 environment" >&5
+echo "configure:1625: 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 1619 "configure"
+#line 1630 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:1626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1689,7 +1700,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1693: checking host system type" >&5
+echo "configure:1704: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1710,7 +1721,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1714: checking target system type" >&5
+echo "configure:1725: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1728,7 +1739,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1732: checking build system type" >&5
+echo "configure:1743: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1772,7 +1783,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1776: checking for $ac_word" >&5
+echo "configure:1787: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1802,7 +1813,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1806: checking for $ac_word" >&5
+echo "configure:1817: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1853,7 +1864,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1857: checking for $ac_word" >&5
+echo "configure:1868: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1885,7 +1896,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1889: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1900: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1896,12 +1907,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1900 "configure"
+#line 1911 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1927,12 +1938,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1931: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1942: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1936: checking whether we are using GNU C" >&5
+echo "configure:1947: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1941,7 +1952,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1960,7 +1971,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1964: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1975: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2003,7 +2014,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2007: checking for a BSD compatible install" >&5
+echo "configure:2018: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2071,7 +2082,7 @@ AR=${AR-ar}
# 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:2075: checking for $ac_word" >&5
+echo "configure:2086: 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
@@ -2106,17 +2117,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2110: checking for $ac_hdr" >&5
+echo "configure:2121: 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 2115 "configure"
+#line 2126 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2120: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2131: \"$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*
@@ -2146,12 +2157,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2150: checking for $ac_func" >&5
+echo "configure:2161: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2155 "configure"
+#line 2166 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2174,7 +2185,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2203,12 +2214,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2207: checking for $ac_func" >&5
+echo "configure:2218: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2212 "configure"
+#line 2223 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2231,7 +2242,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2265,19 +2276,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2269: checking for LC_MESSAGES" >&5
+echo "configure:2280: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2274 "configure"
+#line 2285 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2298,7 +2309,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2302: checking whether NLS is requested" >&5
+echo "configure:2313: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2318,7 +2329,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2322: checking whether included gettext is requested" >&5
+echo "configure:2333: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2337,17 +2348,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2341: checking for libintl.h" >&5
+echo "configure:2352: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2346 "configure"
+#line 2357 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2351: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2362: \"$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*
@@ -2364,19 +2375,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2368: checking for gettext in libc" >&5
+echo "configure:2379: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2373 "configure"
+#line 2384 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2392,7 +2403,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2396: checking for bindtextdomain in -lintl" >&5
+echo "configure:2407: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2400,7 +2411,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2404 "configure"
+#line 2415 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2411,7 +2422,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2427,19 +2438,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2431: checking for gettext in libintl" >&5
+echo "configure:2442: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2436 "configure"
+#line 2447 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2467,7 +2478,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2471: checking for $ac_word" >&5
+echo "configure:2482: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2501,12 +2512,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2505: checking for $ac_func" >&5
+echo "configure:2516: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2510 "configure"
+#line 2521 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2529,7 +2540,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2556,7 +2567,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2560: checking for $ac_word" >&5
+echo "configure:2571: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2592,7 +2603,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2596: checking for $ac_word" >&5
+echo "configure:2607: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2624,7 +2635,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2628 "configure"
+#line 2639 "configure"
#include "confdefs.h"
int main() {
@@ -2632,7 +2643,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2664,7 +2675,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2668: checking for $ac_word" >&5
+echo "configure:2679: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2698,7 +2709,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2702: checking for $ac_word" >&5
+echo "configure:2713: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2734,7 +2745,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2738: checking for $ac_word" >&5
+echo "configure:2749: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2824,7 +2835,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2828: checking for catalogs to be installed" >&5
+echo "configure:2839: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2852,17 +2863,17 @@ echo "configure:2828: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2856: checking for linux/version.h" >&5
+echo "configure:2867: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2861 "configure"
+#line 2872 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2877: \"$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*
@@ -2931,17 +2942,17 @@ for ac_hdr in stdlib.h string.h strings.h unistd.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2935: checking for $ac_hdr" >&5
+echo "configure:2946: 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 2940 "configure"
+#line 2951 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2956: \"$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*
@@ -2971,17 +2982,17 @@ for ac_hdr in sys/time.h sys/resource.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2975: checking for $ac_hdr" >&5
+echo "configure:2986: 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 2980 "configure"
+#line 2991 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2985: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2996: \"$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*
@@ -3011,17 +3022,17 @@ for ac_hdr in fcntl.h fpu_control.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3015: checking for $ac_hdr" >&5
+echo "configure:3026: 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 3020 "configure"
+#line 3031 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3036: \"$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*
@@ -3051,17 +3062,17 @@ for ac_hdr in dlfcn.h errno.h sys/stat.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3055: checking for $ac_hdr" >&5
+echo "configure:3066: 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 3060 "configure"
+#line 3071 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3065: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3076: \"$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*
@@ -3090,12 +3101,12 @@ done
for ac_func in getrusage time sigaction __setfpucw
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3094: checking for $ac_func" >&5
+echo "configure:3105: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3099 "configure"
+#line 3110 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3118,7 +3129,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3145,7 +3156,7 @@ done
# Check for socket libraries
echo $ac_n "checking for bind in -lsocket""... $ac_c" 1>&6
-echo "configure:3149: checking for bind in -lsocket" >&5
+echo "configure:3160: checking for bind in -lsocket" >&5
ac_lib_var=`echo socket'_'bind | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3153,7 +3164,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3157 "configure"
+#line 3168 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3164,7 +3175,7 @@ int main() {
bind()
; return 0; }
EOF
-if { (eval echo configure:3168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3192,7 +3203,7 @@ else
fi
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3196: checking for gethostbyname in -lnsl" >&5
+echo "configure:3207: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3200,7 +3211,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3204 "configure"
+#line 3215 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3211,7 +3222,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3381,18 +3392,18 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3391: checking return type of signal handlers" >&5
+echo "configure:3402: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3396 "configure"
+#line 3407 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3409,7 +3420,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3431,7 +3442,7 @@ EOF
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3435: checking for executable suffix" >&5
+echo "configure:3446: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3441,10 +3452,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:3456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3486,17 +3497,17 @@ for ac_hdr in stdlib.h time.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3490: checking for $ac_hdr" >&5
+echo "configure:3501: 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 3495 "configure"
+#line 3506 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3511: \"$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*
diff --git a/sim/h8500/ChangeLog b/sim/h8500/ChangeLog
index 3839a64ca99..af4f78470bb 100644
--- a/sim/h8500/ChangeLog
+++ b/sim/h8500/ChangeLog
@@ -1,3 +1,7 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
Thu Sep 2 18:15:53 1999 Andrew Cagney <cagney@b1.cygnus.com>
* configure: Regenerated to track ../common/aclocal.m4 changes.
diff --git a/sim/h8500/configure b/sim/h8500/configure
index 322d89b3e49..44e5a9c4964 100755
--- a/sim/h8500/configure
+++ b/sim/h8500/configure
@@ -169,6 +169,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -283,6 +284,7 @@ Configuration:
--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
@@ -453,6 +455,11 @@ EOF
-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=*)
@@ -618,12 +625,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -664,7 +675,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:668: checking how to run the C preprocessor" >&5
+echo "configure:679: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -679,13 +690,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 683 "configure"
+#line 694 "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:689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:700: \"$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
:
@@ -696,13 +707,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 700 "configure"
+#line 711 "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:706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:717: \"$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
:
@@ -713,13 +724,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 717 "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:723: \"$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
:
@@ -744,7 +755,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:748: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:759: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -771,7 +782,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:775: checking for POSIXized ISC" >&5
+echo "configure:786: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -792,12 +803,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:796: checking for ANSI C header files" >&5
+echo "configure:807: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 801 "configure"
+#line 812 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -805,7 +816,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:820: \"$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*
@@ -822,7 +833,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 826 "configure"
+#line 837 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -840,7 +851,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 844 "configure"
+#line 855 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -861,7 +872,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 865 "configure"
+#line 876 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -872,7 +883,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -896,12 +907,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:900: checking for working const" >&5
+echo "configure:911: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 905 "configure"
+#line 916 "configure"
#include "confdefs.h"
int main() {
@@ -950,7 +961,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -971,21 +982,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:975: checking for inline" >&5
+echo "configure:986: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 982 "configure"
+#line 993 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:989: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1011,12 +1022,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1015: checking for off_t" >&5
+echo "configure:1026: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1020 "configure"
+#line 1031 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1044,12 +1055,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1048: checking for size_t" >&5
+echo "configure:1059: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1053 "configure"
+#line 1064 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1079,19 +1090,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1083: checking for working alloca.h" >&5
+echo "configure:1094: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1088 "configure"
+#line 1099 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1112,12 +1123,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1116: checking for alloca" >&5
+echo "configure:1127: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1121 "configure"
+#line 1132 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1145,7 +1156,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1177,12 +1188,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1181: checking whether alloca needs Cray hooks" >&5
+echo "configure:1192: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1186 "configure"
+#line 1197 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1207,12 +1218,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1211: checking for $ac_func" >&5
+echo "configure:1222: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1216 "configure"
+#line 1227 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1235,7 +1246,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1262,7 +1273,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1266: checking stack direction for C alloca" >&5
+echo "configure:1277: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1270,7 +1281,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1274 "configure"
+#line 1285 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1289,7 +1300,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1314,17 +1325,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1318: checking for $ac_hdr" >&5
+echo "configure:1329: 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 1323 "configure"
+#line 1334 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1339: \"$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*
@@ -1353,12 +1364,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1357: checking for $ac_func" >&5
+echo "configure:1368: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1362 "configure"
+#line 1373 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1381,7 +1392,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1406,7 +1417,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1410: checking for working mmap" >&5
+echo "configure:1421: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1414,7 +1425,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1418 "configure"
+#line 1429 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1554,7 +1565,7 @@ main()
}
EOF
-if { (eval echo configure:1558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1577,12 +1588,12 @@ EOF
fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1581: checking for Cygwin environment" >&5
+echo "configure:1592: 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 1586 "configure"
+#line 1597 "configure"
#include "confdefs.h"
int main() {
@@ -1593,7 +1604,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:1597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -1610,19 +1621,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1614: checking for mingw32 environment" >&5
+echo "configure:1625: 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 1619 "configure"
+#line 1630 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:1626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1689,7 +1700,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1693: checking host system type" >&5
+echo "configure:1704: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1710,7 +1721,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1714: checking target system type" >&5
+echo "configure:1725: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1728,7 +1739,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1732: checking build system type" >&5
+echo "configure:1743: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1772,7 +1783,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1776: checking for $ac_word" >&5
+echo "configure:1787: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1802,7 +1813,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1806: checking for $ac_word" >&5
+echo "configure:1817: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1853,7 +1864,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1857: checking for $ac_word" >&5
+echo "configure:1868: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1885,7 +1896,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1889: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1900: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1896,12 +1907,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1900 "configure"
+#line 1911 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1927,12 +1938,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1931: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1942: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1936: checking whether we are using GNU C" >&5
+echo "configure:1947: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1941,7 +1952,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1960,7 +1971,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1964: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1975: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2003,7 +2014,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2007: checking for a BSD compatible install" >&5
+echo "configure:2018: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2071,7 +2082,7 @@ AR=${AR-ar}
# 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:2075: checking for $ac_word" >&5
+echo "configure:2086: 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
@@ -2106,17 +2117,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2110: checking for $ac_hdr" >&5
+echo "configure:2121: 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 2115 "configure"
+#line 2126 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2120: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2131: \"$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*
@@ -2146,12 +2157,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2150: checking for $ac_func" >&5
+echo "configure:2161: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2155 "configure"
+#line 2166 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2174,7 +2185,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2203,12 +2214,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2207: checking for $ac_func" >&5
+echo "configure:2218: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2212 "configure"
+#line 2223 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2231,7 +2242,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2265,19 +2276,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2269: checking for LC_MESSAGES" >&5
+echo "configure:2280: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2274 "configure"
+#line 2285 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2298,7 +2309,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2302: checking whether NLS is requested" >&5
+echo "configure:2313: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2318,7 +2329,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2322: checking whether included gettext is requested" >&5
+echo "configure:2333: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2337,17 +2348,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2341: checking for libintl.h" >&5
+echo "configure:2352: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2346 "configure"
+#line 2357 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2351: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2362: \"$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*
@@ -2364,19 +2375,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2368: checking for gettext in libc" >&5
+echo "configure:2379: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2373 "configure"
+#line 2384 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2392,7 +2403,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2396: checking for bindtextdomain in -lintl" >&5
+echo "configure:2407: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2400,7 +2411,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2404 "configure"
+#line 2415 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2411,7 +2422,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2427,19 +2438,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2431: checking for gettext in libintl" >&5
+echo "configure:2442: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2436 "configure"
+#line 2447 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2467,7 +2478,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2471: checking for $ac_word" >&5
+echo "configure:2482: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2501,12 +2512,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2505: checking for $ac_func" >&5
+echo "configure:2516: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2510 "configure"
+#line 2521 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2529,7 +2540,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2556,7 +2567,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2560: checking for $ac_word" >&5
+echo "configure:2571: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2592,7 +2603,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2596: checking for $ac_word" >&5
+echo "configure:2607: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2624,7 +2635,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2628 "configure"
+#line 2639 "configure"
#include "confdefs.h"
int main() {
@@ -2632,7 +2643,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2664,7 +2675,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2668: checking for $ac_word" >&5
+echo "configure:2679: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2698,7 +2709,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2702: checking for $ac_word" >&5
+echo "configure:2713: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2734,7 +2745,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2738: checking for $ac_word" >&5
+echo "configure:2749: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2824,7 +2835,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2828: checking for catalogs to be installed" >&5
+echo "configure:2839: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2852,17 +2863,17 @@ echo "configure:2828: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2856: checking for linux/version.h" >&5
+echo "configure:2867: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2861 "configure"
+#line 2872 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2877: \"$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*
@@ -2931,17 +2942,17 @@ for ac_hdr in stdlib.h string.h strings.h unistd.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2935: checking for $ac_hdr" >&5
+echo "configure:2946: 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 2940 "configure"
+#line 2951 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2956: \"$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*
@@ -2971,17 +2982,17 @@ for ac_hdr in sys/time.h sys/resource.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2975: checking for $ac_hdr" >&5
+echo "configure:2986: 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 2980 "configure"
+#line 2991 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2985: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2996: \"$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*
@@ -3011,17 +3022,17 @@ for ac_hdr in fcntl.h fpu_control.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3015: checking for $ac_hdr" >&5
+echo "configure:3026: 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 3020 "configure"
+#line 3031 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3036: \"$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*
@@ -3051,17 +3062,17 @@ for ac_hdr in dlfcn.h errno.h sys/stat.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3055: checking for $ac_hdr" >&5
+echo "configure:3066: 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 3060 "configure"
+#line 3071 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3065: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3076: \"$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*
@@ -3090,12 +3101,12 @@ done
for ac_func in getrusage time sigaction __setfpucw
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3094: checking for $ac_func" >&5
+echo "configure:3105: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3099 "configure"
+#line 3110 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3118,7 +3129,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3145,7 +3156,7 @@ done
# Check for socket libraries
echo $ac_n "checking for bind in -lsocket""... $ac_c" 1>&6
-echo "configure:3149: checking for bind in -lsocket" >&5
+echo "configure:3160: checking for bind in -lsocket" >&5
ac_lib_var=`echo socket'_'bind | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3153,7 +3164,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3157 "configure"
+#line 3168 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3164,7 +3175,7 @@ int main() {
bind()
; return 0; }
EOF
-if { (eval echo configure:3168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3192,7 +3203,7 @@ else
fi
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3196: checking for gethostbyname in -lnsl" >&5
+echo "configure:3207: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3200,7 +3211,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3204 "configure"
+#line 3215 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3211,7 +3222,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3381,18 +3392,18 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3391: checking return type of signal handlers" >&5
+echo "configure:3402: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3396 "configure"
+#line 3407 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3409,7 +3420,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3431,7 +3442,7 @@ EOF
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3435: checking for executable suffix" >&5
+echo "configure:3446: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3441,10 +3452,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:3456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3486,17 +3497,17 @@ for ac_hdr in stdlib.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3490: checking for $ac_hdr" >&5
+echo "configure:3501: 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 3495 "configure"
+#line 3506 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3511: \"$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*
diff --git a/sim/i960/ChangeLog b/sim/i960/ChangeLog
index 4d33bfaaa1f..bb87c5e4b78 100644
--- a/sim/i960/ChangeLog
+++ b/sim/i960/ChangeLog
@@ -1,3 +1,7 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
2000-03-30 Dave Brolley <brolley@redhat.com>
* configure: Regenerated.
diff --git a/sim/i960/configure b/sim/i960/configure
index 4e506885f4d..e5c144fb055 100755
--- a/sim/i960/configure
+++ b/sim/i960/configure
@@ -3406,7 +3406,7 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
diff --git a/sim/igen/ChangeLog b/sim/igen/ChangeLog
index 993e9f846e7..ea88fb0ad06 100644
--- a/sim/igen/ChangeLog
+++ b/sim/igen/ChangeLog
@@ -1,3 +1,12 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
+2000-04-12 Frank Ch. Eigler <fche@redhat.com>
+
+ * gen-semantics.c (print_semantic_body): Use GPR_CLEAR(N) instead
+ of GPR_SET(N,0) for gen-zero-rN.
+
Thu Sep 2 18:15:53 1999 Andrew Cagney <cagney@b1.cygnus.com>
* Makefile.in (SIM_WARNINGS): Replace this with.
diff --git a/sim/igen/configure b/sim/igen/configure
index 4ea8705847b..9d6009c55b0 100755
--- a/sim/igen/configure
+++ b/sim/igen/configure
@@ -153,6 +153,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -267,6 +268,7 @@ Configuration:
--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
@@ -437,6 +439,11 @@ EOF
-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=*)
@@ -602,12 +609,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -678,7 +689,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:682: checking for a BSD compatible install" >&5
+echo "configure:693: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -733,7 +744,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:737: checking for $ac_word" >&5
+echo "configure:748: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -763,7 +774,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:767: checking for $ac_word" >&5
+echo "configure:778: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -814,7 +825,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:818: checking for $ac_word" >&5
+echo "configure:829: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -846,7 +857,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:850: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:861: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -857,12 +868,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 861 "configure"
+#line 872 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -888,12 +899,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:892: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:903: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:897: checking whether we are using GNU C" >&5
+echo "configure:908: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -902,7 +913,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:906: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:917: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -921,7 +932,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:925: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:936: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1053,7 +1064,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1057: checking host system type" >&5
+echo "configure:1068: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1074,7 +1085,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1078: checking target system type" >&5
+echo "configure:1089: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1092,7 +1103,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1096: checking build system type" >&5
+echo "configure:1107: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1139,7 +1150,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1143: checking how to run the C preprocessor" >&5
+echo "configure:1154: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -1154,13 +1165,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 1158 "configure"
+#line 1169 "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:1164: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1175: \"$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
:
@@ -1171,13 +1182,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 1175 "configure"
+#line 1186 "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:1181: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1192: \"$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
:
@@ -1188,13 +1199,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 1192 "configure"
+#line 1203 "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:1198: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1209: \"$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
:
@@ -1222,17 +1233,17 @@ for ac_hdr in stdlib.h string.h strings.h sys/stat.h sys/types.h unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1226: checking for $ac_hdr" >&5
+echo "configure:1237: 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 1231 "configure"
+#line 1242 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1236: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1247: \"$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*
@@ -1263,12 +1274,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:1267: checking for $ac_hdr that defines DIR" >&5
+echo "configure:1278: checking for $ac_hdr that defines DIR" >&5
if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1272 "configure"
+#line 1283 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
@@ -1276,7 +1287,7 @@ int main() {
DIR *dirp = 0;
; return 0; }
EOF
-if { (eval echo configure:1280: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1291: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_header_dirent_$ac_safe=yes"
else
@@ -1301,7 +1312,7 @@ done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:1305: checking for opendir in -ldir" >&5
+echo "configure:1316: checking for opendir in -ldir" >&5
ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1309,7 +1320,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1313 "configure"
+#line 1324 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1320,7 +1331,7 @@ int main() {
opendir()
; return 0; }
EOF
-if { (eval echo configure:1324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1342,7 +1353,7 @@ fi
else
echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:1346: checking for opendir in -lx" >&5
+echo "configure:1357: checking for opendir in -lx" >&5
ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1350,7 +1361,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1354 "configure"
+#line 1365 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1361,7 +1372,7 @@ int main() {
opendir()
; return 0; }
EOF
-if { (eval echo configure:1365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1396,7 +1407,7 @@ fi
# 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:1400: checking for $ac_word" >&5
+echo "configure:1411: 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
diff --git a/sim/igen/gen-semantics.c b/sim/igen/gen-semantics.c
index 3acd6d802e0..2994f828472 100644
--- a/sim/igen/gen-semantics.c
+++ b/sim/igen/gen-semantics.c
@@ -246,7 +246,7 @@ print_semantic_body (lf *file,
{
lf_printf (file, "\n");
lf_printf (file, "/* Architecture expects REG to be zero */\n");
- lf_printf (file, "GPR_SET(%d, 0);\n", options.gen.zero_reg_nr);
+ lf_printf (file, "GPR_CLEAR(%d);\n", options.gen.zero_reg_nr);
}
/* generate the code (or at least something */
diff --git a/sim/m32r/ChangeLog b/sim/m32r/ChangeLog
index 8b4069aa086..9f11db8dcb2 100644
--- a/sim/m32r/ChangeLog
+++ b/sim/m32r/ChangeLog
@@ -1,3 +1,7 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
2000-03-30 Dave Brolley <brolley@redhat.com>
* configure: Regenerated.
diff --git a/sim/m32r/configure b/sim/m32r/configure
index 1ceca63a3b2..1ad5574bd9d 100755
--- a/sim/m32r/configure
+++ b/sim/m32r/configure
@@ -3408,7 +3408,7 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
diff --git a/sim/mcore/ChangeLog b/sim/mcore/ChangeLog
index d2c5b586cf7..a5e5ef97c94 100644
--- a/sim/mcore/ChangeLog
+++ b/sim/mcore/ChangeLog
@@ -1,3 +1,7 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
2000-02-14 Nick Clifton <nickc@cygnus.com>
* interp.c (handle_trap1): Fix handling of fclose system call.
diff --git a/sim/mcore/configure b/sim/mcore/configure
index ccca2cbe933..2720d6b5d38 100755
--- a/sim/mcore/configure
+++ b/sim/mcore/configure
@@ -169,6 +169,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -283,6 +284,7 @@ Configuration:
--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
@@ -453,6 +455,11 @@ EOF
-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=*)
@@ -618,12 +625,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -664,7 +675,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:668: checking how to run the C preprocessor" >&5
+echo "configure:679: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -679,13 +690,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 683 "configure"
+#line 694 "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:689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:700: \"$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
:
@@ -696,13 +707,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 700 "configure"
+#line 711 "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:706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:717: \"$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
:
@@ -713,13 +724,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 717 "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:723: \"$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
:
@@ -744,7 +755,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:748: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:759: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -771,7 +782,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:775: checking for POSIXized ISC" >&5
+echo "configure:786: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -792,12 +803,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:796: checking for ANSI C header files" >&5
+echo "configure:807: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 801 "configure"
+#line 812 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -805,7 +816,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:820: \"$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*
@@ -822,7 +833,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 826 "configure"
+#line 837 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -840,7 +851,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 844 "configure"
+#line 855 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -861,7 +872,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 865 "configure"
+#line 876 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -872,7 +883,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -896,12 +907,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:900: checking for working const" >&5
+echo "configure:911: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 905 "configure"
+#line 916 "configure"
#include "confdefs.h"
int main() {
@@ -950,7 +961,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -971,21 +982,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:975: checking for inline" >&5
+echo "configure:986: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 982 "configure"
+#line 993 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:989: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1011,12 +1022,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1015: checking for off_t" >&5
+echo "configure:1026: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1020 "configure"
+#line 1031 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1044,12 +1055,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1048: checking for size_t" >&5
+echo "configure:1059: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1053 "configure"
+#line 1064 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1079,19 +1090,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1083: checking for working alloca.h" >&5
+echo "configure:1094: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1088 "configure"
+#line 1099 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1112,12 +1123,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1116: checking for alloca" >&5
+echo "configure:1127: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1121 "configure"
+#line 1132 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1145,7 +1156,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1177,12 +1188,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1181: checking whether alloca needs Cray hooks" >&5
+echo "configure:1192: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1186 "configure"
+#line 1197 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1207,12 +1218,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1211: checking for $ac_func" >&5
+echo "configure:1222: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1216 "configure"
+#line 1227 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1235,7 +1246,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1262,7 +1273,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1266: checking stack direction for C alloca" >&5
+echo "configure:1277: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1270,7 +1281,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1274 "configure"
+#line 1285 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1289,7 +1300,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1314,17 +1325,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1318: checking for $ac_hdr" >&5
+echo "configure:1329: 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 1323 "configure"
+#line 1334 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1339: \"$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*
@@ -1353,12 +1364,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1357: checking for $ac_func" >&5
+echo "configure:1368: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1362 "configure"
+#line 1373 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1381,7 +1392,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1406,7 +1417,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1410: checking for working mmap" >&5
+echo "configure:1421: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1414,7 +1425,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1418 "configure"
+#line 1429 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1554,7 +1565,7 @@ main()
}
EOF
-if { (eval echo configure:1558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1577,12 +1588,12 @@ EOF
fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1581: checking for Cygwin environment" >&5
+echo "configure:1592: 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 1586 "configure"
+#line 1597 "configure"
#include "confdefs.h"
int main() {
@@ -1593,7 +1604,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:1597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -1610,19 +1621,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1614: checking for mingw32 environment" >&5
+echo "configure:1625: 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 1619 "configure"
+#line 1630 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:1626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1689,7 +1700,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1693: checking host system type" >&5
+echo "configure:1704: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1710,7 +1721,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1714: checking target system type" >&5
+echo "configure:1725: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1728,7 +1739,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1732: checking build system type" >&5
+echo "configure:1743: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1772,7 +1783,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1776: checking for $ac_word" >&5
+echo "configure:1787: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1802,7 +1813,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1806: checking for $ac_word" >&5
+echo "configure:1817: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1853,7 +1864,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1857: checking for $ac_word" >&5
+echo "configure:1868: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1885,7 +1896,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1889: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1900: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1896,12 +1907,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1900 "configure"
+#line 1911 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1927,12 +1938,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1931: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1942: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1936: checking whether we are using GNU C" >&5
+echo "configure:1947: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1941,7 +1952,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1960,7 +1971,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1964: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1975: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2003,7 +2014,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2007: checking for a BSD compatible install" >&5
+echo "configure:2018: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2071,7 +2082,7 @@ AR=${AR-ar}
# 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:2075: checking for $ac_word" >&5
+echo "configure:2086: 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
@@ -2106,17 +2117,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2110: checking for $ac_hdr" >&5
+echo "configure:2121: 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 2115 "configure"
+#line 2126 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2120: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2131: \"$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*
@@ -2146,12 +2157,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2150: checking for $ac_func" >&5
+echo "configure:2161: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2155 "configure"
+#line 2166 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2174,7 +2185,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2203,12 +2214,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2207: checking for $ac_func" >&5
+echo "configure:2218: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2212 "configure"
+#line 2223 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2231,7 +2242,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2265,19 +2276,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2269: checking for LC_MESSAGES" >&5
+echo "configure:2280: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2274 "configure"
+#line 2285 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2298,7 +2309,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2302: checking whether NLS is requested" >&5
+echo "configure:2313: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2318,7 +2329,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2322: checking whether included gettext is requested" >&5
+echo "configure:2333: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2337,17 +2348,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2341: checking for libintl.h" >&5
+echo "configure:2352: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2346 "configure"
+#line 2357 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2351: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2362: \"$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*
@@ -2364,19 +2375,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2368: checking for gettext in libc" >&5
+echo "configure:2379: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2373 "configure"
+#line 2384 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2392,7 +2403,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2396: checking for bindtextdomain in -lintl" >&5
+echo "configure:2407: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2400,7 +2411,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2404 "configure"
+#line 2415 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2411,7 +2422,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2427,19 +2438,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2431: checking for gettext in libintl" >&5
+echo "configure:2442: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2436 "configure"
+#line 2447 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2467,7 +2478,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2471: checking for $ac_word" >&5
+echo "configure:2482: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2501,12 +2512,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2505: checking for $ac_func" >&5
+echo "configure:2516: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2510 "configure"
+#line 2521 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2529,7 +2540,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2556,7 +2567,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2560: checking for $ac_word" >&5
+echo "configure:2571: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2592,7 +2603,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2596: checking for $ac_word" >&5
+echo "configure:2607: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2624,7 +2635,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2628 "configure"
+#line 2639 "configure"
#include "confdefs.h"
int main() {
@@ -2632,7 +2643,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2664,7 +2675,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2668: checking for $ac_word" >&5
+echo "configure:2679: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2698,7 +2709,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2702: checking for $ac_word" >&5
+echo "configure:2713: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2734,7 +2745,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2738: checking for $ac_word" >&5
+echo "configure:2749: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2824,7 +2835,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2828: checking for catalogs to be installed" >&5
+echo "configure:2839: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2852,17 +2863,17 @@ echo "configure:2828: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2856: checking for linux/version.h" >&5
+echo "configure:2867: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2861 "configure"
+#line 2872 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2877: \"$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*
@@ -2931,17 +2942,17 @@ for ac_hdr in stdlib.h string.h strings.h unistd.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2935: checking for $ac_hdr" >&5
+echo "configure:2946: 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 2940 "configure"
+#line 2951 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2956: \"$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*
@@ -2971,17 +2982,17 @@ for ac_hdr in sys/time.h sys/resource.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2975: checking for $ac_hdr" >&5
+echo "configure:2986: 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 2980 "configure"
+#line 2991 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2985: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2996: \"$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*
@@ -3011,17 +3022,17 @@ for ac_hdr in fcntl.h fpu_control.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3015: checking for $ac_hdr" >&5
+echo "configure:3026: 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 3020 "configure"
+#line 3031 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3036: \"$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*
@@ -3051,17 +3062,17 @@ for ac_hdr in dlfcn.h errno.h sys/stat.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3055: checking for $ac_hdr" >&5
+echo "configure:3066: 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 3060 "configure"
+#line 3071 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3065: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3076: \"$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*
@@ -3090,12 +3101,12 @@ done
for ac_func in getrusage time sigaction __setfpucw
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3094: checking for $ac_func" >&5
+echo "configure:3105: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3099 "configure"
+#line 3110 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3118,7 +3129,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3145,7 +3156,7 @@ done
# Check for socket libraries
echo $ac_n "checking for bind in -lsocket""... $ac_c" 1>&6
-echo "configure:3149: checking for bind in -lsocket" >&5
+echo "configure:3160: checking for bind in -lsocket" >&5
ac_lib_var=`echo socket'_'bind | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3153,7 +3164,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3157 "configure"
+#line 3168 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3164,7 +3175,7 @@ int main() {
bind()
; return 0; }
EOF
-if { (eval echo configure:3168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3192,7 +3203,7 @@ else
fi
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3196: checking for gethostbyname in -lnsl" >&5
+echo "configure:3207: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3200,7 +3211,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3204 "configure"
+#line 3215 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3211,7 +3222,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3381,18 +3392,18 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3391: checking return type of signal handlers" >&5
+echo "configure:3402: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3396 "configure"
+#line 3407 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3409,7 +3420,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3431,7 +3442,7 @@ EOF
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3435: checking for executable suffix" >&5
+echo "configure:3446: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3441,10 +3452,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:3456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3486,17 +3497,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3490: checking for $ac_hdr" >&5
+echo "configure:3501: 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 3495 "configure"
+#line 3506 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3511: \"$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*
diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog
index 799159cc3e6..a6e059ca106 100644
--- a/sim/mips/ChangeLog
+++ b/sim/mips/ChangeLog
@@ -1,3 +1,19 @@
+2000-05-24 Michael Hayes <mhayes@cygnus.com>
+
+ * mips.igen (do_dmultx): Fix typo.
+
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
+Fri Apr 28 20:48:36 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * mips.igen (DMxC1): Fix format arguments for sim_io_eprintf call.
+
+2000-04-12 Frank Ch. Eigler <fche@redhat.com>
+
+ * sim-main.h (GPR_CLEAR): Define macro.
+
Mon Apr 10 00:07:09 2000 Andrew Cagney <cagney@b1.cygnus.com>
* interp.c (decode_coproc): Output long using %lx and not %s.
diff --git a/sim/mips/configure b/sim/mips/configure
index 0e97b51207d..3b94005ca8d 100755
--- a/sim/mips/configure
+++ b/sim/mips/configure
@@ -3412,7 +3412,7 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
diff --git a/sim/mips/interp.c b/sim/mips/interp.c
index a75d4ab3f74..382ad7e162a 100644
--- a/sim/mips/interp.c
+++ b/sim/mips/interp.c
@@ -13,9 +13,6 @@
THIS SOFTWARE INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- $Revision$
- $Date$
-
NOTEs:
The IDT monitor (found on the VR4300 board), seems to lie about
diff --git a/sim/mips/mips.igen b/sim/mips/mips.igen
index 3589b318f2b..585e83a61b9 100644
--- a/sim/mips/mips.igen
+++ b/sim/mips/mips.igen
@@ -956,7 +956,7 @@
++sign;
}
}
- /* multuply out the 4 sub products */
+ /* multiply out the 4 sub products */
m00 = ((unsigned64) VL4_8 (op1) * (unsigned64) VL4_8 (op2));
m10 = ((unsigned64) VH4_8 (op1) * (unsigned64) VL4_8 (op2));
m01 = ((unsigned64) VL4_8 (op1) * (unsigned64) VH4_8 (op2));
@@ -3064,7 +3064,8 @@
{
if (STATE_VERBOSE_P(SD))
sim_io_eprintf (SD,
- "Warning: PC 0x%x: DMxC1 32-bit use of odd FPR number\n", CIA);
+ "Warning: PC 0x%lx: DMxC1 32-bit use of odd FPR number\n",
+ (long) CIA);
GPR[RT] = SET64HI (0xDEADC0DE) | 0xBAD0BAD0;
}
}
diff --git a/sim/mips/sim-main.h b/sim/mips/sim-main.h
index 6b6a6f9e173..4ec46e9558a 100644
--- a/sim/mips/sim-main.h
+++ b/sim/mips/sim-main.h
@@ -773,6 +773,13 @@ char* pr_addr PARAMS ((SIM_ADDR addr));
char* pr_uword64 PARAMS ((uword64 addr));
+/* Some mips flavours split their GPR banks into two halves. */
+#ifdef SPLIT_GPR
+#define GPR_CLEAR(N) do { GPR_SET((N),0); GPR1_SET((N),0); } while (0)
+#else
+#define GPR_CLEAR(N) do { GPR_SET((N),0); } while (0)
+#endif
+
void mips_cpu_exception_trigger(SIM_DESC sd, sim_cpu* cpu, address_word pc);
void mips_cpu_exception_suspend(SIM_DESC sd, sim_cpu* cpu, int exception);
void mips_cpu_exception_resume(SIM_DESC sd, sim_cpu* cpu, int exception);
diff --git a/sim/mn10200/ChangeLog b/sim/mn10200/ChangeLog
index 15121c7c2fd..bf1eab469df 100644
--- a/sim/mn10200/ChangeLog
+++ b/sim/mn10200/ChangeLog
@@ -1,3 +1,7 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
Thu Sep 2 18:15:53 1999 Andrew Cagney <cagney@b1.cygnus.com>
* configure: Regenerated to track ../common/aclocal.m4 changes.
diff --git a/sim/mn10200/configure b/sim/mn10200/configure
index ccca2cbe933..2720d6b5d38 100755
--- a/sim/mn10200/configure
+++ b/sim/mn10200/configure
@@ -169,6 +169,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -283,6 +284,7 @@ Configuration:
--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
@@ -453,6 +455,11 @@ EOF
-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=*)
@@ -618,12 +625,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -664,7 +675,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:668: checking how to run the C preprocessor" >&5
+echo "configure:679: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -679,13 +690,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 683 "configure"
+#line 694 "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:689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:700: \"$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
:
@@ -696,13 +707,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 700 "configure"
+#line 711 "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:706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:717: \"$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
:
@@ -713,13 +724,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 717 "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:723: \"$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
:
@@ -744,7 +755,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:748: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:759: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -771,7 +782,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:775: checking for POSIXized ISC" >&5
+echo "configure:786: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -792,12 +803,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:796: checking for ANSI C header files" >&5
+echo "configure:807: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 801 "configure"
+#line 812 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -805,7 +816,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:820: \"$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*
@@ -822,7 +833,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 826 "configure"
+#line 837 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -840,7 +851,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 844 "configure"
+#line 855 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -861,7 +872,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 865 "configure"
+#line 876 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -872,7 +883,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -896,12 +907,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:900: checking for working const" >&5
+echo "configure:911: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 905 "configure"
+#line 916 "configure"
#include "confdefs.h"
int main() {
@@ -950,7 +961,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -971,21 +982,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:975: checking for inline" >&5
+echo "configure:986: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 982 "configure"
+#line 993 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:989: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1011,12 +1022,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1015: checking for off_t" >&5
+echo "configure:1026: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1020 "configure"
+#line 1031 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1044,12 +1055,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1048: checking for size_t" >&5
+echo "configure:1059: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1053 "configure"
+#line 1064 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1079,19 +1090,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1083: checking for working alloca.h" >&5
+echo "configure:1094: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1088 "configure"
+#line 1099 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1112,12 +1123,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1116: checking for alloca" >&5
+echo "configure:1127: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1121 "configure"
+#line 1132 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1145,7 +1156,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1177,12 +1188,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1181: checking whether alloca needs Cray hooks" >&5
+echo "configure:1192: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1186 "configure"
+#line 1197 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1207,12 +1218,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1211: checking for $ac_func" >&5
+echo "configure:1222: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1216 "configure"
+#line 1227 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1235,7 +1246,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1262,7 +1273,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1266: checking stack direction for C alloca" >&5
+echo "configure:1277: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1270,7 +1281,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1274 "configure"
+#line 1285 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1289,7 +1300,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1314,17 +1325,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1318: checking for $ac_hdr" >&5
+echo "configure:1329: 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 1323 "configure"
+#line 1334 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1339: \"$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*
@@ -1353,12 +1364,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1357: checking for $ac_func" >&5
+echo "configure:1368: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1362 "configure"
+#line 1373 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1381,7 +1392,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1406,7 +1417,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1410: checking for working mmap" >&5
+echo "configure:1421: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1414,7 +1425,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1418 "configure"
+#line 1429 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1554,7 +1565,7 @@ main()
}
EOF
-if { (eval echo configure:1558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1577,12 +1588,12 @@ EOF
fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1581: checking for Cygwin environment" >&5
+echo "configure:1592: 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 1586 "configure"
+#line 1597 "configure"
#include "confdefs.h"
int main() {
@@ -1593,7 +1604,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:1597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -1610,19 +1621,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1614: checking for mingw32 environment" >&5
+echo "configure:1625: 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 1619 "configure"
+#line 1630 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:1626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1689,7 +1700,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1693: checking host system type" >&5
+echo "configure:1704: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1710,7 +1721,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1714: checking target system type" >&5
+echo "configure:1725: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1728,7 +1739,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1732: checking build system type" >&5
+echo "configure:1743: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1772,7 +1783,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1776: checking for $ac_word" >&5
+echo "configure:1787: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1802,7 +1813,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1806: checking for $ac_word" >&5
+echo "configure:1817: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1853,7 +1864,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1857: checking for $ac_word" >&5
+echo "configure:1868: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1885,7 +1896,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1889: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1900: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1896,12 +1907,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1900 "configure"
+#line 1911 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1927,12 +1938,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1931: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1942: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1936: checking whether we are using GNU C" >&5
+echo "configure:1947: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1941,7 +1952,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1960,7 +1971,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1964: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1975: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2003,7 +2014,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2007: checking for a BSD compatible install" >&5
+echo "configure:2018: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2071,7 +2082,7 @@ AR=${AR-ar}
# 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:2075: checking for $ac_word" >&5
+echo "configure:2086: 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
@@ -2106,17 +2117,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2110: checking for $ac_hdr" >&5
+echo "configure:2121: 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 2115 "configure"
+#line 2126 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2120: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2131: \"$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*
@@ -2146,12 +2157,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2150: checking for $ac_func" >&5
+echo "configure:2161: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2155 "configure"
+#line 2166 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2174,7 +2185,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2203,12 +2214,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2207: checking for $ac_func" >&5
+echo "configure:2218: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2212 "configure"
+#line 2223 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2231,7 +2242,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2265,19 +2276,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2269: checking for LC_MESSAGES" >&5
+echo "configure:2280: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2274 "configure"
+#line 2285 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2298,7 +2309,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2302: checking whether NLS is requested" >&5
+echo "configure:2313: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2318,7 +2329,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2322: checking whether included gettext is requested" >&5
+echo "configure:2333: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2337,17 +2348,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2341: checking for libintl.h" >&5
+echo "configure:2352: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2346 "configure"
+#line 2357 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2351: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2362: \"$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*
@@ -2364,19 +2375,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2368: checking for gettext in libc" >&5
+echo "configure:2379: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2373 "configure"
+#line 2384 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2392,7 +2403,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2396: checking for bindtextdomain in -lintl" >&5
+echo "configure:2407: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2400,7 +2411,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2404 "configure"
+#line 2415 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2411,7 +2422,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2427,19 +2438,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2431: checking for gettext in libintl" >&5
+echo "configure:2442: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2436 "configure"
+#line 2447 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2467,7 +2478,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2471: checking for $ac_word" >&5
+echo "configure:2482: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2501,12 +2512,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2505: checking for $ac_func" >&5
+echo "configure:2516: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2510 "configure"
+#line 2521 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2529,7 +2540,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2556,7 +2567,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2560: checking for $ac_word" >&5
+echo "configure:2571: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2592,7 +2603,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2596: checking for $ac_word" >&5
+echo "configure:2607: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2624,7 +2635,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2628 "configure"
+#line 2639 "configure"
#include "confdefs.h"
int main() {
@@ -2632,7 +2643,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2664,7 +2675,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2668: checking for $ac_word" >&5
+echo "configure:2679: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2698,7 +2709,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2702: checking for $ac_word" >&5
+echo "configure:2713: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2734,7 +2745,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2738: checking for $ac_word" >&5
+echo "configure:2749: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2824,7 +2835,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2828: checking for catalogs to be installed" >&5
+echo "configure:2839: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2852,17 +2863,17 @@ echo "configure:2828: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2856: checking for linux/version.h" >&5
+echo "configure:2867: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2861 "configure"
+#line 2872 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2877: \"$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*
@@ -2931,17 +2942,17 @@ for ac_hdr in stdlib.h string.h strings.h unistd.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2935: checking for $ac_hdr" >&5
+echo "configure:2946: 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 2940 "configure"
+#line 2951 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2956: \"$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*
@@ -2971,17 +2982,17 @@ for ac_hdr in sys/time.h sys/resource.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2975: checking for $ac_hdr" >&5
+echo "configure:2986: 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 2980 "configure"
+#line 2991 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2985: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2996: \"$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*
@@ -3011,17 +3022,17 @@ for ac_hdr in fcntl.h fpu_control.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3015: checking for $ac_hdr" >&5
+echo "configure:3026: 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 3020 "configure"
+#line 3031 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3036: \"$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*
@@ -3051,17 +3062,17 @@ for ac_hdr in dlfcn.h errno.h sys/stat.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3055: checking for $ac_hdr" >&5
+echo "configure:3066: 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 3060 "configure"
+#line 3071 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3065: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3076: \"$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*
@@ -3090,12 +3101,12 @@ done
for ac_func in getrusage time sigaction __setfpucw
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3094: checking for $ac_func" >&5
+echo "configure:3105: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3099 "configure"
+#line 3110 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3118,7 +3129,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3145,7 +3156,7 @@ done
# Check for socket libraries
echo $ac_n "checking for bind in -lsocket""... $ac_c" 1>&6
-echo "configure:3149: checking for bind in -lsocket" >&5
+echo "configure:3160: checking for bind in -lsocket" >&5
ac_lib_var=`echo socket'_'bind | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3153,7 +3164,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3157 "configure"
+#line 3168 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3164,7 +3175,7 @@ int main() {
bind()
; return 0; }
EOF
-if { (eval echo configure:3168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3192,7 +3203,7 @@ else
fi
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3196: checking for gethostbyname in -lnsl" >&5
+echo "configure:3207: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3200,7 +3211,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3204 "configure"
+#line 3215 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3211,7 +3222,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3381,18 +3392,18 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3391: checking return type of signal handlers" >&5
+echo "configure:3402: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3396 "configure"
+#line 3407 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3409,7 +3420,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3431,7 +3442,7 @@ EOF
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3435: checking for executable suffix" >&5
+echo "configure:3446: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3441,10 +3452,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:3456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3486,17 +3497,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3490: checking for $ac_hdr" >&5
+echo "configure:3501: 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 3495 "configure"
+#line 3506 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3511: \"$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*
diff --git a/sim/mn10300/ChangeLog b/sim/mn10300/ChangeLog
index bd49874f0e7..13da6bea930 100644
--- a/sim/mn10300/ChangeLog
+++ b/sim/mn10300/ChangeLog
@@ -1,3 +1,24 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
+2000-05-22 Alexandre Oliva <aoliva@cygnus.com>
+
+ * am33.igen: Fix leading comments of SP-relative offset insns that
+ referred to other registers. Make their offsets unsigned.
+
+2000-05-18 Alexandre Oliva <aoliva@cygnus.com>
+
+ * mn10300_sim.h (genericAdd, genericSub, genericCmp, genericOr,
+ genericXor, genericBtst): Use `unsigned32'.
+ * op_utils.c: Likewise.
+ * mn10300.igen, am33.igen: Use `unsigned32', `signed32',
+ `unsigned64' or `signed64' where type width is relevant.
+
+2000-04-25 Alexandre Oliva <aoliva@cygnus.com>
+
+ * am33.igen (inc4 Rn): Use genericAdd so as to modify flags.
+
2000-04-09 Alexandre Oliva <aoliva@cygnus.com>
* am33.igen: Make SP-relative offsets unsigned. Add `*am33' for
diff --git a/sim/mn10300/am33.igen b/sim/mn10300/am33.igen
index c80d91d5f11..b5d0a850d25 100644
--- a/sim/mn10300/am33.igen
+++ b/sim/mn10300/am33.igen
@@ -111,7 +111,7 @@
"syscall"
*am33
{
- unsigned int sp, next_pc;
+ unsigned32 sp, next_pc;
PC = cia;
sp = State.regs[REG_SP];
@@ -192,8 +192,8 @@
"movm"
*am33
{
- unsigned long usp = State.regs[REG_USP];
- unsigned long mask;
+ unsigned32 usp = State.regs[REG_USP];
+ unsigned32 mask;
PC = cia;
mask = REGS;
@@ -241,7 +241,8 @@
usp += 4;
}
- if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33)
+ if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33
+ )
{
if (mask & 0x1)
{
@@ -283,10 +284,11 @@
"movm"
*am33
{
- unsigned long usp = State.regs[REG_USP];
- unsigned long mask;
+ unsigned32 usp = State.regs[REG_USP];
+ unsigned32 mask;
- if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33)
+ if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33
+ )
{
if (mask & 0x4)
{
@@ -499,7 +501,7 @@
{
int srcreg, dstreg;
int z, c, n, v;
- unsigned long reg1, reg2, sum;
+ unsigned32 reg1, reg2, sum;
PC = cia;
srcreg = translate_rreg (SD_, RM2);
@@ -541,7 +543,7 @@
{
int srcreg, dstreg;
int z, c, n, v;
- unsigned long reg1, reg2, difference;
+ unsigned32 reg1, reg2, difference;
PC = cia;
srcreg = translate_rreg (SD_, RM2);
@@ -584,7 +586,7 @@
PC = cia;
dstreg = translate_rreg (SD_, RN0);
- State.regs[dstreg] += 4;
+ genericAdd (4, dstreg);
}
// 1111 1001 1101 1000 Rm Rn; cmp Rm,Rn
@@ -710,7 +712,7 @@
*am33
{
int srcreg, dstreg;
- long temp;
+ signed32 temp;
int c, z, n;
PC = cia;
@@ -792,7 +794,7 @@
{
int dstreg;
int c, n, z;
- unsigned long value;
+ unsigned32 value;
PC = cia;
dstreg = translate_rreg (SD_, RN0);
@@ -816,7 +818,7 @@
{
int dstreg;
int c, n, z;
- unsigned long value;
+ unsigned32 value;
PC = cia;
dstreg = translate_rreg (SD_, RN0);
@@ -839,7 +841,7 @@
*am33
{
int srcreg, dstreg;
- unsigned long long temp;
+ unsigned64 temp;
int n, z;
PC = cia;
@@ -862,7 +864,7 @@
*am33
{
int srcreg, dstreg;
- unsigned long long temp;
+ unsigned64 temp;
int n, z;
PC = cia;
@@ -885,7 +887,7 @@
*am33
{
int srcreg, dstreg;
- long long temp;
+ signed64 temp;
int n, z;
PC = cia;
@@ -910,7 +912,7 @@
*am33
{
int srcreg, dstreg;
- unsigned long long temp;
+ unsigned64 temp;
int n, z;
PC = cia;
@@ -1143,7 +1145,7 @@
*am33
{
int srcreg1, srcreg2;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -1171,7 +1173,7 @@
*am33
{
int srcreg1, srcreg2;
- unsigned long long temp, sum;
+ unsigned64 temp, sum;
int c, v;
PC = cia;
@@ -1199,7 +1201,7 @@
*am33
{
int srcreg1, srcreg2;
- long temp, sum;
+ signed32 temp, sum;
int v;
PC = cia;
@@ -1222,7 +1224,7 @@
*am33
{
int srcreg1, srcreg2;
- long long temp, sum;
+ signed64 temp, sum;
int v;
PC = cia;
@@ -1245,7 +1247,7 @@
*am33
{
int srcreg1, srcreg2;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -1273,7 +1275,7 @@
*am33
{
int srcreg1, srcreg2;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -1301,7 +1303,7 @@
*am33
{
int srcreg1, srcreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
int v;
PC = cia;
@@ -1326,7 +1328,7 @@
*am33
{
int srcreg1, srcreg2;
- unsigned long temp, temp2, sum;
+ unsigned32 temp, temp2, sum;
int v;
PC = cia;
@@ -1351,7 +1353,7 @@
*am33
{
int srcreg, dstreg;
- long temp;
+ signed32 temp;
PC = cia;
srcreg = translate_rreg (SD_, RM2);
@@ -1371,7 +1373,7 @@
*am33
{
int srcreg, dstreg;
- unsigned long temp;
+ unsigned32 temp;
PC = cia;
srcreg = translate_rreg (SD_, RM2);
@@ -1429,7 +1431,7 @@
/* 32bit saturation. */
if (State.regs[srcreg] == 0x20)
{
- long long tmp;
+ signed64 tmp;
tmp = State.regs[REG_MCRH];
tmp <<= 32;
@@ -1445,7 +1447,7 @@
/* 16bit saturation */
else if (State.regs[srcreg] == 0x10)
{
- long long tmp;
+ signed64 tmp;
tmp = State.regs[REG_MCRH];
tmp <<= 32;
@@ -1461,7 +1463,7 @@
/* 8 bit saturation */
else if (State.regs[srcreg] == 0x8)
{
- long long tmp;
+ signed64 tmp;
tmp = State.regs[REG_MCRH];
tmp <<= 32;
@@ -1477,7 +1479,7 @@
/* 9 bit saturation */
else if (State.regs[srcreg] == 0x9)
{
- long long tmp;
+ signed64 tmp;
tmp = State.regs[REG_MCRH];
tmp <<= 32;
@@ -1493,7 +1495,7 @@
/* 9 bit saturation */
else if (State.regs[srcreg] == 0x30)
{
- long long tmp;
+ signed64 tmp;
tmp = State.regs[REG_MCRH];
tmp <<= 32;
@@ -1639,7 +1641,7 @@
{
int dstreg, imm;
int z, c, n, v;
- unsigned long reg1, reg2, sum;
+ unsigned32 reg1, reg2, sum;
PC = cia;
dstreg = translate_rreg (SD_, RN0);
@@ -1680,7 +1682,7 @@
{
int imm, dstreg;
int z, c, n, v;
- unsigned long reg1, reg2, difference;
+ unsigned32 reg1, reg2, difference;
PC = cia;
dstreg = translate_rreg (SD_, RN0);
@@ -1786,7 +1788,7 @@
*am33
{
int dstreg;
- long temp;
+ signed32 temp;
int c, z, n;
PC = cia;
@@ -1845,7 +1847,7 @@
*am33
{
int dstreg;
- unsigned long long temp;
+ unsigned64 temp;
int z, n;
PC = cia;
@@ -1867,7 +1869,7 @@
*am33
{
int dstreg;
- unsigned long long temp;
+ unsigned64 temp;
int z, n;
PC = cia;
@@ -2014,7 +2016,7 @@
State.regs[dstreg] = load_word (State.regs[REG_SP] + IMM8);
}
-// 1111 1011 1001 1010 Rm 0000 IMM8; mov Rm,(d8,Rn)
+// 1111 1011 1001 1010 Rm 0000 IMM8; mov Rm,(d8,sp)
8.0xfb+8.0x9a+4.RM2,4.0x0+8.IMM8:D2o:::mov
"mov"
*am33
@@ -2023,7 +2025,7 @@
PC = cia;
srcreg = translate_rreg (SD_, RM2);
- store_word (State.regs[REG_SP] + EXTEND8 (IMM8), State.regs[srcreg]);
+ store_word (State.regs[REG_SP] + IMM8, State.regs[srcreg]);
}
// 1111 1011 1010 1010 Rn Rm IMM8; movbu (d8,sp),Rn
@@ -2038,7 +2040,7 @@
State.regs[dstreg] = load_byte (State.regs[REG_SP] + IMM8);
}
-// 1111 1011 1011 1010 Rn Rm IMM8; movbu Rm,(sp,Rn)
+// 1111 1011 1011 1010 Rn Rm IMM8; movbu Rm,(d8,sp)
8.0xfb+8.0xba+4.RM2,4.0x0+8.IMM8:D2o:::movbu
"movbu"
*am33
@@ -2047,7 +2049,7 @@
PC = cia;
srcreg = translate_rreg (SD_, RM2);
- store_byte (State.regs[REG_SP] + EXTEND8 (IMM8), State.regs[srcreg]);
+ store_byte (State.regs[REG_SP] + IMM8, State.regs[srcreg]);
}
// 1111 1011 1100 1010 Rn Rm IMM8; movhu (d8,sp),Rn
@@ -2109,7 +2111,7 @@
*am33
{
int srcreg;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -2136,7 +2138,7 @@
*am33
{
int srcreg;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -2163,7 +2165,7 @@
*am33
{
int srcreg;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -2190,7 +2192,7 @@
*am33
{
int srcreg;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -2217,7 +2219,7 @@
*am33
{
int srcreg;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -2244,7 +2246,7 @@
*am33
{
int srcreg;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -2281,7 +2283,7 @@
/* 32bit saturation. */
if (IMM8 == 0x20)
{
- long long tmp;
+ signed64 tmp;
tmp = State.regs[REG_MCRH];
tmp <<= 32;
@@ -2297,7 +2299,7 @@
/* 16bit saturation */
else if (IMM8 == 0x10)
{
- long long tmp;
+ signed64 tmp;
tmp = State.regs[REG_MCRH];
tmp <<= 32;
@@ -2313,7 +2315,7 @@
/* 8 bit saturation */
else if (IMM8 == 0x8)
{
- long long tmp;
+ signed64 tmp;
tmp = State.regs[REG_MCRH];
tmp <<= 32;
@@ -2329,7 +2331,7 @@
/* 9 bit saturation */
else if (IMM8 == 0x9)
{
- long long tmp;
+ signed64 tmp;
tmp = State.regs[REG_MCRH];
tmp <<= 32;
@@ -2345,7 +2347,7 @@
/* 9 bit saturation */
else if (IMM8 == 0x30)
{
- long long tmp;
+ signed64 tmp;
tmp = State.regs[REG_MCRH];
tmp <<= 32;
@@ -2367,7 +2369,7 @@
*am33
{
int z, c, n, v;
- unsigned long sum, source1, source2;
+ unsigned32 sum, source1, source2;
int srcreg1, srcreg2, dstreg;
PC = cia;
@@ -2397,7 +2399,7 @@
*am33
{
int z, c, n, v;
- unsigned long sum, source1, source2;
+ unsigned32 sum, source1, source2;
int srcreg1, srcreg2, dstreg;
PC = cia;
@@ -2427,7 +2429,7 @@
*am33
{
int z, c, n, v;
- unsigned long difference, source1, source2;
+ unsigned32 difference, source1, source2;
int srcreg1, srcreg2, dstreg;
PC = cia;
@@ -2457,7 +2459,7 @@
*am33
{
int z, c, n, v;
- unsigned long difference, source1, source2;
+ unsigned32 difference, source1, source2;
int srcreg1, srcreg2, dstreg;
PC = cia;
@@ -2553,7 +2555,7 @@
*am33
{
int z, c, n;
- long temp;
+ signed32 temp;
int srcreg1, srcreg2, dstreg;
PC = cia;
@@ -2624,7 +2626,7 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- signed long long temp;
+ signed64 temp;
int n, z;
PC = cia;
@@ -2651,7 +2653,7 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- signed long long temp;
+ signed64 temp;
int n, z;
PC = cia;
@@ -2834,8 +2836,8 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- signed long long temp;
- unsigned long sum;
+ signed64 temp;
+ unsigned32 sum;
int c, v;
PC = cia;
@@ -2870,8 +2872,8 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- signed long long temp;
- unsigned long sum;
+ signed64 temp;
+ unsigned32 sum;
int c, v;
PC = cia;
@@ -2906,7 +2908,7 @@
*am33
{
int srcreg1, srcreg2, dstreg;
- long temp, sum;
+ signed32 temp, sum;
int v;
PC = cia;
@@ -2934,7 +2936,7 @@
*am33
{
int srcreg1, srcreg2, dstreg;
- long temp, sum;
+ signed32 temp, sum;
int v;
PC = cia;
@@ -2962,7 +2964,7 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- long long temp, sum;
+ signed64 temp, sum;
int v;
PC = cia;
@@ -2992,7 +2994,7 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- long long temp, sum;
+ signed64 temp, sum;
int v;
PC = cia;
@@ -3022,7 +3024,7 @@
*am33
{
int srcreg1, srcreg2, dstreg;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
int v;
PC = cia;
@@ -3052,7 +3054,7 @@
*am33
{
int srcreg1, srcreg2, dstreg;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
int v;
PC = cia;
@@ -3082,7 +3084,7 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- signed long long temp;
+ signed64 temp;
PC = cia;
srcreg1 = translate_rreg (SD_, RM2);
@@ -3104,7 +3106,7 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- signed long long temp;
+ signed64 temp;
PC = cia;
srcreg1 = translate_rreg (SD_, RM2);
@@ -3227,7 +3229,7 @@
*am33
{
int dstreg, z, n, c, v;
- unsigned long sum, imm, reg2;
+ unsigned32 sum, imm, reg2;
PC = cia;
dstreg = translate_rreg (SD_, RN0);
@@ -3266,7 +3268,7 @@
*am33
{
int dstreg, z, n, c, v;
- unsigned long difference, imm, reg2;
+ unsigned32 difference, imm, reg2;
PC = cia;
dstreg = translate_rreg (SD_, RN0);
@@ -3372,7 +3374,7 @@
*am33
{
int dstreg;
- long temp;
+ signed32 temp;
int c, z, n;
PC = cia;
@@ -3432,7 +3434,7 @@
*am33
{
int dstreg;
- unsigned long long temp;
+ unsigned64 temp;
int z, n;
PC = cia;
@@ -3454,7 +3456,7 @@
*am33
{
int dstreg;
- unsigned long long temp;
+ unsigned64 temp;
int z, n;
PC = cia;
@@ -3624,7 +3626,7 @@
State.regs[srcreg]);
}
-// 1111 1101 1010 1010 Rn 0000 IMM24; movbu (d24,Rm),Rn
+// 1111 1101 1010 1010 Rn 0000 IMM24; movbu (d24,sp),Rn
8.0xfd+8.0xaa+4.RN2,4.0x0+8.IMM24A+8.IMM24B+8.IMM24C:D4r:::movbu
"movbu"
*am33
@@ -3634,8 +3636,7 @@
PC = cia;
dstreg = translate_rreg (SD_, RN2);
State.regs[dstreg] = load_byte (State.regs[REG_SP]
- + EXTEND24 (FETCH24 (IMM24A,
- IMM24B, IMM24C)));
+ + FETCH24 (IMM24A, IMM24B, IMM24C));
}
// 1111 1101 1011 1010 Rm 0000 IMM24; movbu Rm,(d24,sp)
@@ -3711,7 +3712,7 @@
*am33
{
int srcreg;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -3738,7 +3739,7 @@
*am33
{
int srcreg;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -3765,7 +3766,7 @@
*am33
{
int srcreg;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -3792,7 +3793,7 @@
*am33
{
int srcreg;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -3819,7 +3820,7 @@
*am33
{
int srcreg;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -3846,7 +3847,7 @@
*am33
{
int srcreg;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -3984,7 +3985,7 @@
*am33
{
int dstreg;
- unsigned int imm, reg2, sum;
+ unsigned32 imm, reg2, sum;
int z, n, c, v;
PC = cia;
@@ -4024,7 +4025,7 @@
*am33
{
int dstreg;
- unsigned int imm, reg2, difference;
+ unsigned32 imm, reg2, difference;
int z, n, c, v;
PC = cia;
@@ -4131,7 +4132,7 @@
*am33
{
int dstreg;
- long temp;
+ signed32 temp;
int c, z, n;
PC = cia;
@@ -4190,7 +4191,7 @@
*am33
{
int dstreg;
- unsigned long long temp;
+ unsigned64 temp;
int z, n;
PC = cia;
@@ -4212,7 +4213,7 @@
*am33
{
int dstreg;
- unsigned long long temp;
+ unsigned64 temp;
int z, n;
PC = cia;
@@ -4467,7 +4468,7 @@
*am33
{
int srcreg, imm;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -4495,7 +4496,7 @@
*am33
{
int srcreg, imm;
- long long temp, sum;
+ signed64 temp, sum;
int c, v;
PC = cia;
@@ -4523,7 +4524,7 @@
*am33
{
int srcreg, imm;
- long temp, sum;
+ signed32 temp, sum;
int v;
PC = cia;
@@ -4546,7 +4547,7 @@
*am33
{
int srcreg, imm;
- long temp, sum;
+ signed32 temp, sum;
int v;
PC = cia;
@@ -4569,7 +4570,7 @@
*am33
{
int srcreg, imm;
- long temp, sum;
+ signed32 temp, sum;
int v;
PC = cia;
@@ -4592,7 +4593,7 @@
*am33
{
int srcreg, imm;
- long temp, sum;
+ signed32 temp, sum;
int v;
PC = cia;
@@ -4615,7 +4616,7 @@
*am33
{
int srcreg, imm;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
int v;
PC = cia;
@@ -4640,7 +4641,7 @@
*am33
{
int srcreg, imm;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
int v;
PC = cia;
@@ -4665,7 +4666,7 @@
*am33
{
int imm, dstreg;
- long temp;
+ signed32 temp;
PC = cia;
dstreg = translate_rreg (SD_, RN0);
@@ -4685,7 +4686,7 @@
*am33
{
int imm, dstreg;
- long temp;
+ signed32 temp;
PC = cia;
dstreg = translate_rreg (SD_, RN0);
@@ -6988,7 +6989,7 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
PC = cia;
srcreg1 = translate_rreg (SD_, RM1);
@@ -7012,7 +7013,7 @@
*am33
{
int srcreg1, dstreg1, dstreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
PC = cia;
srcreg1 = translate_rreg (SD_, RM1);
@@ -7035,7 +7036,7 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
PC = cia;
srcreg1 = translate_rreg (SD_, RM1);
@@ -7059,7 +7060,7 @@
*am33
{
int srcreg1, dstreg1, dstreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
PC = cia;
srcreg1 = translate_rreg (SD_, RM1);
@@ -7082,7 +7083,7 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
PC = cia;
srcreg1 = translate_rreg (SD_, RM1);
@@ -7106,7 +7107,7 @@
*am33
{
int srcreg1, dstreg1, dstreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
PC = cia;
srcreg1 = translate_rreg (SD_, RM1);
@@ -7129,7 +7130,7 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
PC = cia;
srcreg1 = translate_rreg (SD_, RM1);
@@ -7153,7 +7154,7 @@
*am33
{
int srcreg1, dstreg1, dstreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
PC = cia;
srcreg1 = translate_rreg (SD_, RM1);
@@ -7176,7 +7177,7 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
PC = cia;
srcreg1 = translate_rreg (SD_, RM1);
@@ -7202,7 +7203,7 @@
*am33
{
int srcreg1, dstreg1, dstreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
PC = cia;
srcreg1 = translate_rreg (SD_, RM1);
@@ -7227,7 +7228,7 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
PC = cia;
srcreg1 = translate_rreg (SD_, RM1);
@@ -7251,7 +7252,7 @@
*am33
{
int srcreg1, dstreg1, dstreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
PC = cia;
srcreg1 = translate_rreg (SD_, RM1);
@@ -7275,7 +7276,7 @@
*am33
{
int srcreg1, srcreg2, dstreg1, dstreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
PC = cia;
srcreg1 = translate_rreg (SD_, RM1);
@@ -7299,7 +7300,7 @@
*am33
{
int srcreg1, dstreg1, dstreg2;
- long temp, temp2, sum;
+ signed32 temp, temp2, sum;
PC = cia;
srcreg1 = translate_rreg (SD_, RM1);
@@ -8699,3 +8700,4 @@
State.regs[REG_PC] = State.regs[REG_LAR] - 4;
nia = PC;
}
+
diff --git a/sim/mn10300/configure b/sim/mn10300/configure
index bac918ee2b4..93c6de46667 100755
--- a/sim/mn10300/configure
+++ b/sim/mn10300/configure
@@ -187,6 +187,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -301,6 +302,7 @@ Configuration:
--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
@@ -471,6 +473,11 @@ EOF
-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=*)
@@ -636,12 +643,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -682,7 +693,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:686: checking how to run the C preprocessor" >&5
+echo "configure:697: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -697,13 +708,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 701 "configure"
+#line 712 "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:707: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:718: \"$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
:
@@ -714,13 +725,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 718 "configure"
+#line 729 "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:724: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:735: \"$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
:
@@ -731,13 +742,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 735 "configure"
+#line 746 "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:741: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:752: \"$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
:
@@ -762,7 +773,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:766: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:777: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -789,7 +800,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:793: checking for POSIXized ISC" >&5
+echo "configure:804: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -810,12 +821,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:814: checking for ANSI C header files" >&5
+echo "configure:825: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 819 "configure"
+#line 830 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -823,7 +834,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:827: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:838: \"$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,7 +851,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 844 "configure"
+#line 855 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -858,7 +869,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 862 "configure"
+#line 873 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -879,7 +890,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 883 "configure"
+#line 894 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -890,7 +901,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -914,12 +925,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:918: checking for working const" >&5
+echo "configure:929: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 923 "configure"
+#line 934 "configure"
#include "confdefs.h"
int main() {
@@ -968,7 +979,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -989,21 +1000,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:993: checking for inline" >&5
+echo "configure:1004: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 1000 "configure"
+#line 1011 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:1007: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1018: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1029,12 +1040,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1033: checking for off_t" >&5
+echo "configure:1044: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1038 "configure"
+#line 1049 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1062,12 +1073,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1066: checking for size_t" >&5
+echo "configure:1077: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1071 "configure"
+#line 1082 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1097,19 +1108,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1101: checking for working alloca.h" >&5
+echo "configure:1112: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1106 "configure"
+#line 1117 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1124: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1130,12 +1141,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1134: checking for alloca" >&5
+echo "configure:1145: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1139 "configure"
+#line 1150 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1163,7 +1174,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1195,12 +1206,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1199: checking whether alloca needs Cray hooks" >&5
+echo "configure:1210: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1204 "configure"
+#line 1215 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1225,12 +1236,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1229: checking for $ac_func" >&5
+echo "configure:1240: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1234 "configure"
+#line 1245 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1253,7 +1264,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1280,7 +1291,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1284: checking stack direction for C alloca" >&5
+echo "configure:1295: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1288,7 +1299,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1292 "configure"
+#line 1303 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1307,7 +1318,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1332,17 +1343,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1336: checking for $ac_hdr" >&5
+echo "configure:1347: 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 1341 "configure"
+#line 1352 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1346: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1357: \"$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*
@@ -1371,12 +1382,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1375: checking for $ac_func" >&5
+echo "configure:1386: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1380 "configure"
+#line 1391 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1399,7 +1410,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1424,7 +1435,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1428: checking for working mmap" >&5
+echo "configure:1439: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1432,7 +1443,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1436 "configure"
+#line 1447 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1572,7 +1583,7 @@ main()
}
EOF
-if { (eval echo configure:1576: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1595,12 +1606,12 @@ EOF
fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1599: checking for Cygwin environment" >&5
+echo "configure:1610: 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 1604 "configure"
+#line 1615 "configure"
#include "confdefs.h"
int main() {
@@ -1611,7 +1622,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:1615: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -1628,19 +1639,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1632: checking for mingw32 environment" >&5
+echo "configure:1643: 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 1637 "configure"
+#line 1648 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:1644: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1655: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1707,7 +1718,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1711: checking host system type" >&5
+echo "configure:1722: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1728,7 +1739,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1732: checking target system type" >&5
+echo "configure:1743: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1746,7 +1757,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1750: checking build system type" >&5
+echo "configure:1761: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1790,7 +1801,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1794: checking for $ac_word" >&5
+echo "configure:1805: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1820,7 +1831,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1824: checking for $ac_word" >&5
+echo "configure:1835: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1871,7 +1882,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1875: checking for $ac_word" >&5
+echo "configure:1886: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1903,7 +1914,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1907: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1918: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1914,12 +1925,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1918 "configure"
+#line 1929 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1945,12 +1956,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1949: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1960: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1954: checking whether we are using GNU C" >&5
+echo "configure:1965: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1959,7 +1970,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1963: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1974: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1978,7 +1989,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1982: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1993: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2021,7 +2032,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2025: checking for a BSD compatible install" >&5
+echo "configure:2036: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2089,7 +2100,7 @@ AR=${AR-ar}
# 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:2093: checking for $ac_word" >&5
+echo "configure:2104: 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
@@ -2124,17 +2135,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2128: checking for $ac_hdr" >&5
+echo "configure:2139: 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 2133 "configure"
+#line 2144 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2138: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2149: \"$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*
@@ -2164,12 +2175,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2168: checking for $ac_func" >&5
+echo "configure:2179: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2173 "configure"
+#line 2184 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2192,7 +2203,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2196: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2221,12 +2232,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2225: checking for $ac_func" >&5
+echo "configure:2236: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2230 "configure"
+#line 2241 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2249,7 +2260,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2283,19 +2294,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2287: checking for LC_MESSAGES" >&5
+echo "configure:2298: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2292 "configure"
+#line 2303 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2310: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2316,7 +2327,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2320: checking whether NLS is requested" >&5
+echo "configure:2331: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2336,7 +2347,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2340: checking whether included gettext is requested" >&5
+echo "configure:2351: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2355,17 +2366,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2359: checking for libintl.h" >&5
+echo "configure:2370: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2364 "configure"
+#line 2375 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2369: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2380: \"$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*
@@ -2382,19 +2393,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2386: checking for gettext in libc" >&5
+echo "configure:2397: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2391 "configure"
+#line 2402 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2410,7 +2421,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2414: checking for bindtextdomain in -lintl" >&5
+echo "configure:2425: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2418,7 +2429,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2422 "configure"
+#line 2433 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2429,7 +2440,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2445,19 +2456,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2449: checking for gettext in libintl" >&5
+echo "configure:2460: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2454 "configure"
+#line 2465 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2485,7 +2496,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2489: checking for $ac_word" >&5
+echo "configure:2500: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2519,12 +2530,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2523: checking for $ac_func" >&5
+echo "configure:2534: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2528 "configure"
+#line 2539 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2547,7 +2558,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2574,7 +2585,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2578: checking for $ac_word" >&5
+echo "configure:2589: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2610,7 +2621,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2614: checking for $ac_word" >&5
+echo "configure:2625: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2642,7 +2653,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2646 "configure"
+#line 2657 "configure"
#include "confdefs.h"
int main() {
@@ -2650,7 +2661,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2682,7 +2693,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2686: checking for $ac_word" >&5
+echo "configure:2697: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2716,7 +2727,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2720: checking for $ac_word" >&5
+echo "configure:2731: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2752,7 +2763,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2756: checking for $ac_word" >&5
+echo "configure:2767: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2842,7 +2853,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2846: checking for catalogs to be installed" >&5
+echo "configure:2857: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2870,17 +2881,17 @@ echo "configure:2846: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2874: checking for linux/version.h" >&5
+echo "configure:2885: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2879 "configure"
+#line 2890 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2884: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2895: \"$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*
@@ -2949,17 +2960,17 @@ for ac_hdr in stdlib.h string.h strings.h unistd.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2953: checking for $ac_hdr" >&5
+echo "configure:2964: 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 2958 "configure"
+#line 2969 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2963: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2974: \"$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*
@@ -2989,17 +3000,17 @@ for ac_hdr in sys/time.h sys/resource.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2993: checking for $ac_hdr" >&5
+echo "configure:3004: 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 2998 "configure"
+#line 3009 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3003: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3014: \"$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*
@@ -3029,17 +3040,17 @@ for ac_hdr in fcntl.h fpu_control.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3033: checking for $ac_hdr" >&5
+echo "configure:3044: 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 3038 "configure"
+#line 3049 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3043: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3054: \"$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*
@@ -3069,17 +3080,17 @@ for ac_hdr in dlfcn.h errno.h sys/stat.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3073: checking for $ac_hdr" >&5
+echo "configure:3084: 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 3078 "configure"
+#line 3089 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3083: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3094: \"$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*
@@ -3108,12 +3119,12 @@ done
for ac_func in getrusage time sigaction __setfpucw
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3112: checking for $ac_func" >&5
+echo "configure:3123: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3117 "configure"
+#line 3128 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3136,7 +3147,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3163,7 +3174,7 @@ done
# Check for socket libraries
echo $ac_n "checking for bind in -lsocket""... $ac_c" 1>&6
-echo "configure:3167: checking for bind in -lsocket" >&5
+echo "configure:3178: checking for bind in -lsocket" >&5
ac_lib_var=`echo socket'_'bind | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3171,7 +3182,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3175 "configure"
+#line 3186 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3182,7 +3193,7 @@ int main() {
bind()
; return 0; }
EOF
-if { (eval echo configure:3186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3210,7 +3221,7 @@ else
fi
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3214: checking for gethostbyname in -lnsl" >&5
+echo "configure:3225: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3218,7 +3229,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3222 "configure"
+#line 3233 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3229,7 +3240,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3399,18 +3410,18 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3409: checking return type of signal handlers" >&5
+echo "configure:3420: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3414 "configure"
+#line 3425 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3427,7 +3438,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3431: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3442: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3449,7 +3460,7 @@ EOF
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3453: checking for executable suffix" >&5
+echo "configure:3464: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3459,10 +3470,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:3474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3610,14 +3621,14 @@ else
if test "x$cross_compiling" = "xno"; then
echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:3614: checking whether byte ordering is bigendian" >&5
+echo "configure:3625: checking whether byte ordering is bigendian" >&5
if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_bigendian=unknown
# See if sys/param.h defines the BYTE_ORDER macro.
cat > conftest.$ac_ext <<EOF
-#line 3621 "configure"
+#line 3632 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
@@ -3628,11 +3639,11 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:3632: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3643: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
# It does; now see whether it defined to BIG_ENDIAN or not.
cat > conftest.$ac_ext <<EOF
-#line 3636 "configure"
+#line 3647 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
@@ -3643,7 +3654,7 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:3647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3658: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_bigendian=yes
else
@@ -3663,7 +3674,7 @@ if test "$cross_compiling" = yes; then
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 3667 "configure"
+#line 3678 "configure"
#include "confdefs.h"
main () {
/* Are we little or big endian? From Harbison&Steele. */
@@ -3676,7 +3687,7 @@ main () {
exit (u.c[sizeof (long) - 1] == 1);
}
EOF
-if { (eval echo configure:3680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_bigendian=no
else
@@ -3926,12 +3937,12 @@ fi
for ac_func in time chmod utime fork execve execv chown
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3930: checking for $ac_func" >&5
+echo "configure:3941: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3935 "configure"
+#line 3946 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3954,7 +3965,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3958: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3982,17 +3993,17 @@ for ac_hdr in unistd.h stdlib.h string.h strings.h utime.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3986: checking for $ac_hdr" >&5
+echo "configure:3997: 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 3991 "configure"
+#line 4002 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3996: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4007: \"$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*
diff --git a/sim/mn10300/mn10300.igen b/sim/mn10300/mn10300.igen
index 2ffa9805ec5..1114142a076 100644
--- a/sim/mn10300/mn10300.igen
+++ b/sim/mn10300/mn10300.igen
@@ -720,7 +720,7 @@
{
/* OP_2C0000 (); */
- unsigned long value;
+ unsigned32 value;
PC = cia;
value = EXTEND16 (FETCH16(IMM16A, IMM16B));
@@ -737,7 +737,7 @@
{
/* OP_FCCC0000 (); */
- unsigned long value;
+ unsigned32 value;
PC = cia;
value = FETCH32(IMM32A, IMM32B, IMM32C, IMM32D);
@@ -754,7 +754,7 @@
{
/* OP_240000 (); */
- unsigned long value;
+ unsigned32 value;
PC = cia;
value = FETCH16(IMM16A, IMM16B);
@@ -1618,7 +1618,7 @@
{
/* OP_F8FE00 (); */
- unsigned long imm;
+ unsigned32 imm;
/* Note: no PSW changes. */
PC = cia;
@@ -1636,7 +1636,7 @@
{
/* OP_FAFE0000 (); */
- unsigned long imm;
+ unsigned32 imm;
/* Note: no PSW changes. */
PC = cia;
@@ -1654,7 +1654,7 @@
{
/* OP_FCFE0000 (); */
- unsigned long imm;
+ unsigned32 imm;
/* Note: no PSW changes. */
PC = cia;
@@ -1673,7 +1673,7 @@
{
/* OP_F140 (); */
int z, c, n, v;
- unsigned long reg1, reg2, sum;
+ unsigned32 reg1, reg2, sum;
PC = cia;
reg1 = State.regs[REG_D0 + DM1];
@@ -1786,7 +1786,7 @@
{
/* OP_F180 (); */
int z, c, n, v;
- unsigned long reg1, reg2, difference;
+ unsigned32 reg1, reg2, difference;
PC = cia;
reg1 = State.regs[REG_D0 + DM1];
@@ -1815,7 +1815,7 @@
{
/* OP_F240 (); */
- unsigned long long temp;
+ unsigned64 temp;
int n, z;
PC = cia;
@@ -1839,7 +1839,7 @@
{
/* OP_F250 (); */
- unsigned long long temp;
+ unsigned64 temp;
int n, z;
PC = cia;
@@ -1936,7 +1936,7 @@
{
/* OP_40 (); */
- unsigned int imm;
+ unsigned32 imm;
PC = cia;
imm = 1;
@@ -2428,7 +2428,7 @@
{
/* OP_F080 (); */
- unsigned long temp;
+ unsigned32 temp;
int z;
PC = cia;
@@ -2451,7 +2451,7 @@
{
/* OP_FE000000 (); */
- unsigned long temp;
+ unsigned32 temp;
int z;
PC = cia;
@@ -2474,7 +2474,7 @@
{
/* OP_FAF00000 (); */
- unsigned long temp;
+ unsigned32 temp;
int z;
PC = cia;
@@ -2496,7 +2496,7 @@
{
/* OP_F090 (); */
- unsigned long temp;
+ unsigned32 temp;
int z;
PC = cia;
@@ -2519,7 +2519,7 @@
{
/* OP_FE010000 (); */
- unsigned long temp;
+ unsigned32 temp;
int z;
PC = cia;
@@ -2542,7 +2542,7 @@
{
/* OP_FAF40000 (); */
- unsigned long temp;
+ unsigned32 temp;
int z;
PC = cia;
@@ -2564,7 +2564,7 @@
{
/* OP_F2B0 (); */
- long temp;
+ signed32 temp;
int z, n, c;
PC = cia;
@@ -2588,7 +2588,7 @@
{
/* OP_F8C800 (); */
- long temp;
+ signed32 temp;
int z, n, c;
PC = cia;
@@ -2716,7 +2716,7 @@
{
/* OP_F284 (); */
- unsigned long value;
+ unsigned32 value;
int c,n,z;
PC = cia;
@@ -2742,7 +2742,7 @@
{
/* OP_F280 (); */
- unsigned long value;
+ unsigned32 value;
int c,n,z;
PC = cia;
@@ -3291,7 +3291,7 @@
{
/* OP_F0F0 (); */
- unsigned int next_pc, sp;
+ unsigned32 next_pc, sp;
PC = cia;
sp = State.regs[REG_SP];
@@ -3312,7 +3312,7 @@
{
/* OP_FAFF0000 (); */
- unsigned int next_pc, sp;
+ unsigned32 next_pc, sp;
PC = cia;
sp = State.regs[REG_SP];
@@ -3333,7 +3333,7 @@
{
/* OP_FCFF0000 (); */
- unsigned int next_pc, sp;
+ unsigned32 next_pc, sp;
PC = cia;
sp = State.regs[REG_SP];
@@ -3354,7 +3354,7 @@
{
/* OP_F0FC (); */
- unsigned int sp;
+ unsigned32 sp;
sp = State.regs[REG_SP];
State.regs[REG_PC] = load_word(sp);
@@ -3371,7 +3371,7 @@
{
/* OP_F0FD (); */
- unsigned int sp;
+ unsigned32 sp;
sp = State.regs[REG_SP];
PSW = load_half(sp);
@@ -3390,7 +3390,7 @@
{
/* OP_F0FE (); */
- unsigned int sp, next_pc;
+ unsigned32 sp, next_pc;
PC = cia;
sp = State.regs[REG_SP];
@@ -3468,7 +3468,7 @@
{
/* OP_F600 (); */
- unsigned long long temp;
+ unsigned64 temp;
int n, z;
PC = cia;
@@ -3492,7 +3492,7 @@
{
/* OP_F90000 (); */
- unsigned long long temp;
+ unsigned64 temp;
int n, z;
PC = cia;
@@ -3516,7 +3516,7 @@
{
/* OP_FB000000 (); */
- unsigned long long temp;
+ unsigned64 temp;
int n, z;
PC = cia;
@@ -3540,7 +3540,7 @@
{
/* OP_FD000000 (); */
- unsigned long long temp;
+ unsigned64 temp;
int n, z;
PC = cia;
@@ -3564,7 +3564,7 @@
{
/* OP_F610 (); */
- unsigned long long temp;
+ unsigned64 temp;
int n, z;
PC = cia;
@@ -3588,7 +3588,7 @@
{
/* OP_F91400 (); */
- unsigned long long temp;
+ unsigned64 temp;
int n, z;
PC = cia;
@@ -3612,7 +3612,7 @@
{
/* OP_FB140000 (); */
- unsigned long long temp;
+ unsigned64 temp;
int n, z;
PC = cia;
@@ -3636,7 +3636,7 @@
{
/* OP_FD140000 (); */
- unsigned long long temp;
+ unsigned64 temp;
int n, z;
PC = cia;
@@ -3745,8 +3745,8 @@
{
/* OP_CE00 (); */
- unsigned long sp = State.regs[REG_SP];
- unsigned long mask;
+ unsigned32 sp = State.regs[REG_SP];
+ unsigned32 mask;
PC = cia;
mask = REGS;
@@ -3794,7 +3794,8 @@
sp += 4;
}
- if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33)
+ if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33
+ )
{
if (mask & 0x1)
{
@@ -3841,13 +3842,14 @@
{
/* OP_CF00 (); */
- unsigned long sp = State.regs[REG_SP];
- unsigned long mask;
+ unsigned32 sp = State.regs[REG_SP];
+ unsigned32 mask;
PC = cia;
mask = REGS;
- if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33)
+ if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33
+ )
{
if (mask & 0x4)
{
@@ -3937,8 +3939,8 @@
{
/* OP_CD000000 (); */
- unsigned int next_pc, sp;
- unsigned long mask;
+ unsigned32 next_pc, sp;
+ unsigned32 mask;
PC = cia;
sp = State.regs[REG_SP];
@@ -3947,7 +3949,8 @@
mask = REGS;
- if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33)
+ if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33
+ )
{
if (mask & 0x4)
{
@@ -4043,8 +4046,8 @@
{
/* OP_DD000000 (); */
- unsigned int next_pc, sp;
- unsigned long mask;
+ unsigned32 next_pc, sp;
+ unsigned32 mask;
PC = cia;
sp = State.regs[REG_SP];
@@ -4054,7 +4057,8 @@
mask = REGS;
- if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33)
+ if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33
+ )
{
if (mask & 0x4)
{
@@ -4149,8 +4153,8 @@
{
/* OP_DF0000 (); */
- unsigned int sp, offset;
- unsigned long mask;
+ unsigned32 sp, offset;
+ unsigned32 mask;
PC = cia;
State.regs[REG_SP] += IMM8;
@@ -4159,7 +4163,8 @@
offset = -4;
mask = REGS;
- if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33)
+ if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33
+ )
{
if (mask & 0x4)
@@ -4251,8 +4256,8 @@
{
/* OP_DE0000 (); */
- unsigned int sp, offset;
- unsigned long mask;
+ unsigned32 sp, offset;
+ unsigned32 mask;
PC = cia;
State.regs[REG_SP] += IMM8;
@@ -4262,7 +4267,8 @@
offset = -4;
mask = REGS;
- if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33)
+ if (STATE_ARCHITECTURE (sd)->mach == bfd_mach_am33
+ )
{
if (mask & 0x4)
diff --git a/sim/mn10300/mn10300_sim.h b/sim/mn10300/mn10300_sim.h
index 0e419432ce8..da6c25915be 100644
--- a/sim/mn10300/mn10300_sim.h
+++ b/sim/mn10300/mn10300_sim.h
@@ -366,12 +366,12 @@ void put_byte PARAMS ((uint8 *, uint8));
extern uint8 *map PARAMS ((SIM_ADDR addr));
-INLINE_SIM_MAIN (void) genericAdd PARAMS ((unsigned long source, unsigned long destReg));
-INLINE_SIM_MAIN (void) genericSub PARAMS ((unsigned long source, unsigned long destReg));
-INLINE_SIM_MAIN (void) genericCmp PARAMS ((unsigned long leftOpnd, unsigned long rightOpnd));
-INLINE_SIM_MAIN (void) genericOr PARAMS ((unsigned long source, unsigned long destReg));
-INLINE_SIM_MAIN (void) genericXor PARAMS ((unsigned long source, unsigned long destReg));
-INLINE_SIM_MAIN (void) genericBtst PARAMS ((unsigned long leftOpnd, unsigned long rightOpnd));
+INLINE_SIM_MAIN (void) genericAdd PARAMS ((unsigned32 source, unsigned32 destReg));
+INLINE_SIM_MAIN (void) genericSub PARAMS ((unsigned32 source, unsigned32 destReg));
+INLINE_SIM_MAIN (void) genericCmp PARAMS ((unsigned32 leftOpnd, unsigned32 rightOpnd));
+INLINE_SIM_MAIN (void) genericOr PARAMS ((unsigned32 source, unsigned32 destReg));
+INLINE_SIM_MAIN (void) genericXor PARAMS ((unsigned32 source, unsigned32 destReg));
+INLINE_SIM_MAIN (void) genericBtst PARAMS ((unsigned32 leftOpnd, unsigned32 rightOpnd));
INLINE_SIM_MAIN (int) syscall_read_mem PARAMS ((host_callback *cb,
struct cb_syscall *sc,
unsigned long taddr,
diff --git a/sim/mn10300/op_utils.c b/sim/mn10300/op_utils.c
index 0a966ed7355..b46210f6b40 100644
--- a/sim/mn10300/op_utils.c
+++ b/sim/mn10300/op_utils.c
@@ -36,10 +36,10 @@
INLINE_SIM_MAIN (void)
-genericAdd(unsigned long source, unsigned long destReg)
+genericAdd(unsigned32 source, unsigned32 destReg)
{
int z, c, n, v;
- unsigned long dest, sum;
+ unsigned32 dest, sum;
dest = State.regs[destReg];
sum = source + dest;
@@ -60,10 +60,10 @@ genericAdd(unsigned long source, unsigned long destReg)
INLINE_SIM_MAIN (void)
-genericSub(unsigned long source, unsigned long destReg)
+genericSub(unsigned32 source, unsigned32 destReg)
{
int z, c, n, v;
- unsigned long dest, difference;
+ unsigned32 dest, difference;
dest = State.regs[destReg];
difference = dest - source;
@@ -81,10 +81,10 @@ genericSub(unsigned long source, unsigned long destReg)
}
INLINE_SIM_MAIN (void)
-genericCmp(unsigned long leftOpnd, unsigned long rightOpnd)
+genericCmp(unsigned32 leftOpnd, unsigned32 rightOpnd)
{
int z, c, n, v;
- unsigned long value;
+ unsigned32 value;
value = rightOpnd - leftOpnd;
@@ -101,7 +101,7 @@ genericCmp(unsigned long leftOpnd, unsigned long rightOpnd)
INLINE_SIM_MAIN (void)
-genericOr(unsigned long source, unsigned long destReg)
+genericOr(unsigned32 source, unsigned32 destReg)
{
int n, z;
@@ -114,7 +114,7 @@ genericOr(unsigned long source, unsigned long destReg)
INLINE_SIM_MAIN (void)
-genericXor(unsigned long source, unsigned long destReg)
+genericXor(unsigned32 source, unsigned32 destReg)
{
int n, z;
@@ -127,9 +127,9 @@ genericXor(unsigned long source, unsigned long destReg)
INLINE_SIM_MAIN (void)
-genericBtst(unsigned long leftOpnd, unsigned long rightOpnd)
+genericBtst(unsigned32 leftOpnd, unsigned32 rightOpnd)
{
- unsigned long temp;
+ unsigned32 temp;
int z, n;
temp = rightOpnd;
diff --git a/sim/ppc/ChangeLog b/sim/ppc/ChangeLog
index 65ff71e3ae9..fc0af627905 100644
--- a/sim/ppc/ChangeLog
+++ b/sim/ppc/ChangeLog
@@ -1,3 +1,21 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
+Fri Apr 28 15:59:27 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * events.c (event_queue_process): Call update_time_from_event
+ every time an event is removed from the queue.
+ (update_time_from_event): Delete assertion that a negative
+ time_from_event implies an empty event queue.
+
+Fri Apr 28 15:53:54 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * interrupts.c (deliver_hardware_interrupt): Print time trace in
+ decimal.
+ * events.c (event_queue_process): Cleanup trace message.
+ (update_time_from_event): Trace full event queue.
+
2000-03-25 Geoff Keating <geoffk@cygnus.com>
* ppc-instructions (Disabled_Exponent_Underflow): Increment
diff --git a/sim/ppc/configure b/sim/ppc/configure
index bda7bf004f1..dcedf5d3843 100755
--- a/sim/ppc/configure
+++ b/sim/ppc/configure
@@ -225,6 +225,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -339,6 +340,7 @@ Configuration:
--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
@@ -509,6 +511,11 @@ EOF
-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=*)
@@ -674,12 +681,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -750,7 +761,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:754: checking for a BSD compatible install" >&5
+echo "configure:765: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -805,7 +816,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:809: checking for $ac_word" >&5
+echo "configure:820: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -835,7 +846,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:839: checking for $ac_word" >&5
+echo "configure:850: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -886,7 +897,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:890: checking for $ac_word" >&5
+echo "configure:901: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -918,7 +929,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:922: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:933: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -929,12 +940,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 933 "configure"
+#line 944 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -960,12 +971,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:964: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:975: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:969: checking whether we are using GNU C" >&5
+echo "configure:980: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -974,7 +985,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:978: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:989: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -993,7 +1004,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:997: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1008: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1034,7 +1045,7 @@ fi
ALL_LINGUAS=
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1038: checking how to run the C preprocessor" >&5
+echo "configure:1049: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -1049,13 +1060,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 1053 "configure"
+#line 1064 "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:1059: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1070: \"$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
:
@@ -1066,13 +1077,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 1070 "configure"
+#line 1081 "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:1076: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1087: \"$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
:
@@ -1083,13 +1094,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 1087 "configure"
+#line 1098 "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:1093: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1104: \"$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
:
@@ -1114,7 +1125,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:1118: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:1129: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1143,7 +1154,7 @@ fi
# 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:1147: checking for $ac_word" >&5
+echo "configure:1158: 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
@@ -1171,7 +1182,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1175: checking for POSIXized ISC" >&5
+echo "configure:1186: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -1192,12 +1203,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1196: checking for ANSI C header files" >&5
+echo "configure:1207: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1201 "configure"
+#line 1212 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -1205,7 +1216,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1209: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1220: \"$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*
@@ -1222,7 +1233,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 1226 "configure"
+#line 1237 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -1240,7 +1251,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 1244 "configure"
+#line 1255 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -1261,7 +1272,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 1265 "configure"
+#line 1276 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1272,7 +1283,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:1276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -1296,12 +1307,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1300: checking for working const" >&5
+echo "configure:1311: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1305 "configure"
+#line 1316 "configure"
#include "confdefs.h"
int main() {
@@ -1350,7 +1361,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:1354: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1365: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -1371,21 +1382,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1375: checking for inline" >&5
+echo "configure:1386: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 1382 "configure"
+#line 1393 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:1389: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1400: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1411,12 +1422,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1415: checking for off_t" >&5
+echo "configure:1426: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1420 "configure"
+#line 1431 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1444,12 +1455,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1448: checking for size_t" >&5
+echo "configure:1459: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1453 "configure"
+#line 1464 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1479,19 +1490,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1483: checking for working alloca.h" >&5
+echo "configure:1494: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1488 "configure"
+#line 1499 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1506: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1512,12 +1523,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1516: checking for alloca" >&5
+echo "configure:1527: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1521 "configure"
+#line 1532 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1545,7 +1556,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1577,12 +1588,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1581: checking whether alloca needs Cray hooks" >&5
+echo "configure:1592: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1586 "configure"
+#line 1597 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1607,12 +1618,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1611: checking for $ac_func" >&5
+echo "configure:1622: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1616 "configure"
+#line 1627 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1635,7 +1646,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1662,7 +1673,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1666: checking stack direction for C alloca" >&5
+echo "configure:1677: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1670,7 +1681,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1674 "configure"
+#line 1685 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1689,7 +1700,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1693: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1704: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1714,17 +1725,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1718: checking for $ac_hdr" >&5
+echo "configure:1729: 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 1723 "configure"
+#line 1734 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1728: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1739: \"$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*
@@ -1753,12 +1764,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1757: checking for $ac_func" >&5
+echo "configure:1768: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1762 "configure"
+#line 1773 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1781,7 +1792,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1806,7 +1817,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1810: checking for working mmap" >&5
+echo "configure:1821: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1814,7 +1825,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1818 "configure"
+#line 1829 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1954,7 +1965,7 @@ main()
}
EOF
-if { (eval echo configure:1958: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1982,17 +1993,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1986: checking for $ac_hdr" >&5
+echo "configure:1997: 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 1991 "configure"
+#line 2002 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1996: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2007: \"$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*
@@ -2022,12 +2033,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2026: checking for $ac_func" >&5
+echo "configure:2037: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2031 "configure"
+#line 2042 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2050,7 +2061,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2079,12 +2090,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2083: checking for $ac_func" >&5
+echo "configure:2094: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2088 "configure"
+#line 2099 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2107,7 +2118,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2141,19 +2152,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2145: checking for LC_MESSAGES" >&5
+echo "configure:2156: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2150 "configure"
+#line 2161 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2174,7 +2185,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2178: checking whether NLS is requested" >&5
+echo "configure:2189: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2194,7 +2205,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2198: checking whether included gettext is requested" >&5
+echo "configure:2209: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2213,17 +2224,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2217: checking for libintl.h" >&5
+echo "configure:2228: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2222 "configure"
+#line 2233 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2227: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2238: \"$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*
@@ -2240,19 +2251,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2244: checking for gettext in libc" >&5
+echo "configure:2255: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2249 "configure"
+#line 2260 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2256: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2267: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2268,7 +2279,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2272: checking for bindtextdomain in -lintl" >&5
+echo "configure:2283: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2276,7 +2287,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2280 "configure"
+#line 2291 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2287,7 +2298,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2303,19 +2314,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2307: checking for gettext in libintl" >&5
+echo "configure:2318: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2312 "configure"
+#line 2323 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2343,7 +2354,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2347: checking for $ac_word" >&5
+echo "configure:2358: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2377,12 +2388,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2381: checking for $ac_func" >&5
+echo "configure:2392: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2386 "configure"
+#line 2397 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2405,7 +2416,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2432,7 +2443,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2436: checking for $ac_word" >&5
+echo "configure:2447: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2468,7 +2479,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2472: checking for $ac_word" >&5
+echo "configure:2483: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2500,7 +2511,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2504 "configure"
+#line 2515 "configure"
#include "confdefs.h"
int main() {
@@ -2508,7 +2519,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2540,7 +2551,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2544: checking for $ac_word" >&5
+echo "configure:2555: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2574,7 +2585,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2578: checking for $ac_word" >&5
+echo "configure:2589: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2610,7 +2621,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2614: checking for $ac_word" >&5
+echo "configure:2625: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2700,7 +2711,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2704: checking for catalogs to be installed" >&5
+echo "configure:2715: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2728,17 +2739,17 @@ echo "configure:2704: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2732: checking for linux/version.h" >&5
+echo "configure:2743: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2737 "configure"
+#line 2748 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2742: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2753: \"$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*
@@ -3092,14 +3103,14 @@ else
if test "x$cross_compiling" = "xno"; then
echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:3096: checking whether byte ordering is bigendian" >&5
+echo "configure:3107: checking whether byte ordering is bigendian" >&5
if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_bigendian=unknown
# See if sys/param.h defines the BYTE_ORDER macro.
cat > conftest.$ac_ext <<EOF
-#line 3103 "configure"
+#line 3114 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
@@ -3110,11 +3121,11 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:3114: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3125: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
# It does; now see whether it defined to BIG_ENDIAN or not.
cat > conftest.$ac_ext <<EOF
-#line 3118 "configure"
+#line 3129 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
@@ -3125,7 +3136,7 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:3129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3140: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_bigendian=yes
else
@@ -3145,7 +3156,7 @@ if test "$cross_compiling" = yes; then
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 3149 "configure"
+#line 3160 "configure"
#include "confdefs.h"
main () {
/* Are we little or big endian? From Harbison&Steele. */
@@ -3158,7 +3169,7 @@ main () {
exit (u.c[sizeof (long) - 1] == 1);
}
EOF
-if { (eval echo configure:3162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_bigendian=no
else
@@ -3612,7 +3623,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:3616: checking host system type" >&5
+echo "configure:3627: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -3633,7 +3644,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:3637: checking target system type" >&5
+echo "configure:3648: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -3651,7 +3662,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:3655: checking build system type" >&5
+echo "configure:3666: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -3698,12 +3709,12 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6
-echo "configure:3702: checking for st_blksize in struct stat" >&5
+echo "configure:3713: checking for st_blksize in struct stat" >&5
if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3707 "configure"
+#line 3718 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -3711,7 +3722,7 @@ int main() {
struct stat s; s.st_blksize;
; return 0; }
EOF
-if { (eval echo configure:3715: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3726: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_st_blksize=yes
else
@@ -3732,12 +3743,12 @@ EOF
fi
echo $ac_n "checking for st_blocks in struct stat""... $ac_c" 1>&6
-echo "configure:3736: checking for st_blocks in struct stat" >&5
+echo "configure:3747: checking for st_blocks in struct stat" >&5
if eval "test \"`echo '$''{'ac_cv_struct_st_blocks'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3741 "configure"
+#line 3752 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -3745,7 +3756,7 @@ int main() {
struct stat s; s.st_blocks;
; return 0; }
EOF
-if { (eval echo configure:3749: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3760: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_st_blocks=yes
else
@@ -3768,12 +3779,12 @@ else
fi
echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6
-echo "configure:3772: checking for st_rdev in struct stat" >&5
+echo "configure:3783: checking for st_rdev in struct stat" >&5
if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3777 "configure"
+#line 3788 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -3781,7 +3792,7 @@ int main() {
struct stat s; s.st_rdev;
; return 0; }
EOF
-if { (eval echo configure:3785: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_st_rdev=yes
else
@@ -3802,12 +3813,12 @@ EOF
fi
echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
-echo "configure:3806: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:3817: checking whether struct tm is in sys/time.h or time.h" >&5
if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3811 "configure"
+#line 3822 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <time.h>
@@ -3815,7 +3826,7 @@ int main() {
struct tm *tp; tp->tm_sec;
; return 0; }
EOF
-if { (eval echo configure:3819: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_tm=time.h
else
@@ -3836,12 +3847,12 @@ EOF
fi
echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
-echo "configure:3840: checking for tm_zone in struct tm" >&5
+echo "configure:3851: checking for tm_zone in struct tm" >&5
if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3845 "configure"
+#line 3856 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_cv_struct_tm>
@@ -3849,7 +3860,7 @@ int main() {
struct tm tm; tm.tm_zone;
; return 0; }
EOF
-if { (eval echo configure:3853: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3864: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_tm_zone=yes
else
@@ -3869,12 +3880,12 @@ EOF
else
echo $ac_n "checking for tzname""... $ac_c" 1>&6
-echo "configure:3873: checking for tzname" >&5
+echo "configure:3884: checking for tzname" >&5
if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3878 "configure"
+#line 3889 "configure"
#include "confdefs.h"
#include <time.h>
#ifndef tzname /* For SGI. */
@@ -3884,7 +3895,7 @@ int main() {
atoi(*tzname);
; return 0; }
EOF
-if { (eval echo configure:3888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3899: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_var_tzname=yes
else
@@ -3907,12 +3918,12 @@ fi
echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3911: checking for uid_t in sys/types.h" >&5
+echo "configure:3922: checking for uid_t in sys/types.h" >&5
if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3916 "configure"
+#line 3927 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
@@ -3941,7 +3952,7 @@ EOF
fi
echo $ac_n "checking type of array argument to getgroups""... $ac_c" 1>&6
-echo "configure:3945: checking type of array argument to getgroups" >&5
+echo "configure:3956: checking type of array argument to getgroups" >&5
if eval "test \"`echo '$''{'ac_cv_type_getgroups'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3949,7 +3960,7 @@ else
ac_cv_type_getgroups=cross
else
cat > conftest.$ac_ext <<EOF
-#line 3953 "configure"
+#line 3964 "configure"
#include "confdefs.h"
/* Thanks to Mike Rendell for this test. */
@@ -3974,7 +3985,7 @@ main()
}
EOF
-if { (eval echo configure:3978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_type_getgroups=gid_t
else
@@ -3988,7 +3999,7 @@ fi
if test $ac_cv_type_getgroups = cross; then
cat > conftest.$ac_ext <<EOF
-#line 3992 "configure"
+#line 4003 "configure"
#include "confdefs.h"
#include <unistd.h>
EOF
@@ -4012,12 +4023,12 @@ EOF
echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:4016: checking for mode_t" >&5
+echo "configure:4027: checking for mode_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4021 "configure"
+#line 4032 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -4045,12 +4056,12 @@ EOF
fi
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:4049: checking for off_t" >&5
+echo "configure:4060: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4054 "configure"
+#line 4065 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -4078,12 +4089,12 @@ EOF
fi
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:4082: checking for pid_t" >&5
+echo "configure:4093: checking for pid_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4087 "configure"
+#line 4098 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -4111,12 +4122,12 @@ EOF
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:4115: checking return type of signal handlers" >&5
+echo "configure:4126: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4120 "configure"
+#line 4131 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -4133,7 +4144,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:4137: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4148: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -4152,12 +4163,12 @@ EOF
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:4156: checking for size_t" >&5
+echo "configure:4167: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4161 "configure"
+#line 4172 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -4185,12 +4196,12 @@ EOF
fi
echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:4189: checking for uid_t in sys/types.h" >&5
+echo "configure:4200: checking for uid_t in sys/types.h" >&5
if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4194 "configure"
+#line 4205 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
@@ -4222,12 +4233,12 @@ fi
for ac_func in access cfgetispeed cfgetospeed cfsetispeed cfsetospeed chdir chmod chown dup dup2 fchmod fchown fcntl fstat fstatfs getdirentries getegid geteuid getgid getpid getppid getrusage gettimeofday getuid ioctl kill link lseek lstat mkdir pipe readlink rmdir setreuid setregid stat sigprocmask stat symlink tcgetattr tcsetattr tcsendbreak tcdrain tcflush tcflow tcgetpgrp tcsetpgrp time umask unlink
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4226: checking for $ac_func" >&5
+echo "configure:4237: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4231 "configure"
+#line 4242 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4250,7 +4261,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4265: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -4279,17 +4290,17 @@ for ac_hdr in fcntl.h stdlib.h string.h strings.h sys/ioctl.h sys/param.h sys/re
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4283: checking for $ac_hdr" >&5
+echo "configure:4294: 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 4288 "configure"
+#line 4299 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4293: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4304: \"$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*
@@ -4320,12 +4331,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:4324: checking for $ac_hdr that defines DIR" >&5
+echo "configure:4335: checking for $ac_hdr that defines DIR" >&5
if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4329 "configure"
+#line 4340 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
@@ -4333,7 +4344,7 @@ int main() {
DIR *dirp = 0;
; return 0; }
EOF
-if { (eval echo configure:4337: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4348: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_header_dirent_$ac_safe=yes"
else
@@ -4358,7 +4369,7 @@ done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:4362: checking for opendir in -ldir" >&5
+echo "configure:4373: checking for opendir in -ldir" >&5
ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4366,7 +4377,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4370 "configure"
+#line 4381 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4377,7 +4388,7 @@ int main() {
opendir()
; return 0; }
EOF
-if { (eval echo configure:4381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4399,7 +4410,7 @@ fi
else
echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:4403: checking for opendir in -lx" >&5
+echo "configure:4414: checking for opendir in -lx" >&5
ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4407,7 +4418,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4411 "configure"
+#line 4422 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4418,7 +4429,7 @@ int main() {
opendir()
; return 0; }
EOF
-if { (eval echo configure:4422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4443,12 +4454,12 @@ fi
sim_termio=""
echo $ac_n "checking for struct termios""... $ac_c" 1>&6
-echo "configure:4447: checking for struct termios" >&5
+echo "configure:4458: checking for struct termios" >&5
if eval "test \"`echo '$''{'ac_cv_termios_struct'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4452 "configure"
+#line 4463 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/termios.h>
@@ -4461,7 +4472,7 @@ static struct termios x;
x.c_cc[NCCS] = 0;
; return 0; }
EOF
-if { (eval echo configure:4465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4476: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_termios_struct=yes
else
@@ -4480,12 +4491,12 @@ fi
if test "$ac_cv_termios_struct" = "yes"; then
echo $ac_n "checking for c_line field in struct termios""... $ac_c" 1>&6
-echo "configure:4484: checking for c_line field in struct termios" >&5
+echo "configure:4495: checking for c_line field in struct termios" >&5
if eval "test \"`echo '$''{'ac_cv_termios_cline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4489 "configure"
+#line 4500 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/termios.h>
@@ -4493,7 +4504,7 @@ int main() {
static struct termios x; x.c_line = 0;
; return 0; }
EOF
-if { (eval echo configure:4497: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4508: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_termios_cline=yes
else
@@ -4516,12 +4527,12 @@ fi
if test "$ac_cv_termios_struct" != "yes"; then
echo $ac_n "checking for struct termio""... $ac_c" 1>&6
-echo "configure:4520: checking for struct termio" >&5
+echo "configure:4531: checking for struct termio" >&5
if eval "test \"`echo '$''{'ac_cv_termio_struct'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4525 "configure"
+#line 4536 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/termio.h>
@@ -4534,7 +4545,7 @@ static struct termio x;
x.c_cc[NCC] = 0;
; return 0; }
EOF
-if { (eval echo configure:4538: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4549: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_termio_struct=yes
else
@@ -4556,12 +4567,12 @@ fi
if test "$ac_cv_termio_struct" = "yes"; then
echo $ac_n "checking for c_line field in struct termio""... $ac_c" 1>&6
-echo "configure:4560: checking for c_line field in struct termio" >&5
+echo "configure:4571: checking for c_line field in struct termio" >&5
if eval "test \"`echo '$''{'ac_cv_termio_cline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4565 "configure"
+#line 4576 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/termio.h>
@@ -4569,7 +4580,7 @@ int main() {
static struct termio x; x.c_line = 0;
; return 0; }
EOF
-if { (eval echo configure:4573: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4584: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_termio_cline=yes
else
@@ -4592,7 +4603,7 @@ fi
sim_devzero=""
echo $ac_n "checking for /dev/zero""... $ac_c" 1>&6
-echo "configure:4596: checking for /dev/zero" >&5
+echo "configure:4607: checking for /dev/zero" >&5
if eval "test \"`echo '$''{'ac_cv_devzero'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4600,7 +4611,7 @@ else
ac_cv_devzero=no
else
cat > conftest.$ac_ext <<EOF
-#line 4604 "configure"
+#line 4615 "configure"
#include "confdefs.h"
#include <fcntl.h>
main () {
@@ -4619,7 +4630,7 @@ main () {
return 0;
}
EOF
-if { (eval echo configure:4623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_devzero=yes
else
@@ -4641,7 +4652,7 @@ else
fi
echo $ac_n "checking for common simulator directory""... $ac_c" 1>&6
-echo "configure:4645: checking for common simulator directory" >&5
+echo "configure:4656: checking for common simulator directory" >&5
if test -f "${srcdir}/../common/callback.c"; then
echo "$ac_t""yes" 1>&6
sim_callback="callback.o targ-map.o"
@@ -4653,12 +4664,12 @@ else
fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:4657: checking for Cygwin environment" >&5
+echo "configure:4668: 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 4662 "configure"
+#line 4673 "configure"
#include "confdefs.h"
int main() {
@@ -4669,7 +4680,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:4673: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4684: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -4686,19 +4697,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:4690: checking for mingw32 environment" >&5
+echo "configure:4701: 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 4695 "configure"
+#line 4706 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:4702: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4713: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -4717,7 +4728,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:4721: checking for executable suffix" >&5
+echo "configure:4732: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4727,10 +4738,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:4731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:4742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -4756,7 +4767,7 @@ AR=${AR-ar}
# 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:4760: checking for $ac_word" >&5
+echo "configure:4771: 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
diff --git a/sim/ppc/events.c b/sim/ppc/events.c
index 83846222cff..72c91386bea 100644
--- a/sim/ppc/events.c
+++ b/sim/ppc/events.c
@@ -161,8 +161,25 @@ update_time_from_event(event_queue *events)
events->time_of_event = current_time - 1;
events->time_from_event = -1;
}
+ if (WITH_TRACE && ppc_trace[trace_events])
+ {
+ event_entry *event;
+ int i;
+ for (event = events->queue, i = 0;
+ event != NULL;
+ event = event->next, i++)
+ {
+ TRACE(trace_events, ("event time-from-event - time %ld, delta %ld - event %d, tag 0x%lx, time %ld, handler 0x%lx, data 0x%lx\n",
+ (long)current_time,
+ (long)events->time_from_event,
+ i,
+ (long)event,
+ (long)event->time_of_event,
+ (long)event->handler,
+ (long)event->data));
+ }
+ }
ASSERT(current_time == event_queue_time(events));
- ASSERT((events->time_from_event >= 0) == (events->queue != NULL));
}
STATIC_INLINE_EVENTS\
@@ -369,18 +386,22 @@ event_queue_process(event_queue *events)
event_handler *handler = to_do->handler;
void *data = to_do->data;
events->queue = to_do->next;
- TRACE(trace_events, ("event issued at %ld - tag 0x%lx - handler 0x%lx, data 0x%lx\n",
+ TRACE(trace_events, ("event issued at %ld - tag 0x%lx - time %ld, handler 0x%lx, data 0x%lx\n",
(long)event_time,
(long)to_do,
+ (long)to_do->time_of_event,
(long)handler,
(long)data));
zfree(to_do);
+ /* Always re-compute the time to the next event so that HANDLER()
+ can safely insert new events into the queue. */
+ update_time_from_event(events);
handler(data);
}
events->processing = 0;
- /* re-caculate time for new events */
- update_time_from_event(events);
+ ASSERT(events->time_from_event > 0);
+ ASSERT(events->queue != NULL); /* always poll event */
}
diff --git a/sim/ppc/interrupts.c b/sim/ppc/interrupts.c
index deab7e9bf43..681e791af7e 100644
--- a/sim/ppc/interrupts.c
+++ b/sim/ppc/interrupts.c
@@ -469,7 +469,7 @@ deliver_hardware_interrupt(void *data)
unsigned_word cia = cpu_get_program_counter(processor);
unsigned_word nia = perform_oea_interrupt(processor,
cia, 0x00900, 0, 0, 0, 0);
- TRACE(trace_interrupts, ("decrementer interrupt - cia=0x%lx time=0x%lx\n",
+ TRACE(trace_interrupts, ("decrementer interrupt - cia 0x%lx, time %ld\n",
(unsigned long)cia,
(unsigned long)event_queue_time(psim_event_queue(cpu_system(processor)))
));
diff --git a/sim/sh/ChangeLog b/sim/sh/ChangeLog
index 3a7cc82cca6..f82652a364a 100644
--- a/sim/sh/ChangeLog
+++ b/sim/sh/ChangeLog
@@ -1,3 +1,157 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
+Mon May 15 22:04:51 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+sh-dsp support, simulator speedup by using host byte order:
+
+ * Makefile.in (interp.o): Depends on ppi.c .
+ (ppi.c): New rule.
+ * gencode.c (printonmatch, think, genopc): Deleted.
+ (MAX_NR_STUFF): Now 42.
+ (tab): Add SH-DSP CPU instructions.
+ Amalgamate ldc / stc / lds / sts instructions with similar
+ bit patterns. Fix opcodes of stc Rm_BANK,@-<REG_N>.
+ Fix semantics of lds.l @<REG_N>+,MACH (no sign extend).
+ (movsxy_tab): New array.
+ For movs, change MMMM field to GGGG, and mmmm field to MMMM.
+ Added entries for movx, movy and parallel processing insns.
+ (ppi_tab): New array.
+ (qfunc): Stabilize sort.
+ (expand_opcode): Handle [01][01]NN, [01][01]xx and [01][01]yy.
+ Handle 'M', 'G' 's' 'X', 'a', 'Y' and 'A'.
+ (dumptable): Now takes three arguments. Changed all callers.
+ Emit just one contigous jump table.
+ (filltable): Now takes an argument. Changed all callers.
+ Make index static.
+ (ppi_moves, expand_ppi_code, ppi_filltable, ppi_gensim): New functions.
+ (gensim_caselist): New function, broken out of gensim.
+ Handle opcode fields 'x', 'y', 's', 'M', 'G', 'X', 'a', and 'Y'.
+ Handle ref '9'.
+ (gensim): Handle 'N' in code field and '8' in refs field.
+ Call gensim_caselist - twice.
+ (ppi_index): New static variable.
+ (main): Unsupport default action.
+ Add dsp support for -x / -s option. Add -p option.
+ * interp.c (sh_jump_table, sh_dsp_table, ppi_table): Declare.
+ (saved_state_type): Rearrange to allow amalgamated ldc / stc /
+ lds / sts to work efficiently.
+ (target_dsp): New static variable.
+ (GBR, VBR, SSR, SPC, MACH, MACL): Reflect saved_state_type change.
+ (FPUL, Rn_BANK, SET_Rn_BANK, M, Q, S, T, SR_BL, SR_RB): Likewise.
+ (SR_MD, SR_RC, SET_SR_BIT, GET_SR, SET_RC, GET_FPSCR): Likewise.
+ (RS, RE, MOD, MOD_ME, DSP_R): Likewise.
+ (set_fpscr1): Likewise. Use target_dsp to check for dsp.
+ (MOD_MSi, SIG_BUS_FETCH): Deleted.
+ (CREG, SREG, PR, SR_MASK_DMY, SR_MASK_DMX, SR_DMY): New macros.
+ (SR_DMX, DSR, MOD_DELTA, GET_DSP_GRD): Likewise.
+ (SET_MOD): Reflect saved_state_type change. Set MOD_DELTA instead
+ of MOD_MS, and encode SR_DMY / SR_DMX into high word of MOD_ME.
+ (set_sr): Reflect saved_state_type change. Fix SR_RB handling.
+ Use SET_MOD.
+ (MA, L, TL, TB): Now controlled by ACE_FAST.
+ (SEXT32): Just cast to int.
+ (SIGN32): Fixed to only shift by 31.
+ (CHECK_INSN_PTR): SIGBUS at insn fetch now represented by insn_end 0.
+ (ppi_insn): Declare.
+ (ppi.c): Include.
+ (init_dsp): Set target_dsp. When it changes, switch end of
+ sh_jump_table with sh_dsp_table.
+ (sim_resume) Don't declare sh_jump_table0. Use sh_jump_table instead.
+ Don't Declare PR if it's #defined.
+ Fix single-stepping (Was broken in Mar 6 16:59:10 patch).
+ (sim_store_register, sim_read_register): Translate accesses to
+ reflect saved_state_type change.
+
+ * interp.c (set_sr): Set sr.
+ (SET_RC, MOD, MOD_MS, MOD_ME, SET_MOD, MOD_MS, MOD_ME): New macros.
+ (set_fpscr1): Don't bank-switch fpu registers when simulating sh-dsp.
+ (DSP_R): Fix definition.
+ (sim_resume): Remove outdated SET_SR use.
+
+ * interp.c (saved_state): New members for struct member asregs:
+ rs, re, insn_end, xram_start, yram_start.
+ (struct loop_bounds): New struct.
+ (SKIP_INSN): New macro.
+ (get_loop_bounds): New function.
+ (endianw): Renamed to global_endianw.
+ (maskw): negated bits.
+ (PC): Now insn_ptr.
+ (SR_MASK_RC, SR_RC_INCREMENT, SR_RC, RAISE_EXCEPTION): New macros.
+ (RS, RE, DSP_R, DSP_GRD, A1, A0, X0, X1, Y0, Y1, M0, A1G): Likewise.
+ (M1, A0G, RIAT, PT2H, PH2T, SET_NIP, CHECK_INSN_PTR): Likewise.
+ (SIG_BUS_FETCH): Likewise
+ (raise_exception, riat_fast): New functions.
+ (raise_buserror, sim_stop): Use raise_exception.
+ (PROCESS_SPECIAL_ADDRESS): Use xram_start / yram_start.
+ (BUSERROR, WRITE_BUSERROR, READ_BUSERROR):
+ Reverse sense of mask argument.
+ (FP_OP, set_dr): Use RAISE_EXCEPTION.
+ (wlat_fast, wwat_fast, wbat_fast, rlat_fast, rwat_fast, rbat_fast):
+ Declare. Remove redundant masking.
+ (wwat_fast, rwat_fast): Add argument endianw. Changed callers.
+ (MA): Updated for change pc -> PC.
+ (Delay_Slot): Use RIAT.
+ (empty): Deleted.
+ (trap): Remove argument little_endian. Add argument endianw.
+ Changed all callers. Use raise_exception.
+ (macw): Add argument endainw. Changed all callers.
+ (init_dsp): New function, extended after broken out of init_pointers.
+ (sim_resume): Replace pc with insn_ptr. Replace little_endian with
+ endianw. Replace nia with nip. Reverse sense of maskb / maskw /
+ maskl. Implement logic for zero-overhead loops. Don't try to
+ interpret garbage when getting a SIGBUS at insn fetch.
+ (sim_open): Call init_dsp.
+ * gencode.c (tab): Use SET_NIP instead of nia = . Use PH2T / PT2H /
+ RAISE_EXCEPTION where appropriate.
+ Add extra cycles for brai, braf , bsr, bsrf, jmp, jsr.
+
+ * interp.c (sim_store_register, sim_fetch_register):
+ Do proper endianness switch.
+
+ * interp.c (saved_state_type): New members for struct member asregs:
+ xymem_select, xmem, ymem, xmem_offset, ymem_offset.
+ (special_address): Delete.
+ (BUSERROR): Now a two-argument predicate.
+ (PROCESS_SPECIAL_ADDRESS, WRITE_BUSERROR, READ_BUSERROR): New macros.
+ (wlat_little, wwat_little, wbat_any, wlat_big, wwat_big): Delete.
+ (process_wlat_addr, process_wwat_addr): New functions.
+ (process_wbat_addr, process_rlat_addr, process_rwat_addr): Likewise.
+ (process_rbat_addr): Likewise.
+ (wlat_fast, wwat_fast, wbat_fast): Use WRITE_BUSERROR.
+ (rlat_little, rwat_little, rbat_any, rlat_big, rwat_big): Delete.
+ (rlat_fast, rwat_fast, rbat_fast): Use READ_BUSERROR.
+ (RWAT, RLAT, RBAT, WWAT, WLAT, WBAT): Delete SLOW versions.
+ (do_rdat, trap): Delete SLOW code.
+ (SEXT32, SIGN32): New macros.
+ (swap, swap16): Now integer in - integer out. Changed all callers.
+ (strswaplen, strnswap): Delete SLOW versions.
+ (init_pointers): Initialize dsp memory selection (preliminary).
+ (sim_store_register, sim_fetch_register): Use swap instead of
+ big / little endian read / write functions.
+
+ * interp.c (maskl): Deleted.
+ (endianw, endianb): New variables.
+ (special_address): Now inline.
+ (bp_holder): Put raising of buserror there, rename to:
+ (raise_buserror).
+ (BUSERROR): Now yields a value. Changed all users.
+ (wbat_big): Delete.
+ (wlat_fast, wwat_fast, wbat_fast): New functions.
+ (rlat_fast, rwat_fast, rbat_fast): Likewise.
+ (RWAT, RLAT, RBAT, WWAT, WLAT, WBAT): Use new functions.
+ (do_rdat, do_wdat): Likewise. Take maskl argument instead of
+ little_endian one. Changed caller macros.
+ (swap, swap16): Use w[rw]lat_big / w[rw]lat_little directly.
+ (strswaplen, strnswap): New functions.
+ (trap): Use them to fix up endian mismatches;
+ disable SYS_execve and SYS_execv; fix double address translation for
+ SYS_pipe and SYS_stat.
+ (sym_write, sym_read): Add endianness translation.
+ (sym_store_register, sym_fetch_register): Add maskl local variable.
+ (sim_open): Set endianw and endianb.
+
Thu Sep 2 18:15:53 1999 Andrew Cagney <cagney@b1.cygnus.com>
* configure: Regenerated to track ../common/aclocal.m4 changes.
diff --git a/sim/sh/configure b/sim/sh/configure
index ccca2cbe933..2720d6b5d38 100755
--- a/sim/sh/configure
+++ b/sim/sh/configure
@@ -169,6 +169,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -283,6 +284,7 @@ Configuration:
--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
@@ -453,6 +455,11 @@ EOF
-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=*)
@@ -618,12 +625,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -664,7 +675,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:668: checking how to run the C preprocessor" >&5
+echo "configure:679: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -679,13 +690,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 683 "configure"
+#line 694 "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:689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:700: \"$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
:
@@ -696,13 +707,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 700 "configure"
+#line 711 "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:706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:717: \"$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
:
@@ -713,13 +724,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 717 "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:723: \"$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
:
@@ -744,7 +755,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:748: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:759: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -771,7 +782,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:775: checking for POSIXized ISC" >&5
+echo "configure:786: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -792,12 +803,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:796: checking for ANSI C header files" >&5
+echo "configure:807: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 801 "configure"
+#line 812 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -805,7 +816,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:820: \"$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*
@@ -822,7 +833,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 826 "configure"
+#line 837 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -840,7 +851,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 844 "configure"
+#line 855 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -861,7 +872,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 865 "configure"
+#line 876 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -872,7 +883,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -896,12 +907,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:900: checking for working const" >&5
+echo "configure:911: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 905 "configure"
+#line 916 "configure"
#include "confdefs.h"
int main() {
@@ -950,7 +961,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -971,21 +982,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:975: checking for inline" >&5
+echo "configure:986: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 982 "configure"
+#line 993 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:989: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1011,12 +1022,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1015: checking for off_t" >&5
+echo "configure:1026: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1020 "configure"
+#line 1031 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1044,12 +1055,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1048: checking for size_t" >&5
+echo "configure:1059: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1053 "configure"
+#line 1064 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1079,19 +1090,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1083: checking for working alloca.h" >&5
+echo "configure:1094: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1088 "configure"
+#line 1099 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1112,12 +1123,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1116: checking for alloca" >&5
+echo "configure:1127: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1121 "configure"
+#line 1132 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1145,7 +1156,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1177,12 +1188,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1181: checking whether alloca needs Cray hooks" >&5
+echo "configure:1192: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1186 "configure"
+#line 1197 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1207,12 +1218,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1211: checking for $ac_func" >&5
+echo "configure:1222: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1216 "configure"
+#line 1227 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1235,7 +1246,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1262,7 +1273,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1266: checking stack direction for C alloca" >&5
+echo "configure:1277: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1270,7 +1281,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1274 "configure"
+#line 1285 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1289,7 +1300,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1314,17 +1325,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1318: checking for $ac_hdr" >&5
+echo "configure:1329: 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 1323 "configure"
+#line 1334 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1339: \"$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*
@@ -1353,12 +1364,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1357: checking for $ac_func" >&5
+echo "configure:1368: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1362 "configure"
+#line 1373 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1381,7 +1392,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1406,7 +1417,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1410: checking for working mmap" >&5
+echo "configure:1421: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1414,7 +1425,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1418 "configure"
+#line 1429 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1554,7 +1565,7 @@ main()
}
EOF
-if { (eval echo configure:1558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1577,12 +1588,12 @@ EOF
fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1581: checking for Cygwin environment" >&5
+echo "configure:1592: 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 1586 "configure"
+#line 1597 "configure"
#include "confdefs.h"
int main() {
@@ -1593,7 +1604,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:1597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -1610,19 +1621,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1614: checking for mingw32 environment" >&5
+echo "configure:1625: 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 1619 "configure"
+#line 1630 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:1626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1689,7 +1700,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1693: checking host system type" >&5
+echo "configure:1704: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1710,7 +1721,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1714: checking target system type" >&5
+echo "configure:1725: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1728,7 +1739,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1732: checking build system type" >&5
+echo "configure:1743: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1772,7 +1783,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1776: checking for $ac_word" >&5
+echo "configure:1787: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1802,7 +1813,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1806: checking for $ac_word" >&5
+echo "configure:1817: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1853,7 +1864,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1857: checking for $ac_word" >&5
+echo "configure:1868: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1885,7 +1896,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1889: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1900: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1896,12 +1907,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1900 "configure"
+#line 1911 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1927,12 +1938,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1931: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1942: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1936: checking whether we are using GNU C" >&5
+echo "configure:1947: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1941,7 +1952,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1960,7 +1971,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1964: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1975: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2003,7 +2014,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2007: checking for a BSD compatible install" >&5
+echo "configure:2018: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2071,7 +2082,7 @@ AR=${AR-ar}
# 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:2075: checking for $ac_word" >&5
+echo "configure:2086: 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
@@ -2106,17 +2117,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2110: checking for $ac_hdr" >&5
+echo "configure:2121: 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 2115 "configure"
+#line 2126 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2120: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2131: \"$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*
@@ -2146,12 +2157,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2150: checking for $ac_func" >&5
+echo "configure:2161: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2155 "configure"
+#line 2166 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2174,7 +2185,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2203,12 +2214,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2207: checking for $ac_func" >&5
+echo "configure:2218: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2212 "configure"
+#line 2223 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2231,7 +2242,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2265,19 +2276,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2269: checking for LC_MESSAGES" >&5
+echo "configure:2280: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2274 "configure"
+#line 2285 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2298,7 +2309,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2302: checking whether NLS is requested" >&5
+echo "configure:2313: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2318,7 +2329,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2322: checking whether included gettext is requested" >&5
+echo "configure:2333: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2337,17 +2348,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2341: checking for libintl.h" >&5
+echo "configure:2352: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2346 "configure"
+#line 2357 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2351: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2362: \"$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*
@@ -2364,19 +2375,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2368: checking for gettext in libc" >&5
+echo "configure:2379: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2373 "configure"
+#line 2384 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2392,7 +2403,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2396: checking for bindtextdomain in -lintl" >&5
+echo "configure:2407: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2400,7 +2411,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2404 "configure"
+#line 2415 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2411,7 +2422,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2427,19 +2438,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2431: checking for gettext in libintl" >&5
+echo "configure:2442: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2436 "configure"
+#line 2447 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2467,7 +2478,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2471: checking for $ac_word" >&5
+echo "configure:2482: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2501,12 +2512,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2505: checking for $ac_func" >&5
+echo "configure:2516: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2510 "configure"
+#line 2521 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2529,7 +2540,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2556,7 +2567,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2560: checking for $ac_word" >&5
+echo "configure:2571: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2592,7 +2603,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2596: checking for $ac_word" >&5
+echo "configure:2607: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2624,7 +2635,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2628 "configure"
+#line 2639 "configure"
#include "confdefs.h"
int main() {
@@ -2632,7 +2643,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2664,7 +2675,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2668: checking for $ac_word" >&5
+echo "configure:2679: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2698,7 +2709,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2702: checking for $ac_word" >&5
+echo "configure:2713: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2734,7 +2745,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2738: checking for $ac_word" >&5
+echo "configure:2749: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2824,7 +2835,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2828: checking for catalogs to be installed" >&5
+echo "configure:2839: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2852,17 +2863,17 @@ echo "configure:2828: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2856: checking for linux/version.h" >&5
+echo "configure:2867: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2861 "configure"
+#line 2872 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2877: \"$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*
@@ -2931,17 +2942,17 @@ for ac_hdr in stdlib.h string.h strings.h unistd.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2935: checking for $ac_hdr" >&5
+echo "configure:2946: 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 2940 "configure"
+#line 2951 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2956: \"$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*
@@ -2971,17 +2982,17 @@ for ac_hdr in sys/time.h sys/resource.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2975: checking for $ac_hdr" >&5
+echo "configure:2986: 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 2980 "configure"
+#line 2991 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2985: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2996: \"$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*
@@ -3011,17 +3022,17 @@ for ac_hdr in fcntl.h fpu_control.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3015: checking for $ac_hdr" >&5
+echo "configure:3026: 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 3020 "configure"
+#line 3031 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3036: \"$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*
@@ -3051,17 +3062,17 @@ for ac_hdr in dlfcn.h errno.h sys/stat.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3055: checking for $ac_hdr" >&5
+echo "configure:3066: 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 3060 "configure"
+#line 3071 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3065: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3076: \"$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*
@@ -3090,12 +3101,12 @@ done
for ac_func in getrusage time sigaction __setfpucw
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3094: checking for $ac_func" >&5
+echo "configure:3105: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3099 "configure"
+#line 3110 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3118,7 +3129,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3145,7 +3156,7 @@ done
# Check for socket libraries
echo $ac_n "checking for bind in -lsocket""... $ac_c" 1>&6
-echo "configure:3149: checking for bind in -lsocket" >&5
+echo "configure:3160: checking for bind in -lsocket" >&5
ac_lib_var=`echo socket'_'bind | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3153,7 +3164,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3157 "configure"
+#line 3168 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3164,7 +3175,7 @@ int main() {
bind()
; return 0; }
EOF
-if { (eval echo configure:3168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3192,7 +3203,7 @@ else
fi
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3196: checking for gethostbyname in -lnsl" >&5
+echo "configure:3207: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3200,7 +3211,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3204 "configure"
+#line 3215 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3211,7 +3222,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3381,18 +3392,18 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3391: checking return type of signal handlers" >&5
+echo "configure:3402: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3396 "configure"
+#line 3407 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3409,7 +3420,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3431,7 +3442,7 @@ EOF
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3435: checking for executable suffix" >&5
+echo "configure:3446: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3441,10 +3452,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:3456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3486,17 +3497,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3490: checking for $ac_hdr" >&5
+echo "configure:3501: 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 3495 "configure"
+#line 3506 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3511: \"$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*
diff --git a/sim/sh/gencode.c b/sim/sh/gencode.c
index 3aa3918146f..02605fc127f 100644
--- a/sim/sh/gencode.c
+++ b/sim/sh/gencode.c
@@ -25,13 +25,13 @@
-s generates the simulator code jump table
-d generates a define table
-x generates the simulator code switch statement
- default generates the opcode tables
+ default used to generate the opcode tables
*/
#include <stdio.h>
-#define MAX_NR_STUFF 20
+#define MAX_NR_STUFF 42
typedef struct
{
@@ -86,51 +86,55 @@ op tab[] =
{ "", "", "bf <bdisp8>", "10001011i8p1....",
"if (!T) {",
- " nia = PC + 4 + (SEXT(i) * 2);",
+ " SET_NIP (PC + 4 + (SEXT(i) * 2));",
" cycles += 2;",
"}",
},
{ "", "", "bf.s <bdisp8>", "10001111i8p1....",
"if (!T) {",
- " nia = PC + 4 + (SEXT (i) * 2);",
+ " SET_NIP (PC + 4 + (SEXT (i) * 2));",
" cycles += 2;",
" Delay_Slot (PC + 2);",
"}",
},
{ "", "", "bra <bdisp12>", "1010i12.........",
- "nia = PC + 4 + (SEXT12 (i) * 2);",
+ "SET_NIP (PC + 4 + (SEXT12 (i) * 2));",
+ "cycles += 2;",
"Delay_Slot (PC + 2);",
},
{ "", "n", "braf <REG_N>", "0000nnnn00100011",
- "nia = PC + 4 + R[n];",
+ "SET_NIP (PC + 4 + R[n]);",
+ "cycles += 2;",
"Delay_Slot (PC + 2);",
},
{ "", "", "bsr <bdisp12>", "1011i12.........",
- "PR = PC + 4;",
- "nia = PC + 4 + (SEXT12 (i) * 2);",
+ "PR = PH2T (PC + 4);",
+ "SET_NIP (PC + 4 + (SEXT12 (i) * 2));",
+ "cycles += 2;",
"Delay_Slot (PC + 2);",
},
{ "", "n", "bsrf <REG_N>", "0000nnnn00000011",
- "PR = PC + 4;",
- "nia = PC + 4 + R[n];",
+ "PR = PH2T (PC) + 4;",
+ "SET_NIP (PC + 4 + R[n]);",
+ "cycles += 2;",
"Delay_Slot (PC + 2);",
},
{ "", "", "bt <bdisp8>", "10001001i8p1....",
"if (T) {",
- " nia = PC + 4 + (SEXT (i) * 2);",
+ " SET_NIP (PC + 4 + (SEXT (i) * 2));",
" cycles += 2;",
"}",
},
{ "", "", "bt.s <bdisp8>", "10001101i8p1....",
"if (T) {",
- " nia = PC + 4 + (SEXT (i) * 2);",
+ " SET_NIP (PC + 4 + (SEXT (i) * 2));",
" cycles += 2;",
" Delay_Slot (PC + 2);",
"}",
@@ -247,7 +251,7 @@ op tab[] =
/* sh4 */
{ "", "", "fcnvds <DR_N>,FPUL", "1111nnnn10111101",
"if (! FPSCR_PR || n & 1)",
- " saved_state.asregs.exception = SIGILL;",
+ " RAISE_EXCEPTION (SIGILL);",
"else",
"{",
" union",
@@ -263,7 +267,7 @@ op tab[] =
/* sh4 */
{ "", "", "fcnvsd FPUL,<DR_N>", "1111nnnn10101101",
"if (! FPSCR_PR || n & 1)",
- " saved_state.asregs.exception = SIGILL;",
+ " RAISE_EXCEPTION (SIGILL);",
"else",
"{",
" union",
@@ -285,7 +289,7 @@ op tab[] =
/* sh4 */
{ "", "", "fipr <FV_M>,<FV_N>", "1111nnmm11101101",
"/* FIXME: not implemented */",
- "saved_state.asregs.exception = SIGILL;",
+ "RAISE_EXCEPTION (SIGILL);",
"/* FIXME: check for DP and (n & 1) == 0? */",
},
@@ -486,37 +490,30 @@ op tab[] =
},
{ "", "n", "jmp @<REG_N>", "0100nnnn00101011",
- "nia = R[n];",
+ "SET_NIP (PT2H (R[n]));",
+ "cycles += 2;",
"Delay_Slot (PC + 2);",
},
{ "", "n", "jsr @<REG_N>", "0100nnnn00001011",
- "PR = PC + 4;",
- "nia = R[n];",
+ "PR = PH2T (PC + 4);",
"if (~doprofile)",
- " gotcall (PR, nia);",
+ " gotcall (PR, R[n]);",
+ "SET_NIP (PT2H (R[n]));",
+ "cycles += 2;",
"Delay_Slot (PC + 2);",
},
- { "", "n", "ldc <REG_N>,GBR", "0100nnnn00011110",
- "GBR = R[n];",
+ { "", "n", "ldc <REG_N>,<CREG_M>", "0100nnnnmmmm1110",
+ "CREG (m) = R[n];",
"/* FIXME: user mode */",
},
{ "", "n", "ldc <REG_N>,SR", "0100nnnn00001110",
"SET_SR (R[n]);",
"/* FIXME: user mode */",
},
- { "", "n", "ldc <REG_N>,VBR", "0100nnnn00101110",
- "VBR = R[n];",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc <REG_N>,SSR", "0100nnnn00111110",
- "SSR = R[n];",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc <REG_N>,SPC", "0100nnnn01001110",
- "SPC = R[n];",
- "/* FIXME: user mode */",
+ { "", "n", "ldc <REG_N>,MOD", "0100nnnn01011110",
+ "SET_MOD (R[n]);",
},
#if 0
{ "", "n", "ldc <REG_N>,DBR", "0100nnnn11111010",
@@ -524,41 +521,9 @@ op tab[] =
"/* FIXME: user mode */",
},
#endif
- { "", "n", "ldc <REG_N>,R0_BANK", "0100nnnn10001110",
- "SET_Rn_BANK (0, R[n]);",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc <REG_N>,R1_BANK", "0100nnnn10011110",
- "SET_Rn_BANK (1, R[n]);",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc <REG_N>,R2_BANK", "0100nnnn10101110",
- "SET_Rn_BANK (2, R[n]);",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc <REG_N>,R3_BANK", "0100nnnn10111110",
- "SET_Rn_BANK (3, R[n]);",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc <REG_N>,R4_BANK", "0100nnnn11001110",
- "SET_Rn_BANK (4, R[n]);",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc <REG_N>,R5_BANK", "0100nnnn11011110",
- "SET_Rn_BANK (5, R[n]);",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc <REG_N>,R6_BANK", "0100nnnn11101110",
- "SET_Rn_BANK (6, R[n]);",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc <REG_N>,R7_BANK", "0100nnnn11111110",
- "SET_Rn_BANK (7, R[n]);",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc.l @<REG_N>+,GBR", "0100nnnn00010111",
+ { "", "n", "ldc.l @<REG_N>+,<CREG_M>", "0100nnnnmmmm0111",
"MA (1);",
- "GBR = RLAT (R[n]);",
+ "CREG (m) = RLAT (R[n]);",
"R[n] += 4;",
"/* FIXME: user mode */",
},
@@ -568,23 +533,10 @@ op tab[] =
"R[n] += 4;",
"/* FIXME: user mode */",
},
- { "", "n", "ldc.l @<REG_N>+,VBR", "0100nnnn00100111",
+ { "", "n", "ldc.l @<REG_N>+,MOD", "0100nnnn01010111",
"MA (1);",
- "VBR = RLAT (R[n]);",
+ "SET_MOD (RLAT (R[n]));",
"R[n] += 4;",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc.l @<REG_N>+,SSR", "0100nnnn00110111",
- "MA (1);",
- "SSR = RLAT (R[n]);",
- "R[n] += 4;",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc.l @<REG_N>+,SPC", "0100nnnn01000111",
- "MA (1);",
- "SPC = RLAT (R[n]);",
- "R[n] += 4;",
- "/* FIXME: user mode */",
},
#if 0
{ "", "n", "ldc.l @<REG_N>+,DBR", "0100nnnn11110110",
@@ -594,112 +546,45 @@ op tab[] =
"/* FIXME: user mode */",
},
#endif
- { "", "n", "ldc.l @<REG_N>+,R0_BANK", "0100nnnn10000111",
- "MA (1);",
- "SET_Rn_BANK (0, RLAT (R[n]));",
- "R[n] += 4;",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc.l @<REG_N>+,R1_BANK", "0100nnnn10010111",
- "MA (1);",
- "SET_Rn_BANK (1, RLAT (R[n]));",
- "R[n] += 4;",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc.l @<REG_N>+,R2_BANK", "0100nnnn10100111",
- "MA (1);",
- "SET_Rn_BANK (2, RLAT (R[n]));",
- "R[n] += 4;",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc.l @<REG_N>+,R3_BANK", "0100nnnn10110111",
- "MA (1);",
- "SET_Rn_BANK (3, RLAT (R[n]));",
- "R[n] += 4;",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc.l @<REG_N>+,R4_BANK", "0100nnnn11000111",
- "MA (1);",
- "SET_Rn_BANK (4, RLAT (R[n]));",
- "R[n] += 4;",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc.l @<REG_N>+,R5_BANK", "0100nnnn11010111",
- "MA (1);",
- "SET_Rn_BANK (5, RLAT (R[n]));",
- "R[n] += 4;",
- "/* FIXME: user mode */",
- },
- { "", "n", "ldc.l @<REG_N>+,R6_BANK", "0100nnnn11100111",
- "MA (1);",
- "SET_Rn_BANK (6, RLAT (R[n]));",
- "R[n] += 4;",
- "/* FIXME: user mode */",
+
+ /* sh-dsp */
+ { "", "", "ldre @(<disp>,PC)", "10001110i8p1....",
+ "RE = SEXT (i) * 2 + 4 + PH2T (PC);",
},
- { "", "n", "ldc.l @<REG_N>+,R7_BANK", "0100nnnn11110111",
- "MA (1);",
- "SET_Rn_BANK (7, RLAT (R[n]));",
- "R[n] += 4;",
- "/* FIXME: user mode */",
+ { "", "", "ldrs @(<disp>,PC)", "10001100i8p1....",
+ "RS = SEXT (i) * 2 + 4 + PH2T (PC);",
},
- /* sh3e */
- { "", "", "lds <REG_N>,FPUL", "0100nnnn01011010",
- "FPUL = R[n];",
+ { "", "n", "lds <REG_N>,<SREG_M>", "0100nnnnssss1010",
+ "SREG (m) = R[n];",
},
- /* sh3e */
- { "", "", "lds.l @<REG_N>+,FPUL", "0100nnnn01010110",
+ { "", "n", "lds.l @<REG_N>+,<SREG_M>", "0100nnnnssss0110",
"MA (1);",
- "FPUL = RLAT(R[n]);",
+ "SREG (m) = RLAT(R[n]);",
"R[n] += 4;",
},
- /* sh3e */
- { "", "", "lds <REG_N>,FPSCR", "0100nnnn01101010",
+ /* sh3e / sh-dsp (lds <REG_N>,DSR) */
+ { "", "n", "lds <REG_N>,FPSCR", "0100nnnn01101010",
"SET_FPSCR(R[n]);",
},
- /* sh3e */
- { "", "", "lds.l @<REG_N>+,FPSCR", "0100nnnn01100110",
+ /* sh3e / sh-dsp (lds.l @<REG_N>+,DSR) */
+ { "", "n", "lds.l @<REG_N>+,FPSCR", "0100nnnn01100110",
"MA (1);",
"SET_FPSCR (RLAT(R[n]));",
"R[n] += 4;",
},
- { "", "n", "lds <REG_N>,MACH", "0100nnnn00001010",
- "MACH = R[n];",
- },
- { "", "n", "lds <REG_N>,MACL", "0100nnnn00011010",
- "MACL= R[n];",
- },
- { "", "n", "lds <REG_N>,PR", "0100nnnn00101010",
- "PR = R[n];",
- },
- { "", "n", "lds.l @<REG_N>+,MACH", "0100nnnn00000110",
- "MA (1);",
- "MACH = SEXT(RLAT(R[n]));",
- "R[n]+=4;",
- },
- { "", "n", "lds.l @<REG_N>+,MACL", "0100nnnn00010110",
- "MA (1);",
- "MACL = RLAT(R[n]);",
- "R[n]+=4;",
- },
- { "", "n", "lds.l @<REG_N>+,PR", "0100nnnn00100110",
- "MA (1);",
- "PR = RLAT(R[n]);",
- "R[n]+=4;;",
- },
-
{ "", "", "ldtlb", "0000000000111000",
"/* FIXME: XXX*/ abort();",
},
{ "", "nm", "mac.l @<REG_M>+,@<REG_N>+", "0000nnnnmmmm1111",
- "trap (255,R0,memory,maskl,maskw,little_endian);",
+ "trap (255,R0,memory,maskl,maskw, endianw);",
"/* FIXME: mac.l support */",
},
{ "", "nm", "mac.w @<REG_M>+,@<REG_N>+", "0100nnnnmmmm1111",
- "macw(R0,memory,n,m);",
+ "macw(R0,memory,n,m,endianw);",
},
{ "n", "", "mov #<imm>,<REG_N>", "1110nnnni8*1....",
@@ -764,7 +649,7 @@ op tab[] =
},
{ "n", "", "mov.l @(<disp>,PC),<REG_N>", "1101nnnni8p4....",
"MA (1);",
- "R[n] = RLAT((PC & ~3) + 4 + i);",
+ "R[n] = RLAT ((PH2T (PC) & ~3) + 4 + i);",
"L (n);",
},
{ "n", "m", "mov.l @(<disp>,<REG_M>),<REG_N>", "0101nnnnmmmmi4*4",
@@ -817,7 +702,7 @@ op tab[] =
},
{ "n", "", "mov.w @(<disp>,PC),<REG_N>", "1001nnnni8p2....",
"MA (1);",
- "R[n] = RSWAT (PC + 4 + i);",
+ "R[n] = RSWAT (PH2T (PC + 4 + i));",
"L (n);",
},
{ "0", "m", "mov.w @(<disp>,<REG_M>),R0", "10000101mmmmi4*2",
@@ -864,12 +749,12 @@ op tab[] =
},
{ "0", "", "mova @(<disp>,PC),R0", "11000111i8p4....",
- "R0 = ((i + 4 + PC) & ~0x3);",
+ "R0 = ((i + 4 + PH2T (PC)) & ~0x3);",
},
{ "0", "", "movca.l @R0, <REG_N>", "0000nnnn11000011",
"/* FIXME: Not implemented */",
- "saved_state.asregs.exception = SIGILL;",
+ "RAISE_EXCEPTION (SIGILL);",
},
{ "n", "", "movt <REG_N>", "0000nnnn00101001",
@@ -917,12 +802,12 @@ op tab[] =
{ "0", "", "ocbi @<REG_N>", "0000nnnn10010011",
"/* FIXME: Not implemented */",
- "saved_state.asregs.exception = SIGILL;",
+ "RAISE_EXCEPTION (SIGILL);",
},
{ "0", "", "ocbp @<REG_N>", "0000nnnn10100011",
"/* FIXME: Not implemented */",
- "saved_state.asregs.exception = SIGILL;",
+ "RAISE_EXCEPTION (SIGILL);",
},
{ "", "n", "ocbwb @<REG_N>", "0000nnnn10110011",
@@ -974,23 +859,43 @@ op tab[] =
#if 0
/* SH-[12] */
"int tmp = PC;",
- "nia = RLAT (R[15]) + 2;",
+ "SET_NIP (PT2H (RLAT (R[15]) + 2));",
"R[15] += 4;",
"SET_SR (RLAT (R[15]) & 0x3f3);",
"R[15] += 4;",
"Delay_Slot (PC + 2);",
#else
- "nia = SPC;",
"SET_SR (SSR);",
+ "SET_NIP (PT2H (SPC));",
+ "cycles += 2;",
"Delay_Slot (PC + 2);",
#endif
},
{ "", "", "rts", "0000000000001011",
- "nia = PR;",
+ "SET_NIP (PT2H (PR));",
+ "cycles += 2;",
"Delay_Slot (PC + 2);",
},
+ /* sh-dsp */
+ { "", "n", "setrc <REG_N>", "0100nnnn00010100",
+ "SET_RC (R[n]);",
+ },
+ { "", "n", "setrc #<imm>", "10000010i8*1....",
+ /* It would be more realistic to let loop_start point to some static
+ memory that contains an illegal opcode and then give a bus error when
+ the loop is eventually encountered, but it seems not only simpler,
+ but also more debugging-friendly to just catch the failure here. */
+ "if (BUSERROR (RS | RE, maskw))",
+ " RAISE_EXCEPTION (SIGILL);",
+ "else {",
+ " SET_RC (i);",
+ " loop = get_loop_bounds (RS, RE, memory, mem_end, maskw, endianw);",
+ " CHECK_INSN_PTR (insn_ptr);",
+ "}",
+ },
+
{ "", "", "sets", "0000000001011000",
"SET_SR_S (1);",
},
@@ -1048,25 +953,14 @@ op tab[] =
},
{ "", "", "sleep", "0000000000011011",
- "trap (0xc3, R0, memory, maskl, maskw, little_endian);",
- "nia = PC;",
+ "nip = PC;",
+ "trap (0xc3, R0, memory, maskl, maskw, endianw);",
},
- { "n", "", "stc GBR,<REG_N>", "0000nnnn00010010",
- "R[n] = GBR;",
- },
- { "n", "", "stc SR,<REG_N>", "0000nnnn00000010",
- "R[n] = GET_SR ();",
- },
- { "n", "", "stc VBR,<REG_N>", "0000nnnn00100010",
- "R[n] = VBR;",
- },
- { "n", "", "stc SSR,<REG_N>", "0000nnnn00110010",
- "R[n] = SSR;",
- },
- { "n", "", "stc SPC,<REG_N>", "0000nnnn01000010",
- "R[n] = SPC;",
+ { "n", "", "stc <CREG_M>,<REG_N>", "0000nnnnmmmm0010",
+ "R[n] = CREG (m);",
},
+
#if 0
{ "n", "", "stc SGR,<REG_N>", "0000nnnn00111010",
"R[n] = SGR;",
@@ -1075,54 +969,10 @@ op tab[] =
"R[n] = DBR;",
},
#endif
- { "n", "", "stc R0_BANK,<REG_N>", "0000nnnn10000010",
- "R[n] = Rn_BANK (0);",
- },
- { "n", "", "stc R1_BANK,<REG_N>", "0000nnnn10010010",
- "R[n] = Rn_BANK (1);",
- },
- { "n", "", "stc R2_BANK,<REG_N>", "0000nnnn10100010",
- "R[n] = Rn_BANK (2);",
- },
- { "n", "", "stc R3_BANK,<REG_N>", "0000nnnn10110010",
- "R[n] = Rn_BANK (3);",
- },
- { "n", "", "stc R4_BANK,<REG_N>", "0000nnnn11000010",
- "R[n] = Rn_BANK (4);",
- },
- { "n", "", "stc R5_BANK,<REG_N>", "0000nnnn11010010",
- "R[n] = Rn_BANK (5);",
- },
- { "n", "", "stc R6_BANK,<REG_N>", "0000nnnn11100010",
- "R[n] = Rn_BANK (6);",
- },
- { "n", "", "stc R7_BANK,<REG_N>", "0000nnnn11110010",
- "R[n] = Rn_BANK (7);",
- },
- { "n", "n", "stc.l GBR,@-<REG_N>", "0100nnnn00010011",
+ { "n", "n", "stc.l <CREG_M>,@-<REG_N>", "0100nnnnmmmm0011",
"MA (1);",
"R[n] -= 4;",
- "WLAT (R[n], GBR);;",
- },
- { "n", "n", "stc.l SR,@-<REG_N>", "0100nnnn00000011",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], GET_SR());",
- },
- { "n", "n", "stc.l VBR,@-<REG_N>", "0100nnnn00100011",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], VBR);",
- },
- { "n", "n", "stc.l SSR,@-<REG_N>", "0100nnnn00110011",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], SSR);",
- },
- { "n", "n", "stc.l SPC,@-<REG_N>", "0100nnnn01000011",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], SPC);",
+ "WLAT (R[n], CREG (m));",
},
#if 0
{ "n", "n", "stc.l SGR,@-<REG_N>", "0100nnnn00110010",
@@ -1136,91 +986,14 @@ op tab[] =
"WLAT (R[n], DBR);",
},
#endif
- { "n", "", "stc R0_BANK,@-<REG_N>", "0100nnnn10000010",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], Rn_BANK (0));",
- },
- { "n", "", "stc R1_BANK,@-<REG_N>", "0100nnnn10010010",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], Rn_BANK (1));",
- },
- { "n", "", "stc R2_BANK,@-<REG_N>", "0100nnnn10100010",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], Rn_BANK (2));",
- },
- { "n", "", "stc R3_BANK,@-<REG_N>", "0100nnnn10110010",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], Rn_BANK (3));",
- },
- { "n", "", "stc R4_BANK,@-<REG_N>", "0100nnnn11000010",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], Rn_BANK (4));",
- },
- { "n", "", "stc R5_BANK,@-<REG_N>", "0100nnnn11010010",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], Rn_BANK (5));",
- },
- { "n", "", "stc R6_BANK,@-<REG_N>", "0100nnnn11100010",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], Rn_BANK (6));",
- },
- { "n", "", "stc R7_BANK,@-<REG_N>", "0100nnnn11110010",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], Rn_BANK (7));",
- },
- /* sh3e */
- { "", "", "sts FPUL,<REG_N>", "0000nnnn01011010",
- "R[n] = FPUL;",
- },
- /* sh3e */
- { "", "", "sts.l FPUL,@-<REG_N>", "0100nnnn01010010",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], FPUL);",
+ { "n", "", "sts <SREG_M>,<REG_N>", "0000nnnnssss1010",
+ "R[n] = SREG (m);",
},
- /* sh3e */
- { "", "", "sts FPSCR,<REG_N>", "0000nnnn01101010",
- "R[n] = GET_FPSCR ();",
- },
- /* sh3e */
- { "", "", "sts.l FPSCR,@-<REG_N>", "0100nnnn01100010",
+ { "n", "n", "sts.l <SREG_M>,@-<REG_N>", "0100nnnnssss0010",
"MA (1);",
"R[n] -= 4;",
- "WLAT (R[n], GET_FPSCR ());",
- },
-
- { "n", "", "sts MACH,<REG_N>", "0000nnnn00001010",
- "R[n] = MACH;",
- },
- { "n", "", "sts MACL,<REG_N>", "0000nnnn00011010",
- "R[n] = MACL;",
- },
- { "n", "", "sts PR,<REG_N>", "0000nnnn00101010",
- "R[n] = PR;",
- },
- { "n", "n", "sts.l MACH,@-<REG_N>", "0100nnnn00000010",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], MACH);",
- },
- { "n", "n", "sts.l MACL,@-<REG_N>", "0100nnnn00010010",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], MACL);",
- },
- { "n", "n", "sts.l PR,@-<REG_N>", "0100nnnn00100010",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], PR);",
+ "WLAT (R[n], SREG (m));",
},
{ "n", "nm", "sub <REG_M>,<REG_N>", "0011nnnnmmmm1000",
@@ -1264,7 +1037,7 @@ op tab[] =
"if (i==0xc3)",
" PC-=2;",
"if (i<20||i==34||i==0xc3)",
- " trap(i,R,memory,maskl,maskw,little_endian);",
+ " trap(i,R,memory,maskl,maskw,endianw);",
"else {",
" R[15]-=4;",
" WLAT(R[15],GET_SR());",
@@ -1275,18 +1048,18 @@ op tab[] =
#else
"if (i == 0xc3)",
" {",
- " nia = PC;",
- " trap (i, R, memory, maskl, maskw, little_endian);",
+ " nip = PC;",
+ " trap (i, R, memory, maskl, maskw,endianw);",
" }",
"else if (i < 20 || i==34 || i==0xc3)",
- " trap (i, R, memory, maskl, maskw, little_endian);",
+ " trap (i, R, memory, maskl, maskw,endianw);",
"else if (!SR_BL) {",
" /* FIXME: TRA = (imm << 2); */",
" SSR = GET_SR();",
- " SPC = PC + 2;",
+ " SPC = PH2T (PC + 2);",
" SET_SR (GET_SR() | SR_MASK_MD | SR_MASK_BL | SR_MASK_RB);",
" /* FIXME: EXPEVT = 0x00000160; */",
- " nia = VBR + 0x00000100;",
+ " SET_NIP (PT2H (VBR + 0x00000100));",
"}",
#endif
},
@@ -1331,6 +1104,711 @@ op tab[] =
{0, 0}};
+op movsxy_tab[] =
+{
+/* If this is disabled, the simulator speeds up by about 12% on a
+ 450 MHz PIII - 9% with ACE_FAST.
+ Maybe we should have separate simulator loops? */
+#if 1
+ { "n", "n", "movs.w @-<REG_N>,<DSP_REG_M>", "111101NNMMMM0000",
+ "MA (1);",
+ "R[n] -= 2;",
+ "DSP_R (m) = RSWAT (R[n]) << 16;",
+ "DSP_GRD (m) = SIGN32 (DSP_R (m));",
+ },
+ { "", "n", "movs.w @<REG_N>,<DSP_REG_M>", "111101NNMMMM0100",
+ "MA (1);",
+ "DSP_R (m) = RSWAT (R[n]) << 16;",
+ "DSP_GRD (m) = SIGN32 (DSP_R (m));",
+ },
+ { "n", "n", "movs.w @<REG_N>+,<DSP_REG_M>", "111101NNMMMM1000",
+ "MA (1);",
+ "DSP_R (m) = RSWAT (R[n]) << 16;",
+ "DSP_GRD (m) = SIGN32 (DSP_R (m));",
+ "R[n] += 2;",
+ },
+ { "n", "n8","movs.w @<REG_N>+REG_8,<DSP_REG_M>", "111101NNMMMM1100",
+ "MA (1);",
+ "DSP_R (m) = RSWAT (R[n]) << 16;",
+ "DSP_GRD (m) = SIGN32 (DSP_R (m));",
+ "R[n] += R[8];",
+ },
+ { "n", "n", "movs.w @-<REG_N>,<DSP_GRD_M>", "111101NNGGGG0000",
+ "MA (1);",
+ "R[n] -= 2;",
+ "DSP_R (m) = RSWAT (R[n]);",
+ },
+ { "", "n", "movs.w @<REG_N>,<DSP_GRD_M>", "111101NNGGGG0100",
+ "MA (1);",
+ "DSP_R (m) = RSWAT (R[n]);",
+ },
+ { "n", "n", "movs.w @<REG_N>+,<DSP_GRD_M>", "111101NNGGGG1000",
+ "MA (1);",
+ "DSP_R (m) = RSWAT (R[n]);",
+ "R[n] += 2;",
+ },
+ { "n", "n8","movs.w @<REG_N>+REG_8,<DSP_GRD_M>", "111101NNGGGG1100",
+ "MA (1);",
+ "DSP_R (m) = RSWAT (R[n]);",
+ "R[n] += R[8];",
+ },
+ { "n", "n", "<DSP_REG_M>,movs.w @-<REG_N>", "111101NNMMMM0001",
+ "MA (1);",
+ "R[n] -= 2;",
+ "WWAT (R[n], DSP_R (m) >> 16);",
+ },
+ { "", "n", "movs.w <DSP_REG_M>,@<REG_N>", "111101NNMMMM0101",
+ "MA (1);",
+ "WWAT (R[n], DSP_R (m) >> 16);",
+ },
+ { "n", "n", "movs.w <DSP_REG_M>,@<REG_N>+", "111101NNMMMM1001",
+ "MA (1);",
+ "WWAT (R[n], DSP_R (m) >> 16);",
+ "R[n] += 2;",
+ },
+ { "n", "n8","movs.w <DSP_REG_M>,@<REG_N>+REG_8", "111101NNMMMM1101",
+ "MA (1);",
+ "WWAT (R[n], DSP_R (m) >> 16);",
+ "R[n] += R[8];",
+ },
+ { "n", "n", "movs.w <DSP_GRD_M>,@-<REG_N>", "111101NNGGGG0001",
+ "MA (1);",
+ "R[n] -= 2;",
+ "WWAT (R[n], SEXT (DSP_R (m)));",
+ },
+ { "", "n", "movs.w <DSP_GRD_M>,@<REG_N>", "111101NNGGGG0101",
+ "MA (1);",
+ "WWAT (R[n], SEXT (DSP_R (m)));",
+ },
+ { "n", "n", "movs.w <DSP_GRD_M>,@<REG_N>+", "111101NNGGGG1001",
+ "MA (1);",
+ "WWAT (R[n], SEXT (DSP_R (m)));",
+ "R[n] += 2;",
+ },
+ { "n", "n8","movs.w <DSP_GRD_M>,@<REG_N>+REG_8", "111101NNGGGG1101",
+ "MA (1);",
+ "WWAT (R[n], SEXT (DSP_R (m)));",
+ "R[n] += R[8];",
+ },
+ { "n", "n", "movs.l @-<REG_N>,<DSP_REG_M>", "111101NNMMMM0010",
+ "MA (1);",
+ "R[n] -= 4;",
+ "DSP_R (m) = RLAT (R[n]);",
+ "DSP_GRD (m) = SIGN32 (DSP_R (m));",
+ },
+ { "", "n", "movs.l @<REG_N>,<DSP_REG_M>", "111101NNMMMM0110",
+ "MA (1);",
+ "DSP_R (m) = RLAT (R[n]);",
+ "DSP_GRD (m) = SIGN32 (DSP_R (m));",
+ },
+ { "n", "n", "movs.l @<REG_N>+,<DSP_REG_M>", "111101NNMMMM1010",
+ "MA (1);",
+ "DSP_R (m) = RLAT (R[n]);",
+ "DSP_GRD (m) = SIGN32 (DSP_R (m));",
+ "R[n] += 4;",
+ },
+ { "n", "n8","movs.l @<REG_N>+REG_8,<DSP_REG_M>", "111101NNMMMM1110",
+ "MA (1);",
+ "DSP_R (m) = RLAT (R[n]);",
+ "DSP_GRD (m) = SIGN32 (DSP_R (m));",
+ "R[n] += R[8];",
+ },
+ { "n", "n", "<DSP_REG_M>,movs.l @-<REG_N>", "111101NNMMMM0011",
+ "MA (1);",
+ "R[n] -= 4;",
+ "WLAT (R[n], DSP_R (m));",
+ },
+ { "", "n", "movs.l <DSP_REG_M>,@<REG_N>", "111101NNMMMM0111",
+ "MA (1);",
+ "WLAT (R[n], DSP_R (m));",
+ },
+ { "n", "n", "movs.l <DSP_REG_M>,@<REG_N>+", "111101NNMMMM1011",
+ "MA (1);",
+ "WLAT (R[n], DSP_R (m));",
+ "R[n] += 4;",
+ },
+ { "n", "n8","movs.l <DSP_REG_M>,@<REG_N>+REG_8", "111101NNMMMM1111",
+ "MA (1);",
+ "WLAT (R[n], DSP_R (m));",
+ "R[n] += R[8];",
+ },
+ { "n", "n", "<DSP_GRD_M>,movs.l @-<REG_N>", "111101NNGGGG0011",
+ "MA (1);",
+ "R[n] -= 4;",
+ "WLAT (R[n], SEXT (DSP_R (m)));",
+ },
+ { "", "n", "movs.l <DSP_GRD_M>,@<REG_N>", "111101NNGGGG0111",
+ "MA (1);",
+ "WLAT (R[n], SEXT (DSP_R (m)));",
+ },
+ { "n", "n", "movs.l <DSP_GRD_M>,@<REG_N>+", "111101NNGGGG1011",
+ "MA (1);",
+ "WLAT (R[n], SEXT (DSP_R (m)));",
+ "R[n] += 4;",
+ },
+ { "n", "n8","movs.l <DSP_GRD_M>,@<REG_N>+REG_8", "111101NNGGGG1111",
+ "MA (1);",
+ "WLAT (R[n], SEXT (DSP_R (m)));",
+ "R[n] += R[8];",
+ },
+ { "", "n", "movx.w @<REG_x>,<DSP_XX>", "111100xxXX000100",
+ "DSP_R (m) = RSWAT (R[n]) << 16;",
+ "iword &= 0xfd53; goto top;",
+ },
+ { "n", "n", "movx.w @<REG_x>+,<DSP_XX>", "111100xxXX001000",
+ "DSP_R (m) = RSWAT (R[n]) << 16;",
+ "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : 2;",
+ "iword &= 0xfd53; goto top;",
+ },
+ { "n", "n8","movx.w @<REG_x>+REG_8,<DSP_XX>", "111100xxXX001000",
+ "DSP_R (m) = RSWAT (R[n]) << 16;",
+ "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : R[8];",
+ "iword &= 0xfd53; goto top;",
+ },
+ { "", "n", "movx.w <DSP_Aa>,@<REG_x>", "111100xxaa100100",
+ "WWAT (R[n], DSP_R (m) >> 16);",
+ "iword &= 0xfd53; goto top;",
+ },
+ { "n", "n", "movx.w <DSP_Aa>,@<REG_x>+", "111100xxaa101000",
+ "WWAT (R[n], DSP_R (m) >> 16);",
+ "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : 2;",
+ "iword &= 0xfd53; goto top;",
+ },
+ { "n", "n8","movx.w <DSP_Aa>,@<REG_x>+REG_8","111100xxaa101000",
+ "WWAT (R[n], DSP_R (m) >> 16);",
+ "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : R[8];",
+ "iword &= 0xfd53; goto top;",
+ },
+ { "", "n", "movy.w @<REG_y>,<DSP_YY>", "111100yyYY000001",
+ "DSP_R (m) = RSWAT (R[n]) << 16;",
+ },
+ { "n", "n", "movy.w @<REG_x>+,<DSP_YY>", "111100yyYY000010",
+ "DSP_R (m) = RSWAT (R[n]) << 16;",
+ "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : 2;",
+ },
+ { "n", "n9","movy.w @<REG_x>+REG_9,<DSP_YY>", "111100yyYY000010",
+ "DSP_R (m) = RSWAT (R[n]) << 16;",
+ "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : R[9];",
+ },
+ { "", "n", "movy.w <DSP_Aa>,@<REG_x>", "111100yyAA010001",
+ "WWAT (R[n], DSP_R (m) >> 16);",
+ },
+ { "n", "n", "movy.w <DSP_Aa>,@<REG_x>+", "111100yyAA010010",
+ "WWAT (R[n], DSP_R (m) >> 16);",
+ "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : 2;",
+ },
+ { "n", "n9", "movy.w <DSP_Aa>,@<REG_x>+REG_9", "111100yyAA010010",
+ "WWAT (R[n], DSP_R (m) >> 16);",
+ "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : R[9];",
+ },
+ { "", "", "nopx nopy", "1111000000000000",
+ "/* nop */",
+ },
+ { "", "", "ppi", "1111100000000000",
+ "ppi_insn (RIAT (nip));",
+ "nip += 2;",
+ "iword &= 0xf7ff; goto top;",
+ },
+#endif
+ {0, 0}};
+
+op ppi_tab[] =
+{
+ { "","", "pshl #<imm>,dz", "00000iiim16.zzzz",
+ "int Sz = DSP_R (z) & 0xffff0000;",
+ "",
+ "if (i < 16)",
+ " res = Sz << i;",
+ "else if (i >= 128 - 16)",
+ " res = Sz >> 128 - i;",
+ "else"
+ " {",
+ " RAISE_EXCEPTION (SIGILL);",
+ " return;",
+ " }",
+ "res &= 0xffff0000;",
+ "res_grd = 0;",
+ "goto logical;",
+ },
+ { "","", "psha #<imm>,dz", "00010iiim32.zzzz",
+ "int Sz = DSP_R (z);",
+ "int Sz_grd = GET_DSP_GRD (z);",
+ "",
+ "if (i < 32)",
+ " {",
+ " if (i == 32)"
+ " {",
+ " res = 0;",
+ " res_grd = Sz;",
+ " }",
+ " else",
+ " {",
+ " res = Sz << i;",
+ " res_grd = Sz_grd << i | (unsigned) Sz >> 32 - i;",
+ " }",
+ " res_grd = SEXT (res_grd);",
+ " carry = res_grd & 1;",
+ " }",
+ "else if (i >= 96)",
+ " {",
+ " i = 128 - i;",
+ " if (i == 32)"
+ " {",
+ " res_grd = SIGN32 (Sz_grd);",
+ " res = Sz_grd;",
+ " }",
+ " else",
+ " {",
+ " res = Sz >> i | Sz_grd << 32 - i;",
+ " res_grd = Sz_grd >> i;",
+ " }",
+ " carry = Sz >> (i - 1) & 1;",
+ " }",
+ "else"
+ " {",
+ " RAISE_EXCEPTION (SIGILL);",
+ " return;",
+ " }",
+ "COMPUTE_OVERFLOW;",
+ "greater_equal = 0;",
+ },
+ { "","", "pmuls Se,Sf,Dg", "0100eeffxxyygguu",
+ "res = (DSP_R (e)) >> 16 * (DSP_R (f) >> 16) * 2;",
+ "if (res == 0x80000000)",
+ " res = 0x7fffffff;",
+ "DSP_R (g) = res;",
+ "DSP_GRD (g) = SIGN32 (res);",
+ "return;",
+ },
+ { "","", "psub Sx,Sy,Du pmuls Se,Sf,Dg", "0110eeffxxyygguu",
+ "int Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "int Sy = DSP_R (y);",
+ "int Sy_grd = SIGN32 (Sy);",
+ "",
+ "res = (DSP_R (e)) >> 16 * (DSP_R (f) >> 16) * 2;",
+ "if (res == 0x80000000)",
+ " res = 0x7fffffff;",
+ "DSP_R (g) = res;",
+ "DSP_GRD (g) = SIGN32 (res);",
+ "",
+ "z = u;",
+ "res = Sx - Sy;",
+ "carry = (unsigned) res > (unsigned) Sx;",
+ "res_grd = Sx_grd - Sy_grd - carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ },
+ { "","", "padd Sx,Sy,Du pmuls Se,Sf,Dg", "0111eeffxxyygguu",
+ "int Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "int Sy = DSP_R (y);",
+ "int Sy_grd = SIGN32 (Sy);",
+ "",
+ "res = (DSP_R (e)) >> 16 * (DSP_R (f) >> 16) * 2;",
+ "if (res == 0x80000000)",
+ " res = 0x7fffffff;",
+ "DSP_R (g) = res;",
+ "DSP_GRD (g) = SIGN32 (res);",
+ "",
+ "z = u;",
+ "res = Sx + Sy;",
+ "carry = (unsigned) res < (unsigned) Sx;",
+ "res_grd = Sx_grd + Sy_grd + carry;",
+ "COMPUTE_OVERFLOW;",
+ },
+ { "","", "psubc Sx,Sy,Dz", "10100000xxyyzzzz",
+ "int Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "int Sy = DSP_R (y);",
+ "int Sy_grd = SIGN32 (Sy);",
+ "",
+ "res = Sx - Sy - (DSR & 1);",
+ "carry = (unsigned) res > (unsigned) Sx || (res == Sx && Sy);",
+ "res_grd = Sx_grd + Sy_grd + carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ "DSR &= ~0xf1;\n",
+ "if (res || res_grd)\n",
+ " DSR |= greater_equal | res_grd >> 2 & DSR_MASK_N | overflow;\n",
+ "else\n",
+ " DSR |= DSR_MASK_Z | overflow;\n",
+ "DSR |= carry;\n",
+ "goto assign_z;\n",
+ },
+ { "","", "paddc Sx,Sy,Dz", "10110000xxyyzzzz",
+ "int Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "int Sy = DSP_R (y);",
+ "int Sy_grd = SIGN32 (Sy);",
+ "",
+ "res = Sx + Sy + (DSR & 1);",
+ "carry = (unsigned) res < (unsigned) Sx || (res == Sx && Sy);",
+ "res_grd = Sx_grd + Sy_grd + carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ "DSR &= ~0xf1;\n",
+ "if (res || res_grd)\n",
+ " DSR |= greater_equal | res_grd >> 2 & DSR_MASK_N | overflow;\n",
+ "else\n",
+ " DSR |= DSR_MASK_Z | overflow;\n",
+ "DSR |= carry;\n",
+ "goto assign_z;\n",
+ },
+ { "","", "pcmp Sx,Sy", "10000100xxyy....",
+ "int Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "int Sy = DSP_R (y);",
+ "int Sy_grd = SIGN32 (Sy);",
+ "",
+ "z = 17; /* Ignore result. */",
+ "res = Sx - Sy;",
+ "carry = (unsigned) res > (unsigned) Sx;",
+ "res_grd = Sx_grd - Sy_grd - carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ },
+ { "","", "pwsb Sx,Sy,Dz", "10100100xxyyzzzz",
+ },
+ { "","", "pwad Sx,Sy,Dz", "10110100xxyyzzzz",
+ },
+ { "","", "pabs Sx,Dz", "10001000xx..zzzz",
+ "res = DSP_R (x);",
+ "res_grd = GET_DSP_GRD (x);",
+ "if (res >= 0)",
+ " carry = 0;",
+ "else",
+ " {",
+ " res = -res;",
+ " carry = (res != 0); /* The manual has a bug here. */",
+ " res_grd = -res_grd - carry;",
+ " }",
+ "COMPUTE_OVERFLOW;",
+ "/* ??? The re-computing of overflow after",
+ " saturation processing is specific to pabs. */",
+ "overflow = res_grd != SIGN32 (res) ? DSR_MASK_V : 0;",
+ "ADD_SUB_GE;",
+ },
+ { "","", "prnd Sx,Dz", "10011000xx..zzzz",
+ "int Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "",
+ "res = Sx + 0x8000;",
+ "carry = (unsigned) res < (unsigned) Sx;",
+ "res_grd = Sx_grd + carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ },
+ { "","", "pabs Sy,Dz", "10101000..yyzzzz",
+ "res = DSP_R (y);",
+ "res_grd = 0;",
+ "overflow = 0;",
+ "greater_equal = DSR_MASK_G;",
+ "if (res >= 0)",
+ " carry = 0;",
+ "else",
+ " {",
+ " res = -res;",
+ " carry = 1;",
+ " if (res < 0)",
+ " {",
+ " if (S)",
+ " res = 0x7fffffff;",
+ " else",
+ " {",
+ " overflow = DSR_MASK_V;",
+ " greater_equal = 0;",
+ " }",
+ " }",
+ " }",
+ },
+ { "","", "prnd Sy,Dz", "10111000..yyzzzz",
+ "int Sy = DSP_R (y);",
+ "int Sy_grd = SIGN32 (Sy);",
+ "",
+ "res = Sy + 0x8000;",
+ "carry = (unsigned) res < (unsigned) Sy;",
+ "res_grd = Sy_grd + carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ },
+ { "","", "(if cc) pshl Sx,Sy,Dz", "100000ccxxyyzzzz",
+ "int Sx = DSP_R (x) & 0xffff0000;",
+ "int Sy = DSP_R (y) >> 16 & 0x7f;",
+ "",
+ "if (Sy < 16)",
+ " res = Sx << Sy;",
+ "else if (Sy >= 128 - 16)",
+ " res = Sx >> 128 - Sy;",
+ "else"
+ " {",
+ " RAISE_EXCEPTION (SIGILL);",
+ " return;",
+ " }",
+ "goto cond_logical;",
+ },
+ { "","", "(if cc) psha Sx,Sy,Dz", "100100ccxxyyzzzz",
+ "int Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "int Sy = DSP_R (y) >> 16 & 0x7f;",
+ "",
+ "if (Sy < 32)",
+ " {",
+ " if (Sy == 32)"
+ " {",
+ " res = 0;",
+ " res_grd = Sx;",
+ " }",
+ " else",
+ " {",
+ " res = Sx << Sy;",
+ " res_grd = Sx_grd << Sy | (unsigned) Sx >> 32 - Sy;",
+ " }",
+ " res_grd = SEXT (res_grd);",
+ " carry = res_grd & 1;",
+ " }",
+ "else if (Sy >= 96)",
+ " {",
+ " Sy = 128 - Sy;",
+ " if (Sy == 32)"
+ " {",
+ " res_grd = SIGN32 (Sx_grd);",
+ " res = Sx_grd;",
+ " }",
+ " else",
+ " {",
+ " res = Sx >> Sy | Sx_grd << 32 - Sy;",
+ " res_grd = Sx_grd >> Sy;",
+ " }",
+ " carry = Sx >> (Sy - 1) & 1;",
+ " }",
+ "else"
+ " {",
+ " RAISE_EXCEPTION (SIGILL);",
+ " return;",
+ " }",
+ "COMPUTE_OVERFLOW;",
+ "greater_equal = 0;",
+ },
+ { "","", "(if cc) psub Sx,Sy,Dz", "101000ccxxyyzzzz",
+ "int Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "int Sy = DSP_R (y);",
+ "int Sy_grd = SIGN32 (Sy);",
+ "",
+ "res = Sx - Sy;",
+ "carry = (unsigned) res > (unsigned) Sx;",
+ "res_grd = Sx_grd - Sy_grd - carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ },
+ { "","", "(if cc) padd Sx,Sy,Dz", "101100ccxxyyzzzz",
+ "int Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "int Sy = DSP_R (y);",
+ "int Sy_grd = SIGN32 (Sy);",
+ "",
+ "res = Sx + Sy;",
+ "carry = (unsigned) res < (unsigned) Sx;",
+ "res_grd = Sx_grd + Sy_grd + carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ },
+ { "","", "(if cc) pand Sx,Sy,Dz", "100101ccxxyyzzzz",
+ "res = DSP_R (x) & DSP_R (y);",
+ "cond_logical:",
+ "res &= 0xffff0000;",
+ "res_grd = 0;",
+ "if (iword & 0x200)\n",
+ " goto assign_z;\n",
+ "logical:",
+ "carry = 0;",
+ "overflow = 0;",
+ "greater_equal = 0;",
+ "DSR &= ~0xf1;\n",
+ "if (res)\n",
+ " DSR |= res >> 26 & DSR_MASK_N;\n",
+ "else\n",
+ " DSR |= DSR_MASK_Z;\n",
+ "goto assign_dc;\n",
+ },
+ { "","", "(if cc) pxor Sx,Sy,Dz", "101001ccxxyyzzzz",
+ "res = DSP_R (x) ^ DSP_R (y);",
+ "goto cond_logical;",
+ },
+ { "","", "(if cc) por Sx,Sy,Dz", "101101ccxxyyzzzz",
+ "res = DSP_R (x) | DSP_R (y);",
+ "goto cond_logical;",
+ },
+ { "","", "(if cc) pdec Sx,Dz", "100010ccxx..zzzz",
+ "int Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "",
+ "res = Sx - 0x10000;",
+ "carry = res > Sx;",
+ "res_grd = Sx_grd - carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ "res &= 0xffff0000;",
+ },
+ { "","", "(if cc) pinc Sx,Dz", "100110ccxx..zzzz",
+ "int Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "",
+ "res = Sx + 0x10000;",
+ "carry = res < Sx;",
+ "res_grd = Sx_grd + carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ "res &= 0xffff0000;",
+ },
+ { "","", "(if cc) pdec Sy,Dz", "101010cc..yyzzzz",
+ "int Sy = DSP_R (y);",
+ "int Sy_grd = SIGN32 (Sy);",
+ "",
+ "res = Sy - 0x10000;",
+ "carry = res > Sy;",
+ "res_grd = Sy_grd - carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ "res &= 0xffff0000;",
+ },
+ { "","", "(if cc) pinc Sy,Dz", "101110cc..yyzzzz",
+ "int Sy = DSP_R (y);",
+ "int Sy_grd = SIGN32 (Sy);",
+ "",
+ "res = Sy + 0x10000;",
+ "carry = res < Sy;",
+ "res_grd = Sy_grd + carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ "res &= 0xffff0000;",
+ },
+ { "","", "(if cc) pclr Dz", "100011cc....zzzz",
+ "res = 0;",
+ "res_grd = 0;",
+ "carry = 0;",
+ "overflow = 0;",
+ "greater_equal = 1;",
+ },
+ { "","", "(if cc) pdmsb Sx,Dz", "100111ccxx..zzzz",
+ "unsigned Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "int i = 16;"
+ "",
+ "if (Sx_grd < 0)",
+ " {",
+ " Sx_grd = ~Sx_grd;",
+ " Sx = ~Sx;",
+ " }",
+ "if (Sx_grd)",
+ " {",
+ " Sx = Sx_grd;",
+ " res = -2;",
+ " }",
+ "else if (Sx)",
+ " res = 30;",
+ "else",
+ " res = 31;",
+ "do"
+ " {",
+ " if (Sx & ~0 << i)",
+ " {",
+ " res -= i;",
+ " Sx >>= i;",
+ " }",
+ " }",
+ "while (i >>= 1);",
+ "res <<= 16;",
+ "res_grd = SIGN32 (res);",
+ "carry = 0;",
+ "overflow = 0;",
+ "ADD_SUB_GE;",
+ },
+ { "","", "(if cc) pdmsb Sy,Dz", "101111cc..yyzzzz",
+ "unsigned Sy = DSP_R (y);",
+ "int i;"
+ "",
+ "if (Sy < 0)",
+ " Sy = ~Sy;",
+ "Sy <<= 1;",
+ "res = 31;",
+ "do"
+ " {",
+ " if (Sy & ~0 << i)",
+ " {",
+ " res -= i;",
+ " Sy >>= i;",
+ " }",
+ " }",
+ "while (i >>= 1);",
+ "res <<= 16;",
+ "res_grd = SIGN32 (res);",
+ "carry = 0;",
+ "overflow = 0;",
+ "ADD_SUB_GE;",
+ },
+ { "","", "(if cc) pneg Sx,Dz", "110010ccxx..zzzz",
+ "int Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "",
+ "res = 0 - Sx;",
+ "carry = res != 0;",
+ "res_grd = 0 - Sx_grd - carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ },
+ { "","", "(if cc) pcopy Sx,Dz", "110110ccxx..zzzz",
+ "res = DSP_R (x);",
+ "res_grd = GET_DSP_GRD (x);",
+ "carry = 0;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ },
+ { "","", "(if cc) pneg Sy,Dz", "111010cc..yyzzzz",
+ "int Sy = DSP_R (y);",
+ "int Sy_grd = SIGN32 (Sy);",
+ "",
+ "res = 0 - Sy;",
+ "carry = res != 0;",
+ "res_grd = 0 - Sy_grd - carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ },
+ { "","", "(if cc) pcopy Sy,Dz", "111110cc..yyzzzz",
+ "res = DSP_R (y);",
+ "res_grd = SIGN32 (res);",
+ "carry = 0;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ },
+ { "","", "(if cc) psts MACH,Dz", "110011cc....zzzz",
+ "res = MACH;",
+ "res_grd = SIGN32 (res);",
+ "goto assign_z;",
+ },
+ { "","", "(if cc) psts MACL,Dz", "110111cc....zzzz",
+ "res = MACL;",
+ "res_grd = SIGN32 (res);",
+ "goto assign_z;",
+ },
+ { "","", "(if cc) plds Dz,MACH", "111011cc....zzzz",
+ "if (0xa05f >> z & 1)",
+ " RAISE_EXCEPTION (SIGILL);",
+ "else",
+ " MACH = DSP_R (z);",
+ "return;",
+ },
+ { "","", "(if cc) plds Dz,MACL", "111111cc....zzzz",
+ "if (0xa05f >> z & 1)",
+ " RAISE_EXCEPTION (SIGILL);",
+ "else",
+ " MACL = DSP_R (z) = res;",
+ "return;",
+ },
+ {0, 0}
+};
+
/* Tables of things to put into enums for sh-opc.h */
static char *nibble_type_list[] =
{
@@ -1423,6 +1901,8 @@ qfunc (a, b)
{
char bufa[9];
char bufb[9];
+ int diff;
+
memcpy (bufa, a->code, 4);
memcpy (bufa + 4, a->code + 12, 4);
bufa[8] = 0;
@@ -1430,7 +1910,10 @@ qfunc (a, b)
memcpy (bufb, b->code, 4);
memcpy (bufb + 4, b->code + 12, 4);
bufb[8] = 0;
- return (strcmp (bufa, bufb));
+ diff = strcmp (bufa, bufb);
+ /* Stabilize the sort, so that later entries can override more general
+ preceding entries. */
+ return diff ? diff : a - b;
}
static void
@@ -1448,118 +1931,6 @@ sorttab ()
}
static void
-printonmatch (ptr, a, rep)
- char **ptr;
- char *a;
- char *rep;
-{
- int l = strlen (a);
- if (strncmp (*ptr, a, l) == 0)
- {
- printf ("%s", rep);
- *ptr += l;
- if (**ptr)
- printf (",");
- }
-}
-
-
-static
-void
-think (o)
- op *o;
-{
- char *n;
- char *p;
-
- printf ("{\"");
- n = o->name;
- while (*n && *n != ' ')
- {
- printf ("%c", *n);
- n++;
- }
- printf ("\",{");
-
- p = n;
-
- if (!*p)
- {
- printf ("0");
- }
- while (*p)
- {
- while (*p == ',' || *p == ' ')
- p++;
- printonmatch (&p, "#<imm>", "A_IMM");
- printonmatch (&p, "R0", "A_R0");
- printonmatch (&p, "<REG_N>", "A_REG_N");
- printonmatch (&p, "@<REG_N>+", "A_INC_N");
- printonmatch (&p, "@<REG_N>", "A_IND_N");
- printonmatch (&p, "@-<REG_N>", "A_DEC_N");
- printonmatch (&p, "<REG_M>", " A_REG_M");
- printonmatch (&p, "@<REG_M>+", "A_INC_M");
- printonmatch (&p, "@<REG_M>", "A_IND_M");
- printonmatch (&p, "@-<REG_M>", "A_DEC_M");
- printonmatch (&p, "@(<disp>,PC)", "A_DISP_PC");
- printonmatch (&p, "@(<disp>,<REG_M>)", "A_DISP_REG_M");
- printonmatch (&p, "@(<disp>,<REG_N>)", "A_DISP_REG_N");
- printonmatch (&p, "@(R0,<REG_N>)", "A_IND_R0_REG_N");
- printonmatch (&p, "@(R0,<REG_M>)", "A_IND_R0_REG_M");
- printonmatch (&p, "@(<disp>,GBR)", "A_DISP_GBR");
- printonmatch (&p, "@(R0,GBR)", "A_R0_GBR");
- printonmatch (&p, "<bdisp8>", "A_BDISP8");
- printonmatch (&p, "<bdisp12>", "A_BDISP12");
- printonmatch (&p, "SR", "A_SR");
- printonmatch (&p, "GBR", "A_GBR");
- printonmatch (&p, "VBR", "A_VBR");
- printonmatch (&p, "SSR", "A_SSR");
- printonmatch (&p, "SPC", "A_SPC");
- printonmatch (&p, "MACH", "A_MACH");
- printonmatch (&p, "MACL", "A_MACL");
- printonmatch (&p, "PR", "A_PR");
-
- }
- printf ("},{");
-
- p = o->code;
- while (*p)
- {
- printonmatch (&p, "0000", "HEX_0");
- printonmatch (&p, "0001", "HEX_1");
- printonmatch (&p, "0010", "HEX_2");
- printonmatch (&p, "0011", "HEX_3");
- printonmatch (&p, "0100", "HEX_4");
- printonmatch (&p, "0101", "HEX_5");
- printonmatch (&p, "0110", "HEX_6");
- printonmatch (&p, "0111", "HEX_7");
-
- printonmatch (&p, "1000", "HEX_8");
- printonmatch (&p, "1001", "HEX_9");
- printonmatch (&p, "1010", "HEX_A");
- printonmatch (&p, "1011", "HEX_B");
- printonmatch (&p, "1100", "HEX_C");
- printonmatch (&p, "1101", "HEX_D");
- printonmatch (&p, "1110", "HEX_E");
- printonmatch (&p, "1111", "HEX_F");
- printonmatch (&p, "i8*1....", "IMM_8");
- printonmatch (&p, "i4*1", "IMM_4");
- printonmatch (&p, "i8p4....", "PCRELIMM_8BY4");
- printonmatch (&p, "i8p2....", "PCRELIMM_8BY2");
- printonmatch (&p, "i8*2....", "IMM_8BY2");
- printonmatch (&p, "i4*2", "IMM_4BY2");
- printonmatch (&p, "i8*4....", "IMM_8BY4");
- printonmatch (&p, "i4*4", "IMM_4BY4");
- printonmatch (&p, "i12.........", "BRANCH_12");
- printonmatch (&p, "i8p1....", "BRANCH_8");
- printonmatch (&p, "nnnn", "REG_N");
- printonmatch (&p, "mmmm", "REG_M");
-
- }
- printf ("}},\n");
-}
-
-static void
gengastab ()
{
op *p;
@@ -1572,35 +1943,6 @@ gengastab ()
}
-
-static void
-genopc ()
-{
- op *p;
- make_enum_list ("sh_nibble_type", nibble_type_list);
- make_enum_list ("sh_arg_type", arg_type_list);
-
- printf ("typedef struct {\n");
- printf ("char *name;\n");
- printf ("sh_arg_type arg[3];\n");
- printf ("sh_nibble_type nibbles[4];\n");
- printf ("} sh_opcode_info;\n");
- printf ("#ifdef DEFINE_TABLE\n");
- printf ("sh_opcode_info sh_table[]={\n");
- for (p = tab; p->name; p++)
- {
- printf ("\n/* %s %-20s*/", p->code, p->name);
- think (p);
- }
- printf ("0};\n");
- printf ("#endif\n");
-}
-
-
-
-
-
-
/* Convert a string of 4 binary digits into an int */
static
@@ -1647,12 +1989,28 @@ expand_opcode (shift, val, i, s)
case '0':
case '1':
{
-
- int n = bton (s);
- if (n >= 0)
- {
- expand_opcode (shift - 4, val | (n << shift), i, s + 4);
- }
+ int m, mv;
+
+ val |= bton (s) << shift;
+ if (s[2] == '0' || s[2] == '1')
+ expand_opcode (shift - 4, val, i, s + 4);
+ else if (s[2] == 'N')
+ for (j = 0; j < 4; j++)
+ expand_opcode (shift - 4, val | (j << shift), i, s + 4);
+ else if (s[2] == 'x')
+ for (j = 0; j < 4; j += 2)
+ for (m = 0; m < 32; m++)
+ {
+ /* Ignore illegal nopy */
+ if ((m & 7) == 0 && m != 0)
+ continue;
+ mv = m & 3 | (m & 4) << 2 | (m & 8) << 3 | (m & 16) << 4;
+ expand_opcode (shift - 4, val | mv | (j << shift), i,
+ s + 4);
+ }
+ else if (s[2] == 'y')
+ for (j = 0; j < 2; j++)
+ expand_opcode (shift - 4, val | (j << shift), i, s + 4);
break;
}
case 'n':
@@ -1663,6 +2021,37 @@ expand_opcode (shift, val, i, s)
}
break;
+ case 'M':
+ /* A1, A0,X0,X1,Y0,Y1,M0,A1G,M1,M1G */
+ for (j = 5; j < 16; j++)
+ if (j != 6)
+ expand_opcode (shift - 4, val | (j << shift), i, s + 4);
+ break;
+ case 'G':
+ /* A1G, A0G: */
+ for (j = 13; j <= 15; j +=2)
+ expand_opcode (shift - 4, val | (j << shift), i, s + 4);
+ break;
+ case 's':
+ /* System registers mach, macl, pr: */
+ for (j = 0; j < 3; j++)
+ expand_opcode (shift - 4, val | (j << shift), i, s + 4);
+ /* System registers fpul, fpscr/dsr, a0, x0, x1, y0, y1: */
+ for (j = 5; j < 12; j++)
+ expand_opcode (shift - 4, val | (j << shift), i, s + 4);
+ break;
+ case 'X':
+ case 'a':
+ val |= bton (s) << shift;
+ for (j = 0; j < 16; j += 8)
+ expand_opcode (shift - 4, val | (j << shift), i, s + 4);
+ break;
+ case 'Y':
+ case 'A':
+ val |= bton (s) << shift;
+ for (j = 0; j < 8; j += 4)
+ expand_opcode (shift - 4, val | (j << shift), i, s + 4);
+ break;
default:
for (j = 0; j < (1 << (shift + 4)); j++)
@@ -1677,18 +2066,22 @@ expand_opcode (shift, val, i, s)
statement entry. */
static void
-dumptable ()
+dumptable (name, size, start)
+ char *name;
+ int size;
+ int start;
{
int lump = 256;
int online = 16;
- int i = 0;
+ int i = start;
- while (i < 1 << 16)
+ printf ("unsigned char %s[%d]={\n", name, size);
+ while (i < start + size)
{
int j = 0;
- printf ("unsigned char sh_jump_table%x[%d]={\n", i, lump);
+ printf ("/* 0x%x */\n", i);
while (j < lump)
{
@@ -1705,37 +2098,46 @@ dumptable ()
printf ("\n");
}
i += j;
- printf ("};\n");
}
-
+ printf ("};\n");
}
static void
-filltable ()
+filltable (p)
+ op *p;
{
- op *p;
- int index = 1;
+ static int index = 1;
sorttab ();
- for (p = tab; p->name; p++)
+ for (; p->name; p++)
{
p->index = index++;
expand_opcode (12, 0, p->index, p->code);
}
}
+/* Table already contais all the switch case tags for 16-bit opcode double
+ data transfer (ddt) insns, and the switch case tag for processing parallel
+ processing insns (ppi) for code 0xf800 (ppi nopx nopy). Copy the
+ latter tag to represent all combinations of ppi with ddt. */
static void
-gensim ()
+ppi_moves ()
{
- op *p;
- int j;
+ int i;
- printf ("{\n");
- printf (" switch (jump_table[iword]) {\n");
+ for (i = 0xf000; i < 0xf400; i++)
+ if (table[i])
+ table[i + 0x800] = table[0xf800];
+}
- for (p = tab; p->name; p++)
+static void
+gensim_caselist (p)
+ op *p;
+{
+ for (; p->name; p++)
{
+ int j;
int sextbit = -1;
int needm = 0;
int needn = 0;
@@ -1752,6 +2154,8 @@ gensim ()
{
case '0':
case '1':
+ s += 2;
+ break;
case '.':
s += 4;
break;
@@ -1760,11 +2164,43 @@ gensim ()
needn = 1;
s += 4;
break;
+ case 'N':
+ printf (" int n = (((iword >> 8) - 2) & 0x3) + 2;\n");
+ s += 2;
+ break;
+ case 'x':
+ printf (" int n = ((iword >> 9) & 1) + 4;\n");
+ needn = 1;
+ s += 2;
+ break;
+ case 'y':
+ printf (" int n = ((iword >> 8) & 1) + 4;\n");
+ needn = 1;
+ s += 2;
+ break;
case 'm':
- printf (" int m = (iword >>4) & 0xf;\n");
needm = 1;
+ case 's':
+ case 'M':
+ case 'G':
+ printf (" int m = (iword >>4) & 0xf;\n");
s += 4;
-
+ break;
+ case 'X':
+ printf (" int m = ((iword >> 7) & 1) + 8;\n");
+ s += 2;
+ break;
+ case 'a':
+ printf (" int m = 7 - ((iword >> 6) & 2);\n");
+ s += 2;
+ break;
+ case 'Y':
+ printf (" int m = ((iword >> 6) & 1) + 10;\n");
+ s += 2;
+ break;
+ case 'A':
+ printf (" int m = 7 - ((iword >> 5) & 2);\n");
+ s += 2;
break;
case 'i':
@@ -1820,6 +2256,8 @@ gensim ()
for (r = p->refs; *r; r++)
{
if (*r == '0') printf(" CREF(0);\n");
+ if (*r == '8') printf(" CREF(8);\n");
+ if (*r == '9') printf(" CREF(9);\n");
if (*r == 'n') printf(" CREF(n);\n");
if (*r == 'm') printf(" CREF(m);\n");
}
@@ -1849,20 +2287,30 @@ gensim ()
printf (" break;\n");
printf (" }\n");
}
+}
+
+static void
+gensim ()
+{
+ printf ("{\n");
+ printf (" switch (jump_table[iword]) {\n");
+
+ gensim_caselist (tab);
+ gensim_caselist (movsxy_tab);
+
printf (" default:\n");
printf (" {\n");
- printf (" saved_state.asregs.exception = SIGILL;\n");
+ printf (" RAISE_EXCEPTION (SIGILL);\n");
printf (" }\n");
printf (" }\n");
printf ("}\n");
}
-
static void
gendefines ()
{
op *p;
- filltable();
+ filltable (tab);
for (p = tab; p->name; p++)
{
char *s = p->name;
@@ -1880,6 +2328,234 @@ gendefines ()
}
}
+static int ppi_index;
+
+/* Take an ppi code, expand all varying fields in it and fill all the
+ right entries in 'table' with the opcode index. */
+
+static void
+expand_ppi_code (val, i, s)
+ int val;
+ int i;
+ char *s;
+{
+ int j;
+
+ for (;;)
+ {
+ switch (s[0])
+ {
+ /* The last eight bits are disregarded for the switch table. */
+ case 'm':
+ case 'x':
+ case '.':
+ table[val] = i;
+ return;
+ case '0':
+ val += val;
+ s++;
+ break;
+ case '1':
+ val += val + 1;
+ s++;
+ break;
+ case 'i':
+ case 'e': case 'f':
+ val += val;
+ s++;
+ expand_ppi_code (val, i, s);
+ val++;
+ break;
+ case 'c':
+ val <<= 2;
+ s += 2;
+ val++;
+ expand_ppi_code (val, ppi_index++, s);
+ val++;
+ expand_ppi_code (val, i, s);
+ val++;
+ break;
+ }
+ }
+}
+
+static void
+ppi_filltable ()
+{
+ op *p;
+ ppi_index = 1;
+
+ for (p = ppi_tab; p->name; p++)
+ {
+ p->index = ppi_index++;
+ expand_ppi_code (0, p->index, p->code);
+ }
+}
+
+static void
+ppi_gensim ()
+{
+ op *p = ppi_tab;
+
+ printf ("#define DSR_MASK_G 0x80\n");
+ printf ("#define DSR_MASK_Z 0x40\n");
+ printf ("#define DSR_MASK_N 0x20\n");
+ printf ("#define DSR_MASK_V 0x10\n");
+ printf ("\n");
+ printf ("#define COMPUTE_OVERFLOW do {\\\n");
+ printf (" overflow = res_grd != SIGN32 (res) ? DSR_MASK_V : 0; \\\n");
+ printf (" if (overflow && S) \\\n");
+ printf (" { \\\n");
+ printf (" if (res_grd & 0x80) \\\n");
+ printf (" { \\\n");
+ printf (" res = 0x80000000; \\\n");
+ printf (" res_grd |= 0xff; \\\n");
+ printf (" } \\\n");
+ printf (" else \\\n");
+ printf (" { \\\n");
+ printf (" res = 0x7fffffff; \\\n");
+ printf (" res_grd &= ~0xff; \\\n");
+ printf (" } \\\n");
+ printf (" overflow = 0; \\\n");
+ printf (" } \\\n");
+ printf ("} while (0)\n");
+ printf ("\n");
+ printf ("#define ADD_SUB_GE \\\n");
+ printf (" (greater_equal = ~(overflow << 3 & res_grd) & DSR_MASK_G)\n");
+ printf ("\n");
+ printf ("static void\n");
+ printf ("ppi_insn (iword)\n");
+ printf (" int iword;\n");
+ printf ("{\n");
+ printf (" static char e_tab[] = { 8, 9, 10, 5};\n");
+ printf (" static char f_tab[] = {10, 11, 8, 5};\n");
+ printf (" static char x_tab[] = { 8, 9, 7, 5};\n");
+ printf (" static char y_tab[] = {10, 11, 12, 14};\n");
+ printf (" static char g_tab[] = {12, 14, 7, 5};\n");
+ printf (" static char u_tab[] = { 8, 10, 7, 5};\n");
+ printf ("\n");
+ printf (" int z;\n");
+ printf (" int res, res_grd;\n");
+ printf (" int carry, overflow, greater_equal;\n");
+ printf ("\n");
+ printf (" switch (ppi_table[iword >> 8]) {\n");
+
+ for (; p->name; p++)
+ {
+ int shift, j;
+ int cond = 0;
+ int havedecl = 0;
+
+ char *s = p->code;
+
+ printf (" /* %s %s */\n", p->name, p->code);
+ printf (" case %d: \n", p->index);
+
+ printf (" {\n");
+ for (shift = 16; *s; )
+ {
+ switch (*s)
+ {
+ case 'i':
+ printf (" int i = (iword >> 4) & 0x7f;\n");
+ s += 6;
+ break;
+ case 'e':
+ case 'f':
+ case 'x':
+ case 'y':
+ case 'g':
+ case 'u':
+ shift -= 2;
+ printf (" int %c = %c_tab[(iword >> %d) & 3];\n",
+ *s, *s, shift);
+ havedecl = 1;
+ s += 2;
+ break;
+ case 'c':
+ printf (" if ((((iword >> 8) ^ DSR) & 1) == 0)\n");
+ printf ("\tbreak;\n");
+ printf (" }\n");
+ printf (" case %d: \n", p->index + 1);
+ printf (" {\n");
+ cond = 1;
+ case '0':
+ case '1':
+ case '.':
+ shift -= 2;
+ s += 2;
+ break;
+ case 'z':
+ if (havedecl)
+ printf ("\n");
+ printf (" z = iword & 0xf;\n");
+ havedecl = 2;
+ s += 4;
+ break;
+ }
+ }
+ if (havedecl == 1)
+ printf ("\n");
+ else if (havedecl == 2)
+ printf (" {\n");
+ for (j = 0; j < MAX_NR_STUFF; j++)
+ {
+ if (p->stuff[j])
+ {
+ printf (" %s%s\n",
+ (havedecl == 2 ? " " : ""),
+ p->stuff[j]);
+ }
+ }
+ if (havedecl == 2)
+ printf (" }\n");
+ if (cond)
+ {
+ printf (" if (iword & 0x200)\n");
+ printf (" goto assign_z;\n");
+ }
+ printf (" break;\n");
+ printf (" }\n");
+ }
+
+ printf (" default:\n");
+ printf (" {\n");
+ printf (" RAISE_EXCEPTION (SIGILL);\n");
+ printf (" return;\n");
+ printf (" }\n");
+ printf (" }\n");
+ printf (" DSR &= ~0xf1;\n");
+ printf (" if (res || res_grd)\n");
+ printf (" DSR |= greater_equal | res_grd >> 2 & DSR_MASK_N | overflow;\n");
+ printf (" else\n");
+ printf (" DSR |= DSR_MASK_Z | overflow;\n");
+ printf (" assign_dc:\n");
+ printf (" switch (DSR >> 1 & 7)\n");
+ printf (" {\n");
+ printf (" case 0: /* Carry Mode */\n");
+ printf (" DSR |= carry;\n");
+ printf (" case 1: /* Negative Value Mode */\n");
+ printf (" DSR |= res_grd >> 7 & 1;\n");
+ printf (" case 2: /* Zero Value Mode */\n");
+ printf (" DSR |= DSR >> 6 & 1;\n");
+ printf (" case 3: /* Overflow mode\n");
+ printf (" DSR |= overflow >> 4;\n");
+ printf (" case 4: /* Signed Greater Than Mode */\n");
+ printf (" DSR |= DSR >> 7 & 1;\n");
+ printf (" case 4: /* Signed Greater Than Or Equal Mode */\n");
+ printf (" DSR |= greater_equal >> 7;\n");
+ printf (" }\n");
+ printf (" assign_z:\n");
+ printf (" if (0xa05f >> z & 1)\n");
+ printf (" {\n");
+ printf (" RAISE_EXCEPTION (SIGILL);\n");
+ printf (" return;\n");
+ printf (" }\n");
+ printf (" DSP_R (z) = res;\n");
+ printf (" DSP_GRD (z) = res_grd;\n");
+ printf ("}\n");
+}
+
int
main (ac, av)
int ac;
@@ -1913,19 +2589,31 @@ main (ac, av)
}
else if (strcmp (av[1], "-s") == 0)
{
- filltable ();
- dumptable ();
+ filltable (tab);
+ dumptable ("sh_jump_table", 1 << 16, 0);
+
+ memset (table, 0, sizeof table);
+ filltable (movsxy_tab);
+ ppi_moves ();
+ dumptable ("sh_dsp_table", 1 << 12, 0xf000);
+ memset (table, 0, sizeof table);
+ ppi_filltable ();
+ dumptable ("ppi_table", 1 << 8, 0);
}
else if (strcmp (av[1], "-x") == 0)
{
- filltable ();
+ filltable (tab);
+ filltable (movsxy_tab);
gensim ();
}
+ else if (strcmp (av[1], "-p") == 0)
+ {
+ ppi_filltable ();
+ ppi_gensim ();
+ }
}
else
- {
- genopc ();
- }
+ fprintf (stderr, "Opcode table generation no longer supported.\n");
return 0;
}
diff --git a/sim/sh/interp.c b/sim/sh/interp.c
index 4d7c5cf4399..18442279558 100644
--- a/sim/sh/interp.c
+++ b/sim/sh/interp.c
@@ -52,6 +52,8 @@
#define SIGTRAP 5
#endif
+extern unsigned char sh_jump_table[], sh_dsp_table[0x1000], ppi_table[];
+
#define O_RECOMPILE 85
#define DEFINE_TABLE
#define DISASSEMBLER_TABLE
@@ -65,27 +67,31 @@ typedef union
struct
{
- /* On targets like sparc-sun-solaris, fregs will be aligned on a 64 bit
- boundary (because of the d member). To avoid padding between
- registers - which whould make the job of sim_fetch_register harder,
- we add padding at the start. */
- int pad_dummy;
int regs[16];
int pc;
- int pr;
-
- int gbr;
- int vbr;
- int mach;
- int macl;
-
- int sr;
-
- int fpul;
-
- int fpscr;
- /* sh3e */
+ /* System registers. For sh-dsp this also includes A0 / X0 / X1 / Y0 / Y1
+ which are located in fregs, i.e. strictly speaking, these are
+ out-of-bounds accesses of sregs.i . This wart of the code could be
+ fixed by making fregs part of sregs, and including pc too - to avoid
+ alignment repercussions - but this would cause very onerous union /
+ structure nesting, which would only be managable with anonymous
+ unions and structs. */
+ union
+ {
+ struct
+ {
+ int mach;
+ int macl;
+ int pr;
+ int dummy3, dummy4;
+ int fpul; /* A1 for sh-dsp - but only for movs etc. */
+ int fpscr; /* dsr for sh-dsp */
+ } named;
+ int i[7];
+ } sregs;
+
+ /* sh3e / sh-dsp */
union fregs_u
{
float f[16];
@@ -94,10 +100,28 @@ typedef union
}
fregs[2];
- int ssr;
- int spc;
- /* sh3 */
- int bank[2][8];
+ /* Control registers; on the SH4, ldc / stc is privileged, except when
+ accessing gbr. */
+ union
+ {
+ struct
+ {
+ int sr;
+ int gbr;
+ int vbr;
+ int ssr;
+ int spc;
+ int mod;
+ /* sh-dsp */
+ int rs;
+ int re;
+ /* sh3 */
+ int bank[8];
+ } named;
+ int i[16];
+ } cregs;
+
+ unsigned char *insn_end;
int ticks;
int stalls;
@@ -117,6 +141,11 @@ typedef union
int profile;
unsigned short *profile_hist;
unsigned char *memory;
+ int xyram_select, xram_start, yram_start;
+ unsigned char *xmem;
+ unsigned char *ymem;
+ unsigned char *xmem_offset;
+ unsigned char *ymem_offset;
}
asregs;
int asints[40];
@@ -124,16 +153,18 @@ typedef union
saved_state_type saved_state;
+struct loop_bounds { unsigned char *start, *end; };
/* These variables are at file scope so that functions other than
sim_resume can use the fetch/store macros */
static int target_little_endian;
+static int global_endianw, endianb;
+static int target_dsp;
static int host_little_endian;
#if 1
-static int maskl = ~0;
-static int maskw = ~0;
+static int maskw = 0;
#endif
static SIM_OPEN_KIND sim_kind;
@@ -150,27 +181,32 @@ static char *myname;
#define UR (unsigned int)R
#define UR (unsigned int)R
#define SR0 saved_state.asregs.regs[0]
-#define GBR saved_state.asregs.gbr
-#define VBR saved_state.asregs.vbr
-#define SSR saved_state.asregs.ssr
-#define SPC saved_state.asregs.spc
-#define MACH saved_state.asregs.mach
-#define MACL saved_state.asregs.macl
-#define FPUL saved_state.asregs.fpul
+#define CREG(n) (saved_state.asregs.cregs.i[(n)])
+#define GBR saved_state.asregs.cregs.named.gbr
+#define VBR saved_state.asregs.cregs.named.vbr
+#define SSR saved_state.asregs.cregs.named.ssr
+#define SPC saved_state.asregs.cregs.named.spc
+#define SREG(n) (saved_state.asregs.sregs.i[(n)])
+#define MACH saved_state.asregs.sregs.named.mach
+#define MACL saved_state.asregs.sregs.named.macl
+#define PR saved_state.asregs.sregs.named.pr
+#define FPUL saved_state.asregs.sregs.named.fpul
-#define PC pc
+#define PC insn_ptr
-/* Alternate bank of registers r0-r6 */
+/* Alternate bank of registers r0-r7 */
/* Note: code controling SR handles flips between BANK0 and BANK1 */
-#define Rn_BANK(n) (saved_state.asregs.bank[!SR_RB][(n)])
-#define SET_Rn_BANK(n, EXP) do { saved_state.asregs.bank[!SR_RB][(n)] = (EXP); } while (0)
+#define Rn_BANK(n) (saved_state.asregs.cregs.named.bank[(n)])
+#define SET_Rn_BANK(n, EXP) do { saved_state.asregs.cregs.named.bank[(n)] = (EXP); } while (0)
/* Manipulate SR */
+#define SR_MASK_DMY (1 << 11)
+#define SR_MASK_DMX (1 << 10)
#define SR_MASK_M (1 << 9)
#define SR_MASK_Q (1 << 8)
#define SR_MASK_I (0xf << 4)
@@ -180,23 +216,28 @@ static char *myname;
#define SR_MASK_BL (1 << 28)
#define SR_MASK_RB (1 << 29)
#define SR_MASK_MD (1 << 30)
+#define SR_MASK_RC 0x0fff0000
+#define SR_RC_INCREMENT -0x00010000
-#define M ((saved_state.asregs.sr & SR_MASK_M) != 0)
-#define Q ((saved_state.asregs.sr & SR_MASK_Q) != 0)
-#define S ((saved_state.asregs.sr & SR_MASK_S) != 0)
-#define T ((saved_state.asregs.sr & SR_MASK_T) != 0)
+#define M ((saved_state.asregs.cregs.named.sr & SR_MASK_M) != 0)
+#define Q ((saved_state.asregs.cregs.named.sr & SR_MASK_Q) != 0)
+#define S ((saved_state.asregs.cregs.named.sr & SR_MASK_S) != 0)
+#define T ((saved_state.asregs.cregs.named.sr & SR_MASK_T) != 0)
-#define SR_BL ((saved_state.asregs.sr & SR_MASK_BL) != 0)
-#define SR_RB ((saved_state.asregs.sr & SR_MASK_RB) != 0)
-#define SR_MD ((saved_state.asregs.sr & SR_MASK_MD) != 0)
+#define SR_BL ((saved_state.asregs.cregs.named.sr & SR_MASK_BL) != 0)
+#define SR_RB ((saved_state.asregs.cregs.named.sr & SR_MASK_RB) != 0)
+#define SR_MD ((saved_state.asregs.cregs.named.sr & SR_MASK_MD) != 0)
+#define SR_DMY ((saved_state.asregs.cregs.named.sr & SR_MASK_DMY) != 0)
+#define SR_DMX ((saved_state.asregs.cregs.named.sr & SR_MASK_DMX) != 0)
+#define SR_RC ((saved_state.asregs.cregs.named.sr & SR_MASK_RC))
/* Note: don't use this for privileged bits */
#define SET_SR_BIT(EXP, BIT) \
do { \
if ((EXP) & 1) \
- saved_state.asregs.sr |= (BIT); \
+ saved_state.asregs.cregs.named.sr |= (BIT); \
else \
- saved_state.asregs.sr &= ~(BIT); \
+ saved_state.asregs.cregs.named.sr &= ~(BIT); \
} while (0)
#define SET_SR_M(EXP) SET_SR_BIT ((EXP), SR_MASK_M)
@@ -204,28 +245,14 @@ do { \
#define SET_SR_S(EXP) SET_SR_BIT ((EXP), SR_MASK_S)
#define SET_SR_T(EXP) SET_SR_BIT ((EXP), SR_MASK_T)
-#define GET_SR() (saved_state.asregs.sr - 0)
+/* stc currently relies on being able to read SR without modifications. */
+#define GET_SR() (saved_state.asregs.cregs.named.sr - 0)
+
#define SET_SR(x) set_sr (x)
-static void
-set_sr (new_sr)
- int new_sr;
-{
- /* do we need to swap banks */
- int old_gpr = (SR_MD ? !SR_RB : 0);
- int new_gpr = ((new_sr & SR_MASK_MD)
- ? (new_sr & SR_MASK_RB) == 0
- : 0);
- if (old_gpr != new_gpr)
- {
- int i;
- for (i = 0; i < 8; i++)
- {
- saved_state.asregs.bank[old_gpr][i] = saved_state.asregs.regs[i];
- saved_state.asregs.regs[i] = saved_state.asregs.bank[new_gpr][i];
- }
- }
-}
+#define SET_RC(x) \
+ (saved_state.asregs.cregs.named.sr \
+ = saved_state.asregs.cregs.named.sr & 0xf000ffff | ((x) & 0xfff) << 16)
/* Manipulate FPSCR */
@@ -241,10 +268,12 @@ static void
set_fpscr1 (x)
int x;
{
- int old = saved_state.asregs.fpscr;
- saved_state.asregs.fpscr = (x);
+ int old = saved_state.asregs.sregs.named.fpscr;
+ saved_state.asregs.sregs.named.fpscr = (x);
/* swap the floating point register banks */
- if ((saved_state.asregs.fpscr ^ old) & FPSCR_MASK_FR)
+ if ((saved_state.asregs.sregs.named.fpscr ^ old) & FPSCR_MASK_FR
+ /* Ignore bit change if simulating sh-dsp. */
+ && ! target_dsp)
{
union fregs_u tmpf = saved_state.asregs.fregs[0];
saved_state.asregs.fregs[0] = saved_state.asregs.fregs[1];
@@ -252,12 +281,14 @@ set_fpscr1 (x)
}
}
-#define GET_FPSCR() (saved_state.asregs.fpscr)
+/* sts relies on being able to read fpscr directly. */
+#define GET_FPSCR() (saved_state.asregs.sregs.named.fpscr)
#define SET_FPSCR(x) \
do { \
set_fpscr1 (x); \
} while (0)
+#define DSR (saved_state.asregs.sregs.named.fpscr)
int
fail ()
@@ -265,41 +296,80 @@ fail ()
abort ();
}
-int
-special_address (addr, bits_written, data)
- void *addr;
- int bits_written, data;
-{
- if ((unsigned) addr >> 24 == 0xf0 && bits_written == 32 && (data & 1) == 0)
- /* This invalidates (if not associative) or might invalidate
- (if associative) an instruction cache line. This is used for
- trampolines. Since we don't simulate the cache, this is a no-op
- as far as the simulator is concerned. */
- return 1;
- /* We can't do anything useful with the other stuff, so fail. */
- return 0;
-}
+#define RAISE_EXCEPTION(x) \
+ (saved_state.asregs.exception = x, saved_state.asregs.insn_end = 0)
-/* This function exists solely for the purpose of setting a breakpoint to
+/* This function exists mainly for the purpose of setting a breakpoint to
catch simulated bus errors when running the simulator under GDB. */
void
-bp_holder ()
+raise_exception (x)
+ int x;
+{
+ RAISE_EXCEPTION(x);
+}
+
+void
+raise_buserror ()
{
+ raise_exception (SIGBUS);
}
+#define PROCESS_SPECIAL_ADDRESS(addr, endian, ptr, bits_written, \
+ forbidden_addr_bits, data, retval) \
+do { \
+ if (addr & forbidden_addr_bits) \
+ { \
+ raise_buserror (); \
+ return retval; \
+ } \
+ else if ((addr & saved_state.asregs.xyram_select) \
+ == saved_state.asregs.xram_start) \
+ ptr = (void *) &saved_state.asregs.xmem_offset[addr ^ endian]; \
+ else if ((addr & saved_state.asregs.xyram_select) \
+ == saved_state.asregs.yram_start) \
+ ptr = (void *) &saved_state.asregs.ymem_offset[addr ^ endian]; \
+ else if ((unsigned) addr >> 24 == 0xf0 \
+ && bits_written == 32 && (data & 1) == 0) \
+ /* This invalidates (if not associative) or might invalidate \
+ (if associative) an instruction cache line. This is used for \
+ trampolines. Since we don't simulate the cache, this is a no-op \
+ as far as the simulator is concerned. */ \
+ return retval; \
+ else \
+ { \
+ if (bits_written == 8 && addr > 0x5000000) \
+ IOMEM (addr, 1, data); \
+ /* We can't do anything useful with the other stuff, so fail. */ \
+ raise_buserror (); \
+ return retval; \
+ } \
+} while (0)
+
/* FIXME: sim_resume should be renamed to sim_engine_run. sim_resume
being implemented by ../common/sim_resume.c and the below should
make a call to sim_engine_halt */
-#define BUSERROR(addr, mask, bits_written, data) \
- if (addr & ~mask) \
+#define BUSERROR(addr, mask) ((addr) & (mask))
+
+#define WRITE_BUSERROR(addr, mask, data, addr_func) \
+ do \
{ \
- if (special_address (addr, bits_written, data)) \
- return; \
- saved_state.asregs.exception = SIGBUS; \
- bp_holder (); \
- }
+ if (addr & mask) \
+ { \
+ addr_func (addr, data); \
+ return; \
+ } \
+ } \
+ while (0)
+
+#define READ_BUSERROR(addr, mask, addr_func) \
+ do \
+ { \
+ if (addr & mask) \
+ return addr_func (addr); \
+ } \
+ while (0)
/* Define this to enable register lifetime checking.
The compiler generates "add #0,rn" insns to mark registers as invalid,
@@ -321,8 +391,21 @@ int valid[16];
#endif
static void parse_and_set_memory_size PARAMS ((char *str));
-
static int IOMEM PARAMS ((int addr, int write, int value));
+static struct loop_bounds get_loop_bounds PARAMS((int, int, unsigned char *,
+ unsigned char *, int, int));
+static void process_wlat_addr PARAMS((int, int));
+static void process_wwat_addr PARAMS((int, int));
+static void process_wbat_addr PARAMS((int, int));
+static int process_rlat_addr PARAMS((int));
+static int process_rwat_addr PARAMS((int));
+static int process_rbat_addr PARAMS((int));
+static void INLINE wlat_fast PARAMS ((unsigned char *, int, int, int));
+static void INLINE wwat_fast PARAMS ((unsigned char *, int, int, int, int));
+static void INLINE wbat_fast PARAMS ((unsigned char *, int, int, int));
+static int INLINE rlat_fast PARAMS ((unsigned char *, int, int));
+static int INLINE rwat_fast PARAMS ((unsigned char *, int, int, int));
+static int INLINE rbat_fast PARAMS ((unsigned char *, int, int));
static host_callback *callback;
@@ -383,13 +466,37 @@ set_dr (n, exp)
#define XF(n) (saved_state.asregs.fregs[(n) >> 5].i[(n) & 0x1f])
#define SET_XF(n,EXP) (saved_state.asregs.fregs[(n) >> 5].i[(n) & 0x1f] = (EXP))
+#define RS saved_state.asregs.cregs.named.rs
+#define RE saved_state.asregs.cregs.named.re
+#define MOD (saved_state.asregs.cregs.named.mod)
+#define SET_MOD(i) \
+(MOD = (i), \
+ MOD_ME = (unsigned) MOD >> 16 | (SR_DMY ? ~0xffff : (SR_DMX ? 0 : 0x10000)), \
+ MOD_DELTA = (MOD & 0xffff) - ((unsigned) MOD >> 16))
+
+#define DSP_R(n) saved_state.asregs.sregs.i[(n)]
+#define DSP_GRD(n) DSP_R ((n) + 8)
+#define GET_DSP_GRD(n) ((n | 2) == 7 ? SEXT (DSP_GRD (n)) : SIGN32 (DSP_R (n)))
+#define A1 DSP_R (5)
+#define A0 DSP_R (7)
+#define X0 DSP_R (8)
+#define X1 DSP_R (9)
+#define Y0 DSP_R (10)
+#define Y1 DSP_R (11)
+#define M0 DSP_R (12)
+#define A1G DSP_R (13)
+#define M1 DSP_R (14)
+#define A0G DSP_R (15)
+/* DSP_R (16) / DSP_GRD (16) are used as a fake destination for pcmp. */
+#define MOD_ME DSP_GRD (17)
+#define MOD_DELTA DSP_GRD (18)
#define FP_OP(n, OP, m) \
{ \
if (FPSCR_PR) \
{ \
if (((n) & 1) || ((m) & 1)) \
- saved_state.asregs.exception = SIGILL; \
+ RAISE_EXCEPTION (SIGILL); \
else \
SET_DR(n, (DR(n) OP DR(m))); \
} \
@@ -402,7 +509,7 @@ set_dr (n, exp)
if (FPSCR_PR) \
{ \
if ((n) & 1) \
- saved_state.asregs.exception = SIGILL; \
+ RAISE_EXCEPTION (SIGILL); \
else \
SET_DR(n, (OP (DR(n)))); \
} \
@@ -415,7 +522,7 @@ set_dr (n, exp)
if (FPSCR_PR) \
{ \
if (((n) & 1) || ((m) & 1)) \
- saved_state.asregs.exception = SIGILL; \
+ RAISE_EXCEPTION (SIGILL); \
else \
SET_SR_T (DR(n) OP DR(m)); \
} \
@@ -423,180 +530,137 @@ set_dr (n, exp)
SET_SR_T (FR(n) OP FR(m)); \
} while (0)
-
-
-static void INLINE
-wlat_little (memory, x, value, maskl)
- unsigned char *memory;
-{
- int v = value;
- unsigned char *p = memory + ((x) & maskl);
- BUSERROR(x, maskl, 32, v);
- p[3] = v >> 24;
- p[2] = v >> 16;
- p[1] = v >> 8;
- p[0] = v;
-}
-
-static void INLINE
-wwat_little (memory, x, value, maskw)
- unsigned char *memory;
-{
- int v = value;
- unsigned char *p = memory + ((x) & maskw);
- BUSERROR(x, maskw, 16, v);
-
- p[1] = v >> 8;
- p[0] = v;
-}
-
-static void INLINE
-wbat_any (memory, x, value, maskb)
- unsigned char *memory;
+static void
+set_sr (new_sr)
+ int new_sr;
{
- unsigned char *p = memory + (x & maskb);
- if (x > 0x5000000)
- IOMEM (x, 1, value);
- BUSERROR(x, maskb, 8, value);
-
- p[0] = value;
+ /* do we need to swap banks */
+ int old_gpr = SR_MD && SR_RB;
+ int new_gpr = (new_sr & SR_MASK_MD) && (new_sr & SR_MASK_RB);
+ if (old_gpr != new_gpr)
+ {
+ int i, tmp;
+ for (i = 0; i < 8; i++)
+ {
+ tmp = saved_state.asregs.cregs.named.bank[i];
+ saved_state.asregs.cregs.named.bank[i] = saved_state.asregs.regs[i];
+ saved_state.asregs.regs[i] = tmp;
+ }
+ }
+ saved_state.asregs.cregs.named.sr = new_sr;
+ SET_MOD (MOD);
}
static void INLINE
-wlat_big (memory, x, value, maskl)
+wlat_fast (memory, x, value, maskl)
unsigned char *memory;
{
int v = value;
- unsigned char *p = memory + ((x) & maskl);
- BUSERROR(x, maskl, 32, v);
-
- p[0] = v >> 24;
- p[1] = v >> 16;
- p[2] = v >> 8;
- p[3] = v;
+ unsigned int *p = (unsigned int *)(memory + x);
+ WRITE_BUSERROR (x, maskl, v, process_wlat_addr);
+ *p = v;
}
static void INLINE
-wwat_big (memory, x, value, maskw)
+wwat_fast (memory, x, value, maskw, endianw)
unsigned char *memory;
{
int v = value;
- unsigned char *p = memory + ((x) & maskw);
- BUSERROR(x, maskw, 16, v);
-
- p[0] = v >> 8;
- p[1] = v;
+ unsigned short *p = (unsigned short *)(memory + (x ^ endianw));
+ WRITE_BUSERROR (x, maskw, v, process_wwat_addr);
+ *p = v;
}
static void INLINE
-wbat_big (memory, x, value, maskb)
+wbat_fast (memory, x, value, maskb)
unsigned char *memory;
{
- unsigned char *p = memory + (x & maskb);
- BUSERROR(x, maskb, 8, value);
+ unsigned char *p = memory + (x ^ endianb);
+ WRITE_BUSERROR (x, maskb, value, process_wbat_addr);
- if (x > 0x5000000)
- IOMEM (x, 1, value);
p[0] = value;
}
/* Read functions */
static int INLINE
-rlat_little (memory, x, maskl)
+rlat_fast (memory, x, maskl)
unsigned char *memory;
{
- unsigned char *p = memory + ((x) & maskl);
- BUSERROR(x, maskl, -32, -1);
+ unsigned int *p = (unsigned int *)(memory + x);
+ READ_BUSERROR (x, maskl, process_rlat_addr);
- return (p[3] << 24) | (p[2] << 16) | (p[1] << 8) | p[0];
+ return *p;
}
static int INLINE
-rwat_little (memory, x, maskw)
+rwat_fast (memory, x, maskw, endianw)
unsigned char *memory;
+ int x, maskw, endianw;
{
- unsigned char *p = memory + ((x) & maskw);
- BUSERROR(x, maskw, -16, -1);
+ unsigned short *p = (unsigned short *)(memory + (x ^ endianw));
+ READ_BUSERROR (x, maskw, process_rwat_addr);
- return (p[1] << 8) | p[0];
+ return *p;
}
static int INLINE
-rbat_any (memory, x, maskb)
- unsigned char *memory;
-{
- unsigned char *p = memory + ((x) & maskb);
- BUSERROR(x, maskb, -8, -1);
-
- return p[0];
-}
-
-static int INLINE
-rlat_big (memory, x, maskl)
- unsigned char *memory;
+riat_fast (insn_ptr, endianw)
+ unsigned char *insn_ptr;
{
- unsigned char *p = memory + ((x) & maskl);
- BUSERROR(x, maskl, -32, -1);
+ unsigned short *p = (unsigned short *)((size_t) insn_ptr ^ endianw);
- return (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3];
+ return *p;
}
static int INLINE
-rwat_big (memory, x, maskw)
+rbat_fast (memory, x, maskb)
unsigned char *memory;
{
- unsigned char *p = memory + ((x) & maskw);
- BUSERROR(x, maskw, -16, -1);
+ unsigned char *p = memory + (x ^ endianb);
+ READ_BUSERROR (x, maskb, process_rbat_addr);
- return (p[0] << 8) | p[1];
+ return *p;
}
-#define RWAT(x) (little_endian ? rwat_little(memory, x, maskw): rwat_big(memory, x, maskw))
-#define RLAT(x) (little_endian ? rlat_little(memory, x, maskl): rlat_big(memory, x, maskl))
-#define RBAT(x) (rbat_any (memory, x, maskb))
-#define WWAT(x,v) (little_endian ? wwat_little(memory, x, v, maskw): wwat_big(memory, x, v, maskw))
-#define WLAT(x,v) (little_endian ? wlat_little(memory, x, v, maskl): wlat_big(memory, x, v, maskl))
-#define WBAT(x,v) (wbat_any (memory, x, v, maskb))
+#define RWAT(x) (rwat_fast (memory, x, maskw, endianw))
+#define RLAT(x) (rlat_fast (memory, x, maskl))
+#define RBAT(x) (rbat_fast (memory, x, maskb))
+#define RIAT(p) (riat_fast ((p), endianw))
+#define WWAT(x,v) (wwat_fast (memory, x, v, maskw, endianw))
+#define WLAT(x,v) (wlat_fast (memory, x, v, maskl))
+#define WBAT(x,v) (wbat_fast (memory, x, v, maskb))
#define RUWAT(x) (RWAT(x) & 0xffff)
#define RSWAT(x) ((short)(RWAT(x)))
#define RSBAT(x) (SEXT(RBAT(x)))
-#define RDAT(x, n) (do_rdat (memory, (x), (n), (little_endian)))
+#define RDAT(x, n) (do_rdat (memory, (x), (n), (maskl)))
static int
-do_rdat (memory, x, n, little_endian)
+do_rdat (memory, x, n, maskl)
char *memory;
int x;
int n;
- int little_endian;
+ int maskl;
{
int f0;
int f1;
int i = (n & 1);
int j = (n & ~1);
- if (little_endian)
- {
- f0 = rlat_little (memory, x + 0, maskl);
- f1 = rlat_little (memory, x + 4, maskl);
- }
- else
- {
- f0 = rlat_big (memory, x + 0, maskl);
- f1 = rlat_big (memory, x + 4, maskl);
- }
+ f0 = rlat_fast (memory, x + 0, maskl);
+ f1 = rlat_fast (memory, x + 4, maskl);
saved_state.asregs.fregs[i].i[(j + 0)] = f0;
saved_state.asregs.fregs[i].i[(j + 1)] = f1;
return 0;
}
-#define WDAT(x, n) (do_wdat (memory, (x), (n), (little_endian)))
+#define WDAT(x, n) (do_wdat (memory, (x), (n), (maskl)))
static int
-do_wdat (memory, x, n, little_endian)
+do_wdat (memory, x, n, maskl)
char *memory;
int x;
int n;
- int little_endian;
+ int maskl;
{
int f0;
int f1;
@@ -604,34 +668,123 @@ do_wdat (memory, x, n, little_endian)
int j = (n & ~1);
f0 = saved_state.asregs.fregs[i].i[(j + 0)];
f1 = saved_state.asregs.fregs[i].i[(j + 1)];
- if (little_endian)
- {
- wlat_little (memory, (x + 0), f0, maskl);
- wlat_little (memory, (x + 4), f1, maskl);
- }
- else
- {
- wlat_big (memory, (x + 0), f0, maskl);
- wlat_big (memory, (x + 4), f1, maskl);
- }
+ wlat_fast (memory, (x + 0), f0, maskl);
+ wlat_fast (memory, (x + 4), f1, maskl);
return 0;
}
+static void
+process_wlat_addr (addr, value)
+ int addr;
+ int value;
+{
+ unsigned int *ptr;
+
+ PROCESS_SPECIAL_ADDRESS (addr, endianb, ptr, 32, 3, value, );
+ *ptr = value;
+}
+
+static void
+process_wwat_addr (addr, value)
+ int addr;
+ int value;
+{
+ unsigned short *ptr;
+
+ PROCESS_SPECIAL_ADDRESS (addr, endianb, ptr, 16, 1, value, );
+ *ptr = value;
+}
+
+static void
+process_wbat_addr (addr, value)
+ int addr;
+ int value;
+{
+ unsigned char *ptr;
+
+ PROCESS_SPECIAL_ADDRESS (addr, endianb, ptr, 8, 0, value, );
+ *ptr = value;
+}
-#define MA(n) do { memstalls += (((pc & 3) != 0) ? (n) : ((n) - 1)); } while (0)
+static int
+process_rlat_addr (addr)
+ int addr;
+{
+ unsigned char *ptr;
+
+ PROCESS_SPECIAL_ADDRESS (addr, endianb, ptr, -32, 3, -1, 0);
+ return *ptr;
+}
+
+static int
+process_rwat_addr (addr)
+ int addr;
+{
+ unsigned char *ptr;
+
+ PROCESS_SPECIAL_ADDRESS (addr, endianb, ptr, -16, 1, -1, 0);
+ return *ptr;
+}
+
+static int
+process_rbat_addr (addr)
+ int addr;
+{
+ unsigned char *ptr;
+
+ PROCESS_SPECIAL_ADDRESS (addr, endianb, ptr, -8, 0, -1, 0);
+ return *ptr;
+}
#define SEXT(x) (((x & 0xff) ^ (~0x7f))+0x80)
#define SEXT12(x) (((x & 0xfff) ^ 0x800) - 0x800)
#define SEXTW(y) ((int)((short)y))
+#if 0
+#define SEXT32(x) ((int)((x & 0xffffffff) ^ 0x80000000U) - 0x7fffffff - 1)
+#else
+#define SEXT32(x) ((int)(x))
+#endif
+#define SIGN32(x) (SEXT32 (x) >> 31)
+
+/* convert pointer from target to host value. */
+#define PT2H(x) ((x) + memory)
+/* convert pointer from host to target value. */
+#define PH2T(x) ((x) - memory)
+
+#define SKIP_INSN(p) ((p) += ((RIAT (p) & 0xfc00) == 0xf800 ? 4 : 2))
-#define Delay_Slot(TEMPPC) iword = RUWAT(TEMPPC); goto top;
+#define SET_NIP(x) nip = (x); CHECK_INSN_PTR (nip);
-int empty[16];
+#define Delay_Slot(TEMPPC) iword = RIAT (TEMPPC); goto top;
+
+#define CHECK_INSN_PTR(p) \
+do { \
+ if (saved_state.asregs.exception || PH2T (p) & maskw) \
+ saved_state.asregs.insn_end = 0; \
+ else if (p < loop.end) \
+ saved_state.asregs.insn_end = loop.end; \
+ else \
+ saved_state.asregs.insn_end = mem_end; \
+} while (0)
+
+#ifdef ACE_FAST
+
+#define MA(n)
+#define L(x)
+#define TL(x)
+#define TB(x)
+
+#else
+
+#define MA(n) \
+ do { memstalls += ((((int) PC & 3) != 0) ? (n) : ((n) - 1)); } while (0)
#define L(x) thislock = x;
#define TL(x) if ((x) == prevlock) stalls++;
#define TB(x,y) if ((x) == prevlock || (y)==prevlock) stalls++;
+#endif
+
#if defined(__GO32__) || defined(_WIN32)
int sim_memory_size = 19;
#else
@@ -698,22 +851,23 @@ now_persec ()
static FILE *profile_file;
-static void
-swap (memory, n)
- unsigned char *memory;
- int n;
+static unsigned INLINE
+swap (n)
+ unsigned n;
{
- int little_endian = target_little_endian;
- WLAT (0, n);
+ if (endianb)
+ n = (n << 24 | (n & 0xff00) << 8
+ | (n & 0xff0000) >> 8 | (n & 0xff000000) >> 24);
+ return n;
}
-static void
-swap16 (memory, n)
- unsigned char *memory;
- int n;
+static unsigned short INLINE
+swap16 (n)
+ unsigned short n;
{
- int little_endian = target_little_endian;
- WWAT (0, n);
+ if (endianb)
+ n = n << 8 | (n & 0xff00) >> 8;
+ return n;
}
static void
@@ -722,9 +876,9 @@ swapout (n)
{
if (profile_file)
{
- char b[4];
- swap (b, n);
- fwrite (b, 4, 1, profile_file);
+ union { char b[4]; int n; } u;
+ u.n = swap (n);
+ fwrite (u.b, 4, 1, profile_file);
}
}
@@ -732,9 +886,9 @@ static void
swapout16 (n)
int n;
{
- char b[4];
- swap16 (b, n);
- fwrite (b, 2, 1, profile_file);
+ union { char b[4]; int n; } u;
+ u.n = swap16 (n);
+ fwrite (u.b, 2, 1, profile_file);
}
/* Turn a pointer in a register into a pointer into real memory. */
@@ -746,10 +900,46 @@ ptr (x)
return (char *) (x + saved_state.asregs.memory);
}
+static int
+strswaplen (str)
+ int str;
+{
+ unsigned char *memory = saved_state.asregs.memory;
+ int start, end;
+ int endian = endianb;
+
+ if (! endian)
+ return 0;
+ end = str;
+ for (end = str; memory[end ^ endian]; end++) ;
+ return end - str;
+}
+
+static void
+strnswap (str, len)
+ int str;
+ int len;
+{
+ int *start, *end;
+
+ if (! endianb || ! len)
+ return;
+ start = (int *) ptr (str & ~3);
+ end = (int *) ptr (str + len);
+ do
+ {
+ int old = *start;
+ *start = (old << 24 | (old & 0xff00) << 8
+ | (old & 0xff0000) >> 8 | (old & 0xff000000) >> 24);
+ start++;
+ }
+ while (start < end);
+}
+
/* Simulate a monitor trap, put the result into r0 and errno into r1 */
static void
-trap (i, regs, memory, maskl, maskw, little_endian)
+trap (i, regs, memory, maskl, maskw, endianw)
int i;
int *regs;
unsigned char *memory;
@@ -760,7 +950,7 @@ trap (i, regs, memory, maskl, maskw, little_endian)
printf ("%c", regs[0]);
break;
case 2:
- saved_state.asregs.exception = SIGQUIT;
+ raise_exception (SIGQUIT);
break;
case 3: /* FIXME: for backwards compat, should be removed */
case 34:
@@ -776,40 +966,42 @@ trap (i, regs, memory, maskl, maskw, little_endian)
case SYS_fork:
regs[0] = fork ();
break;
+/* This would work only if endianness matched between host and target.
+ Besides, it's quite dangerous. */
+#if 0
case SYS_execve:
regs[0] = execve (ptr (regs[5]), (char **)ptr (regs[6]), (char **)ptr (regs[7]));
break;
case SYS_execv:
regs[0] = execve (ptr (regs[5]),(char **) ptr (regs[6]), 0);
break;
+#endif
case SYS_pipe:
{
- char *buf;
- int host_fd[2];
-
- buf = ptr (regs[5]);
-
- regs[0] = pipe (host_fd);
-
- WLAT (buf, host_fd[0]);
- buf += 4;
- WLAT (buf, host_fd[1]);
+ regs[0] = (BUSERROR (regs[5], maskl)
+ ? -EINVAL
+ : pipe ((int *) ptr (regs[5])));
}
break;
case SYS_wait:
regs[0] = wait (ptr (regs[5]));
break;
-#endif
+#endif /* !defined(__GO32__) && !defined(_WIN32) */
case SYS_read:
- regs[0] = callback->read (callback, regs[5], ptr (regs[6]), regs[7]);
+ strnswap (regs[6], regs[7]);
+ regs[0]
+ = callback->read (callback, regs[5], ptr (regs[6]), regs[7]);
+ strnswap (regs[6], regs[7]);
break;
case SYS_write:
+ strnswap (regs[6], regs[7]);
if (regs[5] == 1)
regs[0] = (int)callback->write_stdout (callback, ptr(regs[6]), regs[7]);
else
regs[0] = (int)callback->write (callback, regs[5], ptr (regs[6]), regs[7]);
+ strnswap (regs[6], regs[7]);
break;
case SYS_lseek:
regs[0] = callback->lseek (callback,regs[5], regs[6], regs[7]);
@@ -818,11 +1010,16 @@ trap (i, regs, memory, maskl, maskw, little_endian)
regs[0] = callback->close (callback,regs[5]);
break;
case SYS_open:
- regs[0] = callback->open (callback,ptr (regs[5]), regs[6]);
- break;
+ {
+ int len = strswaplen (regs[5]);
+ strnswap (regs[5], len);
+ regs[0] = callback->open (callback,ptr (regs[5]), regs[6]);
+ strnswap (regs[5], len);
+ break;
+ }
case SYS_exit:
/* EXIT - caller can look in r5 to work out the reason */
- saved_state.asregs.exception = SIGQUIT;
+ raise_exception (SIGQUIT);
regs[0] = regs[5];
break;
@@ -830,11 +1027,14 @@ trap (i, regs, memory, maskl, maskw, little_endian)
/* stat system call */
{
struct stat host_stat;
- char *buf;
+ int buf;
+ int len = strswaplen (regs[5]);
+ strnswap (regs[5], len);
regs[0] = stat (ptr (regs[5]), &host_stat);
+ strnswap (regs[5], len);
- buf = ptr (regs[6]);
+ buf = regs[6];
WWAT (buf, host_stat.st_dev);
buf += 2;
@@ -873,17 +1073,35 @@ trap (i, regs, memory, maskl, maskw, little_endian)
#ifndef _WIN32
case SYS_chown:
- regs[0] = chown (ptr (regs[5]), regs[6], regs[7]);
- break;
+ {
+ int len = strswaplen (regs[5]);
+
+ strnswap (regs[5], len);
+ regs[0] = chown (ptr (regs[5]), regs[6], regs[7]);
+ strnswap (regs[5], len);
+ break;
+ }
#endif /* _WIN32 */
case SYS_chmod:
- regs[0] = chmod (ptr (regs[5]), regs[6]);
- break;
+ {
+ int len = strswaplen (regs[5]);
+
+ strnswap (regs[5], len);
+ regs[0] = chmod (ptr (regs[5]), regs[6]);
+ strnswap (regs[5], len);
+ break;
+ }
case SYS_utime:
- /* Cast the second argument to void *, to avoid type mismatch
- if a prototype is present. */
- regs[0] = utime (ptr (regs[5]), (void *) ptr (regs[6]));
- break;
+ {
+ /* Cast the second argument to void *, to avoid type mismatch
+ if a prototype is present. */
+ int len = strswaplen (regs[5]);
+
+ strnswap (regs[5], len);
+ regs[0] = utime (ptr (regs[5]), (void *) ptr (regs[6]));
+ strnswap (regs[5], len);
+ break;
+ }
default:
abort ();
}
@@ -894,7 +1112,7 @@ trap (i, regs, memory, maskl, maskw, little_endian)
case 0xc3:
case 255:
- saved_state.asregs.exception = SIGTRAP;
+ raise_exception (SIGTRAP);
break;
}
@@ -907,7 +1125,7 @@ control_c (sig, code, scp, addr)
char *scp;
char *addr;
{
- saved_state.asregs.exception = SIGINT;
+ raise_exception (SIGINT);
}
static int
@@ -1041,12 +1259,12 @@ dmul (sign, rm, rn)
}
static void
-macw (regs, memory, n, m)
+macw (regs, memory, n, m, endianw)
int *regs;
unsigned char *memory;
int m, n;
+ int endianw;
{
- int little_endian = target_little_endian;
long tempm, tempn;
long prod, macl, sum;
@@ -1078,6 +1296,50 @@ macw (regs, memory, n, m)
MACL = sum;
}
+static struct loop_bounds
+get_loop_bounds (rs, re, memory, mem_end, maskw, endianw)
+ int rs, re;
+ unsigned char *memory, *mem_end;
+ int maskw, endianw;
+{
+ struct loop_bounds loop;
+
+ if (SR_RC)
+ {
+ if (RS >= RE)
+ {
+ loop.start = PT2H (RE - 4);
+ SKIP_INSN (loop.start);
+ loop.end = loop.start;
+ if (RS - RE == 0)
+ SKIP_INSN (loop.end);
+ if (RS - RE <= 2)
+ SKIP_INSN (loop.end);
+ SKIP_INSN (loop.end);
+ }
+ else
+ {
+ loop.start = PT2H (RS);
+ loop.end = PT2H (RE - 4);
+ SKIP_INSN (loop.end);
+ SKIP_INSN (loop.end);
+ SKIP_INSN (loop.end);
+ SKIP_INSN (loop.end);
+ }
+ if (loop.end >= mem_end)
+ loop.end = PT2H (0);
+ }
+ else
+ loop.end = PT2H (0);
+
+ return loop;
+}
+
+static void
+ppi_insn();
+
+#include "ppi.c"
+
/* Set the memory size to the power of two provided. */
void
@@ -1109,6 +1371,92 @@ sim_size (power)
}
static void
+init_dsp (abfd)
+ struct _bfd *abfd;
+{
+ int was_dsp = target_dsp;
+ unsigned long mach = bfd_get_mach (abfd);
+
+ if (mach == bfd_mach_sh_dsp || mach == bfd_mach_sh3_dsp)
+ {
+ int ram_area_size, xram_start, yram_start;
+ int new_select;
+
+ target_dsp = 1;
+ if (mach == bfd_mach_sh_dsp)
+ {
+ /* SH7410 (orig. sh-sdp):
+ 4KB each for X & Y memory;
+ On-chip X RAM 0x0800f000-0x0800ffff
+ On-chip Y RAM 0x0801f000-0x0801ffff */
+ xram_start = 0x0800f000;
+ ram_area_size = 0x1000;
+ }
+ if (mach == bfd_mach_sh3_dsp)
+ {
+ /* SH7612:
+ 8KB each for X & Y memory;
+ On-chip X RAM 0x1000e000-0x1000ffff
+ On-chip Y RAM 0x1001e000-0x1001ffff */
+ xram_start = 0x1000e000;
+ ram_area_size = 0x2000;
+ }
+ yram_start = xram_start + 0x10000;
+ new_select = ~(ram_area_size - 1);
+ if (saved_state.asregs.xyram_select != new_select)
+ {
+ saved_state.asregs.xyram_select = new_select;
+ free (saved_state.asregs.xmem);
+ free (saved_state.asregs.ymem);
+ saved_state.asregs.xmem = (unsigned char *) calloc (1, ram_area_size);
+ saved_state.asregs.ymem = (unsigned char *) calloc (1, ram_area_size);
+
+ /* Disable use of X / Y mmeory if not allocated. */
+ if (! saved_state.asregs.xmem || ! saved_state.asregs.ymem)
+ {
+ saved_state.asregs.xyram_select = 0;
+ if (saved_state.asregs.xmem)
+ free (saved_state.asregs.xmem);
+ if (saved_state.asregs.ymem)
+ free (saved_state.asregs.ymem);
+ }
+ }
+ saved_state.asregs.xram_start = xram_start;
+ saved_state.asregs.yram_start = yram_start;
+ saved_state.asregs.xmem_offset = saved_state.asregs.xmem - xram_start;
+ saved_state.asregs.ymem_offset = saved_state.asregs.ymem - yram_start;
+ }
+ else
+ {
+ target_dsp = 0;
+ if (saved_state.asregs.xyram_select)
+ {
+ saved_state.asregs.xyram_select = 0;
+ free (saved_state.asregs.xmem);
+ free (saved_state.asregs.ymem);
+ }
+ }
+
+ if (! saved_state.asregs.xyram_select)
+ {
+ saved_state.asregs.xram_start = 1;
+ saved_state.asregs.yram_start = 1;
+ }
+
+ if (target_dsp != was_dsp)
+ {
+ int i, tmp;
+
+ for (i = sizeof sh_dsp_table - 1; i >= 0; i--)
+ {
+ tmp = sh_jump_table[0xf000 + i];
+ sh_jump_table[0xf000 + i] = sh_dsp_table[i];
+ sh_dsp_table[i] = tmp;
+ }
+ }
+}
+
+static void
init_pointers ()
{
host_little_endian = 0;
@@ -1177,7 +1525,7 @@ int
sim_stop (sd)
SIM_DESC sd;
{
- saved_state.asregs.exception = SIGINT;
+ raise_exception (SIGINT);
return 1;
}
@@ -1186,7 +1534,9 @@ sim_resume (sd, step, siggnal)
SIM_DESC sd;
int step, siggnal;
{
- register unsigned int pc;
+ register unsigned char *insn_ptr;
+ unsigned char *mem_end;
+ struct loop_bounds loop;
register int cycles = 0;
register int stalls = 0;
register int memstalls = 0;
@@ -1195,22 +1545,25 @@ sim_resume (sd, step, siggnal)
register int thislock;
register unsigned int doprofile;
register int pollcount = 0;
- register int little_endian = target_little_endian;
+ /* endianw is used for every insn fetch, hence it makes sense to cache it.
+ endianb is used less often. */
+ register int endianw = global_endianw;
int tick_start = get_now ();
void (*prev) ();
void (*prev_fpe) ();
- extern unsigned char sh_jump_table0[];
- register unsigned char *jump_table = sh_jump_table0;
+ register unsigned char *jump_table = sh_jump_table;
register int *R = &(saved_state.asregs.regs[0]);
/*register int T;*/
+#ifndef PR
register int PR;
+#endif
- register int maskb = ((saved_state.asregs.msize - 1) & ~0);
- register int maskw = ((saved_state.asregs.msize - 1) & ~1);
- register int maskl = ((saved_state.asregs.msize - 1) & ~3);
+ register int maskb = ~((saved_state.asregs.msize - 1) & ~0);
+ register int maskw = ~((saved_state.asregs.msize - 1) & ~1);
+ register int maskl = ~((saved_state.asregs.msize - 1) & ~3);
register unsigned char *memory;
register unsigned int sbit = ((unsigned int) 1 << 31);
@@ -1218,20 +1571,18 @@ sim_resume (sd, step, siggnal)
prev_fpe = signal (SIGFPE, SIG_IGN);
init_pointers ();
+ saved_state.asregs.exception = 0;
memory = saved_state.asregs.memory;
+ mem_end = memory + saved_state.asregs.msize;
- if (step)
- {
- saved_state.asregs.exception = SIGTRAP;
- }
- else
- {
- saved_state.asregs.exception = 0;
- }
+ loop = get_loop_bounds (RS, RE, memory, mem_end, maskw, endianw);
+ insn_ptr = PT2H (saved_state.asregs.pc);
+ CHECK_INSN_PTR (insn_ptr);
- pc = saved_state.asregs.pc;
- PR = saved_state.asregs.pr;
+#ifndef PR
+ PR = saved_state.asregs.sregs.named.pr;
+#endif
/*T = GET_SR () & SR_MASK_T;*/
prevlock = saved_state.asregs.prevlock;
thislock = saved_state.asregs.thislock;
@@ -1242,11 +1593,26 @@ sim_resume (sd, step, siggnal)
if (doprofile == 0)
doprofile = ~0;
- do
+ loop:
+ if (step && insn_ptr < saved_state.asregs.insn_end)
+ {
+ if (saved_state.asregs.exception)
+ /* This can happen if we've already been single-stepping and
+ encountered a loop end. */
+ saved_state.asregs.insn_end = insn_ptr;
+ else
+ {
+ saved_state.asregs.exception = SIGTRAP;
+ saved_state.asregs.insn_end = insn_ptr + 2;
+ }
+ }
+
+ while (insn_ptr < saved_state.asregs.insn_end)
{
- register unsigned int iword = RUWAT (pc);
+ register unsigned int iword = RIAT (insn_ptr);
register unsigned int ult;
- register unsigned int nia = pc + 2;
+ register unsigned char *nip = insn_ptr + 2;
+
#ifndef ACE_FAST
insts++;
#endif
@@ -1255,7 +1621,7 @@ sim_resume (sd, step, siggnal)
#include "code.c"
- pc = nia;
+ insn_ptr = nip;
if (--pollcount < 0)
{
@@ -1279,7 +1645,7 @@ sim_resume (sd, step, siggnal)
cycles -= doprofile;
if (saved_state.asregs.profile_hist)
{
- int n = pc >> PROFILE_SHIFT;
+ int n = PH2T (insn_ptr) >> PROFILE_SHIFT;
if (n < nsamples)
{
int i = saved_state.asregs.profile_hist[n];
@@ -1291,23 +1657,37 @@ sim_resume (sd, step, siggnal)
}
#endif
}
- while (!saved_state.asregs.exception);
+ if (saved_state.asregs.insn_end == loop.end)
+ {
+ saved_state.asregs.cregs.named.sr += SR_RC_INCREMENT;
+ if (SR_RC)
+ insn_ptr = loop.start;
+ else
+ {
+ saved_state.asregs.insn_end = mem_end;
+ loop.end = PT2H (0);
+ }
+ goto loop;
+ }
if (saved_state.asregs.exception == SIGILL
|| saved_state.asregs.exception == SIGBUS)
{
- pc -= 2;
+ insn_ptr -= 2;
}
+ /* Check for SIGBUS due to insn fetch. */
+ else if (! saved_state.asregs.exception)
+ saved_state.asregs.exception == SIGBUS;
saved_state.asregs.ticks += get_now () - tick_start;
saved_state.asregs.cycles += cycles;
saved_state.asregs.stalls += stalls;
saved_state.asregs.memstalls += memstalls;
saved_state.asregs.insts += insts;
- saved_state.asregs.pc = pc;
- /* restore the T and other cached SR bits */
- SET_SR (GET_SR());
- saved_state.asregs.pr = PR;
+ saved_state.asregs.pc = PH2T (insn_ptr);
+#ifndef PR
+ saved_state.asregs.sregs.named.pr = PR;
+#endif
saved_state.asregs.prevlock = prevlock;
saved_state.asregs.thislock = thislock;
@@ -1334,7 +1714,7 @@ sim_write (sd, addr, buffer, size)
for (i = 0; i < size; i++)
{
- saved_state.asregs.memory[MMASKB & (addr + i)] = buffer[i];
+ saved_state.asregs.memory[(MMASKB & (addr + i)) ^ endianb] = buffer[i];
}
return size;
}
@@ -1352,13 +1732,11 @@ sim_read (sd, addr, buffer, size)
for (i = 0; i < size; i++)
{
- buffer[i] = saved_state.asregs.memory[MMASKB & (addr + i)];
+ buffer[i] = saved_state.asregs.memory[(MMASKB & (addr + i)) ^ endianb];
}
return size;
}
-/* We have to add one to RN as an index into asints because of the padding
- added at the start of asregs. */
int
sim_store_register (sd, rn, memory, length)
SIM_DESC sd;
@@ -1366,14 +1744,108 @@ sim_store_register (sd, rn, memory, length)
unsigned char *memory;
int length;
{
- int little_endian;
+ unsigned val;
+
init_pointers ();
- little_endian = target_little_endian;
- if (&saved_state.asints[rn+1]
- == &saved_state.asregs.fpscr)
- set_fpscr1 (RLAT(0));
- else
- saved_state.asints[rn+1] = RLAT(0);
+ val = swap (* (int *)memory);
+ switch (rn)
+ {
+ case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
+ case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15:
+ saved_state.asregs.regs[rn] = val;
+ break;
+ case 16:
+ saved_state.asregs.pc = val;
+ break;
+ case 17:
+ PR = val;
+ break;
+ case 18:
+ GBR = val;
+ break;
+ case 19:
+ VBR = val;
+ break;
+ case 20:
+ MACH = val;
+ break;
+ case 21:
+ MACL = val;
+ break;
+ case 22:
+ SET_SR (val);
+ break;
+ case 23:
+ FPUL = val;
+ break;
+ case 24:
+ SET_FPSCR (val);
+ break;
+ case 25:
+ if (target_dsp)
+ A0G = val;
+ else case 26:
+ if (target_dsp)
+ A0 = val;
+ else case 27:
+ if (target_dsp)
+ A1G = val;
+ else case 28:
+ if (target_dsp)
+ A1 = val;
+ else case 29:
+ if (target_dsp)
+ M0 = val;
+ else case 30:
+ if (target_dsp)
+ M1 = val;
+ else case 31:
+ if (target_dsp)
+ X0 = val;
+ else case 32:
+ if (target_dsp)
+ X1 = val;
+ else case 33:
+ if (target_dsp)
+ Y0 = val;
+ else case 34:
+ if (target_dsp)
+ Y1 = val;
+ else case 40:
+ if (target_dsp)
+ SET_MOD (val);
+ else case 35: case 36: case 37: case 38: case 39:
+ SET_FI (rn - 25, val);
+ break;
+ case 41:
+ SSR = val;
+ break;
+ case 42:
+ SPC = val;
+ break;
+ /* The rn_bank idiosyncracies are not due to hardware differences, but to
+ a weird aliasing naming scheme for sh3 / sh3e / sh4. */
+ case 43:
+ if (target_dsp)
+ RS = val;
+ else case 44:
+ if (target_dsp)
+ RE = val;
+ else case 45: case 46: case 47: case 48: case 49: case 50:
+ if (SR_MD && SR_RB)
+ Rn_BANK (rn - 43) = val;
+ else
+ saved_state.asregs.regs[rn - 43] = val;
+ break;
+ case 51: case 52: case 53: case 54: case 55: case 56: case 57: case 58:
+ if (target_dsp || ! SR_MD || ! SR_RB)
+ SET_Rn_BANK (rn - 51, val);
+ else
+ saved_state.asregs.regs[rn - 51] = val;
+ break;
+ default:
+ return 0;
+ }
return -1;
}
@@ -1384,10 +1856,106 @@ sim_fetch_register (sd, rn, memory, length)
unsigned char *memory;
int length;
{
- int little_endian;
+ int val;
+
init_pointers ();
- little_endian = target_little_endian;
- WLAT (0, saved_state.asints[rn+1]);
+ switch (rn)
+ {
+ case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
+ case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15:
+ val = saved_state.asregs.regs[rn];
+ break;
+ case 16:
+ val = saved_state.asregs.pc;
+ break;
+ case 17:
+ val = PR;
+ break;
+ case 18:
+ val = GBR;
+ break;
+ case 19:
+ val = VBR;
+ break;
+ case 20:
+ val = MACH;
+ break;
+ case 21:
+ val = MACL;
+ break;
+ case 22:
+ val = GET_SR ();
+ break;
+ case 23:
+ val = FPUL;
+ break;
+ case 24:
+ val = GET_FPSCR ();
+ break;
+ case 25:
+ val = target_dsp ? SEXT (A0G) : FI (0);
+ break;
+ case 26:
+ val = target_dsp ? A0 : FI (1);
+ break;
+ case 27:
+ val = target_dsp ? SEXT (A1G) : FI (2);
+ break;
+ case 28:
+ val = target_dsp ? A1 : FI (3);
+ break;
+ case 29:
+ val = target_dsp ? M0 : FI (4);
+ break;
+ case 30:
+ val = target_dsp ? M1 : FI (5);
+ break;
+ case 31:
+ val = target_dsp ? X0 : FI (6);
+ break;
+ case 32:
+ val = target_dsp ? X1 : FI (7);
+ break;
+ case 33:
+ val = target_dsp ? Y0 : FI (8);
+ break;
+ case 34:
+ val = target_dsp ? Y1 : FI (9);
+ break;
+ case 35: case 36: case 37: case 38: case 39:
+ val = FI (rn - 25);
+ break;
+ case 40:
+ val = target_dsp ? MOD : FI (15);
+ break;
+ case 41:
+ val = SSR;
+ break;
+ case 42:
+ val = SPC;
+ break;
+ /* The rn_bank idiosyncracies are not due to hardware differences, but to
+ a weird aliasing naming scheme for sh3 / sh3e / sh4. */
+ case 43:
+ if (target_dsp)
+ val = RS;
+ else case 44:
+ if (target_dsp)
+ val = RE;
+ else case 45: case 46: case 47: case 48: case 49: case 50:
+ val = (SR_MD && SR_RB
+ ? Rn_BANK (rn - 43)
+ : saved_state.asregs.regs[rn - 43]);
+ break;
+ case 51: case 52: case 53: case 54: case 55: case 56: case 57: case 58:
+ val = (target_dsp || ! SR_MD || ! SR_RB
+ ? Rn_BANK (rn - 51)
+ : saved_state.asregs.regs[rn - 51]);
+ break;
+ default:
+ return 0;
+ }
+ * (int *) memory = swap (val);
return -1;
}
@@ -1477,6 +2045,14 @@ sim_open (kind, cb, abfd, argv)
{
char **p;
int endian_set = 0;
+ int i;
+ union
+ {
+ int i;
+ short s[2];
+ char c[4];
+ }
+ mem_word;
sim_kind = kind;
myname = argv[0];
@@ -1504,6 +2080,17 @@ sim_open (kind, cb, abfd, argv)
if (abfd != NULL && ! endian_set)
target_little_endian = ! bfd_big_endian (abfd);
+ if (abfd)
+ init_dsp (abfd);
+
+ for (i = 4; (i -= 2) >= 0; )
+ mem_word.s[i >> 1] = i;
+ global_endianw = mem_word.i >> (target_little_endian ? 0 : 16) & 0xffff;
+
+ for (i = 4; --i >= 0; )
+ mem_word.c[i] = i;
+ endianb = mem_word.i >> (target_little_endian ? 0 : 24) & 0xff;
+
/* fudge our descriptor for now */
return (SIM_DESC) 1;
}
diff --git a/sim/testsuite/ChangeLog b/sim/testsuite/ChangeLog
index 5edc5927a26..bdb90786d0c 100644
--- a/sim/testsuite/ChangeLog
+++ b/sim/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
1999-09-15 Doug Evans <devans@casey.cygnus.com>
* sim/arm/b.cgs: New testcase.
diff --git a/sim/testsuite/configure b/sim/testsuite/configure
index 6b3f46e4e8f..1b95177a00a 100755
--- a/sim/testsuite/configure
+++ b/sim/testsuite/configure
@@ -28,6 +28,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -142,6 +143,7 @@ Configuration:
--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
@@ -312,6 +314,11 @@ EOF
-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=*)
@@ -477,12 +484,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -571,7 +582,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:575: checking host system type" >&5
+echo "configure:586: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -592,7 +603,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:596: checking target system type" >&5
+echo "configure:607: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -610,7 +621,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:614: checking build system type" >&5
+echo "configure:625: checking build system type" >&5
build_alias=$build
case "$build_alias" in
diff --git a/sim/testsuite/d10v-elf/ChangeLog b/sim/testsuite/d10v-elf/ChangeLog
index a7cf211ce36..11d43190f10 100644
--- a/sim/testsuite/d10v-elf/ChangeLog
+++ b/sim/testsuite/d10v-elf/ChangeLog
@@ -1,3 +1,8 @@
+Tue Apr 18 16:32:07 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * t-rie-xx.s (test_rie_xx): New test.
+ * Makefile.in (TESTS): Update.
+
Tue Feb 22 17:36:34 2000 Andrew Cagney <cagney@b1.cygnus.com>
* Makefile.in: Force d10v into operating mode.
diff --git a/sim/testsuite/d10v-elf/Makefile.in b/sim/testsuite/d10v-elf/Makefile.in
index 40e96464eb5..0626ee8781c 100644
--- a/sim/testsuite/d10v-elf/Makefile.in
+++ b/sim/testsuite/d10v-elf/Makefile.in
@@ -83,6 +83,7 @@ TESTS = \
t-ae-st2w-ip.ok \
t-ae-st2w-is.ok \
t-mod-ld-pre.ok \
+ t-rie-xx.ok \
#
AS_FOR_TARGET = `\
diff --git a/sim/testsuite/d10v-elf/t-rie-xx.s b/sim/testsuite/d10v-elf/t-rie-xx.s
new file mode 100644
index 00000000000..2a6fcbdd6fc
--- /dev/null
+++ b/sim/testsuite/d10v-elf/t-rie-xx.s
@@ -0,0 +1,12 @@
+.include "t-macros.i"
+
+ start
+
+ PSW_BITS = 0
+ point_dmap_at_imem
+ check_interrupt (VEC_RIE&DMAP_MASK)+DMAP_BASE PSW_BITS test_rie_xx
+
+test_rie_xx:
+ .short 0xe120, 0x0000 ;; Example of RIE code
+ nop
+ exit47
diff --git a/sim/v850/ChangeLog b/sim/v850/ChangeLog
index 8a826f5d027..fcc16b09de8 100644
--- a/sim/v850/ChangeLog
+++ b/sim/v850/ChangeLog
@@ -1,3 +1,17 @@
+2000-05-30 Nick Clifton <nickc@cygnus.com>
+
+ * v850.igen: Remove illegal instruction pattern, since it is the
+ same as the breakpoint pattern.
+
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
+2000-04-14 Gary Thomas <gthomas@redhat.com>
+
+ * v850.igen: Define 'br *' as illegal since this is the only
+ way to provide a breakpoint on some v850 family processors.
+
2000-03-24 Frank Ch. Eigler <fche@redhat.com>
* v850.igen (ilgop): New insn pattern for four-byte breakpoints.
diff --git a/sim/v850/configure b/sim/v850/configure
index 8eafaf1a501..900d46be86b 100755
--- a/sim/v850/configure
+++ b/sim/v850/configure
@@ -181,6 +181,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -295,6 +296,7 @@ Configuration:
--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
@@ -465,6 +467,11 @@ EOF
-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=*)
@@ -630,12 +637,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -676,7 +687,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:680: checking how to run the C preprocessor" >&5
+echo "configure:691: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -691,13 +702,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 695 "configure"
+#line 706 "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:701: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:712: \"$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
:
@@ -708,13 +719,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 712 "configure"
+#line 723 "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:718: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:729: \"$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
:
@@ -725,13 +736,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 729 "configure"
+#line 740 "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:735: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:746: \"$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
:
@@ -756,7 +767,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:760: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:771: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -783,7 +794,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:787: checking for POSIXized ISC" >&5
+echo "configure:798: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -804,12 +815,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:808: checking for ANSI C header files" >&5
+echo "configure:819: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 813 "configure"
+#line 824 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -817,7 +828,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:821: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:832: \"$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*
@@ -834,7 +845,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 838 "configure"
+#line 849 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -852,7 +863,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 856 "configure"
+#line 867 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -873,7 +884,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 877 "configure"
+#line 888 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -884,7 +895,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:899: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -908,12 +919,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:912: checking for working const" >&5
+echo "configure:923: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 917 "configure"
+#line 928 "configure"
#include "confdefs.h"
int main() {
@@ -962,7 +973,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:966: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -983,21 +994,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:987: checking for inline" >&5
+echo "configure:998: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 994 "configure"
+#line 1005 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:1001: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1012: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1023,12 +1034,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1027: checking for off_t" >&5
+echo "configure:1038: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1032 "configure"
+#line 1043 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1056,12 +1067,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1060: checking for size_t" >&5
+echo "configure:1071: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1065 "configure"
+#line 1076 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1091,19 +1102,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1095: checking for working alloca.h" >&5
+echo "configure:1106: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1100 "configure"
+#line 1111 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1124,12 +1135,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1128: checking for alloca" >&5
+echo "configure:1139: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1133 "configure"
+#line 1144 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1157,7 +1168,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1189,12 +1200,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1193: checking whether alloca needs Cray hooks" >&5
+echo "configure:1204: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1198 "configure"
+#line 1209 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1219,12 +1230,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1223: checking for $ac_func" >&5
+echo "configure:1234: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1228 "configure"
+#line 1239 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1247,7 +1258,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1262: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1274,7 +1285,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1278: checking stack direction for C alloca" >&5
+echo "configure:1289: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1282,7 +1293,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1286 "configure"
+#line 1297 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1301,7 +1312,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1326,17 +1337,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1330: checking for $ac_hdr" >&5
+echo "configure:1341: 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 1335 "configure"
+#line 1346 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1340: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1351: \"$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*
@@ -1365,12 +1376,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1369: checking for $ac_func" >&5
+echo "configure:1380: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1374 "configure"
+#line 1385 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1393,7 +1404,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1418,7 +1429,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1422: checking for working mmap" >&5
+echo "configure:1433: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1426,7 +1437,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1430 "configure"
+#line 1441 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1566,7 +1577,7 @@ main()
}
EOF
-if { (eval echo configure:1570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1589,12 +1600,12 @@ EOF
fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1593: checking for Cygwin environment" >&5
+echo "configure:1604: 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 1598 "configure"
+#line 1609 "configure"
#include "confdefs.h"
int main() {
@@ -1605,7 +1616,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:1609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1620: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -1622,19 +1633,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1626: checking for mingw32 environment" >&5
+echo "configure:1637: 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 1631 "configure"
+#line 1642 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:1638: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1649: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1701,7 +1712,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1705: checking host system type" >&5
+echo "configure:1716: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1722,7 +1733,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1726: checking target system type" >&5
+echo "configure:1737: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1740,7 +1751,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1744: checking build system type" >&5
+echo "configure:1755: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1784,7 +1795,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1788: checking for $ac_word" >&5
+echo "configure:1799: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1814,7 +1825,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1818: checking for $ac_word" >&5
+echo "configure:1829: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1865,7 +1876,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1869: checking for $ac_word" >&5
+echo "configure:1880: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1897,7 +1908,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1901: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1912: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1908,12 +1919,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1912 "configure"
+#line 1923 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1939,12 +1950,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1943: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1954: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1948: checking whether we are using GNU C" >&5
+echo "configure:1959: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1953,7 +1964,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1957: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1968: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1972,7 +1983,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1976: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1987: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2015,7 +2026,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2019: checking for a BSD compatible install" >&5
+echo "configure:2030: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2083,7 +2094,7 @@ AR=${AR-ar}
# 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:2087: checking for $ac_word" >&5
+echo "configure:2098: 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
@@ -2118,17 +2129,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2122: checking for $ac_hdr" >&5
+echo "configure:2133: 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 2127 "configure"
+#line 2138 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2132: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2143: \"$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*
@@ -2158,12 +2169,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2162: checking for $ac_func" >&5
+echo "configure:2173: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2167 "configure"
+#line 2178 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2186,7 +2197,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2215,12 +2226,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2219: checking for $ac_func" >&5
+echo "configure:2230: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2224 "configure"
+#line 2235 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2243,7 +2254,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2277,19 +2288,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2281: checking for LC_MESSAGES" >&5
+echo "configure:2292: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2286 "configure"
+#line 2297 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2310,7 +2321,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2314: checking whether NLS is requested" >&5
+echo "configure:2325: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2330,7 +2341,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2334: checking whether included gettext is requested" >&5
+echo "configure:2345: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2349,17 +2360,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2353: checking for libintl.h" >&5
+echo "configure:2364: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2358 "configure"
+#line 2369 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2363: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2374: \"$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*
@@ -2376,19 +2387,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2380: checking for gettext in libc" >&5
+echo "configure:2391: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2385 "configure"
+#line 2396 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2404,7 +2415,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2408: checking for bindtextdomain in -lintl" >&5
+echo "configure:2419: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2412,7 +2423,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2416 "configure"
+#line 2427 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2423,7 +2434,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2439,19 +2450,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2443: checking for gettext in libintl" >&5
+echo "configure:2454: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2448 "configure"
+#line 2459 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2479,7 +2490,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2483: checking for $ac_word" >&5
+echo "configure:2494: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2513,12 +2524,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2517: checking for $ac_func" >&5
+echo "configure:2528: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2522 "configure"
+#line 2533 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2541,7 +2552,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2545: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2568,7 +2579,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2572: checking for $ac_word" >&5
+echo "configure:2583: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2604,7 +2615,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2608: checking for $ac_word" >&5
+echo "configure:2619: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2636,7 +2647,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2640 "configure"
+#line 2651 "configure"
#include "confdefs.h"
int main() {
@@ -2644,7 +2655,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2676,7 +2687,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2680: checking for $ac_word" >&5
+echo "configure:2691: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2710,7 +2721,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2714: checking for $ac_word" >&5
+echo "configure:2725: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2746,7 +2757,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2750: checking for $ac_word" >&5
+echo "configure:2761: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2836,7 +2847,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2840: checking for catalogs to be installed" >&5
+echo "configure:2851: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2864,17 +2875,17 @@ echo "configure:2840: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2868: checking for linux/version.h" >&5
+echo "configure:2879: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2873 "configure"
+#line 2884 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2878: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2889: \"$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*
@@ -2943,17 +2954,17 @@ for ac_hdr in stdlib.h string.h strings.h unistd.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2947: checking for $ac_hdr" >&5
+echo "configure:2958: 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 2952 "configure"
+#line 2963 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2957: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2968: \"$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*
@@ -2983,17 +2994,17 @@ for ac_hdr in sys/time.h sys/resource.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2987: checking for $ac_hdr" >&5
+echo "configure:2998: 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 2992 "configure"
+#line 3003 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2997: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3008: \"$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*
@@ -3023,17 +3034,17 @@ for ac_hdr in fcntl.h fpu_control.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3027: checking for $ac_hdr" >&5
+echo "configure:3038: 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 3032 "configure"
+#line 3043 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3037: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3048: \"$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*
@@ -3063,17 +3074,17 @@ for ac_hdr in dlfcn.h errno.h sys/stat.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3067: checking for $ac_hdr" >&5
+echo "configure:3078: 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 3072 "configure"
+#line 3083 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3077: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3088: \"$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*
@@ -3102,12 +3113,12 @@ done
for ac_func in getrusage time sigaction __setfpucw
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3106: checking for $ac_func" >&5
+echo "configure:3117: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3111 "configure"
+#line 3122 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3130,7 +3141,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3157,7 +3168,7 @@ done
# Check for socket libraries
echo $ac_n "checking for bind in -lsocket""... $ac_c" 1>&6
-echo "configure:3161: checking for bind in -lsocket" >&5
+echo "configure:3172: checking for bind in -lsocket" >&5
ac_lib_var=`echo socket'_'bind | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3165,7 +3176,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3169 "configure"
+#line 3180 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3176,7 +3187,7 @@ int main() {
bind()
; return 0; }
EOF
-if { (eval echo configure:3180: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3204,7 +3215,7 @@ else
fi
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3208: checking for gethostbyname in -lnsl" >&5
+echo "configure:3219: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3212,7 +3223,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3216 "configure"
+#line 3227 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3223,7 +3234,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3227: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3393,18 +3404,18 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3403: checking return type of signal handlers" >&5
+echo "configure:3414: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3408 "configure"
+#line 3419 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3421,7 +3432,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3425: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3436: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3443,7 +3454,7 @@ EOF
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3447: checking for executable suffix" >&5
+echo "configure:3458: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3453,10 +3464,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:3468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3604,14 +3615,14 @@ else
if test "x$cross_compiling" = "xno"; then
echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:3608: checking whether byte ordering is bigendian" >&5
+echo "configure:3619: checking whether byte ordering is bigendian" >&5
if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_bigendian=unknown
# See if sys/param.h defines the BYTE_ORDER macro.
cat > conftest.$ac_ext <<EOF
-#line 3615 "configure"
+#line 3626 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
@@ -3622,11 +3633,11 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:3626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
# It does; now see whether it defined to BIG_ENDIAN or not.
cat > conftest.$ac_ext <<EOF
-#line 3630 "configure"
+#line 3641 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
@@ -3637,7 +3648,7 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:3641: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3652: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_bigendian=yes
else
@@ -3657,7 +3668,7 @@ if test "$cross_compiling" = yes; then
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 3661 "configure"
+#line 3672 "configure"
#include "confdefs.h"
main () {
/* Are we little or big endian? From Harbison&Steele. */
@@ -3670,7 +3681,7 @@ main () {
exit (u.c[sizeof (long) - 1] == 1);
}
EOF
-if { (eval echo configure:3674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_bigendian=no
else
@@ -3818,12 +3829,12 @@ fi
for ac_func in time chmod utime fork execve execv chown
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3822: checking for $ac_func" >&5
+echo "configure:3833: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3827 "configure"
+#line 3838 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3846,7 +3857,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3850: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3874,17 +3885,17 @@ for ac_hdr in unistd.h stdlib.h string.h strings.h utime.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3878: checking for $ac_hdr" >&5
+echo "configure:3889: 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 3883 "configure"
+#line 3894 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3888: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3899: \"$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*
diff --git a/sim/v850/v850.igen b/sim/v850/v850.igen
index eace5a1b132..34fa43f2648 100644
--- a/sim/v850/v850.igen
+++ b/sim/v850/v850.igen
@@ -144,10 +144,16 @@ rrrrr,110110,RRRRR + iiiiiiiiiiiiiiii:VI:::andi
ddddd,1011,ddd,cccc:III:::Bcond
"b%s<cccc> <disp9>"
{
- int cond = condition_met (cccc);
- if (cond)
- nia = cia + disp9;
- TRACE_BRANCH1 (cond);
+ int cond;
+ if ((ddddd == 0x00) && (ddd == 0x00) && (cccc == 0x05)) {
+ // Special case - treat "br *" like illegal instruction
+ sim_engine_halt (SD, CPU, NULL, cia, sim_stopped, SIM_SIGTRAP);
+ } else {
+ cond = condition_met (cccc);
+ if (cond)
+ nia = cia + disp9;
+ TRACE_BRANCH1 (cond);
+ }
}
@@ -1158,8 +1164,6 @@ rrrrr,110101,RRRRR + iiiiiiiiiiiiiiii:VI:::xori
sim_engine_halt (SD, CPU, NULL, cia, sim_stopped, SIM_SIGTRAP);
}
-
-
// DIVHN
rrrrr,111111,RRRRR + wwwww,01010,iiii,00:XI:::divhn
*v850ea
diff --git a/sim/w65/ChangeLog b/sim/w65/ChangeLog
index de31d5ee1c3..088f8b24867 100644
--- a/sim/w65/ChangeLog
+++ b/sim/w65/ChangeLog
@@ -1,3 +1,7 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
Thu Sep 2 18:15:53 1999 Andrew Cagney <cagney@b1.cygnus.com>
* configure: Regenerated to track ../common/aclocal.m4 changes.
diff --git a/sim/w65/configure b/sim/w65/configure
index 3def66bc8c6..8b2b9ecbaa7 100755
--- a/sim/w65/configure
+++ b/sim/w65/configure
@@ -155,6 +155,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -269,6 +270,7 @@ Configuration:
--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
@@ -439,6 +441,11 @@ EOF
-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=*)
@@ -604,12 +611,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -698,7 +709,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:702: checking host system type" >&5
+echo "configure:713: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -719,7 +730,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:723: checking target system type" >&5
+echo "configure:734: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -737,7 +748,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:741: checking build system type" >&5
+echo "configure:752: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -781,7 +792,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:785: checking for $ac_word" >&5
+echo "configure:796: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -811,7 +822,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:815: checking for $ac_word" >&5
+echo "configure:826: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -862,7 +873,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:866: checking for $ac_word" >&5
+echo "configure:877: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -894,7 +905,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:898: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:909: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -905,12 +916,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 909 "configure"
+#line 920 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:914: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -936,12 +947,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:940: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:951: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:945: checking whether we are using GNU C" >&5
+echo "configure:956: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -950,7 +961,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:954: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:965: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -969,7 +980,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:973: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:984: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1012,7 +1023,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1016: checking for a BSD compatible install" >&5
+echo "configure:1027: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1074,7 +1085,7 @@ AR=${AR-ar}
# 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:1078: checking for $ac_word" >&5
+echo "configure:1089: 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
@@ -1112,7 +1123,7 @@ fi
ALL_LINGUAS=
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1116: checking how to run the C preprocessor" >&5
+echo "configure:1127: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -1127,13 +1138,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 1131 "configure"
+#line 1142 "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:1137: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1148: \"$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
:
@@ -1144,13 +1155,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 1148 "configure"
+#line 1159 "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:1154: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1165: \"$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
:
@@ -1161,13 +1172,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 1165 "configure"
+#line 1176 "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:1171: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1182: \"$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
:
@@ -1192,7 +1203,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:1196: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:1207: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1219,7 +1230,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1223: checking for POSIXized ISC" >&5
+echo "configure:1234: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -1240,12 +1251,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1244: checking for ANSI C header files" >&5
+echo "configure:1255: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1249 "configure"
+#line 1260 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -1253,7 +1264,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1257: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1268: \"$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*
@@ -1270,7 +1281,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 1274 "configure"
+#line 1285 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -1288,7 +1299,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 1292 "configure"
+#line 1303 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -1309,7 +1320,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 1313 "configure"
+#line 1324 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1320,7 +1331,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:1324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -1344,12 +1355,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1348: checking for working const" >&5
+echo "configure:1359: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1353 "configure"
+#line 1364 "configure"
#include "confdefs.h"
int main() {
@@ -1398,7 +1409,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:1402: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -1419,21 +1430,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1423: checking for inline" >&5
+echo "configure:1434: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 1430 "configure"
+#line 1441 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:1437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1459,12 +1470,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1463: checking for off_t" >&5
+echo "configure:1474: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1468 "configure"
+#line 1479 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1492,12 +1503,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1496: checking for size_t" >&5
+echo "configure:1507: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1501 "configure"
+#line 1512 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1527,19 +1538,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1531: checking for working alloca.h" >&5
+echo "configure:1542: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1536 "configure"
+#line 1547 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1554: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1560,12 +1571,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1564: checking for alloca" >&5
+echo "configure:1575: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1569 "configure"
+#line 1580 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1593,7 +1604,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1597: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1625,12 +1636,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1629: checking whether alloca needs Cray hooks" >&5
+echo "configure:1640: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1634 "configure"
+#line 1645 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1655,12 +1666,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1659: checking for $ac_func" >&5
+echo "configure:1670: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1664 "configure"
+#line 1675 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1683,7 +1694,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1710,7 +1721,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1714: checking stack direction for C alloca" >&5
+echo "configure:1725: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1718,7 +1729,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1722 "configure"
+#line 1733 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1737,7 +1748,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1752: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1762,17 +1773,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1766: checking for $ac_hdr" >&5
+echo "configure:1777: 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 1771 "configure"
+#line 1782 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1776: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1787: \"$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*
@@ -1801,12 +1812,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1805: checking for $ac_func" >&5
+echo "configure:1816: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1810 "configure"
+#line 1821 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1829,7 +1840,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1854,7 +1865,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1858: checking for working mmap" >&5
+echo "configure:1869: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1862,7 +1873,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1866 "configure"
+#line 1877 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -2002,7 +2013,7 @@ main()
}
EOF
-if { (eval echo configure:2006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -2030,17 +2041,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2034: checking for $ac_hdr" >&5
+echo "configure:2045: 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 2039 "configure"
+#line 2050 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2044: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2055: \"$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*
@@ -2070,12 +2081,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2074: checking for $ac_func" >&5
+echo "configure:2085: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2079 "configure"
+#line 2090 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2098,7 +2109,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2127,12 +2138,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2131: checking for $ac_func" >&5
+echo "configure:2142: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2136 "configure"
+#line 2147 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2155,7 +2166,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2189,19 +2200,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2193: checking for LC_MESSAGES" >&5
+echo "configure:2204: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2198 "configure"
+#line 2209 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2222,7 +2233,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2226: checking whether NLS is requested" >&5
+echo "configure:2237: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2242,7 +2253,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2246: checking whether included gettext is requested" >&5
+echo "configure:2257: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2261,17 +2272,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2265: checking for libintl.h" >&5
+echo "configure:2276: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2270 "configure"
+#line 2281 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2275: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2286: \"$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*
@@ -2288,19 +2299,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2292: checking for gettext in libc" >&5
+echo "configure:2303: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2297 "configure"
+#line 2308 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2316,7 +2327,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2320: checking for bindtextdomain in -lintl" >&5
+echo "configure:2331: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2324,7 +2335,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2328 "configure"
+#line 2339 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2335,7 +2346,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2351,19 +2362,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2355: checking for gettext in libintl" >&5
+echo "configure:2366: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2360 "configure"
+#line 2371 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2391,7 +2402,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2395: checking for $ac_word" >&5
+echo "configure:2406: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2425,12 +2436,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2429: checking for $ac_func" >&5
+echo "configure:2440: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2434 "configure"
+#line 2445 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2453,7 +2464,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2480,7 +2491,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2484: checking for $ac_word" >&5
+echo "configure:2495: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2516,7 +2527,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2520: checking for $ac_word" >&5
+echo "configure:2531: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2548,7 +2559,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2552 "configure"
+#line 2563 "configure"
#include "confdefs.h"
int main() {
@@ -2556,7 +2567,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2588,7 +2599,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2592: checking for $ac_word" >&5
+echo "configure:2603: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2622,7 +2633,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2626: checking for $ac_word" >&5
+echo "configure:2637: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2658,7 +2669,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2662: checking for $ac_word" >&5
+echo "configure:2673: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2748,7 +2759,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2752: checking for catalogs to be installed" >&5
+echo "configure:2763: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2776,17 +2787,17 @@ echo "configure:2752: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2780: checking for linux/version.h" >&5
+echo "configure:2791: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2785 "configure"
+#line 2796 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2790: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2801: \"$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*
@@ -2852,17 +2863,17 @@ for ac_hdr in stdlib.h time.h unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2856: checking for $ac_hdr" >&5
+echo "configure:2867: 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 2861 "configure"
+#line 2872 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2877: \"$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*
@@ -2890,19 +2901,19 @@ done
echo $ac_n "checking whether printf must be declared""... $ac_c" 1>&6
-echo "configure:2894: checking whether printf must be declared" >&5
+echo "configure:2905: checking whether printf must be declared" >&5
if eval "test \"`echo '$''{'sim_cv_decl_needed_printf'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2899 "configure"
+#line 2910 "configure"
#include "confdefs.h"
#include <stdio.h>
int main() {
int (*pfn) = (int (*)) printf
; return 0; }
EOF
-if { (eval echo configure:2906: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2917: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
sim_cv_decl_needed_printf=no
else
diff --git a/sim/z8k/ChangeLog b/sim/z8k/ChangeLog
index 3581a8cee27..64468a129be 100644
--- a/sim/z8k/ChangeLog
+++ b/sim/z8k/ChangeLog
@@ -1,3 +1,7 @@
+Tue May 23 21:39:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure: Regenerated to track ../common/aclocal.m4 changes.
+
Thu Sep 2 18:15:53 1999 Andrew Cagney <cagney@b1.cygnus.com>
* configure: Regenerated to track ../common/aclocal.m4 changes.
diff --git a/sim/z8k/configure b/sim/z8k/configure
index e40ff6e71be..c21edf82008 100755
--- a/sim/z8k/configure
+++ b/sim/z8k/configure
@@ -169,6 +169,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -283,6 +284,7 @@ Configuration:
--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
@@ -453,6 +455,11 @@ EOF
-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=*)
@@ -618,12 +625,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
fi
+else
+ CONFIG_SITE="$sitefile"
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
@@ -664,7 +675,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:668: checking how to run the C preprocessor" >&5
+echo "configure:679: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -679,13 +690,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 683 "configure"
+#line 694 "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:689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:700: \"$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
:
@@ -696,13 +707,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 700 "configure"
+#line 711 "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:706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:717: \"$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
:
@@ -713,13 +724,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 717 "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:723: \"$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
:
@@ -744,7 +755,7 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:748: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:759: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -771,7 +782,7 @@ else
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:775: checking for POSIXized ISC" >&5
+echo "configure:786: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -792,12 +803,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:796: checking for ANSI C header files" >&5
+echo "configure:807: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 801 "configure"
+#line 812 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -805,7 +816,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:820: \"$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*
@@ -822,7 +833,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 826 "configure"
+#line 837 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -840,7 +851,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 844 "configure"
+#line 855 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -861,7 +872,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 865 "configure"
+#line 876 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -872,7 +883,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -896,12 +907,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:900: checking for working const" >&5
+echo "configure:911: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 905 "configure"
+#line 916 "configure"
#include "confdefs.h"
int main() {
@@ -950,7 +961,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -971,21 +982,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:975: checking for inline" >&5
+echo "configure:986: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 982 "configure"
+#line 993 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:989: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1011,12 +1022,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1015: checking for off_t" >&5
+echo "configure:1026: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1020 "configure"
+#line 1031 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1044,12 +1055,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1048: checking for size_t" >&5
+echo "configure:1059: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1053 "configure"
+#line 1064 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1079,19 +1090,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1083: checking for working alloca.h" >&5
+echo "configure:1094: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1088 "configure"
+#line 1099 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1112,12 +1123,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1116: checking for alloca" >&5
+echo "configure:1127: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1121 "configure"
+#line 1132 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1145,7 +1156,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1177,12 +1188,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1181: checking whether alloca needs Cray hooks" >&5
+echo "configure:1192: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1186 "configure"
+#line 1197 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1207,12 +1218,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1211: checking for $ac_func" >&5
+echo "configure:1222: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1216 "configure"
+#line 1227 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1235,7 +1246,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1262,7 +1273,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1266: checking stack direction for C alloca" >&5
+echo "configure:1277: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1270,7 +1281,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1274 "configure"
+#line 1285 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1289,7 +1300,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1314,17 +1325,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1318: checking for $ac_hdr" >&5
+echo "configure:1329: 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 1323 "configure"
+#line 1334 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1339: \"$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*
@@ -1353,12 +1364,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1357: checking for $ac_func" >&5
+echo "configure:1368: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1362 "configure"
+#line 1373 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1381,7 +1392,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1406,7 +1417,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1410: checking for working mmap" >&5
+echo "configure:1421: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1414,7 +1425,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1418 "configure"
+#line 1429 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -1554,7 +1565,7 @@ main()
}
EOF
-if { (eval echo configure:1558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -1577,12 +1588,12 @@ EOF
fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1581: checking for Cygwin environment" >&5
+echo "configure:1592: 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 1586 "configure"
+#line 1597 "configure"
#include "confdefs.h"
int main() {
@@ -1593,7 +1604,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:1597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -1610,19 +1621,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1614: checking for mingw32 environment" >&5
+echo "configure:1625: 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 1619 "configure"
+#line 1630 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:1626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1689,7 +1700,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1693: checking host system type" >&5
+echo "configure:1704: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1710,7 +1721,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1714: checking target system type" >&5
+echo "configure:1725: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1728,7 +1739,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1732: checking build system type" >&5
+echo "configure:1743: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1772,7 +1783,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1776: checking for $ac_word" >&5
+echo "configure:1787: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1802,7 +1813,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1806: checking for $ac_word" >&5
+echo "configure:1817: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1853,7 +1864,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1857: checking for $ac_word" >&5
+echo "configure:1868: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1885,7 +1896,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1889: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1900: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1896,12 +1907,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1900 "configure"
+#line 1911 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1927,12 +1938,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1931: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1942: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1936: checking whether we are using GNU C" >&5
+echo "configure:1947: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1941,7 +1952,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1960,7 +1971,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1964: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1975: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2003,7 +2014,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2007: checking for a BSD compatible install" >&5
+echo "configure:2018: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2071,7 +2082,7 @@ AR=${AR-ar}
# 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:2075: checking for $ac_word" >&5
+echo "configure:2086: 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
@@ -2106,17 +2117,17 @@ unistd.h values.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2110: checking for $ac_hdr" >&5
+echo "configure:2121: 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 2115 "configure"
+#line 2126 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2120: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2131: \"$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*
@@ -2146,12 +2157,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2150: checking for $ac_func" >&5
+echo "configure:2161: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2155 "configure"
+#line 2166 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2174,7 +2185,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2203,12 +2214,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2207: checking for $ac_func" >&5
+echo "configure:2218: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2212 "configure"
+#line 2223 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2231,7 +2242,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2265,19 +2276,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2269: checking for LC_MESSAGES" >&5
+echo "configure:2280: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2274 "configure"
+#line 2285 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2298,7 +2309,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2302: checking whether NLS is requested" >&5
+echo "configure:2313: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2318,7 +2329,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2322: checking whether included gettext is requested" >&5
+echo "configure:2333: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2337,17 +2348,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2341: checking for libintl.h" >&5
+echo "configure:2352: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2346 "configure"
+#line 2357 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2351: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2362: \"$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*
@@ -2364,19 +2375,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2368: checking for gettext in libc" >&5
+echo "configure:2379: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2373 "configure"
+#line 2384 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2392,7 +2403,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2396: checking for bindtextdomain in -lintl" >&5
+echo "configure:2407: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2400,7 +2411,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2404 "configure"
+#line 2415 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2411,7 +2422,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2427,19 +2438,19 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2431: checking for gettext in libintl" >&5
+echo "configure:2442: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2436 "configure"
+#line 2447 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -2467,7 +2478,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2471: checking for $ac_word" >&5
+echo "configure:2482: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2501,12 +2512,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2505: checking for $ac_func" >&5
+echo "configure:2516: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2510 "configure"
+#line 2521 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2529,7 +2540,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2556,7 +2567,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2560: checking for $ac_word" >&5
+echo "configure:2571: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2592,7 +2603,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2596: checking for $ac_word" >&5
+echo "configure:2607: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2624,7 +2635,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2628 "configure"
+#line 2639 "configure"
#include "confdefs.h"
int main() {
@@ -2632,7 +2643,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2664,7 +2675,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2668: checking for $ac_word" >&5
+echo "configure:2679: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2698,7 +2709,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2702: checking for $ac_word" >&5
+echo "configure:2713: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2734,7 +2745,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2738: checking for $ac_word" >&5
+echo "configure:2749: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2824,7 +2835,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2828: checking for catalogs to be installed" >&5
+echo "configure:2839: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2852,17 +2863,17 @@ echo "configure:2828: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:2856: checking for linux/version.h" >&5
+echo "configure:2867: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2861 "configure"
+#line 2872 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2877: \"$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*
@@ -2931,17 +2942,17 @@ for ac_hdr in stdlib.h string.h strings.h unistd.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2935: checking for $ac_hdr" >&5
+echo "configure:2946: 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 2940 "configure"
+#line 2951 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2956: \"$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*
@@ -2971,17 +2982,17 @@ for ac_hdr in sys/time.h sys/resource.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2975: checking for $ac_hdr" >&5
+echo "configure:2986: 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 2980 "configure"
+#line 2991 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2985: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2996: \"$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*
@@ -3011,17 +3022,17 @@ for ac_hdr in fcntl.h fpu_control.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3015: checking for $ac_hdr" >&5
+echo "configure:3026: 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 3020 "configure"
+#line 3031 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3036: \"$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*
@@ -3051,17 +3062,17 @@ for ac_hdr in dlfcn.h errno.h sys/stat.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3055: checking for $ac_hdr" >&5
+echo "configure:3066: 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 3060 "configure"
+#line 3071 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3065: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3076: \"$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*
@@ -3090,12 +3101,12 @@ done
for ac_func in getrusage time sigaction __setfpucw
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3094: checking for $ac_func" >&5
+echo "configure:3105: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3099 "configure"
+#line 3110 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3118,7 +3129,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3145,7 +3156,7 @@ done
# Check for socket libraries
echo $ac_n "checking for bind in -lsocket""... $ac_c" 1>&6
-echo "configure:3149: checking for bind in -lsocket" >&5
+echo "configure:3160: checking for bind in -lsocket" >&5
ac_lib_var=`echo socket'_'bind | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3153,7 +3164,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3157 "configure"
+#line 3168 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3164,7 +3175,7 @@ int main() {
bind()
; return 0; }
EOF
-if { (eval echo configure:3168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3192,7 +3203,7 @@ else
fi
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3196: checking for gethostbyname in -lnsl" >&5
+echo "configure:3207: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3200,7 +3211,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3204 "configure"
+#line 3215 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3211,7 +3222,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3381,18 +3392,18 @@ if test x"$silent" != x"yes" && test x"$sim_profile" != x""; then
echo "Setting sim profile = $sim_profile" 6>&1
fi
else
- sim_profile=""
+ sim_profile="-DPROFILE=1 -DWITH_PROFILE=-1"
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3391: checking return type of signal handlers" >&5
+echo "configure:3402: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3396 "configure"
+#line 3407 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3409,7 +3420,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3431,7 +3442,7 @@ EOF
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3435: checking for executable suffix" >&5
+echo "configure:3446: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3441,10 +3452,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:3456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3486,17 +3497,17 @@ for ac_hdr in string.h strings.h stdlib.h time.h sys/times.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3490: checking for $ac_hdr" >&5
+echo "configure:3501: 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 3495 "configure"
+#line 3506 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3511: \"$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*
diff --git a/texinfo/texinfo.tex b/texinfo/texinfo.tex
index 7d3a33c237b..c49af9f4ed9 100644
--- a/texinfo/texinfo.tex
+++ b/texinfo/texinfo.tex
@@ -1,7 +1,11 @@
% texinfo.tex -- TeX macros to handle Texinfo files.
-% $Id$
%
-% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98
+% Load plain if necessary, i.e., if running under initex.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+%
+\def\texinfoversion{1999-09-25.10}
+%
+% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
% Free Software Foundation, Inc.
%
% This texinfo.tex file is free software; you can redistribute it and/or
@@ -25,50 +29,44 @@
%
% Please try the latest version of texinfo.tex before submitting bug
% reports; you can get the latest version from:
-% ftp://ftp.gnu.org/pub/gnu/texinfo.tex
-% /home/gd/gnu/doc/texinfo.tex on the GNU machines.
+% ftp://ftp.gnu.org/gnu/texinfo.tex
% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
-% ftp://tug.org/tex/texinfo.tex
-% ftp://ctan.org/macros/texinfo/texinfo.tex
-% (and all CTAN mirrors, finger ctan@ctan.org for a list).
-% The texinfo.tex in the texinfo distribution itself could well be out
+% ftp://texinfo.org/tex/texinfo.tex
+% ftp://us.ctan.org/macros/texinfo/texinfo.tex
+% (and all CTAN mirrors, finger ctan@us.ctan.org for a list).
+% /home/gd/gnu/doc/texinfo.tex on the GNU machines.
+% The texinfo.tex in any given Texinfo distribution could well be out
% of date, so if that's what you're using, please check.
-%
-% Send bug reports to bug-texinfo@gnu.org.
-% Please include a precise test case in each bug report,
-% including a complete document with which we can reproduce the problem.
-%
+% Texinfo has a small home page at http://texinfo.org/.
+%
+% Send bug reports to bug-texinfo@gnu.org. Please include including a
+% complete document in each bug report with which we can reproduce the
+% problem. Patches are, of course, greatly appreciated.
+%
% To process a Texinfo manual with TeX, it's most reliable to use the
-% texi2dvi shell script that comes with the distribution. For simple
-% manuals, however, you can get away with:
+% texi2dvi shell script that comes with the distribution. For a simple
+% manual foo.texi, however, you can get away with this:
% tex foo.texi
% texindex foo.??
% tex foo.texi
% tex foo.texi
-% dvips foo.dvi -o # or whatever, to process the dvi file.
+% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps.
% The extra runs of TeX get the cross-reference information correct.
% Sometimes one run after texindex suffices, and sometimes you need more
% than two; texi2dvi does it as many times as necessary.
+%
+% It is possible to adapt texinfo.tex for other languages. You can get
+% the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/.
-
-% Make it possible to create a .fmt file just by loading this file:
-% if the underlying format is not loaded, start by loading it now.
-% Added by gildea November 1993.
-\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
-
-% This automatically updates the version number based on RCS.
-\def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
-\deftexinfoversion$Revision$
-\message{Loading texinfo package [Version \texinfoversion]:}
+\message{Loading texinfo [version \texinfoversion]:}
% If in a .fmt file, print the version number
% and turn on active characters that we couldn't do earlier because
% they might have appeared in the input file name.
-\everyjob{\message{[Texinfo version \texinfoversion]}\message{}
+\everyjob{\message{[Texinfo version \texinfoversion]}%
\catcode`+=\active \catcode`\_=\active}
% Save some parts of plain tex whose names we will redefine.
-
\let\ptexb=\b
\let\ptexbullet=\bullet
\let\ptexc=\c
@@ -88,7 +86,6 @@
% For @tex, we can use \tabalign.
\let\+ = \relax
-
\message{Basics,}
\chardef\other=12
@@ -97,19 +94,46 @@
\newlinechar = `^^J
% Set up fixed words for English if not already set.
-\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
-\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
-\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
-\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
-\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
-\ifx\putwordon\undefined \gdef\putwordon{on}\fi
-\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
-\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
-\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
-\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
-\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
-\ifx\putwordShortContents\undefined \gdef\putwordShortContents{Short Contents}\fi
-\ifx\putwordTableofContents\undefined\gdef\putwordTableofContents{Table of Contents}\fi
+\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
+\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
+\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
+\ifx\putwordin\undefined \gdef\putwordin{in}\fi
+\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
+\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
+\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi
+\ifx\putwordof\undefined \gdef\putwordof{of}\fi
+\ifx\putwordon\undefined \gdef\putwordon{on}\fi
+\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
+\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
+\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
+\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
+\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
+\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi
+\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi
+%
+\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
+\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
+\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
+\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
+\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
+\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
+\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
+\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
+\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
+\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
+\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
+\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
+%
+\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi
+\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi
+\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi
+\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
+\ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi
+\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
+\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi
% Ignore a token.
%
@@ -148,7 +172,7 @@
% For @cropmarks command.
% Do @cropmarks to get crop marks.
-%
+%
\newif\ifcropmarks
\let\cropmarks = \cropmarkstrue
%
@@ -192,13 +216,16 @@
\shipout\vbox{%
\ifcropmarks \vbox to \outervsize\bgroup
\hsize = \outerhsize
- \line{\ewtop\hfil\ewtop}%
- \nointerlineskip
- \line{%
- \vbox{\moveleft\cornerthick\nstop}%
- \hfill
- \vbox{\moveright\cornerthick\nstop}%
- }%
+ \vskip-\topandbottommargin
+ \vtop to0pt{%
+ \line{\ewtop\hfil\ewtop}%
+ \nointerlineskip
+ \line{%
+ \vbox{\moveleft\cornerthick\nstop}%
+ \hfill
+ \vbox{\moveright\cornerthick\nstop}%
+ }%
+ \vss}%
\vskip\topandbottommargin
\line\bgroup
\hfil % center the page within the outer (page) hsize.
@@ -216,18 +243,22 @@
\unvbox\footlinebox
\fi
%
+ \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi
+ %
\ifcropmarks
\egroup % end of \vbox\bgroup
\hfil\egroup % end of (centering) \line\bgroup
\vskip\topandbottommargin plus1fill minus1fill
\boxmaxdepth = \cornerthick
- \line{%
- \vbox{\moveleft\cornerthick\nsbot}%
- \hfill
- \vbox{\moveright\cornerthick\nsbot}%
+ \vbox to0pt{\vss
+ \line{%
+ \vbox{\moveleft\cornerthick\nsbot}%
+ \hfill
+ \vbox{\moveright\cornerthick\nsbot}%
+ }%
+ \nointerlineskip
+ \line{\ewbot\hfil\ewbot}%
}%
- \nointerlineskip
- \line{\ewbot\hfil\ewbot}%
\egroup % \vbox from first cropmarks clause
\fi
}% end of \shipout\vbox
@@ -568,36 +599,42 @@ where each line of input produces a line of output.}
%}}
\def\needx#1{%
- % Go into vertical mode, so we don't make a big box in the middle of a
+ % Ensure vertical mode, so we don't make a big box in the middle of a
% paragraph.
\par
%
- % Don't add any leading before our big empty box, but allow a page
- % break, since the best break might be right here.
- \allowbreak
- \nointerlineskip
- \vtop to #1\mil{\vfil}%
- %
- % TeX does not even consider page breaks if a penalty added to the
- % main vertical list is 10000 or more. But in order to see if the
- % empty box we just added fits on the page, we must make it consider
- % page breaks. On the other hand, we don't want to actually break the
- % page after the empty box. So we use a penalty of 9999.
- %
- % There is an extremely small chance that TeX will actually break the
- % page at this \penalty, if there are no other feasible breakpoints in
- % sight. (If the user is using lots of big @group commands, which
- % almost-but-not-quite fill up a page, TeX will have a hard time doing
- % good page breaking, for example.) However, I could not construct an
- % example where a page broke at this \penalty; if it happens in a real
- % document, then we can reconsider our strategy.
- \penalty9999
- %
- % Back up by the size of the box, whether we did a page break or not.
- \kern -#1\mil
- %
- % Do not allow a page break right after this kern.
- \nobreak
+ % If the @need value is less than one line space, it's useless.
+ \dimen0 = #1\mil
+ \dimen2 = \ht\strutbox
+ \advance\dimen2 by \dp\strutbox
+ \ifdim\dimen0 > \dimen2
+ %
+ % Do a \strut just to make the height of this box be normal, so the
+ % normal leading is inserted relative to the preceding line.
+ % And a page break here is fine.
+ \vtop to #1\mil{\strut\vfil}%
+ %
+ % TeX does not even consider page breaks if a penalty added to the
+ % main vertical list is 10000 or more. But in order to see if the
+ % empty box we just added fits on the page, we must make it consider
+ % page breaks. On the other hand, we don't want to actually break the
+ % page after the empty box. So we use a penalty of 9999.
+ %
+ % There is an extremely small chance that TeX will actually break the
+ % page at this \penalty, if there are no other feasible breakpoints in
+ % sight. (If the user is using lots of big @group commands, which
+ % almost-but-not-quite fill up a page, TeX will have a hard time doing
+ % good page breaking, for example.) However, I could not construct an
+ % example where a page broke at this \penalty; if it happens in a real
+ % document, then we can reconsider our strategy.
+ \penalty9999
+ %
+ % Back up by the size of the box, whether we did a page break or not.
+ \kern -#1\mil
+ %
+ % Do not allow a page break right after this kern.
+ \nobreak
+ \fi
}
% @br forces paragraph break
@@ -618,7 +655,7 @@ where each line of input produces a line of output.}
}
% @enddots{} is an end-of-sentence ellipsis.
-%
+%
\def\enddots{%
\leavevmode
\hbox to 2em{%
@@ -705,353 +742,43 @@ where each line of input produces a line of output.}
\let\c=\comment
-% @paragraphindent is defined for the Info formatting commands only.
-\let\paragraphindent=\comment
-
-% Prevent errors for section commands.
-% Used in @ignore and in failing conditionals.
-\def\ignoresections{%
-\let\chapter=\relax
-\let\unnumbered=\relax
-\let\top=\relax
-\let\unnumberedsec=\relax
-\let\unnumberedsection=\relax
-\let\unnumberedsubsec=\relax
-\let\unnumberedsubsection=\relax
-\let\unnumberedsubsubsec=\relax
-\let\unnumberedsubsubsection=\relax
-\let\section=\relax
-\let\subsec=\relax
-\let\subsubsec=\relax
-\let\subsection=\relax
-\let\subsubsection=\relax
-\let\appendix=\relax
-\let\appendixsec=\relax
-\let\appendixsection=\relax
-\let\appendixsubsec=\relax
-\let\appendixsubsection=\relax
-\let\appendixsubsubsec=\relax
-\let\appendixsubsubsection=\relax
-\let\contents=\relax
-\let\smallbook=\relax
-\let\titlepage=\relax
-}
-
-% Used in nested conditionals, where we have to parse the Texinfo source
-% and so want to turn off most commands, in case they are used
-% incorrectly.
-%
-\def\ignoremorecommands{%
- \let\defcodeindex = \relax
- \let\defcv = \relax
- \let\deffn = \relax
- \let\deffnx = \relax
- \let\defindex = \relax
- \let\defivar = \relax
- \let\defmac = \relax
- \let\defmethod = \relax
- \let\defop = \relax
- \let\defopt = \relax
- \let\defspec = \relax
- \let\deftp = \relax
- \let\deftypefn = \relax
- \let\deftypefun = \relax
- \let\deftypevar = \relax
- \let\deftypevr = \relax
- \let\defun = \relax
- \let\defvar = \relax
- \let\defvr = \relax
- \let\ref = \relax
- \let\xref = \relax
- \let\printindex = \relax
- \let\pxref = \relax
- \let\settitle = \relax
- \let\setchapternewpage = \relax
- \let\setchapterstyle = \relax
- \let\everyheading = \relax
- \let\evenheading = \relax
- \let\oddheading = \relax
- \let\everyfooting = \relax
- \let\evenfooting = \relax
- \let\oddfooting = \relax
- \let\headings = \relax
- \let\include = \relax
- \let\lowersections = \relax
- \let\down = \relax
- \let\raisesections = \relax
- \let\up = \relax
- \let\set = \relax
- \let\clear = \relax
- \let\item = \relax
-}
-
-% Ignore @ignore ... @end ignore.
-%
-\def\ignore{\doignore{ignore}}
-
-% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text.
-%
-\def\ifinfo{\doignore{ifinfo}}
-\def\ifhtml{\doignore{ifhtml}}
-\def\ifnottex{\doignore{ifnottex}}
-\def\html{\doignore{html}}
-\def\menu{\doignore{menu}}
-\def\direntry{\doignore{direntry}}
-
-% @dircategory CATEGORY -- specify a category of the dir file
-% which this file should belong to. Ignore this in TeX.
-\let\dircategory = \comment
-
-% Ignore text until a line `@end #1'.
-%
-\def\doignore#1{\begingroup
- % Don't complain about control sequences we have declared \outer.
- \ignoresections
- %
- % Define a command to swallow text until we reach `@end #1'.
- % This @ is a catcode 12 token (that is the normal catcode of @ in
- % this texinfo.tex file). We change the catcode of @ below to match.
- \long\def\doignoretext##1@end #1{\enddoignore}%
- %
- % Make sure that spaces turn into tokens that match what \doignoretext wants.
- \catcode32 = 10
- %
- % Ignore braces, too, so mismatched braces don't cause trouble.
- \catcode`\{ = 9
- \catcode`\} = 9
- %
- % We must not have @c interpreted as a control sequence.
- \catcode`\@ = 12
- %
- % Make the letter c a comment character so that the rest of the line
- % will be ignored. This way, the document can have (for example)
- % @c @end ifinfo
- % and the @end ifinfo will be properly ignored.
- % (We've just changed @ to catcode 12.)
- \catcode`\c = 14
- %
- % And now expand that command.
- \doignoretext
-}
-
-% What we do to finish off ignored text.
-%
-\def\enddoignore{\endgroup\ignorespaces}%
-
-\newif\ifwarnedobs\warnedobsfalse
-\def\obstexwarn{%
- \ifwarnedobs\relax\else
- % We need to warn folks that they may have trouble with TeX 3.0.
- % This uses \immediate\write16 rather than \message to get newlines.
- \immediate\write16{}
- \immediate\write16{***WARNING*** for users of Unix TeX 3.0!}
- \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
- \immediate\write16{If you are running another version of TeX, relax.}
- \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
- \immediate\write16{ Then upgrade your TeX installation if you can.}
- \immediate\write16{ (See ftp://ftp.gnu.ai.mit.edu/pub/gnu/TeX.README.)}
- \immediate\write16{If you are stuck with version 3.0, run the}
- \immediate\write16{ script ``tex3patch'' from the Texinfo distribution}
- \immediate\write16{ to use a workaround.}
- \immediate\write16{}
- \global\warnedobstrue
- \fi
-}
-
-% **In TeX 3.0, setting text in \nullfont hangs tex. For a
-% workaround (which requires the file ``dummy.tfm'' to be installed),
-% uncomment the following line:
-%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
-
-% Ignore text, except that we keep track of conditional commands for
-% purposes of nesting, up to an `@end #1' command.
-%
-\def\nestedignore#1{%
- \obstexwarn
- % We must actually expand the ignored text to look for the @end
- % command, so that nested ignore constructs work. Thus, we put the
- % text into a \vbox and then do nothing with the result. To minimize
- % the change of memory overflow, we follow the approach outlined on
- % page 401 of the TeXbook: make the current font be a dummy font.
- %
- \setbox0 = \vbox\bgroup
- % Don't complain about control sequences we have declared \outer.
- \ignoresections
- %
- % Define `@end #1' to end the box, which will in turn undefine the
- % @end command again.
- \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
- %
- % We are going to be parsing Texinfo commands. Most cause no
- % trouble when they are used incorrectly, but some commands do
- % complicated argument parsing or otherwise get confused, so we
- % undefine them.
- %
- % We can't do anything about stray @-signs, unfortunately;
- % they'll produce `undefined control sequence' errors.
- \ignoremorecommands
- %
- % Set the current font to be \nullfont, a TeX primitive, and define
- % all the font commands to also use \nullfont. We don't use
- % dummy.tfm, as suggested in the TeXbook, because not all sites
- % might have that installed. Therefore, math mode will still
- % produce output, but that should be an extremely small amount of
- % stuff compared to the main input.
- %
- \nullfont
- \let\tenrm = \nullfont \let\tenit = \nullfont \let\tensl = \nullfont
- \let\tenbf = \nullfont \let\tentt = \nullfont \let\smallcaps = \nullfont
- \let\tensf = \nullfont
- % Similarly for index fonts (mostly for their use in
- % smallexample)
- \let\indrm = \nullfont \let\indit = \nullfont \let\indsl = \nullfont
- \let\indbf = \nullfont \let\indtt = \nullfont \let\indsc = \nullfont
- \let\indsf = \nullfont
- %
- % Don't complain when characters are missing from the fonts.
- \tracinglostchars = 0
- %
- % Don't bother to do space factor calculations.
- \frenchspacing
- %
- % Don't report underfull hboxes.
- \hbadness = 10000
- %
- % Do minimal line-breaking.
- \pretolerance = 10000
- %
- % Do not execute instructions in @tex
- \def\tex{\doignore{tex}}%
- % Do not execute macro definitions.
- % `c' is a comment character, so the word `macro' will get cut off.
- \def\macro{\doignore{ma}}%
-}
-
-% @set VAR sets the variable VAR to an empty value.
-% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
-%
-% Since we want to separate VAR from REST-OF-LINE (which might be
-% empty), we can't just use \parsearg; we have to insert a space of our
-% own to delimit the rest of the line, and then take it out again if we
-% didn't need it. Make sure the catcode of space is correct to avoid
-% losing inside @example, for instance.
-%
-\def\set{\begingroup\catcode` =10
- \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR.
- \parsearg\setxxx}
-\def\setxxx#1{\setyyy#1 \endsetyyy}
-\def\setyyy#1 #2\endsetyyy{%
- \def\temp{#2}%
- \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
- \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
- \fi
- \endgroup
-}
-% Can't use \xdef to pre-expand #2 and save some time, since \temp or
-% \next or other control sequences that we've defined might get us into
-% an infinite loop. Consider `@set foo @cite{bar}'.
-\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
-
-% @clear VAR clears (i.e., unsets) the variable VAR.
-%
-\def\clear{\parsearg\clearxxx}
-\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
-
-% @value{foo} gets the text saved in variable foo.
-%
-{
- \catcode`\_ = \active
- %
- % We might end up with active _ or - characters in the argument if
- % we're called from @code, as @code{@value{foo-bar_}}. So \let any
- % such active characters to their normal equivalents.
- \gdef\value{\begingroup
- \catcode`\-=12 \catcode`\_=12
- \indexbreaks \let_\normalunderscore
- \valuexxx}
-}
-\def\valuexxx#1{\expandablevalue{#1}\endgroup}
-
-% We have this subroutine so that we can handle at least some @value's
-% properly in indexes (we \let\value to this in \indexdummies). Ones
-% whose names contain - or _ still won't work, but we can't do anything
-% about that. The command has to be fully expandable, since the result
-% winds up in the index file. This means that if the variable's value
-% contains other Texinfo commands, it's almost certain it will fail
-% (although perhaps we could fix that with sufficient work to do a
-% one-level expansion on the result, instead of complete).
+% @paragraphindent NCHARS
+% We'll use ems for NCHARS, close enough.
+% We cannot implement @paragraphindent asis, though.
%
-\def\expandablevalue#1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- {[No value for ``#1'']v}%
- \else
- \csname SET#1\endcsname
- \fi
-}
-
-% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
-% with @set.
+\def\asisword{asis} % no translation, these are keywords
+\def\noneword{none}
%
-\def\ifset{\parsearg\ifsetxxx}
-\def\ifsetxxx #1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- \expandafter\ifsetfail
+\def\paragraphindent{\parsearg\doparagraphindent}
+\def\doparagraphindent#1{%
+ \def\temp{#1}%
+ \ifx\temp\asisword
\else
- \expandafter\ifsetsucceed
+ \ifx\temp\noneword
+ \defaultparindent = 0pt
+ \else
+ \defaultparindent = #1em
+ \fi
\fi
+ \parindent = \defaultparindent
}
-\def\ifsetsucceed{\conditionalsucceed{ifset}}
-\def\ifsetfail{\nestedignore{ifset}}
-\defineunmatchedend{ifset}
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
-% defined with @set, or has been undefined with @clear.
-%
-\def\ifclear{\parsearg\ifclearxxx}
-\def\ifclearxxx #1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- \expandafter\ifclearsucceed
+% @exampleindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+% It seems @exampleindent asis isn't necessary, but
+% I preserve it to make it similar to @paragraphindent.
+\def\exampleindent{\parsearg\doexampleindent}
+\def\doexampleindent#1{%
+ \def\temp{#1}%
+ \ifx\temp\asisword
\else
- \expandafter\ifclearfail
+ \ifx\temp\noneword
+ \lispnarrowing = 0pt
+ \else
+ \lispnarrowing = #1em
+ \fi
\fi
}
-\def\ifclearsucceed{\conditionalsucceed{ifclear}}
-\def\ifclearfail{\nestedignore{ifclear}}
-\defineunmatchedend{ifclear}
-
-% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text
-% following, through the first @end iftex (etc.). Make `@end iftex'
-% (etc.) valid only after an @iftex.
-%
-\def\iftex{\conditionalsucceed{iftex}}
-\def\ifnothtml{\conditionalsucceed{ifnothtml}}
-\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
-\defineunmatchedend{iftex}
-\defineunmatchedend{ifnothtml}
-\defineunmatchedend{ifnotinfo}
-
-% We can't just want to start a group at @iftex (for example) and end it
-% at @end iftex, since then @set commands inside the conditional have no
-% effect (they'd get reverted at the end of the group). So we must
-% define \Eiftex to redefine itself to be its previous value. (We can't
-% just define it to fail again with an ``unmatched end'' error, since
-% the @ifset might be nested.)
-%
-\def\conditionalsucceed#1{%
- \edef\temp{%
- % Remember the current value of \E#1.
- \let\nece{prevE#1} = \nece{E#1}%
- %
- % At the `@end #1', redefine \E#1 to be its previous value.
- \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}%
- }%
- \temp
-}
-
-% We need to expand lots of \csname's, but we don't want to expand the
-% control sequences after we've constructed them.
-%
-\def\nece#1{\expandafter\noexpand\csname#1\endcsname}
% @asis just yields its argument. Used with @table, for example.
%
@@ -1088,7 +815,7 @@ where each line of input produces a line of output.}
% So open here the files we need to have open while reading the input.
% This makes it possible to make a .fmt file for texinfo.
\def\setfilename{%
- \iflinks
+ \iflinks
\readauxfile
\fi % \openindices needs to do some work in any case.
\openindices
@@ -1107,7 +834,7 @@ where each line of input produces a line of output.}
}
% Called from \setfilename.
-%
+%
\def\openindices{%
\newindex{cp}%
\newcodeindex{fn}%
@@ -1121,6 +848,178 @@ where each line of input produces a line of output.}
\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+\message{pdf,}
+% adobe `portable' document format
+\newcount\tempnum
+\newcount\lnkcount
+\newtoks\filename
+\newcount\filenamelength
+\newcount\pgn
+\newtoks\toksA
+\newtoks\toksB
+\newtoks\toksC
+\newtoks\toksD
+\newbox\boxA
+\newcount\countA
+\newif\ifpdf
+\newif\ifpdfmakepagedest
+
+\ifx\pdfoutput\undefined
+ \pdffalse
+ \let\pdfmkdest = \gobble
+ \let\pdfurl = \gobble
+ \let\endlink = \relax
+ \let\linkcolor = \relax
+ \let\pdfmakeoutlines = \relax
+\else
+ \pdftrue
+ \pdfoutput = 1
+ \input pdfcolor
+ \def\dopdfimage#1#2#3{%
+ \def\imagewidth{#2}%
+ \def\imageheight{#3}%
+ \ifnum\pdftexversion < 14
+ \pdfimage
+ \else
+ \pdfximage
+ \fi
+ \ifx\empty\imagewidth\else width \imagewidth \fi
+ \ifx\empty\imageheight\else height \imageheight \fi
+ {#1.pdf}%
+ \ifnum\pdftexversion < 14 \else
+ \pdfrefximage \pdflastximage
+ \fi}
+ \def\pdfmkdest#1{\pdfdest name{#1@} xyz}
+ \def\pdfmkpgn#1{#1@}
+ \let\linkcolor = \Cyan
+ \def\endlink{\Black\pdfendlink}
+ % Adding outlines to PDF; macros for calculating structure of outlines
+ % come from Petr Olsak
+ \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
+ \else \csname#1\endcsname \fi}
+ \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
+ \advance\tempnum by1
+ \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+ \def\pdfmakeoutlines{{%
+ \openin 1 \jobname.toc
+ \ifeof 1\else\bgroup
+ \closein 1
+ \indexnofonts
+ \def\tt{}
+ % thanh's hack / proper braces in bookmarks
+ \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
+ \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
+ %
+ \def\chapentry ##1##2##3{}
+ \def\unnumbchapentry ##1##2{}
+ \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
+ \def\unnumbsecentry ##1##2{}
+ \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
+ \def\unnumbsubsecentry ##1##2{}
+ \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
+ \def\unnumbsubsubsecentry ##1##2{}
+ \input \jobname.toc
+ \def\chapentry ##1##2##3{%
+ \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
+ \def\unnumbchapentry ##1##2{%
+ \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
+ \def\secentry ##1##2##3##4{%
+ \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
+ \def\unnumbsecentry ##1##2{%
+ \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
+ \def\subsecentry ##1##2##3##4##5{%
+ \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
+ \def\unnumbsubsecentry ##1##2{%
+ \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
+ \def\subsubsecentry ##1##2##3##4##5##6{%
+ \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
+ \def\unnumbsubsubsecentry ##1##2{%
+ \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
+ \input \jobname.toc
+ \egroup\fi
+ }}
+ \def\makelinks #1,{%
+ \def\params{#1}\def\E{END}%
+ \ifx\params\E
+ \let\nextmakelinks=\relax
+ \else
+ \let\nextmakelinks=\makelinks
+ \ifnum\lnkcount>0,\fi
+ \picknum{#1}%
+ \startlink attr{/Border [0 0 0]}
+ goto name{\pdfmkpgn{\the\pgn}}%
+ \linkcolor #1%
+ \advance\lnkcount by 1%
+ \endlink
+ \fi
+ \nextmakelinks
+ }
+ \def\picknum#1{\expandafter\pn#1}
+ \def\pn#1{%
+ \def\p{#1}%
+ \ifx\p\lbrace
+ \let\nextpn=\ppn
+ \else
+ \let\nextpn=\ppnn
+ \def\first{#1}
+ \fi
+ \nextpn
+ }
+ \def\ppn#1{\pgn=#1\gobble}
+ \def\ppnn{\pgn=\first}
+ \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
+ \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+ \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+ \ifx\PP\D\let\nextsp\relax
+ \else\let\nextsp\skipspaces
+ \ifx\p\space\else\addtokens{\filename}{\PP}%
+ \advance\filenamelength by 1
+ \fi
+ \fi
+ \nextsp}
+ \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+ \ifnum\pdftexversion < 14
+ \let \startlink \pdfannotlink
+ \else
+ \let \startlink \pdfstartlink
+ \fi
+ \def\pdfurl#1{%
+ \begingroup
+ \normalturnoffactive\def\@{@}%
+ \leavevmode\Red
+ \startlink attr{/Border [0 0 0]}%
+ user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+ % #1
+ \endgroup}
+ \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+ \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+ \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+ \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+ \def\maketoks{%
+ \expandafter\poptoks\the\toksA|ENDTOKS|
+ \ifx\first0\adn0
+ \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+ \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+ \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+ \else
+ \ifnum0=\countA\else\makelink\fi
+ \ifx\first.\let\next=\done\else
+ \let\next=\maketoks
+ \addtokens{\toksB}{\the\toksD}
+ \ifx\first,\addtokens{\toksB}{\space}\fi
+ \fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \next}
+ \def\makelink{\addtokens{\toksB}%
+ {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+ \def\pdflink#1{%
+ \startlink attr{/Border [0 0 0]} goto name{\mkpgn{#1}}
+ \linkcolor #1\endlink}
+ \def\mkpgn#1{#1@}
+ \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\fi % \ifx\pdfoutput
+
+
\message{fonts,}
% Font-change commands.
@@ -1190,23 +1089,17 @@ where each line of input produces a line of output.}
\setfont\deftt\ttshape{10}{\magstep1}
\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
-% Fonts for indices and small examples (9pt).
-% We actually use the slanted font rather than the italic,
-% because texinfo normally uses the slanted fonts for that.
-% Do not make many font distinctions in general in the index, since they
-% aren't very useful.
-\setfont\ninett\ttshape{9}{1000}
-\setfont\ninettsl\ttslshape{10}{900}
-\setfont\indrm\rmshape{9}{1000}
-\setfont\indit\itshape{9}{1000}
-\setfont\indsl\slshape{9}{1000}
-\let\indtt=\ninett
-\let\indttsl=\ninettsl
-\let\indsf=\indrm
-\let\indbf=\indrm
-\setfont\indsc\scshape{10}{900}
-\font\indi=cmmi9
-\font\indsy=cmsy9
+% Fonts for indices, footnotes, small examples (9pt).
+\setfont\smallrm\rmshape{9}{1000}
+\setfont\smalltt\ttshape{9}{1000}
+\setfont\smallbf\bfshape{10}{900}
+\setfont\smallit\itshape{9}{1000}
+\setfont\smallsl\slshape{9}{1000}
+\setfont\smallsf\sfshape{9}{1000}
+\setfont\smallsc\scshape{10}{900}
+\setfont\smallttsl\ttslshape{10}{900}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
% Fonts for title page:
\setfont\titlerm\rmbshape{12}{\magstep3}
@@ -1320,11 +1213,12 @@ where each line of input produces a line of output.}
\let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl
\resetmathfonts \setleading{15pt}}
\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf?
-\def\indexfonts{%
- \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl
- \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc
- \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy \let\tenttsl=\indttsl
- \resetmathfonts \setleading{12pt}}
+\def\smallfonts{%
+ \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
+ \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
+ \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
+ \let\tenttsl=\smallttsl
+ \resetmathfonts \setleading{11pt}}
% Set up the default fonts, so we can use them for creating boxes.
%
@@ -1373,9 +1267,9 @@ where each line of input produces a line of output.}
}
\let\ttfont=\t
\def\samp#1{`\tclose{#1}'\null}
-\setfont\smallrm\rmshape{8}{1000}
-\font\smallsy=cmsy9
-\def\key#1{{\smallrm\textfont2=\smallsy \leavevmode\hbox{%
+\setfont\keyrm\rmshape{8}{1000}
+\font\keysy=cmsy9
+\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
\raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
\vbox{\hrule\kern-0.4pt
\hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
@@ -1479,24 +1373,50 @@ where each line of input produces a line of output.}
\let\env=\code
\let\command=\code
-% @uref (abbreviation for `urlref') takes an optional second argument
-% specifying the text to display. First (mandatory) arg is the url.
-% Perhaps eventually put in a hypertex \special here.
-%
-\def\uref#1{\urefxxx #1,,\finish}
-\def\urefxxx#1,#2,#3\finish{%
- \setbox0 = \hbox{\ignorespaces #2}%
+% @uref (abbreviation for `urlref') takes an optional (comma-separated)
+% second argument specifying the text to display and an optional third
+% arg as text to display instead of (rather than in addition to) the url
+% itself. First (mandatory) arg is the url. Perhaps eventually put in
+% a hypertex \special here.
+%
+\def\uref#1{\douref #1,,,\finish}
+\def\douref#1,#2,#3,#4\finish{\begingroup
+ \unsepspaces
+ \pdfurl{#1}%
+ \setbox0 = \hbox{\ignorespaces #3}%
\ifdim\wd0 > 0pt
- \unhbox0\ (\code{#1})%
+ \unhbox0 % third arg given, show only that
\else
- \code{#1}%
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0 > 0pt
+ \ifpdf
+ \unhbox0 % PDF: 2nd arg given, show only it
+ \else
+ \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
+ \fi
+ \else
+ \code{#1}% only url given, so show it
+ \fi
\fi
-}
+ \endlink
+\endgroup}
-% rms does not like the angle brackets --karl, 17may97.
-% So now @email is just like @uref.
+% rms does not like angle brackets --karl, 17may97.
+% So now @email is just like @uref, unless we are pdf.
+%
%\def\email#1{\angleleft{\tt #1}\angleright}
-\let\email=\uref
+\ifpdf
+ \def\email#1{\doemail#1,,\finish}
+ \def\doemail#1,#2,#3\finish{\begingroup
+ \unsepspaces
+ \pdfurl{mailto:#1}%
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+ \endlink
+ \endgroup}
+\else
+ \let\email=\uref
+\fi
% Check if we are currently using a typewriter font. Since all the
% Computer Modern typewriter fonts have zero interword stretch (and
@@ -1539,8 +1459,8 @@ where each line of input produces a line of output.}
\newif\iffinishedtitlepage
% Do an implicit @contents or @shortcontents after @end titlepage if the
-% user says @contentsaftertitlepage or @shortcontentsaftertitlepage.
-%
+% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
+%
\newif\ifsetcontentsaftertitlepage
\let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
\newif\ifsetshortcontentsaftertitlepage
@@ -1615,6 +1535,8 @@ where each line of input produces a line of output.}
\global\let\shortcontents = \relax
\fi
%
+ \ifpdf \pdfmakepagedesttrue \fi
+ %
\HEADINGSon
}
@@ -1749,22 +1671,18 @@ where each line of input produces a line of output.}
% Subroutines used in generating headings
% Produces Day Month Year style of output.
-\def\today{\number\day\space
-\ifcase\month\or
-January\or February\or March\or April\or May\or June\or
-July\or August\or September\or October\or November\or December\fi
-\space\number\year}
-
-% Use this if you want the Month Day, Year style of output.
-%\def\today{\ifcase\month\or
-%January\or February\or March\or April\or May\or June\or
-%July\or August\or September\or October\or November\or December\fi
-%\space\number\day, \number\year}
-
-% @settitle line... specifies the title of the document, for headings
-% It generates no output of its own
-
-\def\thistitle{No Title}
+\def\today{%
+ \number\day\space
+ \ifcase\month
+ \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+ \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+ \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+ \fi
+ \space\number\year}
+
+% @settitle line... specifies the title of the document, for headings.
+% It generates no output of its own.
+\def\thistitle{\putwordNoTitle}
\def\settitle{\parsearg\settitlezzz}
\def\settitlezzz #1{\gdef\thistitle{#1}}
@@ -1841,7 +1759,7 @@ July\or August\or September\or October\or November\or December\fi
\itemxneedsnegativevskipfalse
\else
% The item text fits into the space. Start a paragraph, so that the
- % following text (if any) will end up on the same line.
+ % following text (if any) will end up on the same line.
\noindent
% Do this with kerns and \unhbox so that if there is a footnote in
% the item text, it can migrate to the main vertical list and
@@ -2138,46 +2056,60 @@ July\or August\or September\or October\or November\or December\fi
\multitablelinespace=0pt
% Macros used to set up halign preamble:
-%
+%
\let\endsetuptable\relax
\def\xendsetuptable{\endsetuptable}
\let\columnfractions\relax
\def\xcolumnfractions{\columnfractions}
\newif\ifsetpercent
-% 2/1/96, to allow fractions to be given with more than one digit.
-\def\pickupwholefraction#1 {\global\advance\colcount by1 %
-\expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}%
-\setuptable}
+% #1 is the part of the @columnfraction before the decimal point, which
+% is presumably either 0 or the empty string (but we don't check, we
+% just throw it away). #2 is the decimal part, which we use as the
+% percent of \hsize for this column.
+\def\pickupwholefraction#1.#2 {%
+ \global\advance\colcount by 1
+ \expandafter\xdef\csname col\the\colcount\endcsname{.#2\hsize}%
+ \setuptable
+}
\newcount\colcount
-\def\setuptable#1{\def\firstarg{#1}%
-\ifx\firstarg\xendsetuptable\let\go\relax%
-\else
- \ifx\firstarg\xcolumnfractions\global\setpercenttrue%
+\def\setuptable#1{%
+ \def\firstarg{#1}%
+ \ifx\firstarg\xendsetuptable
+ \let\go = \relax
\else
- \ifsetpercent
- \let\go\pickupwholefraction % In this case arg of setuptable
- % is the decimal point before the
- % number given in percent of hsize.
- % We don't need this so we don't use it.
+ \ifx\firstarg\xcolumnfractions
+ \global\setpercenttrue
\else
- \global\advance\colcount by1
- \setbox0=\hbox{#1 }% Add a normal word space as a separator;
- % typically that is always in the input, anyway.
- \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+ \ifsetpercent
+ \let\go\pickupwholefraction
+ \else
+ \global\advance\colcount by 1
+ \setbox0=\hbox{#1\unskip }% Add a normal word space as a separator;
+ % typically that is always in the input, anyway.
+ \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+ \fi
+ \fi
+ \ifx\go\pickupwholefraction
+ % Put the argument back for the \pickupwholefraction call, so
+ % we'll always have a period there to be parsed.
+ \def\go{\pickupwholefraction#1}%
+ \else
+ \let\go = \setuptable
\fi%
- \fi%
-\ifx\go\pickupwholefraction\else\let\go\setuptable\fi%
-\fi\go}
+ \fi
+ \go
+}
-% multitable syntax
-\def\tab{&\hskip1sp\relax} % 2/2/96
- % tiny skip here makes sure this column space is
- % maintained, even if it is never used.
+% This used to have \hskip1sp. But then the space in a template line is
+% not enough. That is bad. So let's go back to just & until we
+% encounter the problem it was intended to solve again.
+% --karl, nathan@acm.org, 20apr99.
+\def\tab{&}
% @multitable ... @end multitable definitions:
-
+%
\def\multitable{\parsearg\dotable}
\def\dotable#1{\bgroup
\vskip\parskip
@@ -2216,15 +2148,15 @@ July\or August\or September\or October\or November\or December\fi
% In order to keep entries from bumping into each other
% we will add a \leftskip of \multitablecolspace to all columns after
% the first one.
- %
+ %
% If a template has been used, we will add \multitablecolspace
% to the width of each template entry.
- %
+ %
% If the user has set preamble in terms of percent of \hsize we will
% use that dimension as the width of the column, and the \leftskip
% will keep entries from bumping into each other. Table will start at
% left margin and final column will justify at right margin.
- %
+ %
% Make sure we don't inherit \rightskip from the outer environment.
\rightskip=0pt
\ifnum\colcount=1
@@ -2255,15 +2187,18 @@ July\or August\or September\or October\or November\or December\fi
% If so, do nothing. If not, give it an appropriate dimension based on
% current baselineskip.
\ifdim\multitablelinespace=0pt
+\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
+\global\advance\multitablelinespace by-\ht0
%% strut to put in table in case some entry doesn't have descenders,
%% to keep lines equally spaced
\let\multistrut = \strut
-%% Test to see if parskip is larger than space between lines of
-%% table. If not, do nothing.
-%% If so, set to same dimension as multitablelinespace.
\else
+%% FIXME: what is \box0 supposed to be?
\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
width0pt\relax} \fi
+%% Test to see if parskip is larger than space between lines of
+%% table. If not, do nothing.
+%% If so, set to same dimension as multitablelinespace.
\ifdim\multitableparskip>\multitablelinespace
\global\multitableparskip=\multitablelinespace
\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
@@ -2276,6 +2211,356 @@ width0pt\relax} \fi
\fi}
+\message{conditionals,}
+% Prevent errors for section commands.
+% Used in @ignore and in failing conditionals.
+\def\ignoresections{%
+ \let\chapter=\relax
+ \let\unnumbered=\relax
+ \let\top=\relax
+ \let\unnumberedsec=\relax
+ \let\unnumberedsection=\relax
+ \let\unnumberedsubsec=\relax
+ \let\unnumberedsubsection=\relax
+ \let\unnumberedsubsubsec=\relax
+ \let\unnumberedsubsubsection=\relax
+ \let\section=\relax
+ \let\subsec=\relax
+ \let\subsubsec=\relax
+ \let\subsection=\relax
+ \let\subsubsection=\relax
+ \let\appendix=\relax
+ \let\appendixsec=\relax
+ \let\appendixsection=\relax
+ \let\appendixsubsec=\relax
+ \let\appendixsubsection=\relax
+ \let\appendixsubsubsec=\relax
+ \let\appendixsubsubsection=\relax
+ \let\contents=\relax
+ \let\smallbook=\relax
+ \let\titlepage=\relax
+}
+
+% Used in nested conditionals, where we have to parse the Texinfo source
+% and so want to turn off most commands, in case they are used
+% incorrectly.
+%
+\def\ignoremorecommands{%
+ \let\defcodeindex = \relax
+ \let\defcv = \relax
+ \let\deffn = \relax
+ \let\deffnx = \relax
+ \let\defindex = \relax
+ \let\defivar = \relax
+ \let\defmac = \relax
+ \let\defmethod = \relax
+ \let\defop = \relax
+ \let\defopt = \relax
+ \let\defspec = \relax
+ \let\deftp = \relax
+ \let\deftypefn = \relax
+ \let\deftypefun = \relax
+ \let\deftypeivar = \relax
+ \let\deftypeop = \relax
+ \let\deftypevar = \relax
+ \let\deftypevr = \relax
+ \let\defun = \relax
+ \let\defvar = \relax
+ \let\defvr = \relax
+ \let\ref = \relax
+ \let\xref = \relax
+ \let\printindex = \relax
+ \let\pxref = \relax
+ \let\settitle = \relax
+ \let\setchapternewpage = \relax
+ \let\setchapterstyle = \relax
+ \let\everyheading = \relax
+ \let\evenheading = \relax
+ \let\oddheading = \relax
+ \let\everyfooting = \relax
+ \let\evenfooting = \relax
+ \let\oddfooting = \relax
+ \let\headings = \relax
+ \let\include = \relax
+ \let\lowersections = \relax
+ \let\down = \relax
+ \let\raisesections = \relax
+ \let\up = \relax
+ \let\set = \relax
+ \let\clear = \relax
+ \let\item = \relax
+}
+
+% Ignore @ignore ... @end ignore.
+%
+\def\ignore{\doignore{ignore}}
+
+% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text.
+%
+\def\ifinfo{\doignore{ifinfo}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\ifnottex{\doignore{ifnottex}}
+\def\html{\doignore{html}}
+\def\menu{\doignore{menu}}
+\def\direntry{\doignore{direntry}}
+
+% @dircategory CATEGORY -- specify a category of the dir file
+% which this file should belong to. Ignore this in TeX.
+\let\dircategory = \comment
+
+% Ignore text until a line `@end #1'.
+%
+\def\doignore#1{\begingroup
+ % Don't complain about control sequences we have declared \outer.
+ \ignoresections
+ %
+ % Define a command to swallow text until we reach `@end #1'.
+ % This @ is a catcode 12 token (that is the normal catcode of @ in
+ % this texinfo.tex file). We change the catcode of @ below to match.
+ \long\def\doignoretext##1@end #1{\enddoignore}%
+ %
+ % Make sure that spaces turn into tokens that match what \doignoretext wants.
+ \catcode32 = 10
+ %
+ % Ignore braces, too, so mismatched braces don't cause trouble.
+ \catcode`\{ = 9
+ \catcode`\} = 9
+ %
+ % We must not have @c interpreted as a control sequence.
+ \catcode`\@ = 12
+ %
+ % Make the letter c a comment character so that the rest of the line
+ % will be ignored. This way, the document can have (for example)
+ % @c @end ifinfo
+ % and the @end ifinfo will be properly ignored.
+ % (We've just changed @ to catcode 12.)
+ \catcode`\c = 14
+ %
+ % And now expand that command.
+ \doignoretext
+}
+
+% What we do to finish off ignored text.
+%
+\def\enddoignore{\endgroup\ignorespaces}%
+
+\newif\ifwarnedobs\warnedobsfalse
+\def\obstexwarn{%
+ \ifwarnedobs\relax\else
+ % We need to warn folks that they may have trouble with TeX 3.0.
+ % This uses \immediate\write16 rather than \message to get newlines.
+ \immediate\write16{}
+ \immediate\write16{WARNING: for users of Unix TeX 3.0!}
+ \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
+ \immediate\write16{If you are running another version of TeX, relax.}
+ \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
+ \immediate\write16{ Then upgrade your TeX installation if you can.}
+ \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)}
+ \immediate\write16{If you are stuck with version 3.0, run the}
+ \immediate\write16{ script ``tex3patch'' from the Texinfo distribution}
+ \immediate\write16{ to use a workaround.}
+ \immediate\write16{}
+ \global\warnedobstrue
+ \fi
+}
+
+% **In TeX 3.0, setting text in \nullfont hangs tex. For a
+% workaround (which requires the file ``dummy.tfm'' to be installed),
+% uncomment the following line:
+%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
+
+% Ignore text, except that we keep track of conditional commands for
+% purposes of nesting, up to an `@end #1' command.
+%
+\def\nestedignore#1{%
+ \obstexwarn
+ % We must actually expand the ignored text to look for the @end
+ % command, so that nested ignore constructs work. Thus, we put the
+ % text into a \vbox and then do nothing with the result. To minimize
+ % the change of memory overflow, we follow the approach outlined on
+ % page 401 of the TeXbook: make the current font be a dummy font.
+ %
+ \setbox0 = \vbox\bgroup
+ % Don't complain about control sequences we have declared \outer.
+ \ignoresections
+ %
+ % Define `@end #1' to end the box, which will in turn undefine the
+ % @end command again.
+ \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
+ %
+ % We are going to be parsing Texinfo commands. Most cause no
+ % trouble when they are used incorrectly, but some commands do
+ % complicated argument parsing or otherwise get confused, so we
+ % undefine them.
+ %
+ % We can't do anything about stray @-signs, unfortunately;
+ % they'll produce `undefined control sequence' errors.
+ \ignoremorecommands
+ %
+ % Set the current font to be \nullfont, a TeX primitive, and define
+ % all the font commands to also use \nullfont. We don't use
+ % dummy.tfm, as suggested in the TeXbook, because not all sites
+ % might have that installed. Therefore, math mode will still
+ % produce output, but that should be an extremely small amount of
+ % stuff compared to the main input.
+ %
+ \nullfont
+ \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont
+ \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont
+ \let\tensf=\nullfont
+ % Similarly for index fonts (mostly for their use in smallexample).
+ \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont
+ \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont
+ \let\smallsf=\nullfont
+ %
+ % Don't complain when characters are missing from the fonts.
+ \tracinglostchars = 0
+ %
+ % Don't bother to do space factor calculations.
+ \frenchspacing
+ %
+ % Don't report underfull hboxes.
+ \hbadness = 10000
+ %
+ % Do minimal line-breaking.
+ \pretolerance = 10000
+ %
+ % Do not execute instructions in @tex
+ \def\tex{\doignore{tex}}%
+ % Do not execute macro definitions.
+ % `c' is a comment character, so the word `macro' will get cut off.
+ \def\macro{\doignore{ma}}%
+}
+
+% @set VAR sets the variable VAR to an empty value.
+% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
+%
+% Since we want to separate VAR from REST-OF-LINE (which might be
+% empty), we can't just use \parsearg; we have to insert a space of our
+% own to delimit the rest of the line, and then take it out again if we
+% didn't need it. Make sure the catcode of space is correct to avoid
+% losing inside @example, for instance.
+%
+\def\set{\begingroup\catcode` =10
+ \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR.
+ \parsearg\setxxx}
+\def\setxxx#1{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+ \def\temp{#2}%
+ \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
+ \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
+ \fi
+ \endgroup
+}
+% Can't use \xdef to pre-expand #2 and save some time, since \temp or
+% \next or other control sequences that we've defined might get us into
+% an infinite loop. Consider `@set foo @cite{bar}'.
+\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\def\clear{\parsearg\clearxxx}
+\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
+
+% @value{foo} gets the text saved in variable foo.
+{
+ \catcode`\_ = \active
+ %
+ % We might end up with active _ or - characters in the argument if
+ % we're called from @code, as @code{@value{foo-bar_}}. So \let any
+ % such active characters to their normal equivalents.
+ \gdef\value{\begingroup
+ \catcode`\-=12 \catcode`\_=12
+ \indexbreaks \let_\normalunderscore
+ \valuexxx}
+}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we \let\value to this in \indexdummies). Ones
+% whose names contain - or _ still won't work, but we can't do anything
+% about that. The command has to be fully expandable, since the result
+% winds up in the index file. This means that if the variable's value
+% contains other Texinfo commands, it's almost certain it will fail
+% (although perhaps we could fix that with sufficient work to do a
+% one-level expansion on the result, instead of complete).
+%
+\def\expandablevalue#1{%
+ \expandafter\ifx\csname SET#1\endcsname\relax
+ {[No value for ``#1'']}%
+ \else
+ \csname SET#1\endcsname
+ \fi
+}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+\def\ifset{\parsearg\ifsetxxx}
+\def\ifsetxxx #1{%
+ \expandafter\ifx\csname SET#1\endcsname\relax
+ \expandafter\ifsetfail
+ \else
+ \expandafter\ifsetsucceed
+ \fi
+}
+\def\ifsetsucceed{\conditionalsucceed{ifset}}
+\def\ifsetfail{\nestedignore{ifset}}
+\defineunmatchedend{ifset}
+
+% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+\def\ifclear{\parsearg\ifclearxxx}
+\def\ifclearxxx #1{%
+ \expandafter\ifx\csname SET#1\endcsname\relax
+ \expandafter\ifclearsucceed
+ \else
+ \expandafter\ifclearfail
+ \fi
+}
+\def\ifclearsucceed{\conditionalsucceed{ifclear}}
+\def\ifclearfail{\nestedignore{ifclear}}
+\defineunmatchedend{ifclear}
+
+% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text
+% following, through the first @end iftex (etc.). Make `@end iftex'
+% (etc.) valid only after an @iftex.
+%
+\def\iftex{\conditionalsucceed{iftex}}
+\def\ifnothtml{\conditionalsucceed{ifnothtml}}
+\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
+\defineunmatchedend{iftex}
+\defineunmatchedend{ifnothtml}
+\defineunmatchedend{ifnotinfo}
+
+% We can't just want to start a group at @iftex (for example) and end it
+% at @end iftex, since then @set commands inside the conditional have no
+% effect (they'd get reverted at the end of the group). So we must
+% define \Eiftex to redefine itself to be its previous value. (We can't
+% just define it to fail again with an ``unmatched end'' error, since
+% the @ifset might be nested.)
+%
+\def\conditionalsucceed#1{%
+ \edef\temp{%
+ % Remember the current value of \E#1.
+ \let\nece{prevE#1} = \nece{E#1}%
+ %
+ % At the `@end #1', redefine \E#1 to be its previous value.
+ \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}%
+ }%
+ \temp
+}
+
+% We need to expand lots of \csname's, but we don't want to expand the
+% control sequences after we've constructed them.
+%
+\def\nece#1{\expandafter\noexpand\csname#1\endcsname}
+
+% @defininfoenclose.
+\let\definfoenclose=\comment
+
+
\message{indexing,}
% Index generation facilities
@@ -2388,8 +2673,11 @@ width0pt\relax} \fi
% (Must be a way to avoid doing expansion at all, and thus not have to
% laboriously list every single command here.)
\def\@{@}% will be @@ when we switch to @ as escape char.
-%\let\{ = \lbracecmd
-%\let\} = \rbracecmd
+% Need these in case \tex is in effect and \{ is a \delimiter again.
+% But can't use \lbracecmd and \rbracecmd because texindex assumes
+% braces and backslashes are used only as delimiters.
+\let\{ = \mylbrace
+\let\} = \myrbrace
\def\_{{\realbackslash _}}%
\def\w{\realbackslash w }%
\def\bf{\realbackslash bf }%
@@ -2411,6 +2699,11 @@ width0pt\relax} \fi
\def\copyright{\realbackslash copyright}%
\def\tclose##1{\realbackslash tclose {##1}}%
\def\code##1{\realbackslash code {##1}}%
+\def\uref##1{\realbackslash uref {##1}}%
+\def\url##1{\realbackslash url {##1}}%
+\def\env##1{\realbackslash env {##1}}%
+\def\command##1{\realbackslash command {##1}}%
+\def\option##1{\realbackslash option {##1}}%
\def\dotless##1{\realbackslash dotless {##1}}%
\def\samp##1{\realbackslash samp {##1}}%
\def\,##1{\realbackslash ,{##1}}%
@@ -2426,6 +2719,7 @@ width0pt\relax} \fi
\def\kbd##1{\realbackslash kbd {##1}}%
\def\dfn##1{\realbackslash dfn {##1}}%
\def\emph##1{\realbackslash emph {##1}}%
+\def\acronym##1{\realbackslash acronym {##1}}%
%
% Handle some cases of @value -- where the variable name does not
% contain - or _, and the value does not contain any
@@ -2433,6 +2727,8 @@ width0pt\relax} \fi
\let\value = \expandablevalue
%
\unsepspaces
+% Turn off macro expansion
+\turnoffmacros
}
% If an index command is used in an @example environment, any spaces
@@ -2489,6 +2785,12 @@ width0pt\relax} \fi
%\let\tt=\indexdummyfont
\let\tclose=\indexdummyfont
\let\code=\indexdummyfont
+\let\url=\indexdummyfont
+\let\uref=\indexdummyfont
+\let\env=\indexdummyfont
+\let\acronym=\indexdummyfont
+\let\command=\indexdummyfont
+\let\option=\indexdummyfont
\let\file=\indexdummyfont
\let\samp=\indexdummyfont
\let\kbd=\indexdummyfont
@@ -2513,14 +2815,14 @@ width0pt\relax} \fi
\def\emptymacro{\empty}
% Most index entries go through here, but \dosubind is the general case.
-%
+%
\def\doind#1#2{\dosubind{#1}{#2}\empty}
% Workhorse for all \fooindexes.
% #1 is name of index, #2 is stuff to put there, #3 is subentry --
% \empty if called from \doind, as we usually are. The main exception
% is with defuns, which call us directly.
-%
+%
\def\dosubind#1#2#3{%
% Put the index entry in the margin if desired.
\ifx\SETmarginindex\relax\else
@@ -2545,24 +2847,28 @@ width0pt\relax} \fi
\def\subentry{ #3}%
\fi
%
- % First process the index-string with all font commands turned off
- % to get the string to sort by.
+ % First process the index entry with all font commands turned
+ % off to get the string to sort by.
{\indexnofonts \xdef\indexsorttmp{#2\subentry}}%
%
- % Now produce the complete index entry, with both the sort key and the
- % original text, including any font commands.
+ % Now the real index entry with the fonts.
\toks0 = {#2}%
+ %
+ % If third (subentry) arg is present, add it to the index
+ % string. And include a space.
+ \ifx\thirdarg\emptymacro \else
+ \toks0 = \expandafter{\the\toks0 \space #3}%
+ \fi
+ %
+ % Set up the complete index entry, with both the sort key
+ % and the original text, including any font commands. We write
+ % three arguments to \entry to the .?? file, texindex reduces to
+ % two when writing the .??s sorted result.
\edef\temp{%
\write\csname#1indfile\endcsname{%
\realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
}%
%
- % If third (subentry) arg is present, add it to the index string.
- \ifx\thirdarg\emptymacro \else
- \toks0 = {#3}%
- \edef\temp{\temp{\the\toks0}}%
- \fi
- %
% If a skip is the last thing on the list now, preserve it
% by backing up by \lastskip, doing the \write, then inserting
% the skip again. Otherwise, the whatsit generated by the
@@ -2574,12 +2880,12 @@ width0pt\relax} \fi
% will have extra space inserted, because the \medbreak in the
% start of the @defun won't see the skip inserted by the @end of
% the previous defun.
- %
+ %
% But don't do any of this if we're not in vertical mode. We
% don't want to do a \vskip and prematurely end a paragraph.
- %
+ %
% Avoid page breaks due to these extra skips, too.
- %
+ %
\iflinks
\ifvmode
\skip0 = \lastskip
@@ -2588,7 +2894,7 @@ width0pt\relax} \fi
%
\temp % do the write
%
- %
+ %
\ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi
\fi
}%
@@ -2636,7 +2942,7 @@ width0pt\relax} \fi
\def\doprintindex#1{\begingroup
\dobreak \chapheadingskip{10000}%
%
- \indexfonts \rm
+ \smallfonts \rm
\tolerance = 9500
\indexbreaks
%
@@ -2652,7 +2958,7 @@ width0pt\relax} \fi
% and it loses the chapter title and the aux file entries for the
% index. The easiest way to prevent this problem is to make sure
% there is some text.
- (Index is nonexistent)
+ \putwordIndexNonexistent
\else
%
% If the index file exists but is empty, then \openin leaves \ifeof
@@ -2660,7 +2966,7 @@ width0pt\relax} \fi
% it can discover if there is anything in it.
\read 1 to \temp
\ifeof 1
- (Index is empty)
+ \putwordIndexIsEmpty
\else
% Index files are almost Texinfo source, but we use \ as the escape
% character. It would be better to use @, but that's too big a change
@@ -2685,7 +2991,7 @@ width0pt\relax} \fi
%
% Remove any glue we may have, we'll be inserting our own.
\removelastskip
- %
+ %
% We like breaks before the index initials, so insert a bonus.
\penalty -300
%
@@ -2693,7 +2999,7 @@ width0pt\relax} \fi
% baselineskips increases the chance of the dots lining up from column
% to column. It still won't often be perfect, because of the stretch
% we need before each entry, but it's better.
- %
+ %
% No shrink because it confuses \balancecolumns.
\vskip 1.67\baselineskip plus .5\baselineskip
\leftline{\secbf #1}%
@@ -2763,7 +3069,11 @@ width0pt\relax} \fi
% The `\ ' here is removed by the implicit \unskip that TeX does as
% part of (the primitive) \par. Without it, a spurious underfull
% \hbox ensues.
- \ #2% The page number ends the paragraph.
+ \ifpdf
+ \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+ \else
+ \ #2% The page number ends the paragraph.
+ \fi
\fi%
\par
\endgroup}
@@ -2792,24 +3102,26 @@ width0pt\relax} \fi
\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
% Grab any single-column material above us.
- \output = {\global\setbox\partialpage = \vbox{%
- %
+ \output = {%
+ %
% Here is a possibility not foreseen in manmac: if we accumulate a
% whole lot of material, we might end up calling this \output
% routine twice in a row (see the doublecol-lose test, which is
% essentially a couple of indexes with @setchapternewpage off). In
- % that case, we must prevent the second \partialpage from
- % simply overwriting the first, causing us to lose the page.
- % This will preserve it until a real output routine can ship it
- % out. Generally, \partialpage will be empty when this runs and
- % this will be a no-op.
- \unvbox\partialpage
+ % that case we just ship out what is in \partialpage with the normal
+ % output routine. Generally, \partialpage will be empty when this
+ % runs and this will be a no-op. See the indexspread.tex test case.
+ \ifvoid\partialpage \else
+ \onepageout{\pagecontents\partialpage}%
+ \fi
%
- % Unvbox the main output page.
- \unvbox255
- \kern-\topskip \kern\baselineskip
- }}%
- \eject
+ \global\setbox\partialpage = \vbox{%
+ % Unvbox the main output page.
+ \unvbox\PAGE
+ \kern-\topskip \kern\baselineskip
+ }%
+ }%
+ \eject % run that output routine to set \partialpage
%
% Use the double-column output routine for subsequent pages.
\output = {\doublecolumnout}%
@@ -2843,7 +3155,7 @@ width0pt\relax} \fi
% The double-column output routine for all double-column pages except
% the last.
-%
+%
\def\doublecolumnout{%
\splittopskip=\topskip \splitmaxdepth=\maxdepth
% Get the available space for the double columns -- the normal
@@ -2861,7 +3173,6 @@ width0pt\relax} \fi
\def\pagesofar{%
% Re-output the contents of the output page -- any previous material,
% followed by the two boxes we just split, in box0 and box2.
- \advance\vsize by \ht\partialpage
\unvbox\partialpage
%
\hsize = \doublecolumnhsize
@@ -2870,7 +3181,7 @@ width0pt\relax} \fi
}
\def\enddoublecolumns{%
\output = {%
- % Split the last of the double-column material. Leave on the
+ % Split the last of the double-column material. Leave it on the
% current page, no automatic page break.
\balancecolumns
%
@@ -2882,14 +3193,15 @@ width0pt\relax} \fi
% called on to balance too much material, but if it is, this makes
% the output somewhat more palatable.)
\global\output = {\onepageout{\pagecontents\PAGE}}%
- %
- % \pagegoal was set to the doubled \vsize above, since we restarted
- % the current page. We're now back to normal single-column
- % typesetting, so reset \pagegoal to the normal \vsize.
- \pagegoal = \vsize
}%
\eject
\endgroup % started in \begindoublecolumns
+ %
+ % \pagegoal was set to the doubled \vsize above, since we restarted
+ % the current page. We're now back to normal single-column
+ % typesetting, so reset \pagegoal to the normal \vsize (after the
+ % \endgroup where \vsize got restored).
+ \pagegoal = \vsize
}
\def\balancecolumns{%
% Called at the end of the double column material.
@@ -2920,7 +3232,7 @@ width0pt\relax} \fi
\message{sectioning,}
-% Define chapters, sections, etc.
+% Chapters, sections, etc.
\newcount\chapno
\newcount\secno \secno=0
@@ -2929,7 +3241,43 @@ width0pt\relax} \fi
% This counter is funny since it counts through charcodes of letters A, B, ...
\newcount\appendixno \appendixno = `\@
-\def\appendixletter{\char\the\appendixno}
+% \def\appendixletter{\char\the\appendixno}
+% We do the following for the sake of pdftex, which needs the actual
+% letter in the expansion, not just typeset.
+\def\appendixletter{%
+ \ifnum\appendixno=`A A%
+ \else\ifnum\appendixno=`B B%
+ \else\ifnum\appendixno=`C C%
+ \else\ifnum\appendixno=`D D%
+ \else\ifnum\appendixno=`E E%
+ \else\ifnum\appendixno=`F F%
+ \else\ifnum\appendixno=`G G%
+ \else\ifnum\appendixno=`H H%
+ \else\ifnum\appendixno=`I I%
+ \else\ifnum\appendixno=`J J%
+ \else\ifnum\appendixno=`K K%
+ \else\ifnum\appendixno=`L L%
+ \else\ifnum\appendixno=`M M%
+ \else\ifnum\appendixno=`N N%
+ \else\ifnum\appendixno=`O O%
+ \else\ifnum\appendixno=`P P%
+ \else\ifnum\appendixno=`Q Q%
+ \else\ifnum\appendixno=`R R%
+ \else\ifnum\appendixno=`S S%
+ \else\ifnum\appendixno=`T T%
+ \else\ifnum\appendixno=`U U%
+ \else\ifnum\appendixno=`V V%
+ \else\ifnum\appendixno=`W W%
+ \else\ifnum\appendixno=`X X%
+ \else\ifnum\appendixno=`Y Y%
+ \else\ifnum\appendixno=`Z Z%
+ % The \the is necessary, despite appearances, because \appendixletter is
+ % expanded while writing the .toc file. \char\appendixno is not
+ % expandable, thus it is written literally, thus all appendixes come out
+ % with the same letter (or @) in the toc without it.
+ \else\char\the\appendixno
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
% Each @chapter defines this as the name of the chapter.
% page headings and footings can use it. @section does likewise.
@@ -3402,15 +3750,16 @@ width0pt\relax} \fi
\message{toc,}
+% Table of contents.
\newwrite\tocfile
% Write an entry to the toc file, opening it if necessary.
% Called from @chapter, etc. We supply {\folio} at the end of the
% argument, which will end up as the last argument to the \...entry macro.
-%
+%
% We open the .toc file here instead of at @setfilename or any other
% given time so that @contents can be put in the document anywhere.
-%
+%
\newif\iftocfileopened
\def\writetocentry#1{%
\iftocfileopened\else
@@ -3426,7 +3775,7 @@ width0pt\relax} \fi
% Finish up the main text and prepare to read what we've written
% to \tocfile.
-%
+%
\def\startcontents#1{%
% If @setchapternewpage on, and @headings double, the contents should
% start on an odd page, unlike chapters. Thus, we maintain
@@ -3454,13 +3803,15 @@ width0pt\relax} \fi
% Normal (long) toc.
\def\contents{%
- \startcontents{\putwordTableofContents}%
+ \startcontents{\putwordTOC}%
\openin 1 \jobname.toc
\ifeof 1 \else
\closein 1
\input \jobname.toc
\fi
\vfill \eject
+ \contentsalignmacro % in case @setchapternewpage odd is in effect
+ \pdfmakeoutlines
\endgroup
\lastnegativepageno = \pageno
\pageno = \savepageno
@@ -3468,7 +3819,7 @@ width0pt\relax} \fi
% And just the chapters.
\def\summarycontents{%
- \startcontents{\putwordShortContents}%
+ \startcontents{\putwordShortTOC}%
%
\let\chapentry = \shortchapentry
\let\unnumbchapentry = \shortunnumberedentry
@@ -3490,12 +3841,17 @@ width0pt\relax} \fi
\input \jobname.toc
\fi
\vfill \eject
+ \contentsalignmacro % in case @setchapternewpage odd is in effect
\endgroup
\lastnegativepageno = \pageno
\pageno = \savepageno
}
\let\shortcontents = \summarycontents
+\ifpdf
+ \pdfcatalog{/PageMode /UseOutlines}%
+\fi
+
% These macros generate individual entries in the table of contents.
% The first argument is the chapter or section name.
% The last argument is the page number.
@@ -3506,7 +3862,7 @@ width0pt\relax} \fi
% See comments in \dochapentry re vbox and related settings
\def\shortchapentry#1#2#3{%
- \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno{#3}}%
+ \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
}
% Typeset the label for a chapter or appendix for the short contents.
@@ -3514,10 +3870,14 @@ width0pt\relax} \fi
% We could simplify the code here by writing out an \appendixentry
% command in the toc file for appendices, instead of using \chapentry
% for both, but it doesn't seem worth it.
-\setbox0 = \hbox{\shortcontrm \putwordAppendix }
-\newdimen\shortappendixwidth \shortappendixwidth = \wd0
-
+%
+\newdimen\shortappendixwidth
+%
\def\shortchaplabel#1{%
+ % Compute width of word "Appendix", may change with language.
+ \setbox0 = \hbox{\shortcontrm \putwordAppendix}%
+ \shortappendixwidth = \wd0
+ %
% We typeset #1 in a box of constant width, regardless of the text of
% #1, so the chapter titles will come out aligned.
\setbox0 = \hbox{#1}%
@@ -3532,7 +3892,7 @@ width0pt\relax} \fi
}
\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
-\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno{#2}}}
+\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}
% Sections.
\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
@@ -3559,24 +3919,24 @@ width0pt\relax} \fi
\penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
\begingroup
\chapentryfonts
- \tocentry{#1}{\dopageno{#2}}%
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
\endgroup
\nobreak\vskip .25\baselineskip plus.1\baselineskip
}
\def\dosecentry#1#2{\begingroup
\secentryfonts \leftskip=\tocindent
- \tocentry{#1}{\dopageno{#2}}%
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
\endgroup}
\def\dosubsecentry#1#2{\begingroup
\subsecentryfonts \leftskip=2\tocindent
- \tocentry{#1}{\dopageno{#2}}%
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
\endgroup}
\def\dosubsubsecentry#1#2{\begingroup
\subsubsecentryfonts \leftskip=3\tocindent
- \tocentry{#1}{\dopageno{#2}}%
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
\endgroup}
% Final typesetting of a toc entry; we use the same \entry macro as for
@@ -3604,6 +3964,7 @@ width0pt\relax} \fi
\message{environments,}
+% @foo ... @end foo.
% Since these characters are used in examples, it should be an even number of
% \tt widths. Each \tt character is 1en, so two makes it 1em.
@@ -3814,7 +4175,7 @@ width0pt\relax} \fi
% Define the \E... control sequence only if we are inside the particular
% environment, so the error checking in \end will work.
-%
+%
% To end an @example-like environment, we first end the paragraph (via
% \afterenvbreak's vertical glue), and then the group. That way we keep
% the zero \parskip that the environments set -- \parskip glue will be
@@ -3839,7 +4200,7 @@ width0pt\relax} \fi
% redefines). We must call \example (or whatever) last in the
% definition, since it reads the return following the @example (or
% whatever) command.
-%
+%
% This actually allows (for example) @end display inside an
% @smalldisplay. Too bad, but makeinfo will catch the error anyway.
%
@@ -3853,7 +4214,7 @@ width0pt\relax} \fi
\def\smalllispx{\begingroup
\def\Esmalllisp{\nonfillfinish\endgroup}%
\def\Esmallexample{\nonfillfinish\endgroup}%
- \indexfonts
+ \smallfonts
\lisp
}
@@ -3869,7 +4230,7 @@ width0pt\relax} \fi
%
\def\smalldisplayx{\begingroup
\def\Esmalldisplay{\nonfillfinish\endgroup}%
- \indexfonts \rm
+ \smallfonts \rm
\display
}
@@ -3886,7 +4247,7 @@ width0pt\relax} \fi
%
\def\smallformatx{\begingroup
\def\Esmallformat{\nonfillfinish\endgroup}%
- \indexfonts \rm
+ \smallfonts \rm
\format
}
@@ -3895,7 +4256,7 @@ width0pt\relax} \fi
\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format}
% @flushright.
-%
+%
\def\flushright{\begingroup
\let\nonarrowing = t
\nonfillstart
@@ -3927,8 +4288,9 @@ width0pt\relax} \fi
\message{defuns,}
-% Define formatter for defuns
-% First, allow user to change definition object font (\df) internally
+% @defun etc.
+
+% Allow user to change definition object font (\df) internally
\def\setdeffont #1 {\csname DEF#1\endcsname}
\newskip\defbodyindent \defbodyindent=.4in
@@ -3982,10 +4344,16 @@ width0pt\relax} \fi
%% contained text. This is especially needed for [ and ]
\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 }
\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 }
-\def\ampnr{\&}
+\let\ampnr = \&
\def\lbrb{{\bf\char`\[}}
\def\rbrb{{\bf\char`\]}}
+% Active &'s sneak into the index arguments, so make sure it's defined.
+{
+ \catcode`& = 13
+ \global\let& = \ampnr
+}
+
% First, defname, which formats the header line itself.
% #1 should be the function name.
% #2 should be the type of definition, such as "Function".
@@ -4037,7 +4405,7 @@ width0pt\relax} \fi
% #2 is the \...x control sequence for consecutive fns (which we define).
% #3 is the control sequence to call to resume processing.
% #4, delimited by the space, is the class name.
-%
+%
\def\defmethparsebody#1#2#3#4 {\begingroup\inENV %
\medbreak %
% Define the end token that this defining construct specifies
@@ -4049,23 +4417,39 @@ width0pt\relax} \fi
\exdentamount=\defbodyindent
\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
-% @deftypemethod has an extra argument that nothing else does. Sigh.
+% Used for @deftypemethod and @deftypeivar.
% #1 is the \E... control sequence to end the definition (which we define).
% #2 is the \...x control sequence for consecutive fns (which we define).
% #3 is the control sequence to call to resume processing.
-% #4, delimited by the space, is the class name.
+% #4, delimited by a space, is the class name.
% #5 is the method's return type.
+%
+\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV
+ \medbreak
+ \def#1{\endgraf\endgroup\medbreak}%
+ \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
+ \parindent=0in
+ \advance\leftskip by \defbodyindent
+ \exdentamount=\defbodyindent
+ \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}}
+
+% Used for @deftypeop. The change from \deftypemethparsebody is an
+% extra argument at the beginning which is the `category', instead of it
+% being the hardwired string `Method' or `Instance Variable'. We have
+% to account for this both in the \...x definition and in parsing the
+% input at hand. Thus also need a control sequence (passed as #5) for
+% the \E... definition to assign the category name to.
%
-\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV %
-\medbreak %
-% Define the end token that this defining construct specifies
-% so that it will exit this group.
-\def#1{\endgraf\endgroup\medbreak}%
-\def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
-\parindent=0in
-\advance\leftskip by \defbodyindent
-\exdentamount=\defbodyindent
-\begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}}
+\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV
+ \medbreak
+ \def#1{\endgraf\endgroup\medbreak}%
+ \def#2##1 ##2 ##3 {%
+ \def#4{##1}%
+ \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%
+ \parindent=0in
+ \advance\leftskip by \defbodyindent
+ \exdentamount=\defbodyindent
+ \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}}
\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
\medbreak %
@@ -4176,12 +4560,13 @@ width0pt\relax} \fi
% First, define the processing that is wanted for arguments of \defun
% Use this to expand the args and terminate the paragraph they make up
-\def\defunargs #1{\functionparens \sl
+\def\defunargs#1{\functionparens \sl
% Expand, preventing hyphenation at `-' chars.
% Note that groups don't affect changes in \hyphenchar.
-\hyphenchar\tensl=0
+% Set the font temporarily and use \font in case \setfont made \tensl a macro.
+{\tensl\hyphenchar\font=0}%
#1%
-\hyphenchar\tensl=45
+{\tensl\hyphenchar\font=45}%
\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi%
\interlinepenalty=10000
\advance\rightskip by 0pt plus 1fil
@@ -4215,7 +4600,7 @@ width0pt\relax} \fi
\def\defun{\defparsebody\Edefun\defunx\defunheader}
\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Function}%
+\begingroup\defname {#1}{\putwordDeffunc}%
\defunargs {#2}\endgroup %
\catcode 61=\other % Turn off change made in \defparsebody
}
@@ -4229,7 +4614,7 @@ width0pt\relax} \fi
% #1 is the data type, #2 the name, #3 the args.
\def\deftypefunheaderx #1#2 #3\relax{%
\doind {fn}{\code{#2}}% Make entry in function index
-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Function}%
+\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}%
\deftypefunargs {#3}\endgroup %
\catcode 61=\other % Turn off change made in \defparsebody
}
@@ -4260,7 +4645,7 @@ width0pt\relax} \fi
\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Macro}%
+\begingroup\defname {#1}{\putwordDefmac}%
\defunargs {#2}\endgroup %
\catcode 61=\other % Turn off change made in \defparsebody
}
@@ -4270,36 +4655,39 @@ width0pt\relax} \fi
\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{Special Form}%
+\begingroup\defname {#1}{\putwordDefspec}%
\defunargs {#2}\endgroup %
\catcode 61=\other % Turn off change made in \defparsebody
}
-% This definition is run if you use @defunx
-% anywhere other than immediately after a @defun or @defunx.
-
-\def\deffnx #1 {\errmessage{@deffnx in invalid context}}
-\def\defunx #1 {\errmessage{@defunx in invalid context}}
-\def\defmacx #1 {\errmessage{@defmacx in invalid context}}
-\def\defspecx #1 {\errmessage{@defspecx in invalid context}}
-\def\deftypefnx #1 {\errmessage{@deftypefnx in invalid context}}
-\def\deftypemethodx #1 {\errmessage{@deftypemethodx in invalid context}}
-\def\deftypefunx #1 {\errmessage{@deftypefunx in invalid context}}
-
-% @defmethod, and so on
-
% @defop CATEGORY CLASS OPERATION ARG...
-
+%
\def\defop #1 {\def\defoptype{#1}%
\defopparsebody\Edefop\defopx\defopheader\defoptype}
-
-\def\defopheader #1#2#3{%
+%
+\def\defopheader#1#2#3{%
\dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index
-\begingroup\defname {#2}{\defoptype{} on #1}%
+\begingroup\defname {#2}{\defoptype\ \putwordon\ #1}%
\defunargs {#3}\endgroup %
}
-% @deftypemethod CLASS RETURN-TYPE METHOD ARG...
+% @deftypeop CATEGORY CLASS TYPE OPERATION ARG...
+%
+\def\deftypeop #1 {\def\deftypeopcategory{#1}%
+ \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader
+ \deftypeopcategory}
+%
+% #1 is the class name, #2 the data type, #3 the operation name, #4 the args.
+\def\deftypeopheader#1#2#3#4{%
+ \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
+ \begingroup
+ \defname{\defheaderxcond#2\relax$$$#3}
+ {\deftypeopcategory\ \putwordon\ \code{#1}}%
+ \deftypefunargs{#4}%
+ \endgroup
+}
+
+% @deftypemethod CLASS TYPE METHOD ARG...
%
\def\deftypemethod{%
\deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader}
@@ -4313,6 +4701,20 @@ width0pt\relax} \fi
\endgroup
}
+% @deftypeivar CLASS TYPE VARNAME
+%
+\def\deftypeivar{%
+ \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader}
+%
+% #1 is the class name, #2 the data type, #3 the variable name.
+\def\deftypeivarheader#1#2#3{%
+ \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
+ \begingroup
+ \defname{#3}{\putwordInstanceVariableof\ \code{#1}}%
+ \defvarargs{#3}%
+ \endgroup
+}
+
% @defmethod == @defop Method
%
\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
@@ -4332,31 +4734,24 @@ width0pt\relax} \fi
\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
\def\defcvarheader #1#2#3{%
-\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
-\begingroup\defname {#2}{\defcvtype{} of #1}%
+\dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index
+\begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}%
\defvarargs {#3}\endgroup %
}
-% @defivar == @defcv {Instance Variable}
-
+% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME
+%
\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
-
-\def\defivarheader #1#2#3{%
-\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
-\begingroup\defname {#2}{Instance Variable of #1}%
-\defvarargs {#3}\endgroup %
+%
+\def\defivarheader#1#2#3{%
+ \dosubind {vr}{\code{#2}}{\putwordof\ #1}% entry in var index
+ \begingroup
+ \defname{#2}{\putwordInstanceVariableof\ #1}%
+ \defvarargs{#3}%
+ \endgroup
}
-% These definitions are run if you use @defmethodx, etc.,
-% anywhere other than immediately after a @defmethod, etc.
-
-\def\defopx #1 {\errmessage{@defopx in invalid context}}
-\def\defmethodx #1 {\errmessage{@defmethodx in invalid context}}
-\def\defcvx #1 {\errmessage{@defcvx in invalid context}}
-\def\defivarx #1 {\errmessage{@defivarx in invalid context}}
-
-% Now @defvar
-
+% @defvar
% First, define the processing that is wanted for arguments of @defvar.
% This is actually simple: just print them in roman.
% This must expand the args and terminate the paragraph they make up
@@ -4376,7 +4771,7 @@ width0pt\relax} \fi
\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{Variable}%
+\begingroup\defname {#1}{\putwordDefvar}%
\defvarargs {#2}\endgroup %
}
@@ -4385,7 +4780,7 @@ width0pt\relax} \fi
\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{User Option}%
+\begingroup\defname {#1}{\putwordDefopt}%
\defvarargs {#2}\endgroup %
}
@@ -4397,7 +4792,7 @@ width0pt\relax} \fi
% is actually part of the data type, which should not be put into the index.
\def\deftypevarheader #1#2{%
\dovarind#2 \relax% Make entry in variables index
-\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}%
+\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}%
\interlinepenalty=10000
\endgraf\nobreak\vskip -\parskip\nobreak
\endgroup}
@@ -4413,15 +4808,6 @@ width0pt\relax} \fi
\endgraf\nobreak\vskip -\parskip\nobreak
\endgroup}
-% This definition is run if you use @defvarx
-% anywhere other than immediately after a @defvar or @defvarx.
-
-\def\defvrx #1 {\errmessage{@defvrx in invalid context}}
-\def\defvarx #1 {\errmessage{@defvarx in invalid context}}
-\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
-\def\deftypevarx #1 {\errmessage{@deftypevarx in invalid context}}
-\def\deftypevrx #1 {\errmessage{@deftypevrx in invalid context}}
-
% Now define @deftp
% Args are printed in bold, a slight difference from @defvar.
@@ -4434,23 +4820,45 @@ width0pt\relax} \fi
\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
-% This definition is run if you use @deftpx, etc
-% anywhere other than immediately after a @deftp, etc.
-
-\def\deftpx #1 {\errmessage{@deftpx in invalid context}}
+% These definitions are used if you use @defunx (etc.)
+% anywhere other than immediately after a @defun or @defunx.
+%
+\def\defcvx#1 {\errmessage{@defcvx in invalid context}}
+\def\deffnx#1 {\errmessage{@deffnx in invalid context}}
+\def\defivarx#1 {\errmessage{@defivarx in invalid context}}
+\def\defmacx#1 {\errmessage{@defmacx in invalid context}}
+\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}}
+\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
+\def\defopx#1 {\errmessage{@defopx in invalid context}}
+\def\defspecx#1 {\errmessage{@defspecx in invalid context}}
+\def\deftpx#1 {\errmessage{@deftpx in invalid context}}
+\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}}
+\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}}
+\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}}
+\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}}
+\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}}
+\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}}
+\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}}
+\def\defunx#1 {\errmessage{@defunx in invalid context}}
+\def\defvarx#1 {\errmessage{@defvarx in invalid context}}
+\def\defvrx#1 {\errmessage{@defvrx in invalid context}}
\message{macros,}
% @macro.
-% To do this right we need a feature of e-TeX, \scantokens,
+% To do this right we need a feature of e-TeX, \scantokens,
% which we arrange to emulate with a temporary file in ordinary TeX.
\ifx\eTeXversion\undefined
\newwrite\macscribble
\def\scanmacro#1{%
\begingroup \newlinechar`\^^M
+ % Undo catcode changes of \startcontents and \doprintindex
+ \catcode`\@=0 \catcode`\\=12 \escapechar=`\@
+ % Append \endinput to make sure that TeX does not see the ending newline.
+ \toks0={#1\endinput}%
\immediate\openout\macscribble=\jobname.tmp
- \immediate\write\macscribble{#1}%
+ \immediate\write\macscribble{\the\toks0}%
\immediate\closeout\macscribble
\let\xeatspaces\eatspaces
\input \jobname.tmp
@@ -4459,12 +4867,16 @@ width0pt\relax} \fi
\else
\def\scanmacro#1{%
\begingroup \newlinechar`\^^M
-\let\xeatspaces\eatspaces\scantokens{#1}\endgroup}
+% Undo catcode changes of \startcontents and \doprintindex
+\catcode`\@=0 \catcode`\\=12 \escapechar=`\@
+\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup}
\fi
\newcount\paramno % Count of parameters
\newtoks\macname % Macro name
\newif\ifrecursive % Is it recursive?
+\def\macrolist{} % List of all defined macros in the form
+ % \do\macro1\do\macro2...
% Utility routines.
% Thisdoes \let #1 = #2, except with \csnames.
@@ -4496,8 +4908,8 @@ width0pt\relax} \fi
% all characters are catcode 10, 11 or 12, except \ which is active
% (as in normal texinfo). It is necessary to change the definition of \.
-% It's necessary to have hard CRs when the macro is executed. This is
-% done by making ^^M (\endlinechar) catcode 12 when reading the macro
+% It's necessary to have hard CRs when the macro is executed. This is
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
% body, and then making it the \newlinechar in \scanmacro.
\def\macrobodyctxt{%
@@ -4514,8 +4926,19 @@ width0pt\relax} \fi
\catcode`\^^M=12
\usembodybackslash}
+\def\macroargctxt{%
+ \catcode`\~=12
+ \catcode`\^=12
+ \catcode`\_=12
+ \catcode`\|=12
+ \catcode`\<=12
+ \catcode`\>=12
+ \catcode`\+=12
+ \catcode`\@=12
+ \catcode`\\=12}
+
% \mbodybackslash is the definition of \ in @macro bodies.
-% It maps \foo\ => \csname macarg.foo\endcsname => #N
+% It maps \foo\ => \csname macarg.foo\endcsname => #N
% where N is the macro parameter number.
% We define \csname macarg.\endcsname to be \realbackslash, so
% \\ in macro replacement text gets you a backslash.
@@ -4534,25 +4957,48 @@ width0pt\relax} \fi
\ifx\argl\empty % no arguments
\paramno=0%
\else
- \expandafter\parsemargdef \argl;%
+ \expandafter\parsemargdef \argl;%
\fi
- \expandafter\ifx \csname macsave.\the\macname\endcsname \relax
- \cslet{macsave.\the\macname}{\the\macname}%
- \else
+ \if1\csname ismacro.\the\macname\endcsname
\message{Warning: redefining \the\macname}%
+ \else
+ \expandafter\ifx\csname \the\macname\endcsname \relax
+ \else \errmessage{The name \the\macname\space is reserved}\fi
+ \global\cslet{macsave.\the\macname}{\the\macname}%
+ \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+ % Add the macroname to \macrolist
+ \toks0 = \expandafter{\macrolist\do}%
+ \xdef\macrolist{\the\toks0
+ \expandafter\noexpand\csname\the\macname\endcsname}%
\fi
\begingroup \macrobodyctxt
\ifrecursive \expandafter\parsermacbody
- \else \expandafter\parsemacbody
+ \else \expandafter\parsemacbody
\fi}
\def\unmacro{\parsearg\unmacroxxx}
\def\unmacroxxx#1{%
- \expandafter\ifx \csname macsave.\the\macname\endcsname \relax
- \errmessage{Macro \the\macname\ not defined.}%
+ \if1\csname ismacro.#1\endcsname
+ \global\cslet{#1}{macsave.#1}%
+ \global\expandafter\let \csname ismacro.#1\endcsname=0%
+ % Remove the macro name from \macrolist
+ \begingroup
+ \edef\tempa{\expandafter\noexpand\csname#1\endcsname}%
+ \def\do##1{%
+ \def\tempb{##1}%
+ \ifx\tempa\tempb
+ % remove this
+ \else
+ \toks0 = \expandafter{\newmacrolist\do}%
+ \edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}%
+ \fi}%
+ \def\newmacrolist{}%
+ % Execute macro list to define \newmacrolist
+ \macrolist
+ \global\let\macrolist\newmacrolist
+ \endgroup
\else
- \cslet{#1}{macsave.#1}%
- \expandafter\let \csname macsave.\the\macname\endcsname \undefined
+ \errmessage{Macro #1 not defined}%
\fi
}
@@ -4610,17 +5056,22 @@ width0pt\relax} \fi
\noexpand\scanmacro{\temp}}%
\or % 1
\expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\braceorline\csname\the\macname xxx\endcsname}%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\braceorline
+ \expandafter\noexpand\csname\the\macname xxx\endcsname}%
\expandafter\xdef\csname\the\macname xxx\endcsname##1{%
- \noexpand\scanmacro{\temp}}%
+ \egroup\noexpand\scanmacro{\temp}}%
\else % many
- \expandafter\xdef\csname\the\macname\endcsname##1{%
- \csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
\expandafter\expandafter
\expandafter\xdef
\expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{\noexpand\scanmacro{\temp}}%
+ \csname\the\macname xxx\endcsname
+ \paramlist{\egroup\noexpand\scanmacro{\temp}}%
\fi
\else
\ifcase\paramno
@@ -4630,18 +5081,25 @@ width0pt\relax} \fi
\noexpand\scanmacro{\temp}\egroup}%
\or % 1
\expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\braceorline\csname\the\macname xxx\endcsname}%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\braceorline
+ \expandafter\noexpand\csname\the\macname xxx\endcsname}%
\expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+ \egroup
\noexpand\norecurse{\the\macname}%
\noexpand\scanmacro{\temp}\egroup}%
\else % many
- \expandafter\xdef\csname\the\macname\endcsname##1{%
- \csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \expandafter\noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
\expandafter\expandafter
\expandafter\xdef
\expandafter\expandafter
\csname\the\macname xxx\endcsname
\paramlist{%
+ \egroup
\noexpand\norecurse{\the\macname}%
\noexpand\scanmacro{\temp}\egroup}%
\fi
@@ -4656,11 +5114,29 @@ width0pt\relax} \fi
\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
\def\braceorlinexxx{%
\ifx\nchar\bgroup\else
- \expandafter\parsearg
+ \expandafter\parsearg
\fi \next}
+% We mant to disable all macros during \shipout so that they are not
+% expanded by \write.
+\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
+ \edef\next{\macrolist}\expandafter\endgroup\next}
+
+
+% @alias.
+% We need some trickery to remove the optional spaces around the equal
+% sign. Just make them active and then expand them all to nothing.
+\def\alias{\begingroup\obeyspaces\parsearg\aliasxxx}
+\def\aliasxxx #1{\aliasyyy#1\relax}
+\def\aliasyyy #1=#2\relax{\ignoreactivespaces
+\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=%
+ \expandafter\noexpand\csname#2\endcsname}%
+\expandafter\endgroup\next}
+
\message{cross references,}
+% @xref etc.
+
\newwrite\auxfile
\newif\ifhavexrefs % True if xref values are known.
@@ -4702,21 +5178,24 @@ width0pt\relax} \fi
% @anchor{NAME} -- define xref target at arbitrary point.
-%
-\def\anchor#1{\setref{#1}{Ynothing}}
-
+%
+\newcount\savesfregister
+\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
% \setref{NAME}{SNT} defines a cross-reference point NAME, namely
% NAME-title, NAME-pg, and NAME-SNT. Called from \foonoderef. We have
% to set \indexdummies so commands such as @code in a section title
% aren't expanded. It would be nicer not to expand the titles in the
% first place, but there's so many layers that that is hard to do.
-%
+%
\def\setref#1#2{{%
\indexdummies
+ \pdfmkdest{#1}%
\dosetq{#1-title}{Ytitle}%
\dosetq{#1-pg}{Ypagenumber}%
- \dosetq{#1-snt}{#2}
+ \dosetq{#1-snt}{#2}%
}}
% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
@@ -4728,6 +5207,7 @@ width0pt\relax} \fi
\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
\def\ref#1{\xrefX[#1,,,,,,,]}
\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+ \unsepspaces
\def\printedmanual{\ignorespaces #5}%
\def\printednodename{\ignorespaces #3}%
\setbox1=\hbox{\printedmanual}%
@@ -4761,8 +5241,21 @@ width0pt\relax} \fi
% are best written with fairly long node names, containing hyphens, this
% is a loss. Therefore, we give the text of the node name again, so it
% is as if TeX is seeing it for the first time.
+ \ifpdf
+ \leavevmode
+ \getfilename{#4}%
+ \ifnum\filenamelength>0
+ \startlink attr{/Border [0 0 0]}%
+ goto file{\the\filename.pdf} name{#1@}%
+ \else
+ \startlink attr{/Border [0 0 0]}%
+ goto name{#1@}%
+ \fi
+ \linkcolor
+ \fi
+ %
\ifdim \wd1 > 0pt
- \putwordsection{} ``\printednodename'' in \cite{\printedmanual}%
+ \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}%
\else
% _ (for example) has to be the character _ for the purposes of the
% control sequence corresponding to the node, but it has to expand
@@ -4775,11 +5268,12 @@ width0pt\relax} \fi
\setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
\ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
}%
- % [mynode],
+ % [mynode],
[\printednodename],\space
% page 3
\turnoffactive \putwordpage\tie\refx{#1-pg}{}%
\fi
+ \endlink
\endgroup}
% \dosetq is the interface for calls from other macros
@@ -4787,7 +5281,7 @@ width0pt\relax} \fi
% Use \normalturnoffactive so that punctuation chars such as underscore
% and backslash work in node names. (\turnoffactive doesn't do \.)
\def\dosetq#1#2{%
- {\let\folio=0
+ {\let\folio=0%
\normalturnoffactive
\edef\next{\write\auxfile{\internalsetq{#1}{#2}}}%
\iflinks
@@ -4864,7 +5358,7 @@ width0pt\relax} \fi
}
% This is the macro invoked by entries in the aux file.
-%
+%
\def\xrdef#1{\begingroup
% Reenable \ as an escape while reading the second argument.
\catcode`\\ = 0
@@ -5016,6 +5510,8 @@ width0pt\relax} \fi
\xspaceskip\z@skip
\parindent\defaultparindent
%
+ \smallfonts \rm
+ %
% Hang the footnote text off the number.
\hang
\textindent{\thisfootno}%
@@ -5030,7 +5526,7 @@ width0pt\relax} \fi
\else\let\next\f@t\fi \next}
\def\f@@t{\bgroup\aftergroup\@foot\let\next}
\def\f@t#1{#1\@foot}
-\def\@foot{\strut\egroup}
+\def\@foot{\strut\par\egroup}
}%end \catcode `\@=11
@@ -5089,7 +5585,7 @@ width0pt\relax} \fi
% @image. We use the macros from epsf.tex to support this.
% If epsf.tex is not installed and @image is used, we complain.
-%
+%
% Check for and read epsf.tex up front. If we read it only at @image
% time, we might be inside a group, and then its definitions would get
% undone and the next image would fail.
@@ -5102,12 +5598,12 @@ width0pt\relax} \fi
\input epsf.tex
\fi
%
+% We will only complain once about lack of epsf.tex.
\newif\ifwarnednoepsf
\newhelp\noepsfhelp{epsf.tex must be installed for images to
work. It is also included in the Texinfo distribution, or you can get
- it from ftp://ftp.tug.org/tex/epsf.tex.}
+ it from ftp://tug.org/tex/epsf.tex.}
%
-% Only complain once about lack of epsf.tex.
\def\image#1{%
\ifx\epsfbox\undefined
\ifwarnednoepsf \else
@@ -5125,24 +5621,68 @@ width0pt\relax} \fi
% #2 is (optional) width, #3 is (optional) height.
% #4 is just the usual extra ignored arg for parsing this stuff.
\def\imagexxx#1,#2,#3,#4\finish{%
- % \epsfbox itself resets \epsf?size at each figure.
- \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
- \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
- % If the image is by itself, center it.
- \ifvmode
- \nobreak\medskip
- \nobreak
- \centerline{\epsfbox{#1.eps}}%
- \bigbreak
+ \ifpdf
+ \centerline{\dopdfimage{#1}{#2}{#3}}%
\else
- \epsfbox{#1.eps}%
+ % \epsfbox itself resets \epsf?size at each figure.
+ \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
+ \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
+ \begingroup
+ \catcode`\^^M = 5 % in case we're inside an example
+ % If the image is by itself, center it.
+ \ifvmode
+ \nobreak\bigskip
+ % Usually we'll have text after the image which will insert
+ % \parskip glue, so insert it here too to equalize the space
+ % above and below.
+ \nobreak\vskip\parskip
+ \nobreak
+ \centerline{\epsfbox{#1.eps}}%
+ \bigbreak
+ \else
+ % In the middle of a paragraph, no extra space.
+ \epsfbox{#1.eps}%
+ \fi
+ \endgroup
+ \fi
+}
+
+
+\message{localization,}
+% and i18n.
+
+% @documentlanguage is usually given very early, just after
+% @setfilename. If done too late, it may not override everything
+% properly. Single argument is the language abbreviation.
+% It would be nice if we could set up a hyphenation file here.
+%
+\def\documentlanguage{\parsearg\dodocumentlanguage}
+\def\dodocumentlanguage#1{%
+ \tex % read txi-??.tex file in plain TeX.
+ % Read the file if it exists.
+ \openin 1 txi-#1.tex
+ \ifeof1
+ \errhelp = \nolanghelp
+ \errmessage{Cannot read language file txi-#1.tex}%
+ \let\temp = \relax
+ \else
+ \def\temp{\input txi-#1.tex }%
\fi
+ \temp
+ \endgroup
}
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty. Maybe you need to install it? In the current directory
+should work if nowhere else does.}
+
+% @documentencoding should change something in TeX eventually, most
+% likely, but for now just recognize it.
+\let\documentencoding = \comment
-\message{paper sizes,}
-% And other related parameters.
+% Page size parameters.
+%
\newdimen\defaultparindent \defaultparindent = 15pt
\chapheadingskip = 15pt plus 4pt minus 2pt
@@ -5162,16 +5702,14 @@ width0pt\relax} \fi
% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
% using an old version of TeX, don't do anything. We want the amount of
% stretch added to depend on the line length, hence the dependence on
-% \hsize. This makes it come to about 9pt for the 8.5x11 format. We
-% call this whenever the paper size is set.
+% \hsize. We call this whenever the paper size is set.
%
\def\setemergencystretch{%
\ifx\emergencystretch\thisisundefined
% Allow us to assign to \emergencystretch anyway.
\def\emergencystretch{\dimen0}%
\else
- \emergencystretch = \hsize
- \divide\emergencystretch by 45
+ \emergencystretch = .15\hsize
\fi
}
@@ -5187,7 +5725,7 @@ width0pt\relax} \fi
\vsize = #1\relax
\advance\vsize by \topskip
\outervsize = \vsize
- \advance\outervsize by 0.6in
+ \advance\outervsize by 2\topandbottommargin
\pageheight = \vsize
%
\hsize = #2\relax
@@ -5264,7 +5802,7 @@ width0pt\relax} \fi
% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
% Perhaps we should allow setting the margins, \topskip, \parskip,
% and/or leading, also. Or perhaps we should compute them somehow.
-%
+%
\def\pagesizes{\parsearg\pagesizesxxx}
\def\pagesizesxxx#1{\pagesizesyyy #1,,\finish}
\def\pagesizesyyy#1,#2,#3\finish{{%
@@ -5278,9 +5816,10 @@ width0pt\relax} \fi
}}
% Set default to letter.
-%
+%
\letterpaper
+
\message{and turning on texinfo input format.}
% Define macros to output various characters with catcode for normal text.
@@ -5292,6 +5831,7 @@ width0pt\relax} \fi
\catcode`\<=\other
\catcode`\>=\other
\catcode`\+=\other
+\catcode`\$=\other
\def\normaldoublequote{"}
\def\normaltilde{~}
\def\normalcaret{^}
@@ -5300,6 +5840,7 @@ width0pt\relax} \fi
\def\normalless{<}
\def\normalgreater{>}
\def\normalplus{+}
+\def\normaldollar{$}
% This macro is used to make a character print one way in ttfont
% where it can probably just be output, and another way in other fonts,
@@ -5310,7 +5851,13 @@ width0pt\relax} \fi
% interword stretch (and shrink), and it is reasonable to expect all
% typewriter fonts to have this, we can check that font parameter.
%
-\def\ifusingtt#1#2{\ifdim \fontdimen3\the\font=0pt #1\else #2\fi}
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font. Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts. But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
% Turn off all special characters except @
% (and those which the user can use as if they were ordinary).
@@ -5341,6 +5888,8 @@ width0pt\relax} \fi
\def>{{\tt \gtr}}
\catcode`\+=\active
\def+{{\tt \char 43}}
+\catcode`\$=\active
+\def${\ifusingit{{\sl\$}}\normaldollar}
%\catcode 27=\active
%\def^^[{$\diamondsuit$}
@@ -5371,9 +5920,6 @@ width0pt\relax} \fi
% \normalbackslash outputs one backslash in fixed width font.
\def\normalbackslash{{\tt\rawbackslashxx}}
-% Say @foo, not \foo, in error messages.
-\escapechar=`\@
-
% \catcode 17=0 % Define control-q
\catcode`\\=\active
@@ -5387,7 +5933,8 @@ width0pt\relax} \fi
@let|=@normalverticalbar
@let<=@normalless
@let>=@normalgreater
-@let+=@normalplus}
+@let+=@normalplus
+@let$=@normaldollar}
@def@normalturnoffactive{@let"=@normaldoublequote
@let\=@normalbackslash
@@ -5397,7 +5944,8 @@ width0pt\relax} \fi
@let|=@normalverticalbar
@let<=@normalless
@let>=@normalgreater
-@let+=@normalplus}
+@let+=@normalplus
+@let$=@normaldollar}
% Make _ and + \other characters, temporarily.
% This is canceled by @fixbackslash.
@@ -5416,16 +5964,29 @@ width0pt\relax} \fi
% Also back turn on active characters that might appear in the input
% file name, in case not using a pre-dumped format.
%
-@gdef@fixbackslash{@ifx\@eatinput @let\ = @normalbackslash @fi
- @catcode`+=@active @catcode`@_=@active}
+@gdef@fixbackslash{%
+ @ifx\@eatinput @let\ = @normalbackslash @fi
+ @catcode`+=@active
+ @catcode`@_=@active
+}
-% These look ok in all fonts, so just make them not special. The @rm below
-% makes sure that the current font starts out as the newly loaded cmr10
-@catcode`@$=@other @catcode`@%=@other @catcode`@&=@other @catcode`@#=@other
+% Say @foo, not \foo, in error messages.
+@escapechar = `@@
+
+% These look ok in all fonts, so just make them not special.
+@catcode`@& = @other
+@catcode`@# = @other
+@catcode`@% = @other
+@c Set initial fonts.
@textfonts
@rm
+
@c Local variables:
+@c eval: (add-hook 'write-file-hooks 'time-stamp)
@c page-delimiter: "^\\\\message"
+@c time-stamp-start: "def\\\\texinfoversion{"
+@c time-stamp-format: "%:y-%02m-%02d.%02H"
+@c time-stamp-end: "}"
@c End: